diff --git a/common/src/main/java/stirling/software/common/aop/AutoJobAspect.java b/common/src/main/java/stirling/software/common/aop/AutoJobAspect.java index b5a038e23..085ba29ee 100644 --- a/common/src/main/java/stirling/software/common/aop/AutoJobAspect.java +++ b/common/src/main/java/stirling/software/common/aop/AutoJobAspect.java @@ -10,6 +10,7 @@ import org.springframework.beans.BeanUtils; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.*; +import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; @@ -28,6 +29,7 @@ import stirling.software.common.service.JobExecutorService; @Component @RequiredArgsConstructor @Slf4j +@Order(0) // Highest precedence - executes before audit aspects public class AutoJobAspect { private static final Duration RETRY_BASE_DELAY = Duration.ofMillis(100); @@ -40,6 +42,7 @@ public class AutoJobAspect { @Around("@annotation(autoJobPostMapping)") public Object wrapWithJobExecution( ProceedingJoinPoint joinPoint, AutoJobPostMapping autoJobPostMapping) { + // This aspect will run before any audit aspects due to @Order(0) // Extract parameters from the request and annotation boolean async = Boolean.parseBoolean(request.getParameter("async")); long timeout = autoJobPostMapping.timeout(); diff --git a/proprietary/src/main/java/stirling/software/proprietary/audit/AuditAspect.java b/proprietary/src/main/java/stirling/software/proprietary/audit/AuditAspect.java index 8b9d46103..0b8e019e8 100644 --- a/proprietary/src/main/java/stirling/software/proprietary/audit/AuditAspect.java +++ b/proprietary/src/main/java/stirling/software/proprietary/audit/AuditAspect.java @@ -26,6 +26,7 @@ import stirling.software.proprietary.service.AuditService; @Component @Slf4j @RequiredArgsConstructor +@org.springframework.core.annotation.Order(10) // Lower precedence (higher number) - executes after AutoJobAspect public class AuditAspect { private final AuditService auditService; diff --git a/proprietary/src/main/java/stirling/software/proprietary/audit/ControllerAuditAspect.java b/proprietary/src/main/java/stirling/software/proprietary/audit/ControllerAuditAspect.java index 740555439..d41a7e661 100644 --- a/proprietary/src/main/java/stirling/software/proprietary/audit/ControllerAuditAspect.java +++ b/proprietary/src/main/java/stirling/software/proprietary/audit/ControllerAuditAspect.java @@ -36,6 +36,7 @@ import stirling.software.proprietary.service.AuditService; @Component @Slf4j @RequiredArgsConstructor +@org.springframework.core.annotation.Order(10) // Lower precedence (higher number) - executes after AutoJobAspect public class ControllerAuditAspect { private final AuditService auditService; @@ -76,6 +77,12 @@ public class ControllerAuditAspect { public Object auditPatchMethod(ProceedingJoinPoint joinPoint) throws Throwable { return auditController(joinPoint, "PATCH"); } + + /** Intercept all methods with AutoJobPostMapping annotation */ + @Around("@annotation(stirling.software.common.annotations.AutoJobPostMapping)") + public Object auditAutoJobMethod(ProceedingJoinPoint joinPoint) throws Throwable { + return auditController(joinPoint, "POST"); + } private Object auditController(ProceedingJoinPoint joinPoint, String httpMethod) throws Throwable {