package com.breakersoft.plow.thrift;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.Logger;
@Aspect
public class ThriftAspect {
private static final Logger logger =
org.slf4j.LoggerFactory.getLogger(ThriftAspect.class);
@Pointcut("within(@com.breakersoft.plow.thrift.ThriftService *)")
public void thriftService() {}
@Pointcut("execution(* *(..))")
public void methodPointcut() {}
@Around("thriftService() && methodPointcut()")
public Object aroundAdvice(ProceedingJoinPoint joinPoint) throws Throwable {
try {
return joinPoint.proceed();
}
catch (Throwable t) {
logger.warn("Eception " + joinPoint.getSignature().getName(), t);
// TODO: translate to all exceptions.
throw new PlowException(0, "Plow operation failed: " + t);
}
}
}