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