Author: jcarman
Date: Wed Feb 27 04:10:57 2008
New Revision: 631570

URL: http://svn.apache.org/viewvc?rev=631570&view=rev
Log:
Undoing caching logic, since CGLIB includes this by default.

Modified:
    
commons/proper/proxy/trunk/src/main/java/org/apache/commons/proxy/factory/cglib/CglibProxyFactory.java

Modified: 
commons/proper/proxy/trunk/src/main/java/org/apache/commons/proxy/factory/cglib/CglibProxyFactory.java
URL: 
http://svn.apache.org/viewvc/commons/proper/proxy/trunk/src/main/java/org/apache/commons/proxy/factory/cglib/CglibProxyFactory.java?rev=631570&r1=631569&r2=631570&view=diff
==============================================================================
--- 
commons/proper/proxy/trunk/src/main/java/org/apache/commons/proxy/factory/cglib/CglibProxyFactory.java
 (original)
+++ 
commons/proper/proxy/trunk/src/main/java/org/apache/commons/proxy/factory/cglib/CglibProxyFactory.java
 Wed Feb 27 04:10:57 2008
@@ -21,7 +21,6 @@
 import net.sf.cglib.proxy.CallbackFilter;
 import net.sf.cglib.proxy.Dispatcher;
 import net.sf.cglib.proxy.Enhancer;
-import net.sf.cglib.proxy.Factory;
 import net.sf.cglib.proxy.MethodProxy;
 import net.sf.cglib.proxy.NoOp;
 import org.apache.commons.proxy.Interceptor;
@@ -29,8 +28,6 @@
 import org.apache.commons.proxy.Invoker;
 import org.apache.commons.proxy.ObjectProvider;
 import org.apache.commons.proxy.factory.util.AbstractSubclassingProxyFactory;
-import org.apache.commons.proxy.factory.util.ProxyClassCache;
-import org.apache.commons.proxy.factory.util.ProxyClassGenerator;
 
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
@@ -47,124 +44,93 @@
  */
 public class CglibProxyFactory extends AbstractSubclassingProxyFactory
 {
-//**********************************************************************************************************************
+//----------------------------------------------------------------------------------------------------------------------
 // Fields
-//**********************************************************************************************************************
+//----------------------------------------------------------------------------------------------------------------------
 
     private static CallbackFilter callbackFilter = new PublicCallbackFilter();
-    private static final ProxyClassCache invokerClassCache = new 
ProxyClassCache(new InvokerProxyClassGenerator());
-    private static final ProxyClassCache interceptorClassCache = new 
ProxyClassCache(new InterceptorProxyClassGenerator());
-    private static final ProxyClassCache delegatorClassCache = new 
ProxyClassCache(new DelegatorProxyClassGenerator());
 
-//**********************************************************************************************************************
-// Other Methods
-//**********************************************************************************************************************
-
-    public Object createDelegatorProxy(ClassLoader classLoader, ObjectProvider 
targetProvider,
-                                       Class[] proxyClasses)
-    {
-        final Class proxyClass = 
delegatorClassCache.getProxyClass(classLoader, proxyClasses);
-        final Object proxy = instantiate(proxyClass);
-        ((Factory) proxy).setCallbacks(new Callback[]{new 
ObjectProviderDispatcher(targetProvider), NoOp.INSTANCE});
-        return proxy;
-    }
-
-    public Object createInterceptorProxy(ClassLoader classLoader, Object 
target, Interceptor interceptor,
-                                         Class[] proxyClasses)
-    {
-        final Class proxyClass = 
interceptorClassCache.getProxyClass(classLoader, proxyClasses);
-        final Object proxy = instantiate(proxyClass);
-        ((Factory) proxy).setCallbacks(new Callback[]{new 
InterceptorBridge(target, interceptor), NoOp.INSTANCE});
-        return proxy;
+//----------------------------------------------------------------------------------------------------------------------
+// ProxyFactory Implementation
+//----------------------------------------------------------------------------------------------------------------------
+
+    public Object createDelegatorProxy( ClassLoader classLoader, 
ObjectProvider targetProvider,
+                                        Class[] proxyClasses )
+    {
+        final Enhancer enhancer = new Enhancer();
+        enhancer.setClassLoader( classLoader );
+        enhancer.setInterfaces( toInterfaces( proxyClasses ) );
+        enhancer.setSuperclass( getSuperclass( proxyClasses ) );
+        enhancer.setCallbackFilter( callbackFilter );
+        enhancer.setCallbacks( new Callback[]{ new ObjectProviderDispatcher( 
targetProvider ), NoOp.INSTANCE } );
+        return enhancer.create();
+    }
+
+    public Object createInterceptorProxy( ClassLoader classLoader, Object 
target, Interceptor interceptor,
+                                          Class[] proxyClasses )
+    {
+        final Enhancer enhancer = new Enhancer();
+        enhancer.setClassLoader( classLoader );
+        enhancer.setInterfaces( toInterfaces( proxyClasses ) );
+        enhancer.setSuperclass( getSuperclass( proxyClasses ) );
+        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 )
+    {
+        final Enhancer enhancer = new Enhancer();
+        enhancer.setClassLoader( classLoader );
+        enhancer.setInterfaces( toInterfaces( proxyClasses ) );
+        enhancer.setSuperclass( getSuperclass( proxyClasses ) );
+        enhancer.setCallbackFilter( callbackFilter );
+        enhancer.setCallbacks( new Callback[]{ new InvokerBridge( invoker ), 
NoOp.INSTANCE } );
+        return enhancer.create();
     }
 
-    public Object createInvokerProxy(ClassLoader classLoader, Invoker invoker,
-                                     Class[] proxyClasses)
-    {
-        final Class proxyClass = invokerClassCache.getProxyClass(classLoader, 
proxyClasses);
-        final Object proxy = instantiate(proxyClass);
-        ((Factory) proxy).setCallbacks(new Callback[]{new 
InvokerBridge(invoker), NoOp.INSTANCE});
-        return proxy;
-    }
-
-//**********************************************************************************************************************
+//----------------------------------------------------------------------------------------------------------------------
 // Inner Classes
-//**********************************************************************************************************************
+//----------------------------------------------------------------------------------------------------------------------
 
-    private static class DelegatorProxyClassGenerator implements 
ProxyClassGenerator
+    private static class PublicCallbackFilter implements CallbackFilter
     {
-        public Class generateProxyClass(ClassLoader classLoader, Class[] 
proxyClasses)
+        public int accept( Method method )
         {
-            final Enhancer enhancer = new Enhancer();
-            enhancer.setClassLoader(classLoader);
-            enhancer.setInterfaces(toInterfaces(proxyClasses));
-            enhancer.setSuperclass(getSuperclass(proxyClasses));
-            enhancer.setCallbackFilter(callbackFilter);
-            enhancer.setCallbackTypes(new 
Class[]{ObjectProviderDispatcher.class, NoOp.class});
-            enhancer.setUseFactory(true);
-            return enhancer.createClass();
+            return Modifier.isPublic( method.getModifiers() ) ? 0 : 1;
         }
     }
 
-    private class InterceptorBridge implements 
net.sf.cglib.proxy.MethodInterceptor
+    private class InvokerBridge implements net.sf.cglib.proxy.InvocationHandler
     {
-        private final Interceptor inner;
-        private final Object target;
+        private final Invoker original;
 
-        public InterceptorBridge(Object target, Interceptor inner)
+        public InvokerBridge( Invoker original )
         {
-            this.inner = inner;
-            this.target = target;
+            this.original = original;
         }
 
-        public Object intercept(Object object, Method method, Object[] args, 
MethodProxy methodProxy) throws Throwable
+        public Object invoke( Object object, Method method, Object[] objects ) 
throws Throwable
         {
-            return inner.intercept(new MethodProxyInvocation(target, method, 
args, methodProxy));
+            return original.invoke( object, method, objects );
         }
     }
 
-    private static class InterceptorProxyClassGenerator implements 
ProxyClassGenerator
-    {
-        public Class generateProxyClass(ClassLoader classLoader, Class[] 
proxyClasses)
-        {
-            final Enhancer enhancer = new Enhancer();
-            enhancer.setClassLoader(classLoader);
-            enhancer.setInterfaces(toInterfaces(proxyClasses));
-            enhancer.setSuperclass(getSuperclass(proxyClasses));
-            enhancer.setCallbackFilter(callbackFilter);
-            enhancer.setCallbackTypes(new Class[]{InterceptorBridge.class, 
NoOp.class});
-            enhancer.setUseFactory(true);
-            return enhancer.createClass();
-        }
-    }
-
-    private class InvokerBridge implements net.sf.cglib.proxy.InvocationHandler
+    private class InterceptorBridge implements 
net.sf.cglib.proxy.MethodInterceptor
     {
-        private final Invoker original;
-
-        public InvokerBridge(Invoker original)
-        {
-            this.original = original;
-        }
+        private final Interceptor inner;
+        private final Object target;
 
-        public Object invoke(Object object, Method method, Object[] objects) 
throws Throwable
+        public InterceptorBridge( Object target, Interceptor inner )
         {
-            return original.invoke(object, method, objects);
+            this.inner = inner;
+            this.target = target;
         }
-    }
 
-    private static class InvokerProxyClassGenerator implements 
ProxyClassGenerator
-    {
-        public Class generateProxyClass(ClassLoader classLoader, Class[] 
proxyClasses)
+        public Object intercept( Object object, Method method, Object[] args, 
MethodProxy methodProxy ) throws Throwable
         {
-            final Enhancer enhancer = new Enhancer();
-            enhancer.setClassLoader(classLoader);
-            enhancer.setInterfaces(toInterfaces(proxyClasses));
-            enhancer.setSuperclass(getSuperclass(proxyClasses));
-            enhancer.setCallbackFilter(callbackFilter);
-            enhancer.setCallbackTypes(new Class[]{InvokerBridge.class, 
NoOp.class});
-            enhancer.setUseFactory(true);
-            return enhancer.createClass();
+            return inner.intercept( new MethodProxyInvocation( target, method, 
args, methodProxy ) );
         }
     }
 
@@ -175,7 +141,7 @@
         private final Object[] args;
         private final Object target;
 
-        public MethodProxyInvocation(Object target, Method method, Object[] 
args, MethodProxy methodProxy)
+        public MethodProxyInvocation( Object target, Method method, Object[] 
args, MethodProxy methodProxy )
         {
             this.target = target;
             this.method = method;
@@ -195,7 +161,7 @@
 
         public Object proceed() throws Throwable
         {
-            return methodProxy.invoke(target, args);
+            return methodProxy.invoke( target, args );
         }
 
         public Object getProxy()
@@ -208,7 +174,7 @@
     {
         private final ObjectProvider delegateProvider;
 
-        public ObjectProviderDispatcher(ObjectProvider delegateProvider)
+        public ObjectProviderDispatcher( ObjectProvider delegateProvider )
         {
             this.delegateProvider = delegateProvider;
         }
@@ -216,14 +182,6 @@
         public Object loadObject()
         {
             return delegateProvider.getObject();
-        }
-    }
-
-    private static class PublicCallbackFilter implements CallbackFilter
-    {
-        public int accept(Method method)
-        {
-            return Modifier.isPublic(method.getModifiers()) ? 0 : 1;
         }
     }
 }


Reply via email to