diff options
Diffstat (limited to 'sandbox/rfeng/aop-logging/src/main/java/org/apache/tuscany')
-rw-r--r-- | sandbox/rfeng/aop-logging/src/main/java/org/apache/tuscany/sca/aspectj/TracingAspect.java | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/sandbox/rfeng/aop-logging/src/main/java/org/apache/tuscany/sca/aspectj/TracingAspect.java b/sandbox/rfeng/aop-logging/src/main/java/org/apache/tuscany/sca/aspectj/TracingAspect.java index 7a6e4c5ded..53ef73573b 100644 --- a/sandbox/rfeng/aop-logging/src/main/java/org/apache/tuscany/sca/aspectj/TracingAspect.java +++ b/sandbox/rfeng/aop-logging/src/main/java/org/apache/tuscany/sca/aspectj/TracingAspect.java @@ -21,6 +21,8 @@ package org.apache.tuscany.sca.aspectj; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.After; +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.aspectj.lang.annotation.Pointcut; @@ -61,23 +63,35 @@ public abstract class TracingAspect { } @Before("trace() && supportsAfterAdvice()") - public void beforeTrace(JoinPoint.StaticPart jp) { + public void beforeTrace(JoinPoint jp) { logEnter(jp); } @After("trace() && supportsAfterAdvice()") - public void afterTrace(JoinPoint.StaticPart jp) { + public void afterTrace(JoinPoint jp) { logExit(jp); } + + @AfterReturning(pointcut = "trace() && supportsAfterAdvice()", returning = "result") + public void afterReturning(JoinPoint jp, Object result) { + logExit(jp, result); + } + + @AfterThrowing(pointcut = "trace() && supportsAfterAdvice()", throwing = "e") + public void afterThrowing(JoinPoint jp, Throwable e) { + logException(jp, e); + } @After("start()") public void afterStart() { completeLog(); } - protected abstract void logEnter(JoinPoint.StaticPart jp); + protected abstract void logEnter(JoinPoint jp); - protected abstract void logExit(JoinPoint.StaticPart jp); + protected abstract void logExit(JoinPoint jp); + protected abstract void logExit(JoinPoint jp, Object result); + protected abstract void logException(JoinPoint jp, Throwable throwable); protected abstract void startLog(); |