Author: mbenson
Date: Tue Jul 20 20:49:28 2010
New Revision: 966001

URL: http://svn.apache.org/viewvc?rev=966001&view=rev
Log:
warnings/javadoc

Modified:
    
commons/proper/proxy/branches/version-2.0-work/cglib/src/main/java/org/apache/commons/proxy2/cglib/CglibProxyFactory.java
    
commons/proper/proxy/branches/version-2.0-work/javassist/src/main/java/org/apache/commons/proxy2/javassist/JavassistInvocation.java
    
commons/proper/proxy/branches/version-2.0-work/javassist/src/main/java/org/apache/commons/proxy2/javassist/JavassistProxyFactory.java
    
commons/proper/proxy/branches/version-2.0-work/javassist/src/main/java/org/apache/commons/proxy2/javassist/JavassistUtils.java
    
commons/proper/proxy/branches/version-2.0-work/jdk/src/main/java/org/apache/commons/proxy2/jdk/JdkProxyFactory.java

Modified: 
commons/proper/proxy/branches/version-2.0-work/cglib/src/main/java/org/apache/commons/proxy2/cglib/CglibProxyFactory.java
URL: 
http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/cglib/src/main/java/org/apache/commons/proxy2/cglib/CglibProxyFactory.java?rev=966001&r1=966000&r2=966001&view=diff
==============================================================================
--- 
commons/proper/proxy/branches/version-2.0-work/cglib/src/main/java/org/apache/commons/proxy2/cglib/CglibProxyFactory.java
 (original)
+++ 
commons/proper/proxy/branches/version-2.0-work/cglib/src/main/java/org/apache/commons/proxy2/cglib/CglibProxyFactory.java
 Tue Jul 20 20:49:28 2010
@@ -33,8 +33,10 @@ import org.apache.commons.proxy2.impl.Ab
 
 import java.io.Serializable;
 import java.lang.reflect.Method;
-import java.util.ServiceLoader;
 
+/**
+ * Cglib-based {...@link ProxyFactory} implementation.
+ */
 public class CglibProxyFactory extends AbstractSubclassingProxyFactory
 {
 
//**********************************************************************************************************************
@@ -43,12 +45,16 @@ public class CglibProxyFactory extends A
 
     private static CallbackFilter callbackFilter = new 
CglibProxyFactoryCallbackFilter();
 
-//**********************************************************************************************************************
-// ProxyFactory Implementation
-//**********************************************************************************************************************
-
-    public Object createDelegatorProxy(ClassLoader classLoader, ObjectProvider 
targetProvider,
-                                       Class... proxyClasses)
+  
//**********************************************************************************************************************
+ // ProxyFactory Implementation
+ 
//**********************************************************************************************************************
+
+    /**
+     * {...@inheritdoc}
+     */
+    @SuppressWarnings("unchecked")
+    public <T> T createDelegatorProxy(ClassLoader classLoader, 
ObjectProvider<?> targetProvider,
+                                       Class<?>... proxyClasses)
     {
         final Enhancer enhancer = new Enhancer();
         enhancer.setClassLoader(classLoader);
@@ -56,11 +62,15 @@ public class CglibProxyFactory extends A
         enhancer.setSuperclass(getSuperclass(proxyClasses));
         enhancer.setCallbackFilter(callbackFilter);
         enhancer.setCallbacks(new Callback[]{new 
ObjectProviderDispatcher(targetProvider), new EqualsHandler(), new 
HashCodeHandler()});
-        return enhancer.create();
+        return (T) enhancer.create();
     }
 
-    public Object createInterceptorProxy(ClassLoader classLoader, Object 
target, Interceptor interceptor,
-                                         Class... proxyClasses)
+    /**
+     * {...@inheritdoc}
+     */
+    @SuppressWarnings("unchecked")
+    public <T> T createInterceptorProxy(ClassLoader classLoader, Object 
target, Interceptor interceptor,
+                                         Class<?>... proxyClasses)
     {
         final Enhancer enhancer = new Enhancer();
         enhancer.setClassLoader(classLoader);
@@ -68,11 +78,15 @@ public class CglibProxyFactory extends A
         enhancer.setSuperclass(getSuperclass(proxyClasses));
         enhancer.setCallbackFilter(callbackFilter);
         enhancer.setCallbacks(new Callback[]{new InterceptorBridge(target, 
interceptor), new EqualsHandler(), new HashCodeHandler()});
-        return enhancer.create();
+        return (T) enhancer.create();
     }
 
-    public Object createInvokerProxy(ClassLoader classLoader, Invoker invoker,
-                                     Class... proxyClasses)
+    /**
+     * {...@inheritdoc}
+     */
+    @SuppressWarnings("unchecked")
+    public <T> T createInvokerProxy(ClassLoader classLoader, Invoker invoker,
+                                     Class<?>... proxyClasses)
     {
         final Enhancer enhancer = new Enhancer();
         enhancer.setClassLoader(classLoader);
@@ -80,7 +94,7 @@ public class CglibProxyFactory extends A
         enhancer.setSuperclass(getSuperclass(proxyClasses));
         enhancer.setCallbackFilter(callbackFilter);
         enhancer.setCallbacks(new Callback[]{new InvokerBridge(invoker), new 
EqualsHandler(), new HashCodeHandler()});
-        return enhancer.create();
+        return (T) enhancer.create();
     }
 
 
//**********************************************************************************************************************
@@ -108,6 +122,9 @@ public class CglibProxyFactory extends A
 
     private static class EqualsHandler implements MethodInterceptor, 
Serializable
     {
+        /** Serialization version */
+        private static final long serialVersionUID = 1L;
+
         public Object intercept(Object o, Method method, Object[] objects, 
MethodProxy methodProxy) throws Throwable
         {
             return o == objects[0];
@@ -116,6 +133,9 @@ public class CglibProxyFactory extends A
 
     private static class HashCodeHandler implements MethodInterceptor, 
Serializable
     {
+        /** Serialization version */
+        private static final long serialVersionUID = 1L;
+
         public Object intercept(Object o, Method method, Object[] objects, 
MethodProxy methodProxy) throws Throwable
         {
             return System.identityHashCode(o);
@@ -124,6 +144,9 @@ public class CglibProxyFactory extends A
 
     private static class InterceptorBridge implements 
net.sf.cglib.proxy.MethodInterceptor, Serializable
     {
+        /** Serialization version */
+        private static final long serialVersionUID = 1L;
+
         private final Interceptor inner;
         private final Object target;
 
@@ -141,6 +164,9 @@ public class CglibProxyFactory extends A
 
     private static class InvokerBridge implements 
net.sf.cglib.proxy.InvocationHandler, Serializable
     {
+        /** Serialization version */
+        private static final long serialVersionUID = 1L;
+
         private final Invoker original;
 
         public InvokerBridge(Invoker original)
@@ -156,6 +182,9 @@ public class CglibProxyFactory extends A
 
     private static class MethodProxyInvocation implements Invocation, 
Serializable
     {
+        /** Serialization version */
+        private static final long serialVersionUID = 1L;
+
         private final MethodProxy methodProxy;
         private final Method method;
         private final Object[] args;
@@ -192,9 +221,12 @@ public class CglibProxyFactory extends A
 
     private static class ObjectProviderDispatcher implements Dispatcher, 
Serializable
     {
-        private final ObjectProvider delegateProvider;
+        /** Serialization version */
+        private static final long serialVersionUID = 1L;
+
+        private final ObjectProvider<?> delegateProvider;
 
-        public ObjectProviderDispatcher(ObjectProvider delegateProvider)
+        public ObjectProviderDispatcher(ObjectProvider<?> delegateProvider)
         {
             this.delegateProvider = delegateProvider;
         }

Modified: 
commons/proper/proxy/branches/version-2.0-work/javassist/src/main/java/org/apache/commons/proxy2/javassist/JavassistInvocation.java
URL: 
http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/javassist/src/main/java/org/apache/commons/proxy2/javassist/JavassistInvocation.java?rev=966001&r1=966000&r2=966001&view=diff
==============================================================================
--- 
commons/proper/proxy/branches/version-2.0-work/javassist/src/main/java/org/apache/commons/proxy2/javassist/JavassistInvocation.java
 (original)
+++ 
commons/proper/proxy/branches/version-2.0-work/javassist/src/main/java/org/apache/commons/proxy2/javassist/JavassistInvocation.java
 Tue Jul 20 20:49:28 2010
@@ -44,16 +44,22 @@ public abstract class JavassistInvocatio
 // Fields
 
//**********************************************************************************************************************
 
-    private static WeakHashMap loaderToClassCache = new WeakHashMap();
+    private static WeakHashMap<ClassLoader, Map<String, 
WeakReference<Class<?>>>> loaderToClassCache = new WeakHashMap<ClassLoader, 
Map<String,WeakReference<Class<?>>>>();
+
+    /** The invoked method */
     protected final Method method;
+
+    /** The target object */
     protected final Object target;
+
+    /** The method arguments */
     protected final Object[] arguments;
 
 
//**********************************************************************************************************************
 // Static Methods
 
//**********************************************************************************************************************
 
-    private static String createCastExpression( Class type, String 
objectToCast )
+    private static String createCastExpression( Class<?> type, String 
objectToCast )
     {
         if( !type.isPrimitive() )
         {
@@ -66,10 +72,10 @@ public abstract class JavassistInvocatio
         }
     }
 
-    private static Class createInvocationClass( ClassLoader classLoader, 
Method interfaceMethod )
+    private static Class<?> createInvocationClass( ClassLoader classLoader, 
Method interfaceMethod )
             throws CannotCompileException
     {
-        Class invocationClass;
+        Class<?> invocationClass;
         final CtClass ctClass = JavassistUtils.createClass(
                 getSimpleName(interfaceMethod.getDeclaringClass()) + "_" + 
interfaceMethod.getName() +
                         "_invocation",
@@ -81,7 +87,7 @@ public abstract class JavassistInvocatio
         ctClass.addConstructor(constructor);
         final CtMethod proceedMethod = new 
CtMethod(JavassistUtils.resolve(Object.class), "proceed",
                 JavassistUtils.resolve(new Class[0]), ctClass);
-        final Class[] argumentTypes = interfaceMethod.getParameterTypes();
+        final Class<?>[] argumentTypes = interfaceMethod.getParameterTypes();
         final StringBuffer proceedBody = new StringBuffer("{\n");
         if( !Void.TYPE.equals(interfaceMethod.getReturnType()) )
         {
@@ -104,7 +110,7 @@ public abstract class JavassistInvocatio
         proceedBody.append("(");
         for( int i = 0; i < argumentTypes.length; ++i )
         {
-            final Class argumentType = argumentTypes[i];
+            final Class<?> argumentType = argumentTypes[i];
             proceedBody.append(createCastExpression(argumentType, "arguments[" 
+ i + "]"));
             if( i != argumentTypes.length - 1 )
             {
@@ -131,12 +137,12 @@ public abstract class JavassistInvocatio
         return invocationClass;
     }
 
-    private static Map getClassCache( ClassLoader classLoader )
+    private static Map<String, WeakReference<Class<?>>> getClassCache( 
ClassLoader classLoader )
     {
-        Map cache = ( Map ) loaderToClassCache.get(classLoader);
+        Map<String, WeakReference<Class<?>>> cache = 
loaderToClassCache.get(classLoader);
         if( cache == null )
         {
-            cache = new HashMap();
+            cache = new HashMap<String, WeakReference<Class<?>>>();
             loaderToClassCache.put(classLoader, cache);
         }
         return cache;
@@ -150,35 +156,35 @@ public abstract class JavassistInvocatio
      * @return a method invocation class specifically coded to invoke the 
supplied interface method
      * @throws CannotCompileException if a compilation error occurs
      */
-    synchronized static Class getMethodInvocationClass( ClassLoader 
classLoader,
+    synchronized static Class<?> getMethodInvocationClass( ClassLoader 
classLoader,
                                                         Method interfaceMethod 
)
             throws CannotCompileException
     {
-        final Map classCache = getClassCache(classLoader);
+        final Map<String, WeakReference<Class<?>>> classCache = 
getClassCache(classLoader);
         final String key = toClassCacheKey(interfaceMethod);
-        final WeakReference invocationClassRef = ( WeakReference ) 
classCache.get(key);
-        Class invocationClass;
+        final WeakReference<Class<?>> invocationClassRef = classCache.get(key);
+        Class<?> invocationClass;
         if( invocationClassRef == null )
         {
             invocationClass = createInvocationClass(classLoader, 
interfaceMethod);
-            classCache.put(key, new WeakReference(invocationClass));
+            classCache.put(key, new WeakReference<Class<?>>(invocationClass));
         }
         else
         {
             synchronized( invocationClassRef )
             {
-                invocationClass = ( Class ) invocationClassRef.get();
+                invocationClass = invocationClassRef.get();
                 if( invocationClass == null )
                 {
                     invocationClass = createInvocationClass(classLoader, 
interfaceMethod);
-                    classCache.put(key, new WeakReference(invocationClass));
+                    classCache.put(key, new 
WeakReference<Class<?>>(invocationClass));
                 }
             }
         }
         return invocationClass;
     }
 
-    private static String getSimpleName( Class c )
+    private static String getSimpleName( Class<?> c )
     {
         final String name = c.getName();
         final int ndx = name.lastIndexOf('.');

Modified: 
commons/proper/proxy/branches/version-2.0-work/javassist/src/main/java/org/apache/commons/proxy2/javassist/JavassistProxyFactory.java
URL: 
http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/javassist/src/main/java/org/apache/commons/proxy2/javassist/JavassistProxyFactory.java?rev=966001&r1=966000&r2=966001&view=diff
==============================================================================
--- 
commons/proper/proxy/branches/version-2.0-work/javassist/src/main/java/org/apache/commons/proxy2/javassist/JavassistProxyFactory.java
 (original)
+++ 
commons/proper/proxy/branches/version-2.0-work/javassist/src/main/java/org/apache/commons/proxy2/javassist/JavassistProxyFactory.java
 Tue Jul 20 20:49:28 2010
@@ -61,16 +61,20 @@ public class JavassistProxyFactory exten
         proxyClass.addMethod(method);
     }
 
-//**********************************************************************************************************************
-// Other Methods
-//**********************************************************************************************************************
-
-    public Object createDelegatorProxy(ClassLoader classLoader, ObjectProvider 
targetProvider,
-                                       Class... proxyClasses)
+    
//**********************************************************************************************************************
+    // ProxyFactory Implementation
+    
//**********************************************************************************************************************
+
+    /**
+     * {...@inheritdoc}
+     */
+    @SuppressWarnings("unchecked")
+    public <T> T createDelegatorProxy(ClassLoader classLoader, 
ObjectProvider<?> targetProvider,
+                                       Class<?>... proxyClasses)
     {
         try
         {
-            final Class clazz = 
delegatingProxyClassCache.getProxyClass(classLoader, proxyClasses);
+            final Class<? extends T> clazz = (Class<? extends T>) 
delegatingProxyClassCache.getProxyClass(classLoader, proxyClasses);
             return clazz.getConstructor(ObjectProvider.class)
                     .newInstance(targetProvider);
         }
@@ -80,12 +84,16 @@ public class JavassistProxyFactory exten
         }
     }
 
-    public Object createInterceptorProxy(ClassLoader classLoader, Object 
target, Interceptor interceptor,
-                                         Class... proxyClasses)
+    /**
+     * {...@inheritdoc}
+     */
+    @SuppressWarnings("unchecked")
+    public <T> T createInterceptorProxy(ClassLoader classLoader, Object 
target, Interceptor interceptor,
+                                         Class<?>... proxyClasses)
     {
         try
         {
-            final Class clazz = 
interceptorProxyClassCache.getProxyClass(classLoader, proxyClasses);
+            final Class<? extends T> clazz = (Class<? extends T>) 
interceptorProxyClassCache.getProxyClass(classLoader, proxyClasses);
             return clazz.getConstructor(Object.class, Interceptor.class)
                     .newInstance(target, interceptor);
         }
@@ -95,12 +103,16 @@ public class JavassistProxyFactory exten
         }
     }
 
-    public Object createInvokerProxy(ClassLoader classLoader, Invoker invoker,
-                                     Class... proxyClasses)
+    /**
+     * {...@inheritdoc}
+     */
+    @SuppressWarnings("unchecked")
+    public <T> T createInvokerProxy(ClassLoader classLoader, Invoker invoker,
+                                     Class<?>... proxyClasses)
     {
         try
         {
-            final Class clazz = 
invocationHandlerProxyClassCache.getProxyClass(classLoader, proxyClasses);
+            final Class<? extends T> clazz = (Class<? extends T>) 
invocationHandlerProxyClassCache.getProxyClass(classLoader, proxyClasses);
             return clazz.getConstructor(Invoker.class)
                     .newInstance(invoker);
         }
@@ -116,7 +128,7 @@ public class JavassistProxyFactory exten
 
     private static class DelegatingProxyClassGenerator extends 
AbstractProxyClassGenerator
     {
-        public Class generateProxyClass(ClassLoader classLoader, Class[] 
proxyClasses)
+        public Class<?> generateProxyClass(ClassLoader classLoader, Class<?>[] 
proxyClasses)
         {
             try
             {
@@ -158,7 +170,7 @@ public class JavassistProxyFactory exten
 
     private static class InterceptorProxyClassGenerator extends 
AbstractProxyClassGenerator
     {
-        public Class generateProxyClass(ClassLoader classLoader, Class[] 
proxyClasses)
+        public Class<?> generateProxyClass(ClassLoader classLoader, Class<?>[] 
proxyClasses)
         {
             try
             {
@@ -186,7 +198,7 @@ public class JavassistProxyFactory exten
                                 methods[i].getName(),
                                 
JavassistUtils.resolve(methods[i].getParameterTypes()),
                                 proxyClass);
-                        final Class invocationClass = JavassistInvocation
+                        final Class<?> invocationClass = JavassistInvocation
                                 .getMethodInvocationClass(classLoader, 
methods[i]);
 
                         final String body = "{\n\t return ( $r ) 
interceptor.intercept( new " + invocationClass.getName() +
@@ -229,7 +241,7 @@ public class JavassistProxyFactory exten
 
     private static class InvokerProxyClassGenerator extends 
AbstractProxyClassGenerator
     {
-        public Class generateProxyClass(ClassLoader classLoader, Class[] 
proxyClasses)
+        public Class<?> generateProxyClass(ClassLoader classLoader, Class<?>[] 
proxyClasses)
         {
             try
             {

Modified: 
commons/proper/proxy/branches/version-2.0-work/javassist/src/main/java/org/apache/commons/proxy2/javassist/JavassistUtils.java
URL: 
http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/javassist/src/main/java/org/apache/commons/proxy2/javassist/JavassistUtils.java?rev=966001&r1=966000&r2=966001&view=diff
==============================================================================
--- 
commons/proper/proxy/branches/version-2.0-work/javassist/src/main/java/org/apache/commons/proxy2/javassist/JavassistUtils.java
 (original)
+++ 
commons/proper/proxy/branches/version-2.0-work/javassist/src/main/java/org/apache/commons/proxy2/javassist/JavassistUtils.java
 Tue Jul 20 20:49:28 2010
@@ -45,7 +45,7 @@ class JavassistUtils
     private static int classNumber = 0;
     private static final ClassPool classPool = new ClassPool();
 
-    private static final Set classLoaders = new HashSet();
+    private static final Set<ClassLoader> classLoaders = new 
HashSet<ClassLoader>();
 
 
//**********************************************************************************************************************
 // Static Methods
@@ -64,7 +64,7 @@ class JavassistUtils
      * @param enclosingClass the class receiving the new field
      * @throws CannotCompileException if a compilation problem occurs
      */
-    public static void addField( Class fieldType, String fieldName, CtClass 
enclosingClass )
+    public static void addField( Class<?> fieldType, String fieldName, CtClass 
enclosingClass )
             throws CannotCompileException
     {
         enclosingClass.addField(new CtField(resolve(fieldType), fieldName, 
enclosingClass));
@@ -76,11 +76,11 @@ class JavassistUtils
      * @param ctClass      the {...@link CtClass}
      * @param proxyClasses the interfaces
      */
-    public static void addInterfaces( CtClass ctClass, Class[] proxyClasses )
+    public static void addInterfaces( CtClass ctClass, Class<?>[] proxyClasses 
)
     {
         for( int i = 0; i < proxyClasses.length; i++ )
         {
-            Class proxyInterface = proxyClasses[i];
+            Class<?> proxyInterface = proxyClasses[i];
             ctClass.addInterface(resolve(proxyInterface));
         }
     }
@@ -91,7 +91,7 @@ class JavassistUtils
      * @param superclass the superclass
      * @return the new derived {...@link CtClass}
      */
-    public static CtClass createClass( Class superclass )
+    public static CtClass createClass( Class<?> superclass )
     {
         return createClass(DEFAULT_BASE_NAME, superclass);
     }
@@ -103,7 +103,7 @@ class JavassistUtils
      * @param superclass the superclass
      * @return the new derived {...@link CtClass}
      */
-    public synchronized static CtClass createClass( String baseName, Class 
superclass )
+    public synchronized static CtClass createClass( String baseName, Class<?> 
superclass )
     {
         return classPool.makeClass(baseName + "_" + classNumber++, 
resolve(superclass));
     }
@@ -114,7 +114,7 @@ class JavassistUtils
      * @param clazz the Java {...@link Class}
      * @return the {...@link CtClass}
      */
-    public static CtClass resolve( Class clazz )
+    public static CtClass resolve( Class<?> clazz )
     {
         synchronized( classLoaders )
         {
@@ -142,7 +142,7 @@ class JavassistUtils
      * @param classes the Java {...@link Class}es
      * @return the corresponding {...@link CtClass}es
      */
-    public static CtClass[] resolve( Class[] classes )
+    public static CtClass[] resolve( Class<?>[] classes )
     {
         final CtClass[] ctClasses = new CtClass[classes.length];
         for( int i = 0; i < ctClasses.length; ++i )

Modified: 
commons/proper/proxy/branches/version-2.0-work/jdk/src/main/java/org/apache/commons/proxy2/jdk/JdkProxyFactory.java
URL: 
http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/jdk/src/main/java/org/apache/commons/proxy2/jdk/JdkProxyFactory.java?rev=966001&r1=966000&r2=966001&view=diff
==============================================================================
--- 
commons/proper/proxy/branches/version-2.0-work/jdk/src/main/java/org/apache/commons/proxy2/jdk/JdkProxyFactory.java
 (original)
+++ 
commons/proper/proxy/branches/version-2.0-work/jdk/src/main/java/org/apache/commons/proxy2/jdk/JdkProxyFactory.java
 Tue Jul 20 20:49:28 2010
@@ -21,6 +21,7 @@ import org.apache.commons.proxy2.Interce
 import org.apache.commons.proxy2.Invocation;
 import org.apache.commons.proxy2.Invoker;
 import org.apache.commons.proxy2.ObjectProvider;
+import org.apache.commons.proxy2.ProxyFactory;
 import org.apache.commons.proxy2.ProxyUtils;
 import org.apache.commons.proxy2.impl.AbstractProxyFactory;
 
@@ -30,13 +31,15 @@ import java.lang.reflect.InvocationTarge
 import java.lang.reflect.Method;
 import java.lang.reflect.Proxy;
 
+/**
+ * {...@link ProxyFactory} implementation that uses {...@link 
java.lang.reflect.Proxy} proxies.
+ */
 public class JdkProxyFactory extends AbstractProxyFactory
 {
 
//**********************************************************************************************************************
 // ProxyFactory Implementation
 
//**********************************************************************************************************************
 
-
     /**
      * Creates a proxy2 which delegates to the object provided by 
<code>delegateProvider</code>.
      *
@@ -45,10 +48,11 @@ public class JdkProxyFactory extends Abs
      * @param proxyClasses     the interfaces that the proxy2 should implement
      * @return a proxy2 which delegates to the object provided by the target 
<code>delegateProvider>
      */
-    public Object createDelegatorProxy( ClassLoader classLoader, 
ObjectProvider delegateProvider,
-                                        Class... proxyClasses )
+    @SuppressWarnings("unchecked")
+    public <T> T createDelegatorProxy( ClassLoader classLoader, 
ObjectProvider<?> delegateProvider,
+                                        Class<?>... proxyClasses )
     {
-        return Proxy.newProxyInstance(classLoader, proxyClasses,
+        return (T) Proxy.newProxyInstance(classLoader, proxyClasses,
                                       new 
DelegatorInvocationHandler(delegateProvider));
     }
 
@@ -63,10 +67,11 @@ public class JdkProxyFactory extends Abs
      * @return a proxy2 which passes through a {...@link Interceptor 
interceptor} before eventually reaching the
      *         <code>target</code> object.
      */
-    public Object createInterceptorProxy( ClassLoader classLoader, Object 
target, Interceptor interceptor,
-                                          Class... proxyClasses )
+    @SuppressWarnings("unchecked")
+    public <T> T createInterceptorProxy( ClassLoader classLoader, Object 
target, Interceptor interceptor,
+                                          Class<?>... proxyClasses )
     {
-        return Proxy
+        return (T) Proxy
                 .newProxyInstance(classLoader, proxyClasses, new 
InterceptorInvocationHandler(target, interceptor));
     }
 
@@ -78,10 +83,11 @@ public class JdkProxyFactory extends Abs
      * @param proxyClasses the interfaces that the proxy2 should implement
      * @return a proxy2 which uses the provided {...@link Invoker} to handle 
all method invocations
      */
-    public Object createInvokerProxy( ClassLoader classLoader, Invoker invoker,
-                                      Class... proxyClasses )
+    @SuppressWarnings("unchecked")
+    public <T> T createInvokerProxy( ClassLoader classLoader, Invoker invoker,
+                                      Class<?>... proxyClasses )
     {
-        return Proxy.newProxyInstance(classLoader, proxyClasses, new 
InvokerInvocationHandler(invoker));
+        return (T) Proxy.newProxyInstance(classLoader, proxyClasses, new 
InvokerInvocationHandler(invoker));
     }
 
 
//**********************************************************************************************************************
@@ -90,6 +96,9 @@ public class JdkProxyFactory extends Abs
 
     private abstract static class AbstractInvocationHandler implements 
InvocationHandler, Serializable
     {
+        /** Serialization version */
+        private static final long serialVersionUID = 1L;
+
         public Object invoke( Object proxy, Method method, Object[] args ) 
throws Throwable
         {
             if( ProxyUtils.isHashCode(method) )
@@ -111,9 +120,12 @@ public class JdkProxyFactory extends Abs
 
     private static class DelegatorInvocationHandler extends 
AbstractInvocationHandler
     {
-        private final ObjectProvider delegateProvider;
+        /** Serialization version */
+        private static final long serialVersionUID = 1L;
+
+        private final ObjectProvider<?> delegateProvider;
 
-        protected DelegatorInvocationHandler( ObjectProvider delegateProvider )
+        protected DelegatorInvocationHandler( ObjectProvider<?> 
delegateProvider )
         {
             this.delegateProvider = delegateProvider;
         }
@@ -133,6 +145,9 @@ public class JdkProxyFactory extends Abs
 
     private static class InterceptorInvocationHandler extends 
AbstractInvocationHandler
     {
+        /** Serialization version */
+        private static final long serialVersionUID = 1L;
+
         private final Object target;
         private final Interceptor methodInterceptor;
 
@@ -151,6 +166,9 @@ public class JdkProxyFactory extends Abs
 
     private static class InvokerInvocationHandler extends 
AbstractInvocationHandler
     {
+        /** Serialization version */
+        private static final long serialVersionUID = 1L;
+
         private final Invoker invoker;
 
         public InvokerInvocationHandler( Invoker invoker )
@@ -166,6 +184,9 @@ public class JdkProxyFactory extends Abs
 
     private static class ReflectionInvocation implements Invocation, 
Serializable
     {
+        /** Serialization version */
+        private static final long serialVersionUID = 1L;
+
         private final Method method;
         private final Object[] arguments;
         private final Object target;


Reply via email to