work with audit

This commit is contained in:
Anthony Stirling 2025-06-19 12:21:04 +01:00
parent 96aa5c024d
commit 4f5236fa82
3 changed files with 11 additions and 0 deletions

View File

@ -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();

View File

@ -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;

View File

@ -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 {