more of the bounds-related compiler errors + the proxytoys way of casting to a local variable and reducing the scope of the unchecked suppresswarnings annotation to the variable declaration

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/proxy/branches/version-2.0-work@966838 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/core/src/main/java/org/apache/commons/proxy2/DefaultProxyFactory.java b/core/src/main/java/org/apache/commons/proxy2/DefaultProxyFactory.java
index 401bcb1..0a6db83 100644
--- a/core/src/main/java/org/apache/commons/proxy2/DefaultProxyFactory.java
+++ b/core/src/main/java/org/apache/commons/proxy2/DefaultProxyFactory.java
@@ -49,65 +49,71 @@
      * {@inheritDoc}
      */
     @Override
-    @SuppressWarnings("unchecked")
     public <T> T createDelegatorProxy(ObjectProvider<?> delegateProvider,
             Class<?>... proxyClasses) {
-        return (T) getCapableProxyFactory(proxyClasses).createDelegatorProxy(
+        @SuppressWarnings("unchecked")
+        final T result = (T) getCapableProxyFactory(proxyClasses).createDelegatorProxy(
                 delegateProvider, proxyClasses);
+        return result;
     }
 
     /**
      * {@inheritDoc}
      */
     @Override
-    @SuppressWarnings("unchecked")
     public <T> T createDelegatorProxy(ClassLoader classLoader,
             ObjectProvider<?> delegateProvider, Class<?>... proxyClasses) {
-        return (T) getCapableProxyFactory(proxyClasses).createDelegatorProxy(
+        @SuppressWarnings("unchecked")
+        final T result = (T) getCapableProxyFactory(proxyClasses).createDelegatorProxy(
                 classLoader, delegateProvider, proxyClasses);
+        return result;
     }
 
     /**
      * {@inheritDoc}
      */
     @Override
-    @SuppressWarnings("unchecked")
     public <T> T createInterceptorProxy(Object target, Interceptor interceptor,
             Class<?>... proxyClasses) {
-        return (T) getCapableProxyFactory(proxyClasses).createInterceptorProxy(
+        @SuppressWarnings("unchecked")
+        final T result = (T) getCapableProxyFactory(proxyClasses).createInterceptorProxy(
                 target, interceptor, proxyClasses);
+        return result;
     }
 
     /**
      * {@inheritDoc}
      */
     @Override
-    @SuppressWarnings("unchecked")
     public <T> T createInterceptorProxy(ClassLoader classLoader, Object target,
             Interceptor interceptor, Class<?>... proxyClasses) {
-        return (T) getCapableProxyFactory(proxyClasses).createInterceptorProxy(
+        @SuppressWarnings("unchecked")
+        final T result = (T) getCapableProxyFactory(proxyClasses).createInterceptorProxy(
                 classLoader, target, interceptor, proxyClasses);
+        return result;
     }
 
     /**
      * {@inheritDoc}
      */
     @Override
-    @SuppressWarnings("unchecked")
     public <T> T createInvokerProxy(Invoker invoker, Class<?>... proxyClasses) {
-        return (T) getCapableProxyFactory(proxyClasses).createInvokerProxy(
+        @SuppressWarnings("unchecked")
+        final T result = (T) getCapableProxyFactory(proxyClasses).createInvokerProxy(
                 invoker, proxyClasses);
+        return result;
     }
 
     /**
      * {@inheritDoc}
      */
     @Override
-    @SuppressWarnings("unchecked")
     public <T> T createInvokerProxy(ClassLoader classLoader, Invoker invoker,
             Class<?>... proxyClasses) {
-        return (T) getCapableProxyFactory(proxyClasses).createInvokerProxy(
+        @SuppressWarnings("unchecked")
+        final T result = (T) getCapableProxyFactory(proxyClasses).createInvokerProxy(
                 classLoader, invoker, proxyClasses);
+        return result;
     }
 
     private ProxyFactory getCapableProxyFactory(Class<?>... proxyClasses) {
diff --git a/core/src/main/java/org/apache/commons/proxy2/impl/AbstractProxyFactory.java b/core/src/main/java/org/apache/commons/proxy2/impl/AbstractProxyFactory.java
index ad450dd..944dda4 100644
--- a/core/src/main/java/org/apache/commons/proxy2/impl/AbstractProxyFactory.java
+++ b/core/src/main/java/org/apache/commons/proxy2/impl/AbstractProxyFactory.java
@@ -57,7 +57,9 @@
      */

     public <T> T createDelegatorProxy( ObjectProvider<?> delegateProvider, Class<?>... proxyClasses )

     {

-        return createDelegatorProxy(Thread.currentThread().getContextClassLoader(), delegateProvider, proxyClasses);

+        @SuppressWarnings("unchecked")

+        final T result = (T) createDelegatorProxy(Thread.currentThread().getContextClassLoader(), delegateProvider, proxyClasses);

+        return result;

     }

 

     /**

@@ -73,8 +75,10 @@
     public <T> T createInterceptorProxy( Object target, Interceptor interceptor,

                                           Class<?>... proxyClasses )

     {

-        return createInterceptorProxy(Thread.currentThread().getContextClassLoader(), target, interceptor,

+        @SuppressWarnings("unchecked")

+        final T result = (T) createInterceptorProxy(Thread.currentThread().getContextClassLoader(), target, interceptor,

                                       proxyClasses);

+        return result;

     }

 

     /**

@@ -87,8 +91,10 @@
      */

     public <T> T createInvokerProxy( Invoker invoker, Class<?>... proxyClasses )

     {

-        return createInvokerProxy(Thread.currentThread().getContextClassLoader(), invoker,

+        @SuppressWarnings("unchecked")

+        final T result = (T) createInvokerProxy(Thread.currentThread().getContextClassLoader(), invoker,

                                   proxyClasses);

+        return result;

     }

 

 }

diff --git a/core/src/main/java/org/apache/commons/proxy2/invoker/recorder/InvocationRecorder.java b/core/src/main/java/org/apache/commons/proxy2/invoker/recorder/InvocationRecorder.java
index 05f21a5..b4a1751 100644
--- a/core/src/main/java/org/apache/commons/proxy2/invoker/recorder/InvocationRecorder.java
+++ b/core/src/main/java/org/apache/commons/proxy2/invoker/recorder/InvocationRecorder.java
@@ -78,7 +78,9 @@
     {

         if( proxyFactory.canProxy(type) )

         {

-            return proxyFactory.createInvokerProxy(new InvocationRecorderInvoker(genericType), type);

+            @SuppressWarnings("unchecked")

+            final T result = (T) proxyFactory.createInvokerProxy(new InvocationRecorderInvoker(genericType), type);

+            return result;

         }

         return ProxyUtils.nullValue(type);

     }

@@ -98,11 +100,10 @@
         /**

          * {@inheritDoc}

          */

-        @SuppressWarnings("unchecked")

         public Object invoke( Object o, Method method, Object[] args ) throws Throwable

         {

             recordedInvocations.add(new RecordedInvocation(method, args));

-            final Class returnType = getReturnType(targetType, method);

+            final Class<?> returnType = getReturnType(targetType, method);

             return proxy(method.getGenericReturnType(), returnType);

         }

     }