From: Kabir K. <kk...@jb...> - 2006-02-16 20:32:31
|
User: kkhan Date: 06/02/16 15:32:21 Modified: src/main/org/jboss/aop/advice PerInstanceInterceptor.java Log: Support instance advised proxies. Move code common to the various InstanceAdvisor implementations into InstanceAdvisorDelegate Create InstanceProxyContainer as the advisor for instance advised proxies. Update ContainerProxyFactory to work more like the generated proxies. Make container proxies instantiate ContainerProxyMethodInvocations allowing access to the generated proxy so we can call getInstanceAdvisor() on it. Revision Changes Path 1.8 +23 -4 jboss-aop/src/main/org/jboss/aop/advice/PerInstanceInterceptor.java (In the diff below, changes in quantity of whitespace are not shown.) Index: PerInstanceInterceptor.java =================================================================== RCS file: /cvsroot/jboss/jboss-aop/src/main/org/jboss/aop/advice/PerInstanceInterceptor.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -b -r1.7 -r1.8 --- PerInstanceInterceptor.java 29 Oct 2005 23:33:43 -0000 1.7 +++ PerInstanceInterceptor.java 16 Feb 2006 20:32:21 -0000 1.8 @@ -28,12 +28,14 @@ import org.jboss.aop.joinpoint.ConstructorCalledByMethodInvocation; import org.jboss.aop.joinpoint.Invocation; import org.jboss.aop.joinpoint.MethodCalledByMethodInvocation; +import org.jboss.aop.proxy.container.ClassProxyContainer; +import org.jboss.aop.proxy.container.ContainerProxyMethodInvocation; /** * Comment * * @author <a href="mailto:bi...@jb...">Bill Burke</a> - * @version $Revision: 1.7 $ + * @version $Revision: 1.8 $ */ public class PerInstanceInterceptor implements Interceptor { @@ -89,11 +91,28 @@ else { Advisor advisor = invocation.getAdvisor(); - if (advisor == null || advisor instanceof InstanceAdvisor == false) + if (advisor == null) + { return invocation.invokeNext(); + } + if (advisor instanceof InstanceAdvisor) + { instanceAdvisor = (InstanceAdvisor) advisor; } + else + { + if (advisor instanceof ClassProxyContainer && invocation instanceof ContainerProxyMethodInvocation) + { + ContainerProxyMethodInvocation pi = (ContainerProxyMethodInvocation)invocation; + instanceAdvisor = pi.getProxy().getInstanceAdvisor(); + } + else + { + return invocation.invokeNext(); + } + } + } Interceptor interceptor = (Interceptor) instanceAdvisor.getPerInstanceAspect(aspectDefinition); return interceptor.invoke(invocation); } |