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