You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2012/01/09 21:07:23 UTC

svn commit: r1229332 [2/5] - in /cxf/trunk: common/common/src/main/java/org/apache/cxf/common/util/ rt/core/src/main/java/org/apache/cxf/bus/osgi/ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxr...

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXRSDataBinding.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXRSDataBinding.java?rev=1229332&r1=1229331&r2=1229332&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXRSDataBinding.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXRSDataBinding.java Mon Jan  9 20:07:20 2012
@@ -18,11 +18,13 @@
  */
 package org.apache.cxf.jaxrs.provider;
 
+import java.io.IOException;
 import java.lang.reflect.Method;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 
+import javax.ws.rs.WebApplicationException;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.ext.MessageBodyReader;
@@ -52,18 +54,19 @@ public class JAXRSDataBinding extends Ab
     private static final Class<?> SUPPORTED_READER_FORMATS[] = new Class<?>[] {XMLStreamReader.class};
     private static final Class<?> SUPPORTED_WRITER_FORMATS[] = new Class<?>[] {XMLStreamWriter.class};
     
-    private MessageBodyReader xmlReader;
-    private MessageBodyWriter xmlWriter;
+    private MessageBodyReader<?> xmlReader;
+    private MessageBodyWriter<Object> xmlWriter;
     
+    @SuppressWarnings("unchecked")
     public void setProvider(Object provider) {
         if (!(provider instanceof MessageBodyWriter)) {
             throw new IllegalArgumentException(
                 "The provider must implement javax.ws.rs.ext.MessageBodyWriter");
         }
-        xmlWriter = (MessageBodyWriter)provider;
+        xmlWriter = (MessageBodyWriter<Object>)provider;
         
         if (provider instanceof MessageBodyReader) {
-            xmlReader = (MessageBodyReader)provider;
+            xmlReader = (MessageBodyReader<?>)provider;
         }
     }
     
@@ -107,19 +110,23 @@ public class JAXRSDataBinding extends Ab
         return new MetadataMap<String, String>(
             (Map<String, List<String>>)message.get(Message.PROTOCOL_HEADERS), true, true);
     }
+    @SuppressWarnings("unchecked")
+    private MultivaluedMap<String, Object> getWriteHeaders(Message message) {
+        return new MetadataMap<String, Object>(
+            (Map<String, List<Object>>)message.get(Message.PROTOCOL_HEADERS), true, true);
+    }
     
     private class MessageBodyDataWriter implements DataWriter<XMLStreamWriter> {
         
         public void write(Object obj, XMLStreamWriter output) {
             write(obj, null, output);
         }
-
-        @SuppressWarnings("unchecked")
+        
         public void write(Object obj, MessagePartInfo part, XMLStreamWriter output) {
             try {
                 Message message = PhaseInterceptorChain.getCurrentMessage();
                 Method method = getTargetMethod(message);
-                MultivaluedMap<String, String> headers = getHeaders(message);        
+                MultivaluedMap<String, Object> headers = getWriteHeaders(message);
                 xmlWriter.writeTo(obj, 
                                  method.getReturnType(), 
                                  method.getGenericReturnType(), 
@@ -156,22 +163,27 @@ public class JAXRSDataBinding extends Ab
             return doRead(part.getTypeClass(), input);
         }
 
-        public Object read(QName elementQName, XMLStreamReader input, Class type) {
+        public Object read(QName elementQName, XMLStreamReader input, Class<?> type) {
             return doRead(type, input);
         }
 
         
         @SuppressWarnings("unchecked")
-        private Object doRead(Class cls, XMLStreamReader input) {
+        private <T> T read(Class<T> cls) throws WebApplicationException, IOException {
+            Message message = PhaseInterceptorChain.getCurrentMessage();
+            Method method = getTargetMethod(message);
+            MessageBodyReader<T> reader = (MessageBodyReader<T>)xmlReader;
+
+            return reader.readFrom(cls, 
+                                      method.getGenericParameterTypes()[0], 
+                                      method.getParameterTypes()[0].getAnnotations(), 
+                                      MediaType.APPLICATION_ATOM_XML_TYPE,
+                                      getHeaders(message),             
+                                      null);
+        }
+        private Object doRead(Class<?> cls, XMLStreamReader input) {
             try {
-                Message message = PhaseInterceptorChain.getCurrentMessage();
-                Method method = getTargetMethod(message);
-                return xmlReader.readFrom(cls, 
-                                          method.getGenericParameterTypes()[0], 
-                                          method.getParameterTypes()[0].getAnnotations(), 
-                                          MediaType.APPLICATION_ATOM_XML_TYPE,
-                                          getHeaders(message),             
-                                          null);
+                return read(cls);
             } catch (Exception ex) {
                 return null;
             }

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JSONProvider.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JSONProvider.java?rev=1229332&r1=1229331&r2=1229332&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JSONProvider.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JSONProvider.java Mon Jan  9 20:07:20 2012
@@ -75,7 +75,7 @@ import org.codehaus.jettison.util.String
 @Produces("application/json")
 @Consumes("application/json")
 @Provider
-public class JSONProvider extends AbstractJAXBProvider  {
+public class JSONProvider<T> extends AbstractJAXBProvider<T>  {
     
     private static final String MAPPED_CONVENTION = "mapped";
     private static final String BADGER_FISH_CONVENTION = "badgerfish";
@@ -193,7 +193,7 @@ public class JSONProvider extends Abstra
         return super.isReadable(type, genericType, anns, mt) || Document.class.isAssignableFrom(type);    
     }
     
-    public Object readFrom(Class<Object> type, Type genericType, Annotation[] anns, MediaType mt, 
+    public T readFrom(Class<T> type, Type genericType, Annotation[] anns, MediaType mt, 
         MultivaluedMap<String, String> headers, InputStream is) 
         throws IOException {
         
@@ -202,7 +202,7 @@ public class JSONProvider extends Abstra
             if (Document.class.isAssignableFrom(type)) {
                 W3CDOMStreamWriter writer = new W3CDOMStreamWriter();
                 copyReaderToWriter(createReader(type, realStream, false), writer);
-                return writer.getDocument();
+                return type.cast(writer.getDocument());
             }
             boolean isCollection = InjectionUtils.isSupportedCollectionOrArray(type);
             Class<?> theGenericType = isCollection ? InjectionUtils.getActualType(genericType) : type;
@@ -220,7 +220,7 @@ public class JSONProvider extends Abstra
                 response = unmarshaller.unmarshal(xsr);
             }
             if (response instanceof JAXBElement && !JAXBElement.class.isAssignableFrom(type)) {
-                response = ((JAXBElement)response).getValue();    
+                response = ((JAXBElement<?>)response).getValue();    
             }
             if (isCollection) {
                 response = ((CollectionWrapper)response).getCollectionOrArray(theType, type, 
@@ -228,7 +228,7 @@ public class JSONProvider extends Abstra
             } else {
                 response = checkAdapter(response, type, anns, false);
             }
-            return response;
+            return type.cast(response);
             
         } catch (JAXBException e) {
             handleJAXBException(e, true);
@@ -259,7 +259,7 @@ public class JSONProvider extends Abstra
         }
     }
     
-    protected InputStream getInputStream(Class<Object> cls, Type type, InputStream is) throws Exception {
+    protected InputStream getInputStream(Class<T> cls, Type type, InputStream is) throws Exception {
         if (unwrapped) {
             String rootName = getRootName(cls, type);
             InputStream isBefore = new ByteArrayInputStream(rootName.getBytes());
@@ -285,7 +285,7 @@ public class JSONProvider extends Abstra
                  
     }
     
-    protected String getRootName(Class<Object> cls, Type type) throws Exception {
+    protected String getRootName(Class<T> cls, Type type) throws Exception {
         String name = null;
         if (wrapperName != null) {
             name = wrapperName;
@@ -316,7 +316,7 @@ public class JSONProvider extends Abstra
             || Document.class.isAssignableFrom(type);
     }
     
-    public void writeTo(Object obj, Class<?> cls, Type genericType, Annotation[] anns,  
+    public void writeTo(T obj, Class<?> cls, Type genericType, Annotation[] anns,  
         MediaType m, MultivaluedMap<String, Object> headers, OutputStream os)
         throws IOException {
         if (os == null) {
@@ -372,10 +372,10 @@ public class JSONProvider extends Abstra
         Class<?> actualClass = InjectionUtils.getActualType(genericType);
         actualClass = getActualType(actualClass, genericType, anns);
         
-        Collection c = originalCls.isArray() ? Arrays.asList((Object[]) collection) 
-                                             : (Collection) collection;
+        Collection<?> c = originalCls.isArray() ? Arrays.asList((Object[]) collection) 
+                                             : (Collection<?>) collection;
 
-        Iterator it = c.iterator();
+        Iterator<?> it = c.iterator();
         
         Object firstObj = it.hasNext() ? it.next() : null;
 
@@ -384,7 +384,7 @@ public class JSONProvider extends Abstra
         if (!dropCollectionWrapperElement) {
             QName qname = null;
             if (firstObj instanceof JAXBElement) {
-                JAXBElement el = (JAXBElement)firstObj;
+                JAXBElement<?> el = (JAXBElement<?>)firstObj;
                 qname = el.getName();
                 actualClass = el.getDeclaredType();
             } else {
@@ -422,7 +422,7 @@ public class JSONProvider extends Abstra
     protected void marshalCollectionMember(Object obj, Class<?> cls, Type genericType,
                                            String enc, OutputStream os) throws Exception {
         if (obj instanceof JAXBElement) {
-            obj = ((JAXBElement)obj).getValue();    
+            obj = ((JAXBElement<?>)obj).getValue();    
         } else {
             obj = convertToJaxbElementIfNeeded(obj, cls, genericType);
         }

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JSONUtils.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JSONUtils.java?rev=1229332&r1=1229331&r2=1229332&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JSONUtils.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JSONUtils.java Mon Jan  9 20:07:20 2012
@@ -177,7 +177,7 @@ public final class JSONUtils {
                     return namespaceMap.get(ns);
                 }
 
-                public Iterator getPrefixes(String ns) {
+                public Iterator<?> getPrefixes(String ns) {
                     String prefix = getPrefix(ns);
                     return prefix == null ? null : Collections.singletonList(prefix).iterator();
                 }

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/MultipartProvider.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/MultipartProvider.java?rev=1229332&r1=1229331&r2=1229332&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/MultipartProvider.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/MultipartProvider.java Mon Jan  9 20:07:20 2012
@@ -189,8 +189,7 @@ public class MultipartProvider extends A
         return actual != null && actual != Object.class ? actual : Attachment.class;
     }
     
-    @SuppressWarnings("unchecked")
-    private Object fromAttachment(Attachment multipart, Class<?> c, Type t, Annotation anns[]) 
+    private <T> Object fromAttachment(Attachment multipart, Class<T> c, Type t, Annotation anns[]) 
         throws IOException {
         if (DataHandler.class.isAssignableFrom(c)) {
             return multipart.getDataHandler();
@@ -206,12 +205,12 @@ public class MultipartProvider extends A
                        multipart.getDataHandler().getInputStream());
                 anns = new Annotation[]{};
             }
-            MessageBodyReader<Object> r = 
-                mc.getProviders().getMessageBodyReader((Class)c, t, anns, multipart.getContentType());
+            MessageBodyReader<T> r = 
+                mc.getProviders().getMessageBodyReader(c, t, anns, multipart.getContentType());
             if (r != null) {
                 InputStream is = multipart.getDataHandler().getInputStream();
                 is = decodeIfNeeded(multipart, is);
-                return r.readFrom((Class)c, t, anns, multipart.getContentType(), multipart.getHeaders(), 
+                return r.readFrom(c, t, anns, multipart.getContentType(), multipart.getHeaders(), 
                                   is);
             }
         }
@@ -266,7 +265,7 @@ public class MultipartProvider extends A
                 iter.hasNext();) {
                 Map.Entry<Object, Object> entry = iter.next();
                 Object value = entry.getValue();
-                Attachment handler = createDataHandler(value, value.getClass(), value.getClass(), 
+                Attachment handler = createDataHandler(value, value.getClass(), 
                                                        new Annotation[]{},
                                                        entry.getKey().toString(),
                                                        mt.toString(),
@@ -285,7 +284,7 @@ public class MultipartProvider extends A
                     return getAttachments(atts, rootMediaType);
                 }
                 Attachment handler = createDataHandler(obj,
-                                                       type, genericType, anns,
+                                                       genericType, anns,
                                                        rootMediaType, mt.toString(), 1);
                 return Collections.singletonList(handler);
             }
@@ -297,15 +296,26 @@ public class MultipartProvider extends A
         for (int i = 0; i < objects.size(); i++) {
             Object value = objects.get(i);
             Attachment handler = createDataHandler(value,
-                                           value.getClass(), value.getClass(), new Annotation[]{},
+                                           value.getClass(), new Annotation[]{},
                                            rootMediaType, rootMediaType, i);
             handlers.add(handler);
         }
         return handlers;
     }
     
-    private Attachment createDataHandler(Object obj, 
-                                         Class<?> cls, Type genericType,
+    private <T> Attachment createDataHandler(T obj, 
+                                             Type genericType,
+                                             Annotation[] anns,
+                                             String mimeType,
+                                             String mainMediaType,
+                                             int id) {
+        @SuppressWarnings("unchecked")
+        Class<T> cls = (Class<T>)obj.getClass();
+        return createDataHandler(obj, cls, genericType, anns, mimeType, mainMediaType, id);
+    }
+    private <T> Attachment createDataHandler(T obj, 
+                                         Class<T> cls, 
+                                         Type genericType,
                                          Annotation[] anns,
                                          String mimeType,
                                          String mainMediaType,
@@ -331,7 +341,7 @@ public class MultipartProvider extends A
             if (att.getObject() == null) {
                 return att;
             }
-            dh = getHandlerForObject(att.getObject(), att.getObject().getClass(), 
+            dh = getHandlerForObject(att.getObject(), 
                                      att.getObject().getClass(), new Annotation[]{}, 
                                      att.getContentType().toString(), id);
             return new Attachment(att.getContentId(), dh, att.getHeaders());
@@ -355,14 +365,13 @@ public class MultipartProvider extends A
         return id == 0 ? AttachmentUtil.BODY_ATTACHMENT_ID : Integer.toString(id);
     }
     
-    @SuppressWarnings("unchecked")
-    private DataHandler getHandlerForObject(Object obj, 
-                                            Class<?> cls, Type genericType,
+    private <T> DataHandler getHandlerForObject(T obj, 
+                                            Class<T> cls, Type genericType,
                                             Annotation[] anns,
                                             String mimeType, int id) {
         MediaType mt = MediaType.valueOf(mimeType);
-        MessageBodyWriter<Object> r = 
-            (MessageBodyWriter)mc.getProviders().getMessageBodyWriter(cls, genericType, anns, mt);
+        MessageBodyWriter<T> r = 
+            mc.getProviders().getMessageBodyWriter(cls, genericType, anns, mt);
         if (r == null) {
             org.apache.cxf.common.i18n.Message message = 
                 new org.apache.cxf.common.i18n.Message("NO_MSG_WRITER",
@@ -371,7 +380,15 @@ public class MultipartProvider extends A
             LOG.severe(message.toString());
             throw new WebApplicationException(500);
         }
-        return new MessageBodyWriterDataHandler(r, obj, cls, genericType, anns, mt);
+        return new MessageBodyWriterDataHandler<T>(r, obj, cls, genericType, anns, mt);
+    }
+    private <T> DataHandler getHandlerForObject(T obj, 
+                                            Type genericType,
+                                            Annotation[] anns,
+                                            String mimeType, int id) {
+        @SuppressWarnings("unchecked")
+        Class<T> cls = (Class<T>)obj.getClass();
+        return getHandlerForObject(obj, cls, genericType, anns, mimeType, id);
     }
     
     private DataHandler createInputStreamDH(InputStream is, String mimeType) {
@@ -397,16 +414,16 @@ public class MultipartProvider extends A
         return mimeType;
     }
     
-    private static class MessageBodyWriterDataHandler extends DataHandler {
-        private MessageBodyWriter<Object> writer;
-        private Object obj;
-        private Class<?> cls;
+    private static class MessageBodyWriterDataHandler<T> extends DataHandler {
+        private MessageBodyWriter<T> writer;
+        private T obj;
+        private Class<T> cls;
         private Type genericType;
         private Annotation[] anns;
         private MediaType contentType;
-        public MessageBodyWriterDataHandler(MessageBodyWriter<Object> writer,
-                                            Object obj,
-                                            Class<?> cls,
+        public MessageBodyWriterDataHandler(MessageBodyWriter<T> writer,
+                                            T obj,
+                                            Class<T> cls,
                                             Type genericType,
                                             Annotation[] anns,
                                             MediaType contentType) {

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/PrimitiveTextProvider.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/PrimitiveTextProvider.java?rev=1229332&r1=1229331&r2=1229332&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/PrimitiveTextProvider.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/PrimitiveTextProvider.java Mon Jan  9 20:07:20 2012
@@ -34,8 +34,8 @@ import org.apache.cxf.jaxrs.model.Parame
 import org.apache.cxf.jaxrs.utils.HttpUtils;
 import org.apache.cxf.jaxrs.utils.InjectionUtils;
 
-public class PrimitiveTextProvider 
-    implements MessageBodyReader<Object>, MessageBodyWriter<Object> {
+public class PrimitiveTextProvider<T> 
+    implements MessageBodyReader<T>, MessageBodyWriter<T> {
 
     private static boolean isSupported(Class<?> type) { 
         return InjectionUtils.isPrimitive(type);
@@ -45,8 +45,8 @@ public class PrimitiveTextProvider 
         return isSupported(type);
     }
 
-    public Object readFrom(Class<Object> type, Type genType, Annotation[] anns, MediaType mt, 
-                           MultivaluedMap<String, String> headers, InputStream is) throws IOException {
+    public T readFrom(Class<T> type, Type genType, Annotation[] anns, MediaType mt, 
+                      MultivaluedMap<String, String> headers, InputStream is) throws IOException {
         
         return InjectionUtils.handleParameter(
                     IOUtils.toString(is, HttpUtils.getEncoding(mt, "UTF-8")), 
@@ -57,7 +57,7 @@ public class PrimitiveTextProvider 
         
     }
 
-    public long getSize(Object t, Class<?> type, Type genericType, Annotation[] annotations, MediaType mt) {
+    public long getSize(T t, Class<?> type, Type genericType, Annotation[] annotations, MediaType mt) {
         return -1;
     }
 
@@ -65,7 +65,7 @@ public class PrimitiveTextProvider 
         return isSupported(type);
     }
 
-    public void writeTo(Object obj, Class<?> type, Type genType, Annotation[] anns, 
+    public void writeTo(T obj, Class<?> type, Type genType, Annotation[] anns, 
                         MediaType mt, MultivaluedMap<String, Object> headers,
                         OutputStream os) throws IOException {
         String encoding = HttpUtils.getSetEncoding(mt, headers, "UTF-8");

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java?rev=1229332&r1=1229331&r2=1229332&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java Mon Jan  9 20:07:20 2012
@@ -45,6 +45,7 @@ import org.apache.cxf.common.classloader
 import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.common.util.ClassHelper;
 import org.apache.cxf.endpoint.Endpoint;
+import org.apache.cxf.helpers.CastUtils;
 import org.apache.cxf.jaxrs.client.ResponseExceptionMapper;
 import org.apache.cxf.jaxrs.ext.ParameterHandler;
 import org.apache.cxf.jaxrs.ext.RequestHandler;
@@ -66,38 +67,38 @@ public final class ProviderFactory {
     private static final String JSON_PROVIDER_NAME = "org.apache.cxf.jaxrs.provider.JSONProvider";
     
     static {
-        SHARED_FACTORY.setProviders(new BinaryDataProvider(),
-                                    new SourceProvider(),
-                                    new FormEncodingProvider(),
-                                    new PrimitiveTextProvider(),
+        SHARED_FACTORY.setProviders(new BinaryDataProvider<Object>(),
+                                    new SourceProvider<Object>(),
+                                    new FormEncodingProvider<Object>(),
+                                    new PrimitiveTextProvider<Object>(),
                                     new MultipartProvider(),
                                     new WebApplicationExceptionMapper(),
                                     new WadlGenerator());
     }
     
-    private List<ProviderInfo<MessageBodyReader>> messageReaders = 
-        new ArrayList<ProviderInfo<MessageBodyReader>>();
-    private List<ProviderInfo<MessageBodyWriter>> messageWriters = 
-        new ArrayList<ProviderInfo<MessageBodyWriter>>();
-    private List<ProviderInfo<ContextResolver>> contextResolvers = 
-        new ArrayList<ProviderInfo<ContextResolver>>(1);
-    private List<ProviderInfo<ExceptionMapper>> exceptionMappers = 
-        new ArrayList<ProviderInfo<ExceptionMapper>>(1);
+    private List<ProviderInfo<MessageBodyReader<?>>> messageReaders = 
+        new ArrayList<ProviderInfo<MessageBodyReader<?>>>();
+    private List<ProviderInfo<MessageBodyWriter<?>>> messageWriters = 
+        new ArrayList<ProviderInfo<MessageBodyWriter<?>>>();
+    private List<ProviderInfo<ContextResolver<?>>> contextResolvers = 
+        new ArrayList<ProviderInfo<ContextResolver<?>>>(1);
+    private List<ProviderInfo<ExceptionMapper<?>>> exceptionMappers = 
+        new ArrayList<ProviderInfo<ExceptionMapper<?>>>(1);
     private List<ProviderInfo<RequestHandler>> requestHandlers = 
         new ArrayList<ProviderInfo<RequestHandler>>(1);
     private List<ProviderInfo<ResponseHandler>> responseHandlers = 
         new ArrayList<ProviderInfo<ResponseHandler>>(1);
-    private List<ProviderInfo<ParameterHandler>> paramHandlers = 
-        new ArrayList<ProviderInfo<ParameterHandler>>(1);
-    private List<ProviderInfo<ResponseExceptionMapper>> responseExceptionMappers = 
-        new ArrayList<ProviderInfo<ResponseExceptionMapper>>(1);
+    private List<ProviderInfo<ParameterHandler<?>>> paramHandlers = 
+        new ArrayList<ProviderInfo<ParameterHandler<?>>>(1);
+    private List<ProviderInfo<ResponseExceptionMapper<?>>> responseExceptionMappers = 
+        new ArrayList<ProviderInfo<ResponseExceptionMapper<?>>>(1);
     private RequestPreprocessor requestPreprocessor;
     private ProviderInfo<Application> application;
     
-    private List<ProviderInfo<MessageBodyReader>> jaxbReaders = 
-        new ArrayList<ProviderInfo<MessageBodyReader>>();
-    private List<ProviderInfo<MessageBodyWriter>> jaxbWriters = 
-        new ArrayList<ProviderInfo<MessageBodyWriter>>();
+    private List<ProviderInfo<MessageBodyReader<?>>> jaxbReaders = 
+        new ArrayList<ProviderInfo<MessageBodyReader<?>>>();
+    private List<ProviderInfo<MessageBodyWriter<?>>> jaxbWriters = 
+        new ArrayList<ProviderInfo<MessageBodyWriter<?>>>();
     
     private ProviderFactory() {
         initJaxbProviders();
@@ -110,13 +111,13 @@ public final class ProviderFactory {
     private void initJaxbProviders() {
         Object jaxbProvider = createProvider(JAXB_PROVIDER_NAME);
         if (jaxbProvider != null) {
-            jaxbReaders.add(new ProviderInfo<MessageBodyReader>((MessageBodyReader)jaxbProvider));
-            jaxbWriters.add(new ProviderInfo<MessageBodyWriter>((MessageBodyWriter)jaxbProvider));
+            jaxbReaders.add(new ProviderInfo<MessageBodyReader<?>>((MessageBodyReader<?>)jaxbProvider));
+            jaxbWriters.add(new ProviderInfo<MessageBodyWriter<?>>((MessageBodyWriter<?>)jaxbProvider));
         }
         Object jsonProvider = createProvider(JSON_PROVIDER_NAME);
         if (jsonProvider != null) {
-            jaxbReaders.add(new ProviderInfo<MessageBodyReader>((MessageBodyReader)jsonProvider));
-            jaxbWriters.add(new ProviderInfo<MessageBodyWriter>((MessageBodyWriter)jsonProvider));
+            jaxbReaders.add(new ProviderInfo<MessageBodyReader<?>>((MessageBodyReader<?>)jsonProvider));
+            jaxbWriters.add(new ProviderInfo<MessageBodyWriter<?>>((MessageBodyWriter<?>)jsonProvider));
         }
         injectContextProxies(jaxbReaders, jaxbWriters);
     }
@@ -164,7 +165,7 @@ public final class ProviderFactory {
     public <T> ContextResolver<T> createContextResolver(Type contextType, 
                                                         Message m,
                                                         MediaType type) {
-        for (ProviderInfo<ContextResolver> cr : contextResolvers) {
+        for (ProviderInfo<ContextResolver<?>> cr : contextResolvers) {
             Type[] types = cr.getProvider().getClass().getGenericInterfaces();
             for (Type t : types) {
                 if (t instanceof ParameterizedType) {
@@ -173,7 +174,7 @@ public final class ProviderFactory {
                     for (int i = 0; i < args.length; i++) {
                         if (contextType == args[i]) {
                             injectContextValues(cr, m);
-                            return cr.getProvider();
+                            return (ContextResolver<T>) cr.getProvider();
                         }
                     }
                 }
@@ -197,51 +198,51 @@ public final class ProviderFactory {
     private <T extends Throwable> ExceptionMapper<T> doCreateExceptionMapper(
         Class<?> exceptionType, Message m) {
         
-        List<ExceptionMapper<T>> candidates = new LinkedList<ExceptionMapper<T>>();
+        List<ExceptionMapper<?>> candidates = new LinkedList<ExceptionMapper<?>>();
         
-        for (ProviderInfo<ExceptionMapper> em : exceptionMappers) {
-            handleMapper((List)candidates, em, exceptionType, m, ExceptionMapper.class, true);
+        for (ProviderInfo<ExceptionMapper<?>> em : exceptionMappers) {
+            handleMapper(candidates, em, exceptionType, m, ExceptionMapper.class, true);
         }
         if (candidates.size() == 0) {
             return null;
         }
         Collections.sort(candidates, new ExceptionMapperComparator());
-        return candidates.get(0);
+        return (ExceptionMapper<T>) candidates.get(0);
     }
     
     @SuppressWarnings("unchecked")
     public <T> ParameterHandler<T> createParameterHandler(Class<?> paramType) {
         
-        List<ParameterHandler<T>> candidates = new LinkedList<ParameterHandler<T>>();
+        List<ParameterHandler<?>> candidates = new LinkedList<ParameterHandler<?>>();
         
-        for (ProviderInfo<ParameterHandler> em : paramHandlers) {
-            handleMapper((List)candidates, em, paramType, null, ParameterHandler.class, true);
+        for (ProviderInfo<ParameterHandler<?>> em : paramHandlers) {
+            handleMapper(candidates, em, paramType, null, ParameterHandler.class, true);
         }
         if (candidates.size() == 0) {
             return null;
         }
         Collections.sort(candidates, new ClassComparator());
-        return candidates.get(0);
+        return (ParameterHandler<T>) candidates.get(0);
     }
     
     @SuppressWarnings("unchecked")
     public <T extends Throwable> ResponseExceptionMapper<T> createResponseExceptionMapper(
                                  Class<?> paramType) {
         
-        List<ResponseExceptionMapper<T>> candidates = new LinkedList<ResponseExceptionMapper<T>>();
+        List<ResponseExceptionMapper<?>> candidates = new LinkedList<ResponseExceptionMapper<?>>();
         
-        for (ProviderInfo<ResponseExceptionMapper> em : responseExceptionMappers) {
-            handleMapper((List)candidates, em, paramType, null, ResponseExceptionMapper.class, true);
+        for (ProviderInfo<ResponseExceptionMapper<?>> em : responseExceptionMappers) {
+            handleMapper(candidates, em, paramType, null, ResponseExceptionMapper.class, true);
         }
         if (candidates.size() == 0) {
             return null;
         }
         Collections.sort(candidates, new ClassComparator());
-        return candidates.get(0);
+        return (ResponseExceptionMapper<T>) candidates.get(0);
     }
     
-    private static <T> void handleMapper(List<Object> candidates, 
-                                     ProviderInfo em, 
+    private static <T> void handleMapper(List<T> candidates, 
+                                     ProviderInfo<T> em, 
                                      Class<?> expectedType, 
                                      Message m, 
                                      Class<?> providerClass,
@@ -406,15 +407,15 @@ public final class ProviderFactory {
             Class<?> oClass = ClassHelper.getRealClass(o);
             
             if (MessageBodyReader.class.isAssignableFrom(oClass)) {
-                messageReaders.add(new ProviderInfo<MessageBodyReader>((MessageBodyReader)o)); 
+                messageReaders.add(new ProviderInfo<MessageBodyReader<?>>((MessageBodyReader<?>)o)); 
             }
             
             if (MessageBodyWriter.class.isAssignableFrom(oClass)) {
-                messageWriters.add(new ProviderInfo<MessageBodyWriter>((MessageBodyWriter)o)); 
+                messageWriters.add(new ProviderInfo<MessageBodyWriter<?>>((MessageBodyWriter<?>)o)); 
             }
             
             if (ContextResolver.class.isAssignableFrom(oClass)) {
-                contextResolvers.add(new ProviderInfo<ContextResolver>((ContextResolver)o)); 
+                contextResolvers.add(new ProviderInfo<ContextResolver<?>>((ContextResolver<?>)o)); 
             }
             
             if (RequestHandler.class.isAssignableFrom(oClass)) {
@@ -426,26 +427,27 @@ public final class ProviderFactory {
             }
             
             if (ExceptionMapper.class.isAssignableFrom(oClass)) {
-                exceptionMappers.add(new ProviderInfo<ExceptionMapper>((ExceptionMapper)o)); 
+                exceptionMappers.add(new ProviderInfo<ExceptionMapper<?>>((ExceptionMapper<?>)o)); 
             }
             
             if (ResponseExceptionMapper.class.isAssignableFrom(oClass)) {
-                responseExceptionMappers.add(new ProviderInfo<ResponseExceptionMapper>((ResponseExceptionMapper)o)); 
+                responseExceptionMappers.add(new ProviderInfo<ResponseExceptionMapper<?>>((ResponseExceptionMapper<?>)o)); 
             }
             
             if (ParameterHandler.class.isAssignableFrom(oClass)) {
-                paramHandlers.add(new ProviderInfo<ParameterHandler>((ParameterHandler)o)); 
+                paramHandlers.add(new ProviderInfo<ParameterHandler<?>>((ParameterHandler<?>)o)); 
             }
         }
         sortReaders();
         sortWriters();
         
-        injectContextProxies(messageReaders, messageWriters, contextResolvers, requestHandlers, responseHandlers,
+        injectContextProxies(messageReaders, messageWriters, contextResolvers, 
+        			requestHandlers, responseHandlers,
                        exceptionMappers);
     }
 //CHECKSTYLE:ON
     
-    static void injectContextValues(ProviderInfo pi, Message m) {
+    static void injectContextValues(ProviderInfo<?> pi, Message m) {
         if (m != null) {
             InjectionUtils.injectContextFields(pi.getProvider(), pi, m);
             InjectionUtils.injectContextMethods(pi.getProvider(), pi, m);
@@ -454,8 +456,8 @@ public final class ProviderFactory {
     
     void injectContextProxies(List<?> ... providerLists) {
         for (List<?> list : providerLists) {
-            for (Object p : list) {
-                ProviderInfo pi = (ProviderInfo)p;
+            List<ProviderInfo<?>> l2 = CastUtils.cast(list);
+            for (ProviderInfo<?> pi : l2) {
                 if (ProviderFactory.SHARED_FACTORY == this && isJaxbBasedProvider(pi.getProvider())) {
                     continue;
                 }
@@ -492,19 +494,19 @@ public final class ProviderFactory {
      * @return
      */
     @SuppressWarnings("unchecked")
-    private <T> MessageBodyReader<T> chooseMessageReader(List<ProviderInfo<MessageBodyReader>> readers,
+    private <T> MessageBodyReader<T> chooseMessageReader(List<ProviderInfo<MessageBodyReader<?>>> readers,
                                                          Class<T> type,
                                                          Type genericType,
                                                          Annotation[] annotations,
                                                          MediaType mediaType,
                                                          Message m) {
-        List<MessageBodyReader<T>> candidates = new LinkedList<MessageBodyReader<T>>();
-        for (ProviderInfo<MessageBodyReader> ep : readers) {
+        List<MessageBodyReader<?>> candidates = new LinkedList<MessageBodyReader<?>>();
+        for (ProviderInfo<MessageBodyReader<?>> ep : readers) {
             if (matchesReaderCriterias(ep, type, genericType, annotations, mediaType, m)) {
                 if (this == SHARED_FACTORY) {
-                    return ep.getProvider();
+                    return (MessageBodyReader<T>) ep.getProvider();
                 }
-                handleMapper((List)candidates, ep, type, m, MessageBodyReader.class, false);
+                handleMapper(candidates, ep, type, m, MessageBodyReader.class, false);
             }
         }     
         
@@ -512,11 +514,11 @@ public final class ProviderFactory {
             return null;
         }
         Collections.sort(candidates, new ClassComparator());
-        return candidates.get(0);
+        return (MessageBodyReader<T>) candidates.get(0);
         
     }
     
-    private <T> boolean matchesReaderCriterias(ProviderInfo<MessageBodyReader> pi,
+    private <T> boolean matchesReaderCriterias(ProviderInfo<MessageBodyReader<?>> pi,
                                                Class<T> type,
                                                Type genericType,
                                                Annotation[] annotations,
@@ -554,29 +556,29 @@ public final class ProviderFactory {
      * @return
      */
     @SuppressWarnings("unchecked")
-    private <T> MessageBodyWriter<T> chooseMessageWriter(List<ProviderInfo<MessageBodyWriter>> writers,
+    private <T> MessageBodyWriter<T> chooseMessageWriter(List<ProviderInfo<MessageBodyWriter<?>>> writers,
                                                          Class<T> type,
                                                          Type genericType,
                                                          Annotation[] annotations,
                                                          MediaType mediaType,
                                                          Message m) {
-        List<MessageBodyWriter<T>> candidates = new LinkedList<MessageBodyWriter<T>>();
-        for (ProviderInfo<MessageBodyWriter> ep : writers) {
+        List<MessageBodyWriter<?>> candidates = new LinkedList<MessageBodyWriter<?>>();
+        for (ProviderInfo<MessageBodyWriter<?>> ep : writers) {
             if (matchesWriterCriterias(ep, type, genericType, annotations, mediaType, m)) {
                 if (this == SHARED_FACTORY) {
-                    return ep.getProvider();
+                    return (MessageBodyWriter<T>) ep.getProvider();
                 }
-                handleMapper((List)candidates, ep, type, m, MessageBodyWriter.class, false);
+                handleMapper(candidates, ep, type, m, MessageBodyWriter.class, false);
             }
         }     
         if (candidates.size() == 0) {
             return null;
         }
         Collections.sort(candidates, new ClassComparator());
-        return candidates.get(0);
+        return (MessageBodyWriter<T>) candidates.get(0);
     }
     
-    private <T> boolean matchesWriterCriterias(ProviderInfo<MessageBodyWriter> pi,
+    private <T> boolean matchesWriterCriterias(ProviderInfo<MessageBodyWriter<?>> pi,
                                                Class<T> type,
                                                Type genericType,
                                                Annotation[] annotations,
@@ -604,15 +606,15 @@ public final class ProviderFactory {
         return matches;
     }
     
-    List<ProviderInfo<MessageBodyReader>> getMessageReaders() {
+    List<ProviderInfo<MessageBodyReader<?>>> getMessageReaders() {
         return Collections.unmodifiableList(messageReaders);
     }
 
-    List<ProviderInfo<MessageBodyWriter>> getMessageWriters() {
+    List<ProviderInfo<MessageBodyWriter<?>>> getMessageWriters() {
         return Collections.unmodifiableList(messageWriters);
     }
     
-    List<ProviderInfo<ContextResolver>> getContextResolvers() {
+    List<ProviderInfo<ContextResolver<?>>> getContextResolvers() {
         return Collections.unmodifiableList(contextResolvers);
     }
     
@@ -629,12 +631,12 @@ public final class ProviderFactory {
     }
 
     private static class MessageBodyReaderComparator 
-        implements Comparator<ProviderInfo<MessageBodyReader>> {
+        implements Comparator<ProviderInfo<MessageBodyReader<?>>> {
         
-        public int compare(ProviderInfo<MessageBodyReader> p1, 
-                           ProviderInfo<MessageBodyReader> p2) {
-            MessageBodyReader e1 = p1.getProvider();
-            MessageBodyReader e2 = p2.getProvider();
+        public int compare(ProviderInfo<MessageBodyReader<?>> p1, 
+                           ProviderInfo<MessageBodyReader<?>> p2) {
+            MessageBodyReader<?> e1 = p1.getProvider();
+            MessageBodyReader<?> e2 = p2.getProvider();
             List<MediaType> types1 = JAXRSUtils.getProviderConsumeTypes(e1);
             types1 = JAXRSUtils.sortMediaTypes(types1);
             List<MediaType> types2 = JAXRSUtils.getProviderConsumeTypes(e2);
@@ -645,12 +647,12 @@ public final class ProviderFactory {
     }
     
     private static class MessageBodyWriterComparator 
-        implements Comparator<ProviderInfo<MessageBodyWriter>> {
+        implements Comparator<ProviderInfo<MessageBodyWriter<?>>> {
         
-        public int compare(ProviderInfo<MessageBodyWriter> p1, 
-                           ProviderInfo<MessageBodyWriter> p2) {
-            MessageBodyWriter e1 = p1.getProvider();
-            MessageBodyWriter e2 = p2.getProvider();
+        public int compare(ProviderInfo<MessageBodyWriter<?>> p1, 
+                           ProviderInfo<MessageBodyWriter<?>> p2) {
+            MessageBodyWriter<?> e1 = p1.getProvider();
+            MessageBodyWriter<?> e2 = p2.getProvider();
             
             List<MediaType> types1 =
                 JAXRSUtils.sortMediaTypes(JAXRSUtils.getProviderProduceTypes(e1));
@@ -690,8 +692,8 @@ public final class ProviderFactory {
     
     void clearProxies(List<?> ...lists) {
         for (List<?> list : lists) {
-            for (Object p : list) {
-                ProviderInfo pi = (ProviderInfo)p;
+            List<ProviderInfo<?>> l2 = CastUtils.cast(list);
+            for (ProviderInfo<?> pi : l2) {
                 pi.clearThreadLocalProxies();
             }
         }
@@ -712,7 +714,7 @@ public final class ProviderFactory {
         if (bus == null) {
             return;
         }
-        for (ProviderInfo<MessageBodyReader> r : messageReaders) {
+        for (ProviderInfo<MessageBodyReader<?>> r : messageReaders) {
             injectProviderProperty(r.getProvider(), "setBus", Bus.class, bus);
         }
     }
@@ -731,12 +733,12 @@ public final class ProviderFactory {
     
     public void setSchemaLocations(List<String> schemas) {
         boolean schemasMethodAvailable = false;
-        for (ProviderInfo<MessageBodyReader> r : messageReaders) {
+        for (ProviderInfo<MessageBodyReader<?>> r : messageReaders) {
             schemasMethodAvailable = injectProviderProperty(r.getProvider(), "setSchemas", 
                                                             List.class, schemas);
         }
         if (!schemasMethodAvailable) {
-            for (ProviderInfo<MessageBodyReader> r : jaxbReaders) {
+            for (ProviderInfo<MessageBodyReader<?>> r : jaxbReaders) {
                 schemasMethodAvailable = injectProviderProperty(r.getProvider(), "setSchemas", 
                                                                 List.class, schemas);
             }
@@ -746,7 +748,7 @@ public final class ProviderFactory {
     public void initProviders(List<ClassResourceInfo> cris) {
         Set<Object> set = getReadersWriters();
         for (Object o : set) {
-            Object provider = ((ProviderInfo)o).getProvider();
+            Object provider = ((ProviderInfo<?>)o).getProvider();
             if (provider instanceof AbstractConfigurableProvider) {
                 ((AbstractConfigurableProvider)provider).init(cris);
             }

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/SourceProvider.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/SourceProvider.java?rev=1229332&r1=1229331&r2=1229332&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/SourceProvider.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/SourceProvider.java Mon Jan  9 20:07:20 2012
@@ -54,8 +54,8 @@ import org.apache.cxf.staxutils.StaxUtil
 @Provider
 @Produces({"application/xml", "application/*+xml", "text/xml" })
 @Consumes({"application/xml", "application/*+xml", "text/xml", "text/html" })
-public class SourceProvider extends AbstractConfigurableProvider implements 
-    MessageBodyReader<Object>, MessageBodyWriter<Object> {
+public class SourceProvider<T> extends AbstractConfigurableProvider implements 
+    MessageBodyReader<T>, MessageBodyWriter<T> {
 
     private static final String PREFERRED_FORMAT = "source-preferred-format";
     @Context
@@ -73,7 +73,7 @@ public class SourceProvider extends Abst
                || Document.class.isAssignableFrom(type);
     }
     
-    public Object readFrom(Class<Object> source, Type genericType, Annotation[] annotations, MediaType m,  
+    public T readFrom(Class<T> source, Type genericType, Annotation[] annotations, MediaType m,  
         MultivaluedMap<String, String> headers, InputStream is) 
         throws IOException {
         
@@ -91,7 +91,7 @@ public class SourceProvider extends Abst
             XMLStreamReader reader = getReader(is);
             try {
                 Document doc = StaxUtils.read(reader);
-                return docRequired ? doc : new DOMSource(doc);
+                return source.cast(docRequired ? doc : new DOMSource(doc));
             } catch (Exception e) {
                 IOException ioex = new IOException("Problem creating a Source object");
                 ioex.setStackTrace(e.getStackTrace());
@@ -105,12 +105,12 @@ public class SourceProvider extends Abst
             }
         } else if (SAXSource.class.isAssignableFrom(theSource)
                   || StaxSource.class.isAssignableFrom(theSource)) {
-            return new StaxSource(getReader(is));
+            return source.cast(new StaxSource(getReader(is)));
         } else if (StreamSource.class.isAssignableFrom(theSource)
                    || Source.class.isAssignableFrom(theSource)) {
-            return new StreamSource(getRealStream(is));
+            return source.cast(new StreamSource(getRealStream(is)));
         } else if (XMLSource.class.isAssignableFrom(theSource)) {
-            return new XMLSource(getRealStream(is));
+            return source.cast(new XMLSource(getRealStream(is)));
         }
         
         throw new IOException("Unrecognized source");
@@ -149,7 +149,7 @@ public class SourceProvider extends Abst
         }
     }
     
-    public void writeTo(Object source, Class<?> clazz, Type genericType, Annotation[] annotations,  
+    public void writeTo(T source, Class<?> clazz, Type genericType, Annotation[] annotations,  
         MediaType mt, MultivaluedMap<String, Object> headers, OutputStream os)
         throws IOException {
         
@@ -177,7 +177,7 @@ public class SourceProvider extends Abst
         }
     }
     
-    public long getSize(Object source, Class<?> type, Type genericType, Annotation[] annotations, 
+    public long getSize(T source, Class<?> type, Type genericType, Annotation[] annotations, 
                         MediaType mt) {
         return -1;
     }

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/XMLBeansElementProvider.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/XMLBeansElementProvider.java?rev=1229332&r1=1229331&r2=1229332&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/XMLBeansElementProvider.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/XMLBeansElementProvider.java Mon Jan  9 20:07:20 2012
@@ -92,7 +92,7 @@ public class XMLBeansElementProvider ext
      * @param reader stream reader for the XML stream
      * @return an XMLBean data object, or none if unable to process
      */
-    protected XmlObject parseXmlBean(Class type, XMLStreamReader reader) {
+    protected XmlObject parseXmlBean(Class<?> type, XMLStreamReader reader) {
 
         XmlObject result = null;
 
@@ -130,7 +130,7 @@ public class XMLBeansElementProvider ext
      * @param inStream
      * @return an XMLBean object if successful, otherwise null
      */
-    protected XmlObject parseXmlBean(Class type, InputStream inStream) {
+    protected XmlObject parseXmlBean(Class<?> type, InputStream inStream) {
         XmlObject result = null;
 
         Reader r = new InputStreamReader(inStream);
@@ -148,7 +148,7 @@ public class XMLBeansElementProvider ext
      * @param reader
      * @return an instance of the required object, otherwise null
      */
-    protected XmlObject parseXmlBean(Class type, Reader reader) {
+    protected XmlObject parseXmlBean(Class<?> type, Reader reader) {
         XmlObject result = null;
 
         Class<?> factory = getFactory(type);
@@ -181,17 +181,17 @@ public class XMLBeansElementProvider ext
      * @param type
      * @return the Factory class if present, otherwise null.
      */
-    private Class getFactory(Class type) {
-        Class result = null;
+    private Class<?> getFactory(Class<?> type) {
+        Class<?> result = null;
 
-        Class[] interfaces = type.getInterfaces();
+        Class<?>[] interfaces = type.getInterfaces();
 
         // look for XMLBeans inner class Factory
-        for (Class inter : interfaces) {
+        for (Class<?> inter : interfaces) {
 
-            Class[] declared = inter.getDeclaredClasses();
+            Class<?>[] declared = inter.getDeclaredClasses();
 
-            for (Class c : declared) {
+            for (Class<?> c : declared) {
 
                 if (c.getSimpleName().equals("Factory")) {
                     result = c;
@@ -211,21 +211,21 @@ public class XMLBeansElementProvider ext
      * @param type
      * @return true if found to be an XMLBean object, otherwise false
      */
-    protected boolean isXmlBean(Class type) {
+    protected boolean isXmlBean(Class<?> type) {
         boolean result = false;
 
-        Class[] interfaces = {type};
+        Class<?>[] interfaces = {type};
 
         if (!type.isInterface()) {
 
             interfaces = type.getInterfaces();
         }
 
-        for (Class i : interfaces) {
+        for (Class<?> i : interfaces) {
 
-            Class[] superInterfaces = i.getInterfaces();
+            Class<?>[] superInterfaces = i.getInterfaces();
 
-            for (Class superI : superInterfaces) {
+            for (Class<?> superI : superInterfaces) {
 
                 if (superI.getName().equals("org.apache.xmlbeans.XmlObject")) {
                     result = true;

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/XPathProvider.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/XPathProvider.java?rev=1229332&r1=1229331&r2=1229332&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/XPathProvider.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/XPathProvider.java Mon Jan  9 20:07:20 2012
@@ -37,7 +37,7 @@ import org.apache.cxf.jaxrs.ext.xml.XMLS
 
 @Provider
 @Consumes({"text/xml", "application/xml", "application/*+xml" })
-public class XPathProvider implements MessageBodyReader<Object> {
+public class XPathProvider<T> implements MessageBodyReader<T> {
 
     private List<String> consumeMediaTypes;
     private Map<String, String> classExpressions;
@@ -77,7 +77,7 @@ public class XPathProvider implements Me
             || classExpressions != null && classExpressions.containsKey(cls.getName());
     }
 
-    public Object readFrom(Class<Object> cls, Type type, Annotation[] anns, MediaType mt, 
+    public T readFrom(Class<T> cls, Type type, Annotation[] anns, MediaType mt, 
         MultivaluedMap<String, String> hrs, InputStream is) throws IOException, WebApplicationException {
         String expression = globalExpression != null ? globalExpression
             : classExpressions.get(cls.getName());

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/XSLTJaxbProvider.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/XSLTJaxbProvider.java?rev=1229332&r1=1229331&r2=1229332&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/XSLTJaxbProvider.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/XSLTJaxbProvider.java Mon Jan  9 20:07:20 2012
@@ -70,7 +70,7 @@ import org.apache.cxf.staxutils.StaxUtil
 @Produces({"application/xml", "application/*+xml", "text/xml", "text/html" })
 @Consumes({"application/xml", "application/*+xml", "text/xml", "text/html" })
 @Provider
-public class XSLTJaxbProvider extends JAXBElementProvider {
+public class XSLTJaxbProvider<T> extends JAXBElementProvider<T> {
     
     private static final Logger LOG = LogUtils.getL7dLogger(XSLTJaxbProvider.class);
     

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/servlet/CXFNonSpringJaxrsServlet.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/servlet/CXFNonSpringJaxrsServlet.java?rev=1229332&r1=1229331&r2=1229332&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/servlet/CXFNonSpringJaxrsServlet.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/servlet/CXFNonSpringJaxrsServlet.java Mon Jan  9 20:07:20 2012
@@ -97,16 +97,16 @@ public class CXFNonSpringJaxrsServlet ex
         setSchemasLocations(bean, servletConfig);
         setAllInterceptors(bean, servletConfig);
         
-        Map<Class, Map<String, String>> resourceClasses = 
+        Map<Class<?>, Map<String, String>> resourceClasses = 
             getServiceClasses(servletConfig, modelRef != null);
-        Map<Class, ResourceProvider> resourceProviders = 
+        Map<Class<?>, ResourceProvider> resourceProviders = 
             getResourceProviders(servletConfig, resourceClasses);
         
         List<?> providers = getProviders(servletConfig);
                 
-        bean.setResourceClasses(new ArrayList<Class>(resourceClasses.keySet()));
+        bean.setResourceClasses(new ArrayList<Class<?>>(resourceClasses.keySet()));
         bean.setProviders(providers);
-        for (Map.Entry<Class, ResourceProvider> entry : resourceProviders.entrySet()) {
+        for (Map.Entry<Class<?>, ResourceProvider> entry : resourceProviders.entrySet()) {
             bean.setResourceProvider(entry.getKey(), entry.getValue());
         }
         setExtensions(bean, servletConfig);
@@ -202,7 +202,7 @@ public class CXFNonSpringJaxrsServlet ex
         }
     }
     
-    protected Map<Class, Map<String, String>> getServiceClasses(ServletConfig servletConfig,
+    protected Map<Class<?>, Map<String, String>> getServiceClasses(ServletConfig servletConfig,
                                             boolean modelAvailable) throws ServletException {
         String serviceBeans = servletConfig.getInitParameter(SERVICE_CLASSES_PARAM);
         if (serviceBeans == null) {
@@ -212,7 +212,7 @@ public class CXFNonSpringJaxrsServlet ex
             throw new ServletException("At least one resource class should be specified");
         }
         String[] classNames = serviceBeans.split(" ");
-        Map<Class, Map<String, String>> map = new HashMap<Class, Map<String, String>>();
+        Map<Class<?>, Map<String, String>> map = new HashMap<Class<?>, Map<String, String>>();
         for (String cName : classNames) {
             Map<String, String> props = new HashMap<String, String>();
             String theName = getClassNameAndProperties(cName, props);
@@ -256,16 +256,16 @@ public class CXFNonSpringJaxrsServlet ex
         return theName;
     }
     
-    protected Map<Class, ResourceProvider> getResourceProviders(ServletConfig servletConfig,
-            Map<Class, Map<String, String>> resourceClasses) throws ServletException {
+    protected Map<Class<?>, ResourceProvider> getResourceProviders(ServletConfig servletConfig,
+            Map<Class<?>, Map<String, String>> resourceClasses) throws ServletException {
         String scope = servletConfig.getInitParameter(SERVICE_SCOPE_PARAM);
         if (scope != null && !SERVICE_SCOPE_SINGLETON.equals(scope)
             && !SERVICE_SCOPE_REQUEST.equals(scope)) {
             throw new ServletException("Only singleton and prototype scopes are supported");
         }
         boolean isPrototype = SERVICE_SCOPE_REQUEST.equals(scope);
-        Map<Class, ResourceProvider> map = new HashMap<Class, ResourceProvider>();
-        for (Map.Entry<Class, Map<String, String>> entry : resourceClasses.entrySet()) {
+        Map<Class<?>, ResourceProvider> map = new HashMap<Class<?>, ResourceProvider>();
+        for (Map.Entry<Class<?>, Map<String, String>> entry : resourceClasses.entrySet()) {
             Class<?> c = entry.getKey();
             map.put(c, isPrototype ? new PerRequestResourceProvider(c)
                                    : new SingletonResourceProvider(

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/JAXRSClientFactoryBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/JAXRSClientFactoryBeanDefinitionParser.java?rev=1229332&r1=1229331&r2=1229332&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/JAXRSClientFactoryBeanDefinitionParser.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/JAXRSClientFactoryBeanDefinitionParser.java Mon Jan  9 20:07:20 2012
@@ -74,7 +74,7 @@ public class JAXRSClientFactoryBeanDefin
     @Override
     protected void mapElement(ParserContext ctx, BeanDefinitionBuilder bean, Element el, String name) {
         if ("properties".equals(name) || "headers".equals(name)) {
-            Map map = ctx.getDelegate().parseMapElement(el, bean.getBeanDefinition());
+            Map<?, ?> map = ctx.getDelegate().parseMapElement(el, bean.getBeanDefinition());
             bean.addPropertyValue(name, map);
         } else if ("executor".equals(name)) {
             setFirstChildAsProperty(el, ctx, bean, "serviceFactory.executor");         
@@ -82,11 +82,11 @@ public class JAXRSClientFactoryBeanDefin
             setFirstChildAsProperty(el, ctx, bean, "bindingConfig");
         } else if ("inInterceptors".equals(name) || "inFaultInterceptors".equals(name)
             || "outInterceptors".equals(name) || "outFaultInterceptors".equals(name)) {
-            List list = ctx.getDelegate().parseListElement(el, bean.getBeanDefinition());
+            List<?> list = ctx.getDelegate().parseListElement(el, bean.getBeanDefinition());
             bean.addPropertyValue(name, list);
         } else if ("features".equals(name) || "providers".equals(name)
                    || "schemaLocations".equals(name) || "modelBeans".equals(name)) {
-            List list = ctx.getDelegate().parseListElement(el, bean.getBeanDefinition());
+            List<?> list = ctx.getDelegate().parseListElement(el, bean.getBeanDefinition());
             bean.addPropertyValue(name, list);
         } else if ("model".equals(name)) {
             List<UserResource> resources = ResourceUtils.getResourcesFromElement(el);

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/JAXRSServerFactoryBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/JAXRSServerFactoryBeanDefinitionParser.java?rev=1229332&r1=1229331&r2=1229332&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/JAXRSServerFactoryBeanDefinitionParser.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/JAXRSServerFactoryBeanDefinitionParser.java Mon Jan  9 20:07:20 2012
@@ -76,7 +76,7 @@ public class JAXRSServerFactoryBeanDefin
         if ("properties".equals(name) 
             || "extensionMappings".equals(name)
             || "languageMappings".equals(name)) {
-            Map map = ctx.getDelegate().parseMapElement(el, bean.getBeanDefinition());
+            Map<?, ?> map = ctx.getDelegate().parseMapElement(el, bean.getBeanDefinition());
             bean.addPropertyValue(name, map);
         } else if ("executor".equals(name)) {
             setFirstChildAsProperty(el, ctx, bean, "serviceFactory.executor");
@@ -86,15 +86,15 @@ public class JAXRSServerFactoryBeanDefin
             setFirstChildAsProperty(el, ctx, bean, "bindingConfig");
         } else if ("inInterceptors".equals(name) || "inFaultInterceptors".equals(name)
             || "outInterceptors".equals(name) || "outFaultInterceptors".equals(name)) {
-            List list = ctx.getDelegate().parseListElement(el, bean.getBeanDefinition());
+            List<?> list = ctx.getDelegate().parseListElement(el, bean.getBeanDefinition());
             bean.addPropertyValue(name, list);
         } else if ("features".equals(name) || "schemaLocations".equals(name) 
             || "providers".equals(name) || "serviceBeans".equals(name)
             || "modelBeans".equals(name)) {
-            List list = ctx.getDelegate().parseListElement(el, bean.getBeanDefinition());
+            List<?> list = ctx.getDelegate().parseListElement(el, bean.getBeanDefinition());
             bean.addPropertyValue(name, list);
         }  else if ("serviceFactories".equals(name)) {
-            List list = ctx.getDelegate().parseListElement(el, bean.getBeanDefinition());
+            List<?> list = ctx.getDelegate().parseListElement(el, bean.getBeanDefinition());
             bean.addPropertyValue("resourceProviders", list);
         } else if ("model".equals(name)) {
             List<UserResource> resources = ResourceUtils.getResourcesFromElement(el);

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java?rev=1229332&r1=1229331&r2=1229332&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java Mon Jan  9 20:07:20 2012
@@ -277,20 +277,19 @@ public final class InjectionUtils {
         return null;
     }
     
-    public static Object handleParameter(String value, 
-                                         boolean decoded,
-                                         Class<?> pClass,
-                                         Annotation[] paramAnns,
-                                         ParameterType pType,
-                                         Message message) {
-        
+    public static <T> T handleParameter(String value, 
+                                        boolean decoded,
+                                        Class<T> pClass,
+                                        Annotation[] paramAnns,
+                                        ParameterType pType,
+                                        Message message) {
         if (value == null) {
             return null;
         }
         
         if (pType == ParameterType.PATH) {
             if (PathSegment.class.isAssignableFrom(pClass)) {
-                return new PathSegmentImpl(value, decoded);   
+                return pClass.cast(new PathSegmentImpl(value, decoded));   
             } else {
                 value = new PathSegmentImpl(value, false).getPath();                 
             }
@@ -298,10 +297,14 @@ public final class InjectionUtils {
         
         value = decodeValue(value, decoded, pType);
         
-        
         if (pClass.isPrimitive()) {
             try {
-                return PrimitiveUtils.read(value, pClass);
+                @SuppressWarnings("unchecked")
+                T ret = (T)PrimitiveUtils.read(value, pClass);
+                // cannot us pClass.cast as the pClass is something like
+                // Boolean.TYPE (representing the boolean primitive) and
+                // the object is a Boolean object
+                return ret;
             } catch (NumberFormatException nfe) {
                 //
                 //  For path, query & matrix parameters this is 404,
@@ -316,26 +319,27 @@ public final class InjectionUtils {
         }
         
         boolean adapterHasToBeUsed = false;
+        Class<?> cls = pClass;        
         Class<?> valueType = JAXBUtils.getValueTypeFromAdapter(pClass, pClass, paramAnns);
-        if (valueType != pClass) {
-            pClass = valueType;
+        if (valueType != cls) {
+            cls = valueType;
             adapterHasToBeUsed = true;
         }
         
-        Object result = instantiateFromParameterHandler(value, pClass, message);
+        Object result = instantiateFromParameterHandler(value, cls, message);
         if (result != null) {
-            return result;
+            return pClass.cast(result);
         }
         // check constructors accepting a single String value
         try {
-            Constructor<?> c = pClass.getConstructor(new Class<?>[]{String.class});
+            Constructor<?> c = cls.getConstructor(new Class<?>[]{String.class});
             result = c.newInstance(new Object[]{value});
         } catch (NoSuchMethodException ex) {
             // try valueOf
         } catch (WebApplicationException ex) {
             throw ex;
         } catch (Exception ex) {
-            result = createFromParameterHandler(value, pClass, message);
+            result = createFromParameterHandler(value, cls, message);
             if (result == null) {
                 LOG.severe(new org.apache.cxf.common.i18n.Message("CLASS_CONSTRUCTOR_FAILURE", 
                                                                    BUNDLE, 
@@ -345,11 +349,11 @@ public final class InjectionUtils {
         }
         if (result == null) {
             // check for valueOf(String) static methods
-            String[] methodNames = pClass.isEnum() 
+            String[] methodNames = cls.isEnum() 
                 ? new String[] {"fromString", "fromValue", "valueOf"} 
                 : new String[] {"valueOf", "fromString"};
             for (String mName : methodNames) {   
-                result = evaluateFactoryMethod(value, pClass, pType, mName);
+                result = evaluateFactoryMethod(value, cls, pType, mName);
                 if (result != null) {
                     break;
                 }
@@ -357,7 +361,7 @@ public final class InjectionUtils {
         }
         
         if (result == null) {
-            result = createFromParameterHandler(value, pClass, message);
+            result = createFromParameterHandler(value, cls, message);
         }
         
         if (result != null && adapterHasToBeUsed) {
@@ -373,11 +377,11 @@ public final class InjectionUtils {
             reportServerError("WRONG_PARAMETER_TYPE", pClass.getName());
         }
         
-        return result;
+        return pClass.cast(result);
     }
 
-    private static Object instantiateFromParameterHandler(String value, 
-                                                     Class<?> pClass,
+    private static <T> T instantiateFromParameterHandler(String value, 
+                                                     Class<T> pClass,
                                                      Message message) {
         // TODO: Consider always checking custom parameter handlers first.
         // Right now, Locale and Date are two special cases so it's very cheap
@@ -389,12 +393,12 @@ public final class InjectionUtils {
         }
     }
     
-    private static Object createFromParameterHandler(String value, 
-                                                     Class<?> pClass,
-                                                     Message message) {
-        Object result = null;
+    private static <T> T createFromParameterHandler(String value, 
+                                                    Class<T> pClass,
+                                                    Message message) {
+        T result = null;
         if (message != null) {
-            ParameterHandler<?> pm = ProviderFactory.getInstance(message)
+            ParameterHandler<T> pm = ProviderFactory.getInstance(message)
                 .createParameterHandler(pClass);
             if (pm != null) {
                 result = pm.fromString(value);
@@ -415,14 +419,14 @@ public final class InjectionUtils {
         throw new WebApplicationException(r);
     }
     
-    private static Object evaluateFactoryMethod(String value,
-                                                Class<?> pClass, 
+    private static <T> T evaluateFactoryMethod(String value,
+                                                Class<T> pClass, 
                                                 ParameterType pType, 
                                                 String methodName) {
         try {
             Method m = pClass.getMethod(methodName, new Class<?>[]{String.class});
             if (Modifier.isStatic(m.getModifiers())) {
-                return m.invoke(null, new Object[]{value});
+                return pClass.cast(m.invoke(null, new Object[]{value}));
             }
         } catch (NoSuchMethodException ex) {
             // no luck
@@ -839,8 +843,9 @@ public final class InjectionUtils {
     }
     
     // TODO : investigate the possibility of using generic proxies only
-    public static ThreadLocalProxy createThreadLocalProxy(Class<?> type) {
-        ThreadLocalProxy proxy = null;
+    @SuppressWarnings("unchecked")
+    public static <T> ThreadLocalProxy<T> createThreadLocalProxy(Class<T> type) {
+        ThreadLocalProxy<?> proxy = null;
         if (UriInfo.class.isAssignableFrom(type)) {
             proxy = new ThreadLocalUriInfo();
         } else if (HttpHeaders.class.isAssignableFrom(type)) {
@@ -850,7 +855,7 @@ public final class InjectionUtils {
         } else if (SecurityContext.class.isAssignableFrom(type)) {
             proxy = new ThreadLocalSecurityContext();
         } else if (ContextResolver.class.isAssignableFrom(type)) {
-            proxy = new ThreadLocalContextResolver();
+            proxy = new ThreadLocalContextResolver<Object>();
         } else if (Request.class.isAssignableFrom(type)) {
             proxy = new ThreadLocalRequest();
         }  else if (Providers.class.isAssignableFrom(type)) {
@@ -865,7 +870,7 @@ public final class InjectionUtils {
             proxy = createThreadLocalServletApiContext(type.getName());  
         }
         
-        return proxy;
+        return (ThreadLocalProxy<T>)proxy;
     }
     
     private static boolean isServletApiContext(String name) { 
@@ -927,8 +932,9 @@ public final class InjectionUtils {
         if (!cri.isSingleton()) {
             InjectionUtils.injectFieldValue(f, o, value);
         } else {
-            ThreadLocalProxy proxy = resource ? cri.getResourceFieldProxy(f)
-                                              : cri.getContextFieldProxy(f);
+            ThreadLocalProxy<Object> proxy =  (ThreadLocalProxy<Object>)(
+                    resource ? cri.getResourceFieldProxy(f)
+                        : cri.getContextFieldProxy(f));
             if (proxy != null) {
                 proxy.set(value);
             }
@@ -961,7 +967,8 @@ public final class InjectionUtils {
                 if (!cri.isSingleton()) {
                     InjectionUtils.injectThroughMethod(requestObject, method, o);
                 } else {
-                    ThreadLocalProxy proxy = cri.getContextSetterProxy(method);
+                    ThreadLocalProxy<Object> proxy 
+                        = (ThreadLocalProxy<Object>)cri.getContextSetterProxy(method);
                     if (proxy != null) {
                         proxy.set(o);
                     }
@@ -1110,13 +1117,12 @@ public final class InjectionUtils {
         }
     }
     
-    @SuppressWarnings("unchecked")
-    public static <T> T convertStringToPrimitive(String value, Class<T> cls) {
+    public static <T> Object convertStringToPrimitive(String value, Class<?> cls) {
         if (String.class == cls) {
-            return cls.cast(value);
+            return value;
         }
         if (cls.isPrimitive()) {
-            return (T)PrimitiveUtils.read(value, cls);
+            return PrimitiveUtils.read(value, cls);
         } else {
             try {
                 Method m = cls.getMethod("valueOf", new Class[]{String.class});

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java?rev=1229332&r1=1229331&r2=1229332&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java Mon Jan  9 20:07:20 2012
@@ -158,7 +158,7 @@ public final class JAXRSUtils {
         return values;
     }
     
-    public static List<MediaType> getProviderConsumeTypes(MessageBodyReader provider) {
+    public static List<MediaType> getProviderConsumeTypes(MessageBodyReader<?> provider) {
         String[] values = getUserMediaTypes(provider, "getConsumeMediaTypes");
         
         if (values == null) {
@@ -168,7 +168,7 @@ public final class JAXRSUtils {
         return JAXRSUtils.getMediaTypes(values);
     }
     
-    public static List<MediaType> getProviderProduceTypes(MessageBodyWriter provider) {
+    public static List<MediaType> getProviderProduceTypes(MessageBodyWriter<?> provider) {
         String[] values = getUserMediaTypes(provider, "getProduceMediaTypes");
         
         if (values == null) {
@@ -851,7 +851,7 @@ public final class JAXRSUtils {
             o = new SearchContextImpl(m);
         } else if (Application.class.isAssignableFrom(clazz)) {
             ProviderInfo<?> providerInfo = 
-                (ProviderInfo)contextMessage.getExchange().getEndpoint().get(Application.class.getName());
+                (ProviderInfo<?>)contextMessage.getExchange().getEndpoint().get(Application.class.getName());
             o = providerInfo == null ? providerInfo : providerInfo.getProvider();
         }
         if (o == null && contextMessage != null && !MessageUtils.isRequestor(contextMessage)) {
@@ -1011,8 +1011,7 @@ public final class JAXRSUtils {
         }
     }
 
-    @SuppressWarnings("unchecked")
-    private static <T> Object readFromMessageBody(Class<T> targetTypeClass,
+    private static <T> T readFromMessageBody(Class<T> targetTypeClass,
                                                   Type parameterType,
                                                   Annotation[] parameterAnnotations,
                                                   InputStream is, 
@@ -1022,7 +1021,7 @@ public final class JAXRSUtils {
         
         List<MediaType> types = JAXRSUtils.intersectMimeTypes(consumeTypes, contentType);
         
-        MessageBodyReader provider = null;
+        MessageBodyReader<T> provider = null;
         for (MediaType type : types) { 
             provider = ProviderFactory.getInstance(m)
                 .createMessageBodyReader(targetTypeClass,

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ResourceUtils.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ResourceUtils.java?rev=1229332&r1=1229331&r2=1229332&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ResourceUtils.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ResourceUtils.java Mon Jan  9 20:07:20 2012
@@ -505,7 +505,7 @@ public final class ResourceUtils {
     }
     
     private static void checkJaxbType(Class<?> type, Map<Class<?>, Type> types) {
-        JAXBElementProvider provider = new JAXBElementProvider();
+        JAXBElementProvider<?> provider = new JAXBElementProvider<Object>();
         if (!InjectionUtils.isPrimitive(type) 
             && !JAXBElement.class.isAssignableFrom(type)
             && provider.isReadable(type, type, new Annotation[0], MediaType.APPLICATION_XML_TYPE)) {
@@ -553,13 +553,13 @@ public final class ResourceUtils {
         return op;
     }
     
-    @SuppressWarnings("unchecked")
     public static Object[] createConstructorArguments(Constructor<?> c, Message m) {
         Class<?>[] params = c.getParameterTypes();
         Annotation[][] anns = c.getParameterAnnotations();
         Type[] genericTypes = c.getGenericParameterTypes();
+        @SuppressWarnings("unchecked")
         MultivaluedMap<String, String> templateValues = m == null ? null
-            : (MultivaluedMap)m.get(URITemplate.TEMPLATE_PARAMETERS);
+            : (MultivaluedMap<String, String>)m.get(URITemplate.TEMPLATE_PARAMETERS);
         Object[] values = new Object[params.length];
         for (int i = 0; i < params.length; i++) {
             if (AnnotationUtils.isContextClass(params[i])) {
@@ -578,7 +578,7 @@ public final class ResourceUtils {
         Set<Object> singletons = app.getSingletons();
         verifySingletons(singletons);
         
-        List<Class> resourceClasses = new ArrayList<Class>();
+        List<Class<?>> resourceClasses = new ArrayList<Class<?>>();
         List<Object> providers = new ArrayList<Object>();
         Map<Class<?>, ResourceProvider> map = new HashMap<Class<?>, ResourceProvider>();
         

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/multipart/AttachmentUtils.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/multipart/AttachmentUtils.java?rev=1229332&r1=1229331&r2=1229332&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/multipart/AttachmentUtils.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/multipart/AttachmentUtils.java Mon Jan  9 20:07:20 2012
@@ -136,19 +136,17 @@ public final class AttachmentUtils {
         return false;
     }
 
-    @SuppressWarnings("unchecked")
-    public static <T> MultivaluedMap<String, T> populateFormMap(MessageContext mc, 
-                                                                Class<T> cls,
+    public static MultivaluedMap<String, String> populateFormMap(MessageContext mc, 
                                                                 boolean errorIfMissing) {
-        MultivaluedMap<String, T> data = new MetadataMap<String, T>();
-        FormUtils.populateMapFromMultipart((MultivaluedMap)data,
+        MultivaluedMap<String, String> data = new MetadataMap<String, String>();
+        FormUtils.populateMapFromMultipart(data,
                                            AttachmentUtils.getMultipartBody(mc), 
                                            true);
         return data;
     }
     
     public static MultivaluedMap<String, String> populateFormMap(MessageContext mc) {
-        return populateFormMap(mc, String.class, true);
+        return populateFormMap(mc, true);
     }
     
     private static Map<String, Attachment> fromListToMap(List<Attachment> atts) {

Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/CustomerInfo.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/CustomerInfo.java?rev=1229332&r1=1229331&r2=1229332&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/CustomerInfo.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/CustomerInfo.java Mon Jan  9 20:07:20 2012
@@ -26,7 +26,7 @@ import javax.ws.rs.ext.ContextResolver;
 
 public interface CustomerInfo {
     void setUriInfoContext(@Context UriInfo uriInfo);
-    ContextResolver getContextResolver();
+    ContextResolver<?> getContextResolver();
     
     @Context 
     void setHttpServletRequest(HttpServletRequest request);

Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/JAXBContextProvider.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/JAXBContextProvider.java?rev=1229332&r1=1229331&r2=1229332&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/JAXBContextProvider.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/JAXBContextProvider.java Mon Jan  9 20:07:20 2012
@@ -24,7 +24,7 @@ import javax.xml.bind.JAXBContext;
 
 public class JAXBContextProvider implements ContextResolver<JAXBContext> {
 
-    public JAXBContext getContext(Class type) {
+    public JAXBContext getContext(Class<?> type) {
         // TODO Auto-generated method stub
         return null;
     }

Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/fortest/AbstractEntity2.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/fortest/AbstractEntity2.java?rev=1229332&r1=1229331&r2=1229332&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/fortest/AbstractEntity2.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/fortest/AbstractEntity2.java Mon Jan  9 20:07:20 2012
@@ -21,5 +21,5 @@ package org.apache.cxf.jaxrs.fortest;
 
 
 
-public class AbstractEntity2<T, E> extends AbstractEntity {
+public class AbstractEntity2<T, E> extends AbstractEntity<T, E>  {
 }

Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriBuilderImplTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriBuilderImplTest.java?rev=1229332&r1=1229331&r2=1229332&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriBuilderImplTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriBuilderImplTest.java Mon Jan  9 20:07:20 2012
@@ -514,7 +514,7 @@ public class UriBuilderImplTest extends 
 
     @Test(expected = IllegalArgumentException.class)
     public void testAddPathClassNull() throws Exception {
-        new UriBuilderImpl().path((Class)null).build();
+        new UriBuilderImpl().path((Class<?>)null).build();
     }
 
     @Test(expected = IllegalArgumentException.class)

Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/WadlGeneratorTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/WadlGeneratorTest.java?rev=1229332&r1=1229331&r2=1229332&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/WadlGeneratorTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/WadlGeneratorTest.java Mon Jan  9 20:07:20 2012
@@ -88,8 +88,8 @@ public class WadlGeneratorTest extends A
         
         ByteArrayOutputStream os = new ByteArrayOutputStream();
         
-        new JSONProvider().writeTo(
-                r.getEntity(), Document.class, Document.class, 
+        new JSONProvider<Document>().writeTo(
+                (Document)r.getEntity(), Document.class, Document.class, 
                   new Annotation[]{}, MediaType.APPLICATION_JSON_TYPE, 
                   new MetadataMap<String, Object>(), os);
         String s = os.toString();