diff --git a/alfa-service/pom.xml b/alfa-service/pom.xml index 525cf2e219bd65e3edfade89158b536bd1fc71d8..67e37c00dbdaa4eaadd4696180e0a39f18ed092e 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 d8828e90c1595e36866312085376c49d5d71dfad..d351cacb8fcb1679640a44ad52bd7e6b124c34b6 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 0000000000000000000000000000000000000000..7f72dd6b7afa91fc5466381f258ddba7a6440003 --- /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 0000000000000000000000000000000000000000..410c9eb5301836991c52fe70448291efa3bd8948 --- /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); + } + +}