javadocs/compiler warnings

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/proxy/branches/version-2.0-work@965949 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/core/src/main/java/org/apache/commons/proxy2/Interceptor.java b/core/src/main/java/org/apache/commons/proxy2/Interceptor.java
index 11663a7..31e01e7 100644
--- a/core/src/main/java/org/apache/commons/proxy2/Interceptor.java
+++ b/core/src/main/java/org/apache/commons/proxy2/Interceptor.java
@@ -31,5 +31,11 @@
 // Other Methods

 //**********************************************************************************************************************

 

+    /**

+     * Intercept the specified {@link Invocation}.

+     * @param invocation

+     * @return return value of the method

+     * @throws Throwable

+     */

     public Object intercept( Invocation invocation ) throws Throwable;

 }

diff --git a/core/src/main/java/org/apache/commons/proxy2/Invocation.java b/core/src/main/java/org/apache/commons/proxy2/Invocation.java
index 1871684..d432107 100644
--- a/core/src/main/java/org/apache/commons/proxy2/Invocation.java
+++ b/core/src/main/java/org/apache/commons/proxy2/Invocation.java
@@ -20,7 +20,7 @@
 import java.lang.reflect.Method;

 

 /**

- * Represents a method invocation.

+ * Method invocation for use by an {@link Interceptor}.

  *

  * @author James Carman

  * @since 1.0

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 2093fe0..186337d 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
@@ -29,6 +29,7 @@
 import java.util.List;

 

 /**

+ * An {@link InvocationRecorder} records method invocations against its generated proxies.

  * @author James Carman

  */

 public class InvocationRecorder

@@ -36,21 +37,42 @@
     private final ProxyFactory proxyFactory;

     private List<RecordedInvocation> recordedInvocations = new LinkedList<RecordedInvocation>();

 

+    /**

+     * Create a new InvocationRecorder instance.

+     * @param proxyFactory

+     */

     public InvocationRecorder( ProxyFactory proxyFactory )

     {

         this.proxyFactory = proxyFactory;

     }

 

+    /**

+     * Get the invocations that have been recorded up to this point.  The list is "live" and should not be modified.

+     * @return {@link List} of {@link RecordedInvocation}

+     */

     public List<RecordedInvocation> getRecordedInvocations()

     {

         return recordedInvocations;

     }

 

+    /**

+     * Generate a recording proxy for the specified class.

+     * @param <T>

+     * @param type

+     * @return the generated proxy

+     */

     public <T> T proxy( Class<T> type )

     {

         return proxy(type, type);

     }

 

+    /**

+     * Generate a recording proxy for the specified class, qualified as <code>genericType</code>.

+     * @param <T>

+     * @param genericType

+     * @param type

+     * @return the generated proxy

+     */

     public <T> T proxy( Type genericType, Class<T> type )

     {

         if( proxyFactory.canProxy(type) )

@@ -62,6 +84,9 @@
 

     private class InvocationRecorderInvoker implements Invoker

     {

+        /** Serialization version */

+        private static final long serialVersionUID = 1L;

+

         private final Type targetType;

 

         private InvocationRecorderInvoker( Type targetType )

@@ -69,6 +94,9 @@
             this.targetType = targetType;

         }

 

+        /**

+         * {@inheritDoc}

+         */

         @SuppressWarnings("unchecked")

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

         {

@@ -78,48 +106,65 @@
         }

     }

 

+    /**

+     * Reset this {@link InvocationRecorder}.

+     */

     public void reset()

     {

         recordedInvocations.clear();

     }

 

-    public static Class getReturnType( Type enclosingType, Method method ) throws Exception

+    /**

+     * Get the raw return type of a method qualified with regard to a particular target type.

+     * @param enclosingType

+     * @param method

+     * @return {@link Class} instance

+     * @throws Exception

+     */

+    public static Class<?> getReturnType( Type enclosingType, Method method ) throws Exception

     {

         Type returnType = method.getGenericReturnType();

-        if( returnType instanceof Class )

+        if( returnType instanceof Class<?> )

         {

-            return ( Class ) returnType;

+            return ( Class<?> ) returnType;

         }

-        else if( returnType instanceof TypeVariable )

+        else if( returnType instanceof TypeVariable<?> )

         {

-            return resolveVariable(enclosingType, ( TypeVariable ) returnType);

+            return resolveVariable(enclosingType, ( TypeVariable<?> ) returnType);

         }

         else if( returnType instanceof ParameterizedType )

         {

-            return ( Class ) ( ( ParameterizedType ) returnType ).getRawType();

+            return ( Class<?> ) ( ( ParameterizedType ) returnType ).getRawType();

         }

         return null;

     }

 

-    public static Class resolveVariable( Type enclosingType, TypeVariable typeVar ) throws Exception

+    /**

+     * Resolve the raw type of a type variable against a particular owning/inheriting type.

+     * @param enclosingType

+     * @param typeVar

+     * @return {@link Class} instance

+     * @throws Exception

+     */

+    public static Class<?> resolveVariable( Type enclosingType, TypeVariable<?> typeVar ) throws Exception

     {

         if( enclosingType instanceof ParameterizedType )

         {

             ParameterizedType pt = ( ParameterizedType ) enclosingType;

-            final Class rawType = ( Class ) pt.getRawType();

-            TypeVariable[] typeParameters = rawType.getTypeParameters();

+            final Class<?> rawType = ( Class<?> ) pt.getRawType();

+            TypeVariable<?>[] typeParameters = rawType.getTypeParameters();

             for( int i = 0; i < typeParameters.length; i++ )

             {

-                TypeVariable typeParameter = typeParameters[i];

+                TypeVariable<?> typeParameter = typeParameters[i];

                 if( typeParameter == typeVar )

                 {

-                    return ( Class ) pt.getActualTypeArguments()[i];

+                    return ( Class<?> ) pt.getActualTypeArguments()[i];

                 }

             }

         }

-        else if( enclosingType instanceof Class )

+        else if( enclosingType instanceof Class<?> )

         {

-            return resolveVariable(( ( Class ) enclosingType ).getGenericSuperclass(), typeVar);

+            return resolveVariable(( ( Class<?> ) enclosingType ).getGenericSuperclass(), typeVar);

         }

         return null;

     }

diff --git a/core/src/main/java/org/apache/commons/proxy2/invoker/recorder/RecordedInvocation.java b/core/src/main/java/org/apache/commons/proxy2/invoker/recorder/RecordedInvocation.java
index f8d8bbf..d13b04b 100644
--- a/core/src/main/java/org/apache/commons/proxy2/invoker/recorder/RecordedInvocation.java
+++ b/core/src/main/java/org/apache/commons/proxy2/invoker/recorder/RecordedInvocation.java
@@ -22,6 +22,7 @@
 import java.lang.reflect.Method;

 

 /**

+ * Detached representation of a method invocation.

  * @author James Carman

  */

 public class RecordedInvocation

@@ -33,30 +34,44 @@
     private final Method invokedMethod;

     private final Object[] arguments;

 

-//**********************************************************************************************************************

-// Constructors

-//**********************************************************************************************************************

+  //**********************************************************************************************************************

+ // Constructors

+ //**********************************************************************************************************************

 

+    /**

+     * Create a new RecordedInvocation instance.

+     * @param invokedMethod

+     * @param arguments

+     */

     public RecordedInvocation( Method invokedMethod, Object[] arguments )

     {

         this.invokedMethod = invokedMethod;

         this.arguments = arguments;

     }

 

-//**********************************************************************************************************************

-// Canonical Methods

-//**********************************************************************************************************************

+  //**********************************************************************************************************************

+ // Canonical Methods

+ //**********************************************************************************************************************

 

-    public Method getInvokedMethod()

-    {

+    /**

+     * Get the invokedMethod.

+     * @return Method

+     */

+    public Method getInvokedMethod() {

         return invokedMethod;

     }

 

-    public Object[] getArguments()

-    {

+    /**

+     * Get the arguments.

+     * @return Object[]

+     */

+    public Object[] getArguments() {

         return arguments;

     }

 

+    /**

+     * {@inheritDoc}

+     */

     public String toString()

     {

         StringBuffer buffer = new StringBuffer();

@@ -78,6 +93,11 @@
         return buffer.toString();

     }

 

+    /**

+     * Add a string representation of <code>input</code> to <code>buffer</code>.

+     * @param buffer

+     * @param input

+     */

     protected void convert( StringBuffer buffer, Object input )

     {

         if( input == null )

diff --git a/core/src/main/java/org/apache/commons/proxy2/provider/BeanProvider.java b/core/src/main/java/org/apache/commons/proxy2/provider/BeanProvider.java
index e43d5f8..07b2c76 100644
--- a/core/src/main/java/org/apache/commons/proxy2/provider/BeanProvider.java
+++ b/core/src/main/java/org/apache/commons/proxy2/provider/BeanProvider.java
@@ -30,16 +30,22 @@
  */

 public class BeanProvider<T> implements ObjectProvider<T>, Serializable

 {

+    /** Serialization version */

+    private static final long serialVersionUID = 1L;

+

 //**********************************************************************************************************************

 // Fields

 //**********************************************************************************************************************

 

-    private Class<T> beanClass;

+    private Class<? extends T> beanClass;

 

-//**********************************************************************************************************************

-// Constructors

-//**********************************************************************************************************************

+  //**********************************************************************************************************************

+ // Constructors

+ //**********************************************************************************************************************

 

+    /**

+     * Create a new BeanProvider instance.

+     */

     public BeanProvider()

     {

     }

@@ -49,15 +55,18 @@
      *

      * @param beanClass the bean class

      */

-    public BeanProvider( Class<T> beanClass )

+    public BeanProvider( Class<? extends T> beanClass )

     {

         this.beanClass = beanClass;

     }

 

-//**********************************************************************************************************************

-// ObjectProvider Implementation

-//**********************************************************************************************************************

+  //**********************************************************************************************************************

+ // ObjectProvider Implementation

+ //**********************************************************************************************************************

 

+    /**

+     * {@inheritDoc}

+     */

     public T getObject()

     {

         try

@@ -79,12 +88,15 @@
         }

     }

 

-//**********************************************************************************************************************

-// Getter/Setter Methods

-//**********************************************************************************************************************

+  //**********************************************************************************************************************

+ // Getter/Setter Methods

+ //**********************************************************************************************************************

 

-    public void setBeanClass( Class<T> beanClass )

-    {

+    /**

+     * Set the beanClass.

+     * @param beanClass the Class<T> to set

+     */

+    public void setBeanClass(Class<? extends T> beanClass) {

         this.beanClass = beanClass;

     }

 }

diff --git a/core/src/main/java/org/apache/commons/proxy2/provider/CloningProvider.java b/core/src/main/java/org/apache/commons/proxy2/provider/CloningProvider.java
index 3bef114..9e66f36 100644
--- a/core/src/main/java/org/apache/commons/proxy2/provider/CloningProvider.java
+++ b/core/src/main/java/org/apache/commons/proxy2/provider/CloningProvider.java
@@ -33,6 +33,9 @@
  */

 public class CloningProvider<T extends Cloneable> implements ObjectProvider<T>, Serializable

 {

+    /** Serialization version */

+    private static final long serialVersionUID = 1L;

+

 //**********************************************************************************************************************

 // Fields

 //**********************************************************************************************************************

@@ -55,10 +58,13 @@
         this.cloneable = cloneable;

     }

 

-//**********************************************************************************************************************

-// ObjectProvider Implementation

-//**********************************************************************************************************************

+  //**********************************************************************************************************************

+ // ObjectProvider Implementation

+ //**********************************************************************************************************************

 

+    /**

+     * {@inheritDoc}

+     */

     @SuppressWarnings("unchecked")

     public T getObject()

     {

diff --git a/core/src/main/java/org/apache/commons/proxy2/provider/ConstantProvider.java b/core/src/main/java/org/apache/commons/proxy2/provider/ConstantProvider.java
index cb15579..55ca010 100644
--- a/core/src/main/java/org/apache/commons/proxy2/provider/ConstantProvider.java
+++ b/core/src/main/java/org/apache/commons/proxy2/provider/ConstantProvider.java
@@ -29,25 +29,35 @@
  */

 public class ConstantProvider<T> implements ObjectProvider<T>, Serializable

 {

+    /** Serialization version */

+    private static final long serialVersionUID = 1L;

+

 //**********************************************************************************************************************

 // Fields

 //**********************************************************************************************************************

 

     private final T constant;

 

-//**********************************************************************************************************************

-// Constructors

-//**********************************************************************************************************************

+  //**********************************************************************************************************************

+ // Constructors

+ //**********************************************************************************************************************

 

+    /**

+     * Create a new ConstantProvider instance.

+     * @param constant

+     */

     public ConstantProvider( T constant )

     {

         this.constant = constant;

     }

 

-//**********************************************************************************************************************

-// ObjectProvider Implementation

-//**********************************************************************************************************************

+  //**********************************************************************************************************************

+ // ObjectProvider Implementation

+ //**********************************************************************************************************************

 

+    /**

+     * {@inheritDoc}

+     */

     public T getObject()

     {

         return constant;

diff --git a/core/src/main/java/org/apache/commons/proxy2/provider/NullProvider.java b/core/src/main/java/org/apache/commons/proxy2/provider/NullProvider.java
index bd6e6fc..8aca99b 100644
--- a/core/src/main/java/org/apache/commons/proxy2/provider/NullProvider.java
+++ b/core/src/main/java/org/apache/commons/proxy2/provider/NullProvider.java
@@ -25,10 +25,16 @@
  */

 public class NullProvider<T> extends ConstantProvider<T>

 {

-//**********************************************************************************************************************

-// Constructors

-//**********************************************************************************************************************

+    /** Serialization version */

+    private static final long serialVersionUID = 1L;

 

+  //**********************************************************************************************************************

+ // Constructors

+ //**********************************************************************************************************************

+

+    /**

+     * Create a new NullProvider instance.

+     */

     public NullProvider()

     {

         super(null);

diff --git a/core/src/main/java/org/apache/commons/proxy2/provider/ProviderDecorator.java b/core/src/main/java/org/apache/commons/proxy2/provider/ProviderDecorator.java
index ce6ce0c..f040f3c 100644
--- a/core/src/main/java/org/apache/commons/proxy2/provider/ProviderDecorator.java
+++ b/core/src/main/java/org/apache/commons/proxy2/provider/ProviderDecorator.java
@@ -29,25 +29,35 @@
  */

 public class ProviderDecorator<T> implements ObjectProvider<T>

 {

-//**********************************************************************************************************************

-// Fields

-//**********************************************************************************************************************

+  //**********************************************************************************************************************

+ // Fields

+ //**********************************************************************************************************************

 

-    protected ObjectProvider<T> inner;

+    /**

+     * The wrapped {@link ObjectProvider}.

+     */

+    protected ObjectProvider<? extends T> inner;

 

-//**********************************************************************************************************************

-// Constructors

-//**********************************************************************************************************************

+  //**********************************************************************************************************************

+ // Constructors

+ //**********************************************************************************************************************

 

-    public ProviderDecorator( ObjectProvider<T> inner )

+    /**

+     * Create a new ProviderDecorator instance.

+     * @param inner

+     */

+    public ProviderDecorator( ObjectProvider<? extends T> inner )

     {

         this.inner = inner;

     }

 

-//**********************************************************************************************************************

-// ObjectProvider Implementation

-//**********************************************************************************************************************

+  //**********************************************************************************************************************

+ // ObjectProvider Implementation

+ //**********************************************************************************************************************

 

+    /**

+     * {@inheritDoc}

+     */

     public T getObject()

     {

         return inner.getObject();

diff --git a/core/src/main/java/org/apache/commons/proxy2/provider/SingletonProvider.java b/core/src/main/java/org/apache/commons/proxy2/provider/SingletonProvider.java
index 42c99dd..ae9b4f1 100644
--- a/core/src/main/java/org/apache/commons/proxy2/provider/SingletonProvider.java
+++ b/core/src/main/java/org/apache/commons/proxy2/provider/SingletonProvider.java
@@ -34,19 +34,26 @@
 

     private T instance;

 

-//**********************************************************************************************************************

-// Constructors

-//**********************************************************************************************************************

+  //**********************************************************************************************************************

+ // Constructors

+ //**********************************************************************************************************************

 

-    public SingletonProvider( ObjectProvider<T> inner )

+    /**

+     * Create a new SingletonProvider instance.

+     * @param inner

+     */

+    public SingletonProvider( ObjectProvider<? extends T> inner )

     {

         super(inner);

     }

 

-//**********************************************************************************************************************

-// ObjectProvider Implementation

-//**********************************************************************************************************************

+  //**********************************************************************************************************************

+ // ObjectProvider Implementation

+ //**********************************************************************************************************************

 

+    /**

+     * {@inheritDoc}

+     */

     public T getObject()

     {

         synchronized( this )

diff --git a/core/src/main/java/org/apache/commons/proxy2/provider/remoting/BurlapProvider.java b/core/src/main/java/org/apache/commons/proxy2/provider/remoting/BurlapProvider.java
index ff19e48..245cc9e 100644
--- a/core/src/main/java/org/apache/commons/proxy2/provider/remoting/BurlapProvider.java
+++ b/core/src/main/java/org/apache/commons/proxy2/provider/remoting/BurlapProvider.java
@@ -39,31 +39,45 @@
  */
 public class BurlapProvider<T> implements ObjectProvider<T>, Serializable
 {
+    /** Serialization version */
+    private static final long serialVersionUID = 1L;
+
 //**********************************************************************************************************************
 // Fields
 //**********************************************************************************************************************
 
-    private Class<T> serviceInterface;
+    private Class<? extends T> serviceInterface;
     private String url;
 
-//**********************************************************************************************************************
-// Constructors
-//**********************************************************************************************************************
+  //**********************************************************************************************************************
+ // Constructors
+ //**********************************************************************************************************************
 
+    /**
+     * Create a new BurlapProvider instance.
+     */
     public BurlapProvider()
     {
     }
 
-    public BurlapProvider( Class<T> serviceInterface, String url )
+    /**
+     * Create a new BurlapProvider instance.
+     * @param serviceInterface
+     * @param url
+     */
+    public BurlapProvider( Class<? extends T> serviceInterface, String url )
     {
         this.serviceInterface = serviceInterface;
         this.url = url;
     }
 
-//**********************************************************************************************************************
-// ObjectProvider Implementation
-//**********************************************************************************************************************
+  //**********************************************************************************************************************
+ // ObjectProvider Implementation
+ //**********************************************************************************************************************
 
+    /**
+     * {@inheritDoc}
+     */
     @SuppressWarnings("unchecked")
     public T getObject()
     {
@@ -81,13 +95,19 @@
 // Getter/Setter Methods
 //**********************************************************************************************************************
 
-    public void setServiceInterface( Class<T> serviceInterface )
-    {
+    /**
+     * Set the serviceInterface.
+     * @param serviceInterface the Class to set
+     */
+    public void setServiceInterface(Class<? extends T> serviceInterface) {
         this.serviceInterface = serviceInterface;
     }
 
-    public void setUrl( String url )
-    {
+    /**
+     * Set the url.
+     * @param url the String to set
+     */
+    public void setUrl(String url) {
         this.url = url;
     }
 }
diff --git a/core/src/main/java/org/apache/commons/proxy2/provider/remoting/HessianProvider.java b/core/src/main/java/org/apache/commons/proxy2/provider/remoting/HessianProvider.java
index fb7c317..fc5e45e 100644
--- a/core/src/main/java/org/apache/commons/proxy2/provider/remoting/HessianProvider.java
+++ b/core/src/main/java/org/apache/commons/proxy2/provider/remoting/HessianProvider.java
@@ -39,31 +39,45 @@
  */
 public class HessianProvider<T> implements ObjectProvider<T>, Serializable
 {
+    /** Serialization version */
+    private static final long serialVersionUID = 1L;
+
 //**********************************************************************************************************************
 // Fields
 //**********************************************************************************************************************
 
-    private Class<T> serviceInterface;
+    private Class<? extends T> serviceInterface;
     private String url;
 
-//**********************************************************************************************************************
-// Constructors
-//**********************************************************************************************************************
+  //**********************************************************************************************************************
+ // Constructors
+ //**********************************************************************************************************************
 
+    /**
+     * Create a new HessianProvider instance.
+     */
     public HessianProvider()
     {
     }
 
-    public HessianProvider( Class<T> serviceInterface, String url )
+    /**
+     * Create a new HessianProvider instance.
+     * @param serviceInterface
+     * @param url
+     */
+    public HessianProvider( Class<? extends T> serviceInterface, String url )
     {
         this.serviceInterface = serviceInterface;
         this.url = url;
     }
 
-//**********************************************************************************************************************
-// ObjectProvider Implementation
-//**********************************************************************************************************************
+  //**********************************************************************************************************************
+ // ObjectProvider Implementation
+ //**********************************************************************************************************************
 
+    /**
+     * {@inheritDoc}
+     */
     @SuppressWarnings("unchecked")
     public T getObject()
     {
@@ -81,13 +95,19 @@
 // Getter/Setter Methods
 //**********************************************************************************************************************
 
-    public void setServiceInterface( Class<T> serviceInterface )
-    {
+    /**
+     * Set the serviceInterface.
+     * @param serviceInterface the Class to set
+     */
+    public void setServiceInterface(Class<? extends T> serviceInterface) {
         this.serviceInterface = serviceInterface;
     }
 
-    public void setUrl( String url )
-    {
+    /**
+     * Set the url.
+     * @param url the String to set
+     */
+    public void setUrl(String url) {
         this.url = url;
     }
 }
diff --git a/core/src/main/java/org/apache/commons/proxy2/provider/remoting/JaxRpcProvider.java b/core/src/main/java/org/apache/commons/proxy2/provider/remoting/JaxRpcProvider.java
index ec00b0a..55e48c2 100644
--- a/core/src/main/java/org/apache/commons/proxy2/provider/remoting/JaxRpcProvider.java
+++ b/core/src/main/java/org/apache/commons/proxy2/provider/remoting/JaxRpcProvider.java
@@ -46,7 +46,7 @@
 // Fields
 //**********************************************************************************************************************
 
-    private Class<T> serviceInterface;
+    private Class<? extends T> serviceInterface;
     private String wsdlUrl;
     private String serviceNamespaceUri;
     private String serviceLocalPart;
@@ -55,23 +55,33 @@
     private String portLocalPart;
     private String portPrefix;
 
-//**********************************************************************************************************************
-// Constructors
-//**********************************************************************************************************************
+  //**********************************************************************************************************************
+ // Constructors
+ //**********************************************************************************************************************
 
+    /**
+     * Create a new JaxRpcProvider instance.
+     */
     public JaxRpcProvider()
     {
     }
 
-    public JaxRpcProvider( Class<T> serviceInterface )
+    /**
+     * Create a new JaxRpcProvider instance.
+     * @param serviceInterface
+     */
+    public JaxRpcProvider( Class<? extends T> serviceInterface )
     {
         this.serviceInterface = serviceInterface;
     }
 
-//**********************************************************************************************************************
-// ObjectProvider Implementation
-//**********************************************************************************************************************
+  //**********************************************************************************************************************
+ // ObjectProvider Implementation
+ //**********************************************************************************************************************
 
+    /**
+     * {@inheritDoc}
+     */
     public T getObject()
     {
         try
@@ -97,43 +107,67 @@
 // Getter/Setter Methods
 //**********************************************************************************************************************
 
-    public void setPortLocalPart( String portLocalPart )
-    {
+    /**
+     * Set the portLocalPart.
+     * @param portLocalPart the String to set
+     */
+    public void setPortLocalPart(String portLocalPart) {
         this.portLocalPart = portLocalPart;
     }
 
-    public void setPortNamespaceUri( String portNamespaceUri )
-    {
+    /**
+     * Set the portNamespaceUri.
+     * @param portNamespaceUri the String to set
+     */
+    public void setPortNamespaceUri(String portNamespaceUri) {
         this.portNamespaceUri = portNamespaceUri;
     }
 
-    public void setPortPrefix( String portPrefix )
-    {
+    /**
+     * Set the portPrefix.
+     * @param portPrefix the String to set
+     */
+    public void setPortPrefix(String portPrefix) {
         this.portPrefix = portPrefix;
     }
 
-    public void setServiceInterface( Class<T> serviceInterface )
-    {
+    /**
+     * Set the serviceInterface.
+     * @param serviceInterface the Class to set
+     */
+    public void setServiceInterface(Class<? extends T> serviceInterface) {
         this.serviceInterface = serviceInterface;
     }
 
-    public void setServiceLocalPart( String serviceLocalPart )
-    {
+    /**
+     * Set the serviceLocalPart.
+     * @param serviceLocalPart the String to set
+     */
+    public void setServiceLocalPart(String serviceLocalPart) {
         this.serviceLocalPart = serviceLocalPart;
     }
 
-    public void setServiceNamespaceUri( String serviceNamespaceUri )
-    {
+    /**
+     * Set the serviceNamespaceUri.
+     * @param serviceNamespaceUri the String to set
+     */
+    public void setServiceNamespaceUri(String serviceNamespaceUri) {
         this.serviceNamespaceUri = serviceNamespaceUri;
     }
 
-    public void setServicePrefix( String servicePrefix )
-    {
+    /**
+     * Set the servicePrefix.
+     * @param servicePrefix the String to set
+     */
+    public void setServicePrefix(String servicePrefix) {
         this.servicePrefix = servicePrefix;
     }
 
-    public void setWsdlUrl( String wsdlUrl )
-    {
+    /**
+     * Set the wsdlUrl.
+     * @param wsdlUrl the String to set
+     */
+    public void setWsdlUrl(String wsdlUrl) {
         this.wsdlUrl = wsdlUrl;
     }
 
diff --git a/core/src/main/java/org/apache/commons/proxy2/provider/remoting/RmiProvider.java b/core/src/main/java/org/apache/commons/proxy2/provider/remoting/RmiProvider.java
index f5ac346..fd15920 100644
--- a/core/src/main/java/org/apache/commons/proxy2/provider/remoting/RmiProvider.java
+++ b/core/src/main/java/org/apache/commons/proxy2/provider/remoting/RmiProvider.java
@@ -43,25 +43,43 @@
     private RMIClientSocketFactory clientSocketFactory;
     private String name;
 
-//**********************************************************************************************************************
-// Constructors
-//**********************************************************************************************************************
+  //**********************************************************************************************************************
+ // Constructors
+ //**********************************************************************************************************************
 
+    /**
+     * Create a new RmiProvider instance.
+     */
     public RmiProvider()
     {
     }
 
+    /**
+     * Create a new RmiProvider instance.
+     * @param name
+     */
     public RmiProvider( String name )
     {
         setName(name);
     }
 
+    /**
+     * Create a new RmiProvider instance.
+     * @param host
+     * @param name
+     */
     public RmiProvider( String host, String name )
     {
         setHost(host);
         setName(name);
     }
 
+    /**
+     * Create a new RmiProvider instance.
+     * @param host
+     * @param port
+     * @param name
+     */
     public RmiProvider( String host, int port, String name )
     {
         setHost(host);
@@ -69,6 +87,13 @@
         setPort(port);
     }
 
+    /**
+     * Create a new RmiProvider instance.
+     * @param host
+     * @param port
+     * @param clientSocketFactory
+     * @param name
+     */
     public RmiProvider( String host, int port, RMIClientSocketFactory clientSocketFactory, String name )
     {
         setHost(host);
@@ -77,10 +102,13 @@
         setName(name);
     }
 
-//**********************************************************************************************************************
-// ObjectProvider Implementation
-//**********************************************************************************************************************
+  //**********************************************************************************************************************
+ // ObjectProvider Implementation
+ //**********************************************************************************************************************
 
+    /**
+     * {@inheritDoc}
+     */
     @SuppressWarnings("unchecked")
     public T getObject()
     {
@@ -106,23 +134,36 @@
 // Getter/Setter Methods
 //**********************************************************************************************************************
 
-    public void setClientSocketFactory( RMIClientSocketFactory clientSocketFactory )
-    {
+    /**
+     * Set the clientSocketFactory.
+     * @param clientSocketFactory the RMIClientSocketFactory to set
+     */
+    public void setClientSocketFactory(
+            RMIClientSocketFactory clientSocketFactory) {
         this.clientSocketFactory = clientSocketFactory;
     }
 
-    public void setHost( String host )
-    {
+    /**
+     * Set the host.
+     * @param host the String to set
+     */
+    public void setHost(String host) {
         this.host = host;
     }
 
-    public void setName( String name )
-    {
+    /**
+     * Set the name.
+     * @param name the String to set
+     */
+    public void setName(String name) {
         this.name = name;
     }
 
-    public void setPort( int port )
-    {
+    /**
+     * Set the port.
+     * @param port the int to set
+     */
+    public void setPort(int port) {
         this.port = port;
     }
 
diff --git a/core/src/main/java/org/apache/commons/proxy2/provider/remoting/SessionBeanProvider.java b/core/src/main/java/org/apache/commons/proxy2/provider/remoting/SessionBeanProvider.java
index 34cb207..ce2c3e9 100644
--- a/core/src/main/java/org/apache/commons/proxy2/provider/remoting/SessionBeanProvider.java
+++ b/core/src/main/java/org/apache/commons/proxy2/provider/remoting/SessionBeanProvider.java
@@ -42,31 +42,45 @@
 //**********************************************************************************************************************
 
     private final String jndiName;
-    private final Class homeInterface;
+    private final Class<?> homeInterface;
     private final Properties properties;
 
-//**********************************************************************************************************************
-// Constructors
-//**********************************************************************************************************************
+  //**********************************************************************************************************************
+ // Constructors
+ //**********************************************************************************************************************
 
-    public SessionBeanProvider( String jndiName, Class homeInterface )
+    /**
+     * Create a new SessionBeanProvider instance.
+     * @param jndiName
+     * @param homeInterface
+     */
+    public SessionBeanProvider( String jndiName, Class<?> homeInterface )
     {
         this.jndiName = jndiName;
         this.homeInterface = homeInterface;
         this.properties = null;
     }
 
-    public SessionBeanProvider( String jndiName, Class homeInterface, Properties properties )
+    /**
+     * Create a new SessionBeanProvider instance.
+     * @param jndiName
+     * @param homeInterface
+     * @param properties
+     */
+    public SessionBeanProvider( String jndiName, Class<?> homeInterface, Properties properties )
     {
         this.jndiName = jndiName;
         this.homeInterface = homeInterface;
         this.properties = properties;
     }
 
-//**********************************************************************************************************************
-// ObjectProvider Implementation
-//**********************************************************************************************************************
+  //**********************************************************************************************************************
+ // ObjectProvider Implementation
+ //**********************************************************************************************************************
 
+    /**
+     * {@inheritDoc}
+     */
     @SuppressWarnings("unchecked")
     public T getObject()
     {
diff --git a/core/src/test/java/org/apache/commons/proxy2/AbstractProxyFactoryTestCase.java b/core/src/test/java/org/apache/commons/proxy2/AbstractProxyFactoryTestCase.java
index b1e69b9..f1ea49b 100644
--- a/core/src/test/java/org/apache/commons/proxy2/AbstractProxyFactoryTestCase.java
+++ b/core/src/test/java/org/apache/commons/proxy2/AbstractProxyFactoryTestCase.java
@@ -42,15 +42,16 @@
  * @author James Carman

  * @since 1.0

  */

+@SuppressWarnings("serial")

 public abstract class AbstractProxyFactoryTestCase extends AbstractTestCase

 {

 //**********************************************************************************************************************

 // Fields

 //**********************************************************************************************************************

 

-    private static final Class[] ECHO_ONLY = new Class[]{Echo.class};

+    private static final Class<?>[] ECHO_ONLY = new Class[]{Echo.class};

     protected final ProxyFactory factory;

-    private static final Class[] COMPARABLE_ONLY = new Class[] { Comparable.class };

+    private static final Class<?>[] COMPARABLE_ONLY = new Class[] { Comparable.class };

 

 //**********************************************************************************************************************

 // Constructors

@@ -66,7 +67,7 @@
         }

         else

         {

-            throw new RuntimeException("Unable to find proxy factory implementation."); 

+            throw new RuntimeException("Unable to find proxy factory implementation.");

         }

 

     }

@@ -75,9 +76,9 @@
 // Other Methods

 //**********************************************************************************************************************

 

-    private ObjectProvider createSingletonEcho()

+    private ObjectProvider<Echo> createSingletonEcho()

     {

-        return new SingletonProvider(new BeanProvider(EchoImpl.class));

+        return new SingletonProvider<Echo>(new BeanProvider<Echo>(EchoImpl.class));

     }

 

     public void testInterceptorHashCode()

@@ -102,9 +103,9 @@
     public void testInterceptorEquals()

     {

         final Date date = new Date();

-        final Comparable proxy1 = (Comparable) factory.createInterceptorProxy(date,

+        final Comparable<?> proxy1 = (Comparable<?>) factory.createInterceptorProxy(date,

                 new NoOpMethodInterceptor(), COMPARABLE_ONLY);

-        final Comparable proxy2 = (Comparable) factory.createInterceptorProxy(date,

+        final Comparable<?> proxy2 = (Comparable<?>) factory.createInterceptorProxy(date,

                 new NoOpMethodInterceptor(), COMPARABLE_ONLY);

         assertEquals(proxy1, proxy1);

         assertFalse(proxy1.equals(proxy2));

@@ -113,8 +114,8 @@
 

     public void testInvokerEquals() throws Exception

     {

-        final Comparable proxy1 = (Comparable) factory.createInvokerProxy(new InvokerTester(), COMPARABLE_ONLY);

-        final Comparable proxy2 = (Comparable) factory.createInvokerProxy(new InvokerTester(), COMPARABLE_ONLY);

+        final Comparable<?> proxy1 = (Comparable<?>) factory.createInvokerProxy(new InvokerTester(), COMPARABLE_ONLY);

+        final Comparable<?> proxy2 = (Comparable<?>) factory.createInvokerProxy(new InvokerTester(), COMPARABLE_ONLY);

         assertEquals(proxy1, proxy1);

         assertFalse(proxy1.equals(proxy2));

         assertFalse(proxy2.equals(proxy1));

@@ -123,9 +124,9 @@
     public void testDelegatorEquals() throws Exception

     {

         final Date date = new Date();

-        final Comparable proxy1 = (Comparable) factory.createDelegatorProxy(new ConstantProvider<Date>(date),

+        final Comparable<?> proxy1 = (Comparable<?>) factory.createDelegatorProxy(new ConstantProvider<Date>(date),

                 COMPARABLE_ONLY);

-        final Comparable proxy2 = (Comparable) factory.createDelegatorProxy(new ConstantProvider<Date>(date),

+        final Comparable<?> proxy2 = (Comparable<?>) factory.createDelegatorProxy(new ConstantProvider<Date>(date),

                 COMPARABLE_ONLY);

         assertEquals(proxy1, proxy1);

         assertFalse(proxy1.equals(proxy2));

@@ -178,8 +179,8 @@
     public void testDelegatingProxyInterfaceOrder()

     {

         final Echo echo = (Echo) factory.createDelegatorProxy(createSingletonEcho(), Echo.class, DuplicateEcho.class);

-        final List<Class> expected = new LinkedList<Class>(Arrays.asList(Echo.class, DuplicateEcho.class));

-        final List<Class> actual = new LinkedList<Class>(Arrays.asList(echo.getClass().getInterfaces()));

+        final List<Class<?>> expected = new LinkedList<Class<?>>(Arrays.<Class<?>> asList(Echo.class, DuplicateEcho.class));

+        final List<Class<?>> actual = new LinkedList<Class<?>>(Arrays.asList(echo.getClass().getInterfaces()));

         actual.retainAll(expected);  // Doesn't alter order!

         assertEquals(expected, actual);

     }

@@ -270,7 +271,7 @@
         final Echo proxy1 = (Echo) factory.createInterceptorProxy(target, tester, ECHO_ONLY);

         final Echo proxy2 = (Echo) factory.createInterceptorProxy(target, tester, Echo.class, DuplicateEcho.class);

         proxy1.echoBack("hello1");

-        final Class invocationClass1 = tester.invocationClass;

+        final Class<?> invocationClass1 = tester.invocationClass;

         proxy2.echoBack("hello2");

         assertSame(invocationClass1, tester.invocationClass);

     }

@@ -363,7 +364,7 @@
         private Object[] arguments;

         private Method method;

         private Object proxy;

-        private Class invocationClass;

+        private Class<?> invocationClass;

 

         public Object intercept(Invocation methodInvocation) throws Throwable

         {

diff --git a/core/src/test/java/org/apache/commons/proxy2/AbstractSubclassingProxyFactoryTestCase.java b/core/src/test/java/org/apache/commons/proxy2/AbstractSubclassingProxyFactoryTestCase.java
index f2056d5..2fe64ce 100644
--- a/core/src/test/java/org/apache/commons/proxy2/AbstractSubclassingProxyFactoryTestCase.java
+++ b/core/src/test/java/org/apache/commons/proxy2/AbstractSubclassingProxyFactoryTestCase.java
@@ -30,9 +30,10 @@
  * @author James Carman

  * @since 1.0

  */

+@SuppressWarnings("serial")

 public abstract class AbstractSubclassingProxyFactoryTestCase extends AbstractProxyFactoryTestCase

 {

-    private static final Class[] DATE_ONLY = new Class[]{Date.class};

+    private static final Class<?>[] DATE_ONLY = new Class[]{Date.class};

 //**********************************************************************************************************************

 // Constructors

 //**********************************************************************************************************************

@@ -57,7 +58,7 @@
     {

         try

         {

-            factory.createDelegatorProxy(new ConstantProvider(new EchoImpl()),

+            factory.createDelegatorProxy(new ConstantProvider<EchoImpl>(new EchoImpl()),

                     new Class[]{EchoImpl.class, String.class});

             fail();

         }

@@ -69,7 +70,7 @@
     public void testDelegatorWithSuperclass()

     {

         final Echo echo = (Echo) factory

-                .createDelegatorProxy(new ConstantProvider(new EchoImpl()), new Class[]{Echo.class, EchoImpl.class});

+                .createDelegatorProxy(new ConstantProvider<EchoImpl>(new EchoImpl()), new Class[]{Echo.class, EchoImpl.class});

         assertTrue(echo instanceof EchoImpl);

     }

 

@@ -115,8 +116,8 @@
 

     public void testProxiesWithClashingFinalMethodInSuperclass()

     {

-        final Class[] proxyClasses = new Class[]{Echo.class, FinalMethodEcho.class};

-        Echo proxy = (Echo) factory.createDelegatorProxy(new ConstantProvider(new EchoImpl()), proxyClasses);

+        final Class<?>[] proxyClasses = new Class[]{Echo.class, FinalMethodEcho.class};

+        Echo proxy = (Echo) factory.createDelegatorProxy(new ConstantProvider<EchoImpl>(new EchoImpl()), proxyClasses);

         assertEquals("final", proxy.echoBack("echo"));

 

         proxy = (Echo) factory.createInterceptorProxy(new EchoImpl(), new NoOpMethodInterceptor(), proxyClasses);

@@ -128,7 +129,7 @@
 

     public void testWithAbstractSuperclass()

     {

-        final Echo echo = (Echo) factory.createDelegatorProxy(new ConstantProvider(new EchoImpl()), new Class[]{AbstractEcho.class});

+        final Echo echo = (Echo) factory.createDelegatorProxy(new ConstantProvider<EchoImpl>(new EchoImpl()), new Class[]{AbstractEcho.class});

         assertEquals("hello", echo.echoBack("hello"));

         assertEquals("helloworld", echo.echoBack("hello", "world"));

     }

@@ -157,9 +158,9 @@
     public void testDelegatorEquals() throws Exception

     {

         final EqualsEcho echo = new EqualsEcho("text");

-        final Echo proxy1 = (Echo) factory.createDelegatorProxy(new ConstantProvider(echo),

+        final Echo proxy1 = (Echo) factory.createDelegatorProxy(new ConstantProvider<Echo>(echo),

                 new Class[] { EqualsEcho.class });

-        final Echo proxy2 = (Echo) factory.createDelegatorProxy(new ConstantProvider(echo),

+        final Echo proxy2 = (Echo) factory.createDelegatorProxy(new ConstantProvider<Echo>(echo),

                 new Class[] { EqualsEcho.class });

         assertEquals(proxy1, proxy1);

         assertFalse(proxy1.equals(proxy2));

@@ -184,6 +185,7 @@
 

     public static class EqualsEcho extends EchoImpl

     {

+        @SuppressWarnings("unused")

         private final String text;

 

         public EqualsEcho()

diff --git a/core/src/test/java/org/apache/commons/proxy2/TestProxyUtils.java b/core/src/test/java/org/apache/commons/proxy2/TestProxyUtils.java
index 9f35cec..84c4f4a 100644
--- a/core/src/test/java/org/apache/commons/proxy2/TestProxyUtils.java
+++ b/core/src/test/java/org/apache/commons/proxy2/TestProxyUtils.java
@@ -62,7 +62,7 @@
         assertNullValue(( byte ) 0, Byte.TYPE);
     }
 
-    private void assertNullValue( Object expected, Class type )
+    private void assertNullValue( Object expected, Class<?> type )
     {
         assertEquals(expected, ProxyUtils.nullValue(type));
     }
diff --git a/core/src/test/java/org/apache/commons/proxy2/exception/AbstractExceptionClassTestCase.java b/core/src/test/java/org/apache/commons/proxy2/exception/AbstractExceptionClassTestCase.java
index fead718..440d088 100644
--- a/core/src/test/java/org/apache/commons/proxy2/exception/AbstractExceptionClassTestCase.java
+++ b/core/src/test/java/org/apache/commons/proxy2/exception/AbstractExceptionClassTestCase.java
@@ -29,13 +29,13 @@
 // Fields
 //**********************************************************************************************************************
 
-    private final Class exceptionClass;
+    private final Class<?> exceptionClass;
 
 //**********************************************************************************************************************
 // Constructors
 //**********************************************************************************************************************
 
-    public AbstractExceptionClassTestCase( Class exceptionClass )
+    public AbstractExceptionClassTestCase( Class<?> exceptionClass )
     {
         this.exceptionClass = exceptionClass;
     }
diff --git a/core/src/test/java/org/apache/commons/proxy2/provider/CountingProvider.java b/core/src/test/java/org/apache/commons/proxy2/provider/CountingProvider.java
index 2fe0e65..18d46a2 100644
--- a/core/src/test/java/org/apache/commons/proxy2/provider/CountingProvider.java
+++ b/core/src/test/java/org/apache/commons/proxy2/provider/CountingProvider.java
@@ -23,7 +23,7 @@
  * @author James Carman
  * @since 1.0
  */
-public class CountingProvider extends ProviderDecorator
+public class CountingProvider<T> extends ProviderDecorator<T>
 {
 //**********************************************************************************************************************
 // Fields
@@ -35,7 +35,7 @@
 // Constructors
 //**********************************************************************************************************************
 
-    public CountingProvider( ObjectProvider inner )
+    public CountingProvider( ObjectProvider<? extends T> inner )
     {
         super(inner);
     }
@@ -45,7 +45,7 @@
 //**********************************************************************************************************************
 
 
-    public synchronized Object getObject()
+    public synchronized T getObject()
     {
         count++;
         return super.getObject();
diff --git a/core/src/test/java/org/apache/commons/proxy2/provider/TestBeanProvider.java b/core/src/test/java/org/apache/commons/proxy2/provider/TestBeanProvider.java
index 7a4f981..a175d74 100644
--- a/core/src/test/java/org/apache/commons/proxy2/provider/TestBeanProvider.java
+++ b/core/src/test/java/org/apache/commons/proxy2/provider/TestBeanProvider.java
@@ -30,7 +30,7 @@
     {
         try
         {
-            final BeanProvider p = new BeanProvider();
+            final BeanProvider<Number> p = new BeanProvider<Number>();
             p.setBeanClass(Number.class);
             p.getObject();
             fail();
@@ -44,7 +44,7 @@
     {
         try
         {
-            new BeanProvider(MyBean.class).getObject();
+            new BeanProvider<MyBean>(MyBean.class).getObject();
             fail();
         }
         catch( ObjectProviderException e )
@@ -54,14 +54,14 @@
 
     public void testSerialization()
     {
-        assertSerializable(new BeanProvider(MyBean.class));
+        assertSerializable(new BeanProvider<MyBean>(MyBean.class));
     }
 
     public void testWithNullBeanClass()
     {
         try
         {
-            final BeanProvider p = new BeanProvider();
+            final BeanProvider<Object> p = new BeanProvider<Object>();
             p.getObject();
             fail();
         }
diff --git a/core/src/test/java/org/apache/commons/proxy2/provider/TestCloningProvider.java b/core/src/test/java/org/apache/commons/proxy2/provider/TestCloningProvider.java
index ea103c3..adca734 100644
--- a/core/src/test/java/org/apache/commons/proxy2/provider/TestCloningProvider.java
+++ b/core/src/test/java/org/apache/commons/proxy2/provider/TestCloningProvider.java
@@ -30,13 +30,13 @@
 
     public void testSerialization()
     {
-        assertSerializable(new CloningProvider(new Date()));
+        assertSerializable(new CloningProvider<Date>(new Date()));
     }
 
     public void testValidCloneable()
     {
         final Date now = new Date();
-        final CloningProvider provider = new CloningProvider(now);
+        final CloningProvider<Date> provider = new CloningProvider<Date>(now);
         final Date clone1 = ( Date ) provider.getObject();
         assertEquals(now, clone1);
         assertNotSame(now, clone1);
@@ -48,7 +48,7 @@
 
     public void testWithExceptionThrown()
     {
-        final CloningProvider provider = new CloningProvider(new ExceptionCloneable());
+        final CloningProvider<ExceptionCloneable> provider = new CloningProvider<ExceptionCloneable>(new ExceptionCloneable());
         try
         {
             provider.getObject();
@@ -61,7 +61,7 @@
 
     public void testWithInvalidCloneable()
     {
-        final CloningProvider provider = new CloningProvider(new InvalidCloneable());
+        final CloningProvider<InvalidCloneable> provider = new CloningProvider<InvalidCloneable>(new InvalidCloneable());
         try
         {
             provider.getObject();
@@ -74,7 +74,7 @@
 
     public void testWithPrivateCloneMethod()
     {
-        final CloningProvider provider = new CloningProvider(new PrivateCloneable());
+        final CloningProvider<PrivateCloneable> provider = new CloningProvider<PrivateCloneable>(new PrivateCloneable());
         try
         {
             provider.getObject();
diff --git a/core/src/test/java/org/apache/commons/proxy2/provider/TestConstantProvider.java b/core/src/test/java/org/apache/commons/proxy2/provider/TestConstantProvider.java
index ce61318..f7932f0 100644
--- a/core/src/test/java/org/apache/commons/proxy2/provider/TestConstantProvider.java
+++ b/core/src/test/java/org/apache/commons/proxy2/provider/TestConstantProvider.java
@@ -31,12 +31,12 @@
     public void testGetObject() throws Exception
     {
         final String s = "Hello, World!";
-        final ConstantProvider provider = new ConstantProvider(s);
+        final ConstantProvider<String> provider = new ConstantProvider<String>(s);
         assertSame(s, provider.getObject());
     }
 
     public void testSerialization()
     {
-        assertSerializable(new ConstantProvider("Hello, World!"));
+        assertSerializable(new ConstantProvider<String>("Hello, World!"));
     }
 }
diff --git a/core/src/test/java/org/apache/commons/proxy2/provider/TestNullProvider.java b/core/src/test/java/org/apache/commons/proxy2/provider/TestNullProvider.java
index 1ca772e..8731bf3 100644
--- a/core/src/test/java/org/apache/commons/proxy2/provider/TestNullProvider.java
+++ b/core/src/test/java/org/apache/commons/proxy2/provider/TestNullProvider.java
@@ -31,12 +31,12 @@
 
     public void testGetObject()
     {
-        final NullProvider provider = new NullProvider();
+        final NullProvider<Object> provider = new NullProvider<Object>();
         assertNull(provider.getObject());
     }
 
     public void testSerialization()
     {
-        assertSerializable(new NullProvider());
+        assertSerializable(new NullProvider<Object>());
     }
 }
diff --git a/core/src/test/java/org/apache/commons/proxy2/provider/remoting/TestBurlapProvider.java b/core/src/test/java/org/apache/commons/proxy2/provider/remoting/TestBurlapProvider.java
index 7aa9488..b75d8c5 100644
--- a/core/src/test/java/org/apache/commons/proxy2/provider/remoting/TestBurlapProvider.java
+++ b/core/src/test/java/org/apache/commons/proxy2/provider/remoting/TestBurlapProvider.java
@@ -29,7 +29,7 @@
 
     public void testSerialization()
     {
-        final BurlapProvider p = new BurlapProvider();
+        final BurlapProvider<Echo> p = new BurlapProvider<Echo>();
         p.setServiceInterface(Echo.class);
         p.setUrl("a malformed URL");
         assertSerializable(p);
@@ -39,7 +39,7 @@
     {
         try
         {
-            final BurlapProvider p = new BurlapProvider(Echo.class, "a malformed URL");
+            final BurlapProvider<Echo> p = new BurlapProvider<Echo>(Echo.class, "a malformed URL");
             p.getObject();
             fail();
         }
@@ -52,7 +52,7 @@
     {
         try
         {
-            final BurlapProvider p = new BurlapProvider();
+            final BurlapProvider<Echo> p = new BurlapProvider<Echo>();
             p.setServiceInterface(Echo.class);
             p.setUrl("a malformed URL");
             p.getObject();
diff --git a/core/src/test/java/org/apache/commons/proxy2/provider/remoting/TestHessianProvider.java b/core/src/test/java/org/apache/commons/proxy2/provider/remoting/TestHessianProvider.java
index d6af42d..6ba7832 100644
--- a/core/src/test/java/org/apache/commons/proxy2/provider/remoting/TestHessianProvider.java
+++ b/core/src/test/java/org/apache/commons/proxy2/provider/remoting/TestHessianProvider.java
@@ -1,65 +1,65 @@
-/*

- * Licensed to the Apache Software Foundation (ASF) under one or more

- * contributor license agreements.  See the NOTICE file distributed with

- * this work for additional information regarding copyright ownership.

- * The ASF licenses this file to You under the Apache License, Version 2.0

- * (the "License"); you may not use this file except in compliance with

- * the License.  You may obtain a copy of the License at

- *

- *      http://www.apache.org/licenses/LICENSE-2.0

- *

- * Unless required by applicable law or agreed to in writing, software

- * distributed under the License is distributed on an "AS IS" BASIS,

- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

- * See the License for the specific language governing permissions and

- * limitations under the License.

- */

-

-package org.apache.commons.proxy2.provider.remoting;

-

-import org.apache.commons.proxy2.exception.ObjectProviderException;

-import org.apache.commons.proxy2.util.AbstractTestCase;

-import org.apache.commons.proxy2.util.Echo;

-

-public class TestHessianProvider extends AbstractTestCase

-{

-//**********************************************************************************************************************

-// Other Methods

-//**********************************************************************************************************************

-

-    public void testSerialization()

-    {

-        final HessianProvider p = new HessianProvider();

-        p.setServiceInterface(Echo.class);

-        p.setUrl("a malformed URL");

-        assertSerializable(p);

-    }

-

-    public void testWithMalformedUrl()

-    {

-        try

-        {

-            final HessianProvider p = new HessianProvider(Echo.class, "a malformed URL");

-            p.getObject();

-            fail();

-        }

-        catch( ObjectProviderException e )

-        {

-        }

-    }

-

-    public void testWithMalformedUrlBean()

-    {

-        try

-        {

-            final HessianProvider p = new HessianProvider();

-            p.setServiceInterface(Echo.class);

-            p.setUrl("a malformed URL");

-            p.getObject();

-            fail();

-        }

-        catch( ObjectProviderException e )

-        {

-        }

-    }

+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.commons.proxy2.provider.remoting;
+
+import org.apache.commons.proxy2.exception.ObjectProviderException;
+import org.apache.commons.proxy2.util.AbstractTestCase;
+import org.apache.commons.proxy2.util.Echo;
+
+public class TestHessianProvider extends AbstractTestCase
+{
+//**********************************************************************************************************************
+// Other Methods
+//**********************************************************************************************************************
+
+    public void testSerialization()
+    {
+        final HessianProvider<Echo> p = new HessianProvider<Echo>();
+        p.setServiceInterface(Echo.class);
+        p.setUrl("a malformed URL");
+        assertSerializable(p);
+    }
+
+    public void testWithMalformedUrl()
+    {
+        try
+        {
+            final HessianProvider<Echo> p = new HessianProvider<Echo>(Echo.class, "a malformed URL");
+            p.getObject();
+            fail();
+        }
+        catch( ObjectProviderException e )
+        {
+        }
+    }
+
+    public void testWithMalformedUrlBean()
+    {
+        try
+        {
+            final HessianProvider<Echo> p = new HessianProvider<Echo>();
+            p.setServiceInterface(Echo.class);
+            p.setUrl("a malformed URL");
+            p.getObject();
+            fail();
+        }
+        catch( ObjectProviderException e )
+        {
+        }
+    }
 }
\ No newline at end of file
diff --git a/core/src/test/java/org/apache/commons/proxy2/util/AbstractEcho.java b/core/src/test/java/org/apache/commons/proxy2/util/AbstractEcho.java
index 29175b9..fe8bc51 100644
--- a/core/src/test/java/org/apache/commons/proxy2/util/AbstractEcho.java
+++ b/core/src/test/java/org/apache/commons/proxy2/util/AbstractEcho.java
@@ -23,6 +23,7 @@
  * @author James Carman

  * @since 1.0

  */

+@SuppressWarnings("serial")

 public abstract class AbstractEcho implements Echo, Serializable

 {

 //**********************************************************************************************************************

diff --git a/core/src/test/java/org/apache/commons/proxy2/util/SuffixInterceptor.java b/core/src/test/java/org/apache/commons/proxy2/util/SuffixInterceptor.java
index 78886bc..899317d 100644
--- a/core/src/test/java/org/apache/commons/proxy2/util/SuffixInterceptor.java
+++ b/core/src/test/java/org/apache/commons/proxy2/util/SuffixInterceptor.java
@@ -24,6 +24,7 @@
  * @author James Carman

  * @since 1.0

  */

+@SuppressWarnings("serial")

 public class SuffixInterceptor implements Interceptor

 {

 //**********************************************************************************************************************