Author: mbenson
Date: Thu Mar 27 23:28:27 2014
New Revision: 1582544

URL: http://svn.apache.org/r1582544
Log:
explain suppressed warnings

Modified:
    
commons/proper/proxy/trunk/asm/src/main/java/org/apache/commons/proxy2/asm/ASMProxyFactory.java
    
commons/proper/proxy/trunk/cglib/src/main/java/org/apache/commons/proxy2/cglib/CglibProxyFactory.java
    
commons/proper/proxy/trunk/core/src/main/java/org/apache/commons/proxy2/DefaultProxyFactory.java
    
commons/proper/proxy/trunk/core/src/main/java/org/apache/commons/proxy2/ProxyUtils.java
    
commons/proper/proxy/trunk/core/src/main/java/org/apache/commons/proxy2/stub/AnnotationBuilder.java
    
commons/proper/proxy/trunk/core/src/main/java/org/apache/commons/proxy2/stub/BaseAnnotationTrainer.java
    
commons/proper/proxy/trunk/core/src/main/java/org/apache/commons/proxy2/stub/BaseTrainer.java
    
commons/proper/proxy/trunk/core/src/main/java/org/apache/commons/proxy2/stub/TrainingContext.java
    
commons/proper/proxy/trunk/javassist/src/main/java/org/apache/commons/proxy2/javassist/JavassistProxyFactory.java
    
commons/proper/proxy/trunk/jdk/src/main/java/org/apache/commons/proxy2/jdk/JdkProxyFactory.java

Modified: 
commons/proper/proxy/trunk/asm/src/main/java/org/apache/commons/proxy2/asm/ASMProxyFactory.java
URL: 
http://svn.apache.org/viewvc/commons/proper/proxy/trunk/asm/src/main/java/org/apache/commons/proxy2/asm/ASMProxyFactory.java?rev=1582544&r1=1582543&r2=1582544&view=diff
==============================================================================
--- 
commons/proper/proxy/trunk/asm/src/main/java/org/apache/commons/proxy2/asm/ASMProxyFactory.java
 (original)
+++ 
commons/proper/proxy/trunk/asm/src/main/java/org/apache/commons/proxy2/asm/ASMProxyFactory.java
 Thu Mar 27 23:28:27 2014
@@ -70,7 +70,7 @@ public class ASMProxyFactory extends Abs
         final Class<?> proxyClass = 
PROXY_CLASS_CACHE.getProxyClass(classLoader, proxyClasses);
         try
         {
-            @SuppressWarnings("unchecked")
+            @SuppressWarnings("unchecked") // type inference
             final T result = (T) 
proxyClass.getConstructor(Invoker.class).newInstance(invoker);
             return result;
         }

Modified: 
commons/proper/proxy/trunk/cglib/src/main/java/org/apache/commons/proxy2/cglib/CglibProxyFactory.java
URL: 
http://svn.apache.org/viewvc/commons/proper/proxy/trunk/cglib/src/main/java/org/apache/commons/proxy2/cglib/CglibProxyFactory.java?rev=1582544&r1=1582543&r2=1582544&view=diff
==============================================================================
--- 
commons/proper/proxy/trunk/cglib/src/main/java/org/apache/commons/proxy2/cglib/CglibProxyFactory.java
 (original)
+++ 
commons/proper/proxy/trunk/cglib/src/main/java/org/apache/commons/proxy2/cglib/CglibProxyFactory.java
 Thu Mar 27 23:28:27 2014
@@ -55,7 +55,6 @@ public class CglibProxyFactory extends A
      * {@inheritDoc}
      */
     @Override
-    @SuppressWarnings("unchecked")
     public <T> T createDelegatorProxy(ClassLoader classLoader, 
ObjectProvider<?> targetProvider,
             Class<?>... proxyClasses)
     {
@@ -66,14 +65,15 @@ public class CglibProxyFactory extends A
         enhancer.setCallbackFilter(CALLBACKFILTER);
         enhancer.setCallbacks(new Callback[] { new 
ObjectProviderDispatcher(targetProvider), new EqualsHandler(),
                 new HashCodeHandler() });
-        return (T) enhancer.create();
+        @SuppressWarnings("unchecked") // type inference
+        final T result = (T) enhancer.create();
+        return result;
     }
 
     /**
      * {@inheritDoc}
      */
     @Override
-    @SuppressWarnings("unchecked")
     public <T> T createInterceptorProxy(ClassLoader classLoader, Object 
target, Interceptor interceptor,
             Class<?>... proxyClasses)
     {
@@ -84,14 +84,15 @@ public class CglibProxyFactory extends A
         enhancer.setCallbackFilter(CALLBACKFILTER);
         enhancer.setCallbacks(new Callback[] { new InterceptorBridge(target, 
interceptor), new EqualsHandler(),
                 new HashCodeHandler() });
-        return (T) enhancer.create();
+        @SuppressWarnings("unchecked") // type inference
+        final T result = (T) enhancer.create();
+        return result;
     }
 
     /**
      * {@inheritDoc}
      */
     @Override
-    @SuppressWarnings("unchecked")
     public <T> T createInvokerProxy(ClassLoader classLoader, Invoker invoker, 
Class<?>... proxyClasses)
     {
         final Enhancer enhancer = new Enhancer();
@@ -101,7 +102,9 @@ public class CglibProxyFactory extends A
         enhancer.setCallbackFilter(CALLBACKFILTER);
         enhancer.setCallbacks(
                 new Callback[] { new InvokerBridge(invoker), new 
EqualsHandler(), new HashCodeHandler() });
-        return (T) enhancer.create();
+        @SuppressWarnings("unchecked") // type inference
+        final T result = (T) enhancer.create();
+        return result;
     }
 
     
//******************************************************************************************************************

Modified: 
commons/proper/proxy/trunk/core/src/main/java/org/apache/commons/proxy2/DefaultProxyFactory.java
URL: 
http://svn.apache.org/viewvc/commons/proper/proxy/trunk/core/src/main/java/org/apache/commons/proxy2/DefaultProxyFactory.java?rev=1582544&r1=1582543&r2=1582544&view=diff
==============================================================================
--- 
commons/proper/proxy/trunk/core/src/main/java/org/apache/commons/proxy2/DefaultProxyFactory.java
 (original)
+++ 
commons/proper/proxy/trunk/core/src/main/java/org/apache/commons/proxy2/DefaultProxyFactory.java
 Thu Mar 27 23:28:27 2014
@@ -22,8 +22,6 @@ import java.util.ServiceLoader;
 /**
  * {@link ProxyFactory} implementation that delegates to the first discovered 
{@link ProxyFactory} service provider that
  * {@link #canProxy(Class...)}.
- * 
- * @author Matt Benson
  */
 class DefaultProxyFactory implements ProxyFactory
 {
@@ -54,7 +52,7 @@ class DefaultProxyFactory implements Pro
     @Override
     public <T> T createDelegatorProxy(ObjectProvider<?> delegateProvider, 
Class<?>... proxyClasses)
     {
-        @SuppressWarnings("unchecked")
+        @SuppressWarnings("unchecked") // type inference
         final T result = (T) 
getCapableProxyFactory(proxyClasses).createDelegatorProxy(delegateProvider, 
proxyClasses);
         return result;
     }
@@ -66,7 +64,7 @@ class DefaultProxyFactory implements Pro
     public <T> T createDelegatorProxy(ClassLoader classLoader, 
ObjectProvider<?> delegateProvider,
             Class<?>... proxyClasses)
     {
-        @SuppressWarnings("unchecked")
+        @SuppressWarnings("unchecked") // type inference
         final T result = (T) 
getCapableProxyFactory(proxyClasses).createDelegatorProxy(classLoader, 
delegateProvider,
                 proxyClasses);
         return result;
@@ -78,7 +76,7 @@ class DefaultProxyFactory implements Pro
     @Override
     public <T> T createInterceptorProxy(Object target, Interceptor 
interceptor, Class<?>... proxyClasses)
     {
-        @SuppressWarnings("unchecked")
+        @SuppressWarnings("unchecked") // type inference
         final T result = (T) 
getCapableProxyFactory(proxyClasses).createInterceptorProxy(target, interceptor,
                 proxyClasses);
         return result;
@@ -91,7 +89,7 @@ class DefaultProxyFactory implements Pro
     public <T> T createInterceptorProxy(ClassLoader classLoader, Object 
target, Interceptor interceptor,
             Class<?>... proxyClasses)
     {
-        @SuppressWarnings("unchecked")
+        @SuppressWarnings("unchecked") // type inference
         final T result = (T) 
getCapableProxyFactory(proxyClasses).createInterceptorProxy(classLoader, target,
                 interceptor, proxyClasses);
         return result;
@@ -103,7 +101,7 @@ class DefaultProxyFactory implements Pro
     @Override
     public <T> T createInvokerProxy(Invoker invoker, Class<?>... proxyClasses)
     {
-        @SuppressWarnings("unchecked")
+        @SuppressWarnings("unchecked") // type inference
         final T result = (T) 
getCapableProxyFactory(proxyClasses).createInvokerProxy(invoker, proxyClasses);
         return result;
     }
@@ -114,7 +112,7 @@ class DefaultProxyFactory implements Pro
     @Override
     public <T> T createInvokerProxy(ClassLoader classLoader, Invoker invoker, 
Class<?>... proxyClasses)
     {
-        @SuppressWarnings("unchecked")
+        @SuppressWarnings("unchecked") // type inference
         final T result = (T) getCapableProxyFactory(proxyClasses)
                 .createInvokerProxy(classLoader, invoker, proxyClasses);
         return result;

Modified: 
commons/proper/proxy/trunk/core/src/main/java/org/apache/commons/proxy2/ProxyUtils.java
URL: 
http://svn.apache.org/viewvc/commons/proper/proxy/trunk/core/src/main/java/org/apache/commons/proxy2/ProxyUtils.java?rev=1582544&r1=1582543&r2=1582544&view=diff
==============================================================================
--- 
commons/proper/proxy/trunk/core/src/main/java/org/apache/commons/proxy2/ProxyUtils.java
 (original)
+++ 
commons/proper/proxy/trunk/core/src/main/java/org/apache/commons/proxy2/ProxyUtils.java
 Thu Mar 27 23:28:27 2014
@@ -165,10 +165,11 @@ public final class ProxyUtils
      *            the type
      * @return the null value
      */
-    @SuppressWarnings("unchecked")
     public static <T> T nullValue(Class<T> type)
     {
-        return (T) NULL_VALUE_MAP.get(type);
+        @SuppressWarnings("unchecked") // map only contains matching 
type/value entries
+        final T result = (T) NULL_VALUE_MAP.get(type);
+        return result;
     }
 
     /**

Modified: 
commons/proper/proxy/trunk/core/src/main/java/org/apache/commons/proxy2/stub/AnnotationBuilder.java
URL: 
http://svn.apache.org/viewvc/commons/proper/proxy/trunk/core/src/main/java/org/apache/commons/proxy2/stub/AnnotationBuilder.java?rev=1582544&r1=1582543&r2=1582544&view=diff
==============================================================================
--- 
commons/proper/proxy/trunk/core/src/main/java/org/apache/commons/proxy2/stub/AnnotationBuilder.java
 (original)
+++ 
commons/proper/proxy/trunk/core/src/main/java/org/apache/commons/proxy2/stub/AnnotationBuilder.java
 Thu Mar 27 23:28:27 2014
@@ -130,10 +130,10 @@ public class AnnotationBuilder<A extends
     private static final ProxyFactory PROXY_FACTORY = new 
AbstractProxyFactory()
     {
         @Override
-        @SuppressWarnings("unchecked")
         public <T> T createInvokerProxy(ClassLoader classLoader, final Invoker 
invoker, Class<?>... proxyClasses)
         {
-            return (T) Proxy.newProxyInstance(classLoader, proxyClasses, new 
InvocationHandler()
+            @SuppressWarnings("unchecked") // type inference
+            final T result = (T) Proxy.newProxyInstance(classLoader, 
proxyClasses, new InvocationHandler()
             {
                 @Override
                 public Object invoke(Object proxy, Method method, Object[] 
args) throws Throwable
@@ -141,23 +141,25 @@ public class AnnotationBuilder<A extends
                     return invoker.invoke(proxy, method, args);
                 }
             });
+            return result;
         }
 
         @Override
-        @SuppressWarnings("unchecked")
         public <T> T createInterceptorProxy(ClassLoader classLoader, Object 
target, Interceptor interceptor,
                 Class<?>... proxyClasses)
         {
-            return (T) Proxy.newProxyInstance(classLoader, proxyClasses, new 
InterceptorInvocationHandler(
+            @SuppressWarnings("unchecked") // type inference
+            final T result = (T) Proxy.newProxyInstance(classLoader, 
proxyClasses, new InterceptorInvocationHandler(
                     ObjectProviderUtils.constant(target), interceptor));
+            return result;
         }
 
         @Override
-        @SuppressWarnings("unchecked")
         public <T> T createDelegatorProxy(ClassLoader classLoader, final 
ObjectProvider<?> delegateProvider,
                 Class<?>... proxyClasses)
         {
-            return (T) Proxy.newProxyInstance(classLoader, proxyClasses, new 
InterceptorInvocationHandler(
+            @SuppressWarnings("unchecked") // type inference
+            final T result = (T) Proxy.newProxyInstance(classLoader, 
proxyClasses, new InterceptorInvocationHandler(
                     delegateProvider, new Interceptor()
                     {
                         private static final long serialVersionUID = 1L;
@@ -168,6 +170,7 @@ public class AnnotationBuilder<A extends
                             return invocation.proceed();
                         }
                     }));
+            return result;
         }
     };
 

Modified: 
commons/proper/proxy/trunk/core/src/main/java/org/apache/commons/proxy2/stub/BaseAnnotationTrainer.java
URL: 
http://svn.apache.org/viewvc/commons/proper/proxy/trunk/core/src/main/java/org/apache/commons/proxy2/stub/BaseAnnotationTrainer.java?rev=1582544&r1=1582543&r2=1582544&view=diff
==============================================================================
--- 
commons/proper/proxy/trunk/core/src/main/java/org/apache/commons/proxy2/stub/BaseAnnotationTrainer.java
 (original)
+++ 
commons/proper/proxy/trunk/core/src/main/java/org/apache/commons/proxy2/stub/BaseAnnotationTrainer.java
 Thu Mar 27 23:28:27 2014
@@ -74,9 +74,15 @@ public abstract class BaseAnnotationTrai
         private <N extends Annotation> StubAnnotationArrayBuilder(final 
Class<? extends R> componentType)
         {
             super(componentType);
+            
+            /*
+             * We know the only type of array method that can be hosted on an 
annotation is an annotation array.
+             * Therefore we declare a bogus annotation type parameter on this 
method which we use to create
+             * our AnnotationTypeTrainer, whose type parameter requires an 
annotation type. N == R
+             */
             @SuppressWarnings("unchecked")
             final Class<N> annotationType = (Class<N>) componentType;
-            @SuppressWarnings("unchecked")
+            @SuppressWarnings("unchecked") // and cast it back
             final BaseTrainer<?, R> trainer = (BaseTrainer<?, R>) new 
AnnotationTypeTrainer<N>(
                     annotationType);
             this.annotationTypeTrainer = trainer;
@@ -104,7 +110,7 @@ public abstract class BaseAnnotationTrai
     @Override
     public <R> WhenAnnotationArray<R> when(R[] expression)
     {
-        @SuppressWarnings("unchecked")
+        @SuppressWarnings("unchecked") // we can reasonably say that the 
component type of an R[] is Class<? extends R>:
         final Class<? extends R> componentType = (Class<? extends R>) 
expression.getClass().getComponentType();
         return new WhenAnnotationArray<R>(componentType);
     }

Modified: 
commons/proper/proxy/trunk/core/src/main/java/org/apache/commons/proxy2/stub/BaseTrainer.java
URL: 
http://svn.apache.org/viewvc/commons/proper/proxy/trunk/core/src/main/java/org/apache/commons/proxy2/stub/BaseTrainer.java?rev=1582544&r1=1582543&r2=1582544&view=diff
==============================================================================
--- 
commons/proper/proxy/trunk/core/src/main/java/org/apache/commons/proxy2/stub/BaseTrainer.java
 (original)
+++ 
commons/proper/proxy/trunk/core/src/main/java/org/apache/commons/proxy2/stub/BaseTrainer.java
 Thu Mar 27 23:28:27 2014
@@ -58,7 +58,7 @@ public abstract class BaseTrainer<S exte
             this.traineeType = traineeType;
             return;
         }
-        @SuppressWarnings("unchecked")
+        @SuppressWarnings("unchecked") // T is this class's second type 
parameter; thus the raw type is Class<T>
         final Class<T> resolvedVariable = (Class<T>) 
TypeUtils.getRawType(BaseTrainer.class.getTypeParameters()[1],
                 getClass());
         Validate.isTrue(resolvedVariable != null, "Trainee type was not 
specified and could not be calculated for %s",
@@ -159,7 +159,7 @@ public abstract class BaseTrainer<S exte
 
     public <R> WhenObjectArray<R> when(R[] expression)
     {
-        @SuppressWarnings("unchecked")
+        @SuppressWarnings("unchecked") // we can reasonably say that the 
component type of an R[] is Class<? extends R>:
         final Class<? extends R> componentType = (Class<? extends R>) 
expression.getClass().getComponentType();
         return new WhenObjectArray<R>(componentType);
     }
@@ -169,10 +169,11 @@ public abstract class BaseTrainer<S exte
         return new WhenCharArray();
     }
 
-    @SuppressWarnings("unchecked")
     protected S self()
     {
-        return (S) this;
+        @SuppressWarnings("unchecked") // S is our "self" type parameter
+        final S self = (S) this;
+        return self;
     }
 
     
//******************************************************************************************************************
@@ -337,7 +338,7 @@ public abstract class BaseTrainer<S exte
 
         public S build()
         {
-            @SuppressWarnings("unchecked")
+            @SuppressWarnings("unchecked") // an array of component type ? 
extends R is assignable to R[]:
             final R[] array = elements.toArray((R[]) 
Array.newInstance(componentType, elements.size()));
             trainingContext().then(InterceptorUtils.constant(array));
             return self();

Modified: 
commons/proper/proxy/trunk/core/src/main/java/org/apache/commons/proxy2/stub/TrainingContext.java
URL: 
http://svn.apache.org/viewvc/commons/proper/proxy/trunk/core/src/main/java/org/apache/commons/proxy2/stub/TrainingContext.java?rev=1582544&r1=1582543&r2=1582544&view=diff
==============================================================================
--- 
commons/proper/proxy/trunk/core/src/main/java/org/apache/commons/proxy2/stub/TrainingContext.java
 (original)
+++ 
commons/proper/proxy/trunk/core/src/main/java/org/apache/commons/proxy2/stub/TrainingContext.java
 Thu Mar 27 23:28:27 2014
@@ -179,7 +179,7 @@ class TrainingContext
             for (int i = 0; i < arguments.length; i++)
             {
                 Object argument = arguments[i];
-                @SuppressWarnings({ "rawtypes", "unchecked" })
+                @SuppressWarnings({ "rawtypes", "unchecked"}) // we can't know 
generic argument types
                 final boolean matches = ((ArgumentMatcher) 
matchers[i]).matches(argument);
                 if (!matches)
                 {

Modified: 
commons/proper/proxy/trunk/javassist/src/main/java/org/apache/commons/proxy2/javassist/JavassistProxyFactory.java
URL: 
http://svn.apache.org/viewvc/commons/proper/proxy/trunk/javassist/src/main/java/org/apache/commons/proxy2/javassist/JavassistProxyFactory.java?rev=1582544&r1=1582543&r2=1582544&view=diff
==============================================================================
--- 
commons/proper/proxy/trunk/javassist/src/main/java/org/apache/commons/proxy2/javassist/JavassistProxyFactory.java
 (original)
+++ 
commons/proper/proxy/trunk/javassist/src/main/java/org/apache/commons/proxy2/javassist/JavassistProxyFactory.java
 Thu Mar 27 23:28:27 2014
@@ -69,12 +69,12 @@ public class JavassistProxyFactory exten
      * {@inheritDoc}
      */
     @Override
-    @SuppressWarnings("unchecked")
     public <T> T createDelegatorProxy(ClassLoader classLoader, 
ObjectProvider<?> targetProvider,
             Class<?>... proxyClasses)
     {
         try
         {
+            @SuppressWarnings("unchecked") // type inference
             final Class<? extends T> clazz = (Class<? extends T>) 
DELEGATING_PROXY_CACHE.getProxyClass(classLoader,
                     proxyClasses);
             return 
clazz.getConstructor(ObjectProvider.class).newInstance(targetProvider);
@@ -89,12 +89,12 @@ public class JavassistProxyFactory exten
      * {@inheritDoc}
      */
     @Override
-    @SuppressWarnings("unchecked")
     public <T> T createInterceptorProxy(ClassLoader classLoader, Object 
target, Interceptor interceptor,
             Class<?>... proxyClasses)
     {
         try
         {
+            @SuppressWarnings("unchecked") // type inference
             final Class<? extends T> clazz = (Class<? extends T>) 
INTERCEPTOR_PROXY_CACHE.getProxyClass(classLoader,
                     proxyClasses);
             return clazz.getConstructor(Object.class, 
Interceptor.class).newInstance(target, interceptor);
@@ -109,11 +109,11 @@ public class JavassistProxyFactory exten
      * {@inheritDoc}
      */
     @Override
-    @SuppressWarnings("unchecked")
     public <T> T createInvokerProxy(ClassLoader classLoader, Invoker invoker, 
Class<?>... proxyClasses)
     {
         try
         {
+            @SuppressWarnings("unchecked") // type inference
             final Class<? extends T> clazz = (Class<? extends T>) 
INVOKER_PROXY_CACHE.getProxyClass(classLoader,
                     proxyClasses);
             return clazz.getConstructor(Invoker.class).newInstance(invoker);

Modified: 
commons/proper/proxy/trunk/jdk/src/main/java/org/apache/commons/proxy2/jdk/JdkProxyFactory.java
URL: 
http://svn.apache.org/viewvc/commons/proper/proxy/trunk/jdk/src/main/java/org/apache/commons/proxy2/jdk/JdkProxyFactory.java?rev=1582544&r1=1582543&r2=1582544&view=diff
==============================================================================
--- 
commons/proper/proxy/trunk/jdk/src/main/java/org/apache/commons/proxy2/jdk/JdkProxyFactory.java
 (original)
+++ 
commons/proper/proxy/trunk/jdk/src/main/java/org/apache/commons/proxy2/jdk/JdkProxyFactory.java
 Thu Mar 27 23:28:27 2014
@@ -53,11 +53,13 @@ public class JdkProxyFactory extends Abs
      * @return a proxy2 which delegates to the object provided by the target 
<code>delegateProvider>
      */
     @Override
-    @SuppressWarnings("unchecked")
     public <T> T createDelegatorProxy(ClassLoader classLoader, 
ObjectProvider<?> delegateProvider,
             Class<?>... proxyClasses)
     {
-        return (T) Proxy.newProxyInstance(classLoader, proxyClasses, new 
DelegatorInvocationHandler(delegateProvider));
+        @SuppressWarnings("unchecked") // type inference
+        final T result = (T) Proxy.newProxyInstance(classLoader, proxyClasses, 
new DelegatorInvocationHandler(
+                delegateProvider));
+        return result;
     }
 
     /**
@@ -76,12 +78,13 @@ public class JdkProxyFactory extends Abs
      *         <code>target</code> object.
      */
     @Override
-    @SuppressWarnings("unchecked")
     public <T> T createInterceptorProxy(ClassLoader classLoader, Object 
target, Interceptor interceptor,
             Class<?>... proxyClasses)
     {
-        return (T) Proxy.newProxyInstance(classLoader, proxyClasses, new 
InterceptorInvocationHandler(target,
+        @SuppressWarnings("unchecked") // type inference
+        final T result = (T) Proxy.newProxyInstance(classLoader, proxyClasses, 
new InterceptorInvocationHandler(target,
                 interceptor));
+        return result;
     }
 
     /**
@@ -96,10 +99,11 @@ public class JdkProxyFactory extends Abs
      * @return a proxy2 which uses the provided {@link Invoker} to handle all 
method invocations
      */
     @Override
-    @SuppressWarnings("unchecked")
     public <T> T createInvokerProxy(ClassLoader classLoader, Invoker invoker, 
Class<?>... proxyClasses)
     {
-        return (T) Proxy.newProxyInstance(classLoader, proxyClasses, new 
InvokerInvocationHandler(invoker));
+        @SuppressWarnings("unchecked") // type inference
+        final T result = (T) Proxy.newProxyInstance(classLoader, proxyClasses, 
new InvokerInvocationHandler(invoker));
+        return result;
     }
 
     
//******************************************************************************************************************


Reply via email to