[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