001 package org.shiftone.jrat.integration.aop.aspectwerkz;
002
003
004 import org.codehaus.aspectwerkz.intercept.AroundAdvice;
005 import org.codehaus.aspectwerkz.joinpoint.JoinPoint;
006 import org.codehaus.aspectwerkz.joinpoint.Rtti;
007 import org.codehaus.aspectwerkz.joinpoint.impl.MethodRttiImpl;
008 import org.shiftone.jrat.api.Monitor;
009
010
011 /**
012 * @author jeff@shiftone.org (Jeff Drost)
013 */
014 public class AspectWerkzAroundAdvice implements AroundAdvice {
015
016 public Object invoke(JoinPoint joinPoint) throws Throwable {
017
018 Rtti rtti = joinPoint.getRtti();
019
020 if (rtti instanceof MethodRttiImpl) {
021 MethodRttiImpl methodRtti = (MethodRttiImpl) rtti;
022
023 return Monitor.execute(methodRtti.getMethod(), joinPoint.getThis(), // todo
024
025 // or
026 // target?
027 new AspectWerkzJoinPointCommand(joinPoint));
028 } else {
029
030 // this is not a method - not sure why we were called, but might as
031 // well
032 // just proceed and not cause any problems.
033 return joinPoint.proceed();
034 }
035 }
036 }