Author: jcarman
Date: Sat Nov 19 09:13:55 2005
New Revision: 345655

URL: http://svn.apache.org/viewcvs?rev=345655&view=rev
Log:
Now not enhancing finalize() methods!

Modified:
    
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/cglib/CglibProxyFactory.java

Modified: 
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/cglib/CglibProxyFactory.java
URL: 
http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/cglib/CglibProxyFactory.java?rev=345655&r1=345654&r2=345655&view=diff
==============================================================================
--- 
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/cglib/CglibProxyFactory.java
 (original)
+++ 
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/cglib/CglibProxyFactory.java
 Sat Nov 19 09:13:55 2005
@@ -16,9 +16,12 @@
  */
 package org.apache.commons.proxy.factory.cglib;
 
+import net.sf.cglib.proxy.Callback;
+import net.sf.cglib.proxy.CallbackFilter;
 import net.sf.cglib.proxy.Dispatcher;
 import net.sf.cglib.proxy.Enhancer;
 import net.sf.cglib.proxy.MethodProxy;
+import net.sf.cglib.proxy.NoOp;
 import org.apache.commons.proxy.Interceptor;
 import org.apache.commons.proxy.Invocation;
 import org.apache.commons.proxy.Invoker;
@@ -26,22 +29,22 @@
 import org.apache.commons.proxy.factory.util.AbstractSubclassingProxyFactory;
 
 import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
 
 /**
  * A <a href="http://cglib.sourceforge.net/";>CGLIB</a>-based [EMAIL PROTECTED] 
org.apache.commons.proxy.ProxyFactory}
  * implementation.
+ * <p/>
+ * <p/>
+ * <b>Dependencies</b>: <ul> <li>CGLIB version 2.0.2 or greater</li> </ul> </p>
  *
- * <p>
- * <b>Dependencies</b>:
- * <ul>
- *   <li>CGLIB version 2.0.2 or greater</li>
- * </ul>
- * </p>
  * @author James Carman
  * @version 1.0
  */
 public class CglibProxyFactory extends AbstractSubclassingProxyFactory
 {
+    private static CallbackFilter callbackFilter = new PublicCallbackFilter();
+
 
//----------------------------------------------------------------------------------------------------------------------
 // ProxyFactory Implementation
 
//----------------------------------------------------------------------------------------------------------------------
@@ -53,10 +56,19 @@
         enhancer.setClassLoader( classLoader );
         enhancer.setInterfaces( toInterfaces( proxyClasses ) );
         enhancer.setSuperclass( getSuperclass( proxyClasses ) );
-        enhancer.setCallback( new ObjectProviderDispatcher( targetProvider ) );
+        enhancer.setCallbackFilter( callbackFilter );
+        enhancer.setCallbacks( new Callback[]{ new ObjectProviderDispatcher( 
targetProvider ), NoOp.INSTANCE } );
         return enhancer.create();
     }
 
+    private static class PublicCallbackFilter implements CallbackFilter
+    {
+        public int accept( Method method )
+        {
+            return Modifier.isPublic( method.getModifiers() ) ? 0 : 1;
+        }
+    }
+
     public Object createInterceptorProxy( ClassLoader classLoader, Object 
target, Interceptor interceptor,
                                           Class[] proxyClasses )
     {
@@ -64,18 +76,20 @@
         enhancer.setClassLoader( classLoader );
         enhancer.setInterfaces( toInterfaces( proxyClasses ) );
         enhancer.setSuperclass( getSuperclass( proxyClasses ) );
-        enhancer.setCallback( new InterceptorBridge( target, interceptor ) );
+        enhancer.setCallbackFilter( callbackFilter );
+        enhancer.setCallbacks( new Callback[]{ new InterceptorBridge( target, 
interceptor ), NoOp.INSTANCE } );
         return enhancer.create();
     }
 
     public Object createInvokerProxy( ClassLoader classLoader, Invoker invoker,
-                                                Class[] proxyClasses )
+                                      Class[] proxyClasses )
     {
         final Enhancer enhancer = new Enhancer();
         enhancer.setClassLoader( classLoader );
         enhancer.setInterfaces( toInterfaces( proxyClasses ) );
         enhancer.setSuperclass( getSuperclass( proxyClasses ) );
-        enhancer.setCallback( new InvokerBridge( invoker ) );
+        enhancer.setCallbackFilter( callbackFilter );
+        enhancer.setCallbacks( new Callback[]{ new InvokerBridge( invoker ), 
NoOp.INSTANCE } );
         return enhancer.create();
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to