You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by dj...@apache.org on 2006/07/24 21:49:43 UTC

svn commit: r425160 - /geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/basic/BasicProxyManager.java

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;
         }
     }
 



Re: svn commit: r425160 - /geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/basic/BasicProxyManager.java

Posted by Dain Sundstrom <da...@iq80.com>.
+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, 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;
>>>          }
>>>      }
>>>
>>>
>>>
>>


Re: svn commit: r425160 - /geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/basic/BasicProxyManager.java

Posted by David Jencks <da...@yahoo.com>.
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;
>>          }
>>      }
>>
>>
>>
>


Re: svn commit: r425160 - /geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/basic/BasicProxyManager.java

Posted by Jason Dillon <ja...@planet57.com>.
Should this be merged to trunk?

--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;
>          }
>      }
>
>
>