+1 to merge it
I suggest you look for other proxy creation code an make similar
patches.
-dain
On Jul 24, 2006, at 2:29 PM, David Jencks wrote:
On Jul 24, 2006, at 4:44 PM, Jason Dillon wrote:
Should this be merged to trunk?
yes, after I think about it for a few more minutes (and if anyone
has comments they are very welcome)
thanks
david jencks
--jason
On Jul 24, 2006, at 12:49 PM, [EMAIL PROTECTED] wrote:
Author: djencks
Date: Mon Jul 24 12:49:43 2006
New Revision: 425160
URL: http://svn.apache.org/viewvc?rev=425160&view=rev
Log:
GERONIMO-2204 do not forward finalize call to proxied object
Modified:
geronimo/branches/1.1/modules/kernel/src/java/org/apache/
geronimo/kernel/basic/BasicProxyManager.java
Modified: geronimo/branches/1.1/modules/kernel/src/java/org/
apache/geronimo/kernel/basic/BasicProxyManager.java
URL: http://svn.apache.org/viewvc/geronimo/branches/1.1/modules/
kernel/src/java/org/apache/geronimo/kernel/basic/
BasicProxyManager.java?rev=425160&r1=425159&r2=425160&view=diff
====================================================================
==========
--- geronimo/branches/1.1/modules/kernel/src/java/org/apache/
geronimo/kernel/basic/BasicProxyManager.java (original)
+++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/
geronimo/kernel/basic/BasicProxyManager.java Mon Jul 24 12:49:43
2006
@@ -17,6 +17,7 @@
package org.apache.geronimo.kernel.basic;
import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -26,6 +27,8 @@
import net.sf.cglib.proxy.Callback;
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
+import net.sf.cglib.proxy.NoOp;
+import net.sf.cglib.proxy.CallbackFilter;
import net.sf.cglib.reflect.FastClass;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -197,7 +200,8 @@
}
}
enhancer.setClassLoader(classLoader);
- enhancer.setCallbackType(MethodInterceptor.class);
+ enhancer.setCallbackFilter(new FinalizeCallbackFilter
());
+ enhancer.setCallbackTypes(new Class[] {NoOp.class,
MethodInterceptor.class});
enhancer.setUseFactory(false);
proxyType = enhancer.createClass();
fastClass = FastClass.create(proxyType);
@@ -208,7 +212,7 @@
Callback callback = getMethodInterceptor(proxyType,
kernel, target);
- Enhancer.registerCallbacks(proxyType, new Callback[]
{callback});
+ Enhancer.registerCallbacks(proxyType, new Callback[]
{NoOp.INSTANCE, callback});
try {
Object proxy = fastClass.newInstance();
interceptors.put(proxy, callback);
@@ -225,6 +229,16 @@
throw new ProxyCreationException(e);
}
}
+ }
+ }
+
+ private static class FinalizeCallbackFilter implements
CallbackFilter {
+
+ public int accept(Method method) {
+ if (method.getName().equals("finalize") &&
method.getParameterTypes().length == 0) {
+ return 0;
+ }
+ return 1;
}
}