From 841d396050549bfbeb1b04ef47426aeeda983fb8 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Fri, 27 Oct 2023 12:40:05 +0200
Subject: [PATCH] OZG-4485 Fix Alfa-server logging

---
 alfa-service/pom.xml                          | 10 ------
 goofy-server/pom.xml                          | 10 ++++++
 .../alfa/logging/AlfaAspectPointcuts.java     | 31 +++++++++++++++++++
 .../alfa/logging/AlfaLoggingAspect.java       | 31 +++++++++++++++++++
 4 files changed, 72 insertions(+), 10 deletions(-)
 create mode 100644 goofy-server/src/main/java/de/ozgcloud/alfa/logging/AlfaAspectPointcuts.java
 create mode 100644 goofy-server/src/main/java/de/ozgcloud/alfa/logging/AlfaLoggingAspect.java

diff --git a/alfa-service/pom.xml b/alfa-service/pom.xml
index 525cf2e219..67e37c00db 100644
--- a/alfa-service/pom.xml
+++ b/alfa-service/pom.xml
@@ -132,16 +132,6 @@
 			<artifactId>mapstruct</artifactId>
 		</dependency>
 
-		<!-- aspectJ -->
-		<dependency>
-			<groupId>org.aspectj</groupId>
-			<artifactId>aspectjweaver</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.aspectj</groupId>
-			<artifactId>aspectjrt</artifactId>
-		</dependency>
-
 		<!-- Dev -->
 		<dependency>
 			<groupId>org.projectlombok</groupId>
diff --git a/goofy-server/pom.xml b/goofy-server/pom.xml
index d8828e90c1..d351cacb8f 100644
--- a/goofy-server/pom.xml
+++ b/goofy-server/pom.xml
@@ -35,6 +35,16 @@
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-starter</artifactId>
 		</dependency>
+
+        <!-- aspectJ -->
+        <dependency>
+          <groupId>org.aspectj</groupId>
+          <artifactId>aspectjweaver</artifactId>
+        </dependency>
+        <dependency>
+          <groupId>org.aspectj</groupId>
+          <artifactId>aspectjrt</artifactId>
+        </dependency>
 	</dependencies>
 
   <build>
diff --git a/goofy-server/src/main/java/de/ozgcloud/alfa/logging/AlfaAspectPointcuts.java b/goofy-server/src/main/java/de/ozgcloud/alfa/logging/AlfaAspectPointcuts.java
new file mode 100644
index 0000000000..7f72dd6b7a
--- /dev/null
+++ b/goofy-server/src/main/java/de/ozgcloud/alfa/logging/AlfaAspectPointcuts.java
@@ -0,0 +1,31 @@
+package de.ozgcloud.alfa.logging;
+
+import org.aspectj.lang.annotation.Pointcut;
+
+public class AlfaAspectPointcuts {
+
+	@Pointcut("execution(public * *(..))")
+	void anyPublicMethods() {
+		// aspect pointcut - no implementation needed
+	}
+
+	@Pointcut("within(de.ozgcloud..*)")
+	void anythingInOzgCloud() {
+		// aspect pointcut - no implementation needed
+	}
+
+	@Pointcut("anyPublicMethods() && anythingInOzgCloud()")
+	void anyPublicMethodInOzgCloud() {
+		// aspect pointcut - no implementation needed
+	}
+
+	@Pointcut("anyPublicMethodInOzgCloud() && @target(org.springframework.stereotype.Service)")
+	void anyPublicServiceMethod() {
+		// aspect pointcut - no implementation needed
+	}
+
+	@Pointcut("anyPublicMethodInOzgCloud() && @target(org.springframework.web.bind.annotation.RestController)")
+	void anyPublicRestControllerMethod() {
+		// aspect pointcut - no implementation needed
+	}
+}
diff --git a/goofy-server/src/main/java/de/ozgcloud/alfa/logging/AlfaLoggingAspect.java b/goofy-server/src/main/java/de/ozgcloud/alfa/logging/AlfaLoggingAspect.java
new file mode 100644
index 0000000000..410c9eb530
--- /dev/null
+++ b/goofy-server/src/main/java/de/ozgcloud/alfa/logging/AlfaLoggingAspect.java
@@ -0,0 +1,31 @@
+package de.ozgcloud.alfa.logging;
+
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.annotation.AfterReturning;
+import org.aspectj.lang.annotation.AfterThrowing;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.springframework.stereotype.Component;
+
+import de.itvsh.kop.common.logging.AspectLoggingUtils;
+
+@Aspect
+@Component
+public class AlfaLoggingAspect extends AlfaAspectPointcuts {
+
+	@Before("anyPublicServiceMethod() || anyPublicRestControllerMethod()")
+	public void onServiceMethod(JoinPoint joinPoint) {
+		AspectLoggingUtils.log(joinPoint);
+	}
+
+	@AfterThrowing(pointcut = "anyPublicServiceMethod() || anyPublicRestControllerMethod()", throwing = "ex")
+	public void afterExceptionInServiceMethod(JoinPoint joinPoint, Exception ex) {
+		AspectLoggingUtils.logException(joinPoint, ex);
+	}
+
+	@AfterReturning(pointcut = "anyPublicServiceMethod() || anyPublicRestControllerMethod()", returning = "returnValue")
+	public void afterServiceMethod(JoinPoint joinPoint, Object returnValue) {
+		AspectLoggingUtils.logReturnValue(joinPoint, returnValue);
+	}
+
+}
-- 
GitLab