geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Jencks <david_jen...@yahoo.com>
Subject Re: svn commit: r425160 - /geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/basic/BasicProxyManager.java
Date Mon, 24 Jul 2006 21:29:49 GMT

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, djencks@apache.org 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;
>>          }
>>      }
>>
>>
>>
>


Mime
View raw message