
dev.soffa.foundation.spring.aop.OperationHandlerAspect Maven / Gradle / Ivy
package dev.soffa.foundation.spring.aop;
import com.google.common.base.Supplier;
import com.google.common.collect.ImmutableMap;
import dev.soffa.foundation.commons.Logger;
import dev.soffa.foundation.commons.ValidationUtil;
import dev.soffa.foundation.context.Context;
import dev.soffa.foundation.context.ContextUtil;
import dev.soffa.foundation.error.ErrorUtil;
import dev.soffa.foundation.error.ManagedException;
import dev.soffa.foundation.error.TechnicalException;
import dev.soffa.foundation.error.UnauthorizedException;
import dev.soffa.foundation.extra.audit.AuditService;
import dev.soffa.foundation.metric.MetricsRegistry;
import dev.soffa.foundation.model.Validatable;
import lombok.SneakyThrows;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.AuthenticationCredentialsNotFoundException;
import org.springframework.stereotype.Component;
import javax.validation.Valid;
import java.lang.reflect.Method;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
import static dev.soffa.foundation.metric.CoreMetrics.OPERATION_PREFIX;
@Aspect
@Component
public class OperationHandlerAspect {
private final MetricsRegistry metricsRegistry;
private final AuditService auditService;
public OperationHandlerAspect(MetricsRegistry metricsRegistry, @Autowired(required = false) AuditService auditService) {
this.metricsRegistry = metricsRegistry;
this.auditService = auditService;
}
@SneakyThrows
@Around("execution(* dev.soffa.foundation.core.Operation.*(..))")
public Object handleOperation(ProceedingJoinPoint jp) {
Object[] args = jp.getArgs();
AtomicReference
© 2015 - 2025 Weber Informatics LLC | Privacy Policy