[jboss-cvs] JBossAS SVN: r58446 - projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Nov 16 06:02:26 EST 2006


Author: kabir.khan at jboss.com
Date: 2006-11-16 06:02:24 -0500 (Thu, 16 Nov 2006)
New Revision: 58446

Modified:
   projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/ContainerProxyFactory.java
Log:
Different handling when proxy has not yet been initialised

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/ContainerProxyFactory.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/ContainerProxyFactory.java	2006-11-16 10:55:56 UTC (rev 58445)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/ContainerProxyFactory.java	2006-11-16 11:02:24 UTC (rev 58446)
@@ -587,30 +587,32 @@
          
          if (m.getParameterTypes().length > 0) args = "$args";
          String code = "{   " +
-                       "    if (currentAdvisor == null) {" +
-                       "       return " + getNullType(m.getReturnType()) + ";" +
-                       "    }" +
+                       "    boolean handled = false;" +
                        "    try{" +
-                       "       org.jboss.aop.MethodInfo mi = currentAdvisor.getMethodInfo(" + hash.longValue() + "L); " +
-                       "       if (mi == null) " +
-                       "          throw new java.lang.NoSuchMethodError(\"" + m.getName() + m.getSignature() + "\");" +
-                       "       org.jboss.aop.advice.Interceptor[] interceptors = mi.getInterceptors(); " +
-                       "       if (interceptors != (Object[])null && interceptors.length > 0) { " +
-                       "          org.jboss.aop.proxy.container.ContainerProxyMethodInvocation invocation = new org.jboss.aop.proxy.container.ContainerProxyMethodInvocation(mi, interceptors, this); " +
-                       "          invocation.setArguments(" + args + "); " +
-                       "          invocation.setTargetObject(delegate); " +
-                       "          invocation.setMetaData(metadata);" +
-                       "          " + aopReturnStr + " invocation.invokeNext(); " +
-                       "       } else { " +
+                       "       if (currentAdvisor != null) {" +
+                       "          org.jboss.aop.MethodInfo mi = currentAdvisor.getMethodInfo(" + hash.longValue() + "L); " +
+                       "          if (mi == null) " +
+                       "             throw new java.lang.NoSuchMethodError(\"" + m.getName() + m.getSignature() + "\");" +
+                       "          org.jboss.aop.advice.Interceptor[] interceptors = mi.getInterceptors(); " +
+                       "          if (interceptors != (Object[])null && interceptors.length > 0) { " +
+                       "             handled = true;" + 
+                       "             org.jboss.aop.proxy.container.ContainerProxyMethodInvocation invocation = new org.jboss.aop.proxy.container.ContainerProxyMethodInvocation(mi, interceptors, this); " +
+                       "             invocation.setArguments(" + args + "); " +
+                       "             invocation.setTargetObject(delegate); " +
+                       "             invocation.setMetaData(metadata);" +
+                       "             " + aopReturnStr + " invocation.invokeNext(); " +
+                       "          }" +
+                       "       }" +
+                       "       if (!handled && delegate != null){ " +
                        "          " + returnStr + " delegate." + name + "($$); " +
                        "       }" +
+                       "       return " + getNullType(m.getReturnType()) + ";" +
                        "    }finally{" +
                        "    }" +
                        "}";
          CtMethod newMethod = CtNewMethod.make(m.getReturnType(), m.getName(), m.getParameterTypes(), m.getExceptionTypes(), code, proxy);
          newMethod.setModifiers(Modifier.PUBLIC);
          proxy.addMethod(newMethod);
-         //System.out.println("=====> Created proxy method " + m.getName());         
       }
    }
    




More information about the jboss-cvs-commits mailing list