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

svn commit: r1292069 - in /incubator/wink/trunk/wink-common: ./ src/main/java/org/apache/wink/common/internal/providers/entity/xml/

Author: rfeng
Date: Tue Feb 21 22:48:01 2012
New Revision: 1292069

URL: http://svn.apache.org/viewvc?rev=1292069&view=rev
Log:
Add generics support for collections

Modified:
    incubator/wink/trunk/wink-common/pom.xml
    incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/AbstractJAXBCollectionProvider.java
    incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/AbstractJAXBProvider.java
    incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/JAXBXmlProvider.java

Modified: incubator/wink/trunk/wink-common/pom.xml
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-common/pom.xml?rev=1292069&r1=1292068&r2=1292069&view=diff
==============================================================================
--- incubator/wink/trunk/wink-common/pom.xml (original)
+++ incubator/wink/trunk/wink-common/pom.xml Tue Feb 21 22:48:01 2012
@@ -82,6 +82,12 @@
             <groupId>org.codehaus.woodstox</groupId>
             <artifactId>wstx-asl</artifactId>
             <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>stax</groupId>
+                    <artifactId>stax-api</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
         
         <dependency>

Modified: incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/AbstractJAXBCollectionProvider.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/AbstractJAXBCollectionProvider.java?rev=1292069&r1=1292068&r2=1292069&view=diff
==============================================================================
--- incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/AbstractJAXBCollectionProvider.java (original)
+++ incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/AbstractJAXBCollectionProvider.java Tue Feb 21 22:48:01 2012
@@ -90,7 +90,7 @@ public abstract class AbstractJAXBCollec
                             elementList.add(unmarshaller.unmarshal(xsr, theType));
                         } else if (theType.isAnnotationPresent(XmlRootElement.class)) {
                             Object o = unmarshaller.unmarshal(xsr);
-                            o = unmarshalWithXmlAdapter(o, getParameterizedTypeClassForRead(type, genericType, false), annotations);
+                            o = unmarshalWithXmlAdapter(o, type, getParameterizedTypeClassForRead(type, genericType, false), annotations);
                             if (o instanceof JAXBElement) {
                                 o = ((JAXBElement)o).getValue();
                             }
@@ -163,7 +163,7 @@ public abstract class AbstractJAXBCollec
             Marshaller marshaller = null;
             JAXBContext context = null;
             for (Object o : elementArray) {
-                o = marshalWithXmlAdapter(o, getParameterizedTypeClassForWrite(type, genericType, false), annotations);
+                o = marshalWithXmlAdapter(o, type, getParameterizedTypeClassForWrite(type, genericType, false), annotations);
                 if(marshaller == null) {
                     Class<?> oType =
                         isJAXBElement ? ((JAXBElement<?>)o).getDeclaredType() : o.getClass();

Modified: incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/AbstractJAXBProvider.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/AbstractJAXBProvider.java?rev=1292069&r1=1292068&r2=1292069&view=diff
==============================================================================
--- incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/AbstractJAXBProvider.java (original)
+++ incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/AbstractJAXBProvider.java Tue Feb 21 22:48:01 2012
@@ -490,7 +490,7 @@ public abstract class AbstractJAXBProvid
     }
 
     private Class<?> getConcreteTypeFromAdapter(Class<?> type, Annotation[] annotations) {
-        XmlJavaTypeAdapter adapter = getXmlJavaTypeAdapter(type, annotations);
+        XmlJavaTypeAdapter adapter = getXmlJavaTypeAdapter(type, type, annotations);
         if (adapter != null) {
             Class<?> adapterClass = adapter.value();
             try {
@@ -509,9 +509,9 @@ public abstract class AbstractJAXBProvid
         if (ret == null) {
             XmlElement xmlElement = getXmlElementAnno(type, annotations);
             if (xmlElement != null) {
-                Type xmlElementType = xmlElement.type();
+                Class<?> xmlElementType = xmlElement.type();
                 if (xmlElementType != null) {
-                    ret = (Class<?>)xmlElementType;
+                    ret = xmlElementType;
                 }
             }
             if (ret == null)
@@ -535,11 +535,11 @@ public abstract class AbstractJAXBProvid
     }
 
     @SuppressWarnings("unchecked")
-    protected Object marshalWithXmlAdapter(Object obj, Type type, Annotation[] annotations) {
+    protected Object marshalWithXmlAdapter(Object obj, Class<?> cls, Type type, Annotation[] annotations) {
         if ((type == null) || (annotations == null)) {
             return obj;
         }
-        XmlJavaTypeAdapter xmlJavaTypeAdapter = getXmlJavaTypeAdapter(type, annotations);
+        XmlJavaTypeAdapter xmlJavaTypeAdapter = getXmlJavaTypeAdapter(cls, type, annotations);
         if (xmlJavaTypeAdapter != null) {
             try {
                 XmlAdapter xmlAdapter = xmlJavaTypeAdapter.value().newInstance();
@@ -559,21 +559,21 @@ public abstract class AbstractJAXBProvid
      * @param annotations
      * @return
      */
-    private XmlJavaTypeAdapter getXmlJavaTypeAdapter(Type type, Annotation[] annotations) {
+    private XmlJavaTypeAdapter getXmlJavaTypeAdapter(Class<?> cls, Type type, Annotation[] annotations) {
         Boolean present = xmlJavaTypeAdapterPresentCache.get(type);
         if (Boolean.FALSE.equals(present)) {
             return null;
         }
         XmlJavaTypeAdapter xmlJavaTypeAdapter = xmlJavaTypeAdapterCache.get(type);
         if(xmlJavaTypeAdapter == null) {
-            xmlJavaTypeAdapter = findXmlJavaTypeAdapter(type, annotations);
+            xmlJavaTypeAdapter = findXmlJavaTypeAdapter(cls, type, annotations);
             xmlJavaTypeAdapterCache.put(type, xmlJavaTypeAdapter);
             xmlJavaTypeAdapterPresentCache.put(type, xmlJavaTypeAdapter != null);
         }
         return xmlJavaTypeAdapter;
     }
 
-    private XmlJavaTypeAdapter findXmlJavaTypeAdapter(Type type, Annotation[] annotations) {
+    private XmlJavaTypeAdapter findXmlJavaTypeAdapter(Class<?> cls, Type type, Annotation[] annotations) {
         XmlJavaTypeAdapter xmlJavaTypeAdapter = null;
         for (int i = 0; (annotations != null) && i < annotations.length; i++) {
             if (annotations[i].annotationType() == XmlJavaTypeAdapter.class) {
@@ -581,9 +581,9 @@ public abstract class AbstractJAXBProvid
                 break;
             }
         }
-        if ((xmlJavaTypeAdapter == null) && (type != null)) {
+        if ((xmlJavaTypeAdapter == null) && (cls != null)) {
             // check the type itself
-            xmlJavaTypeAdapter = ((Class<?>)type).getAnnotation(XmlJavaTypeAdapter.class);
+            xmlJavaTypeAdapter = cls.getAnnotation(XmlJavaTypeAdapter.class);
         }
         return xmlJavaTypeAdapter;
     }
@@ -605,11 +605,11 @@ public abstract class AbstractJAXBProvid
     }
 
     @SuppressWarnings("unchecked")
-    protected Object unmarshalWithXmlAdapter(Object obj, Type type, Annotation[] annotations) {
+    protected Object unmarshalWithXmlAdapter(Object obj, Class<?> cls, Type type, Annotation[] annotations) {
         if ((type == null) || (annotations == null)) {
             return obj;
         }
-        XmlJavaTypeAdapter xmlJavaTypeAdapter = getXmlJavaTypeAdapter(type, annotations);
+        XmlJavaTypeAdapter xmlJavaTypeAdapter = getXmlJavaTypeAdapter(cls, type, annotations);
         if (xmlJavaTypeAdapter != null) {
             try {
                 XmlAdapter xmlAdapter = xmlJavaTypeAdapter.value().newInstance();

Modified: incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/JAXBXmlProvider.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/JAXBXmlProvider.java?rev=1292069&r1=1292068&r2=1292069&view=diff
==============================================================================
--- incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/JAXBXmlProvider.java (original)
+++ incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/providers/entity/xml/JAXBXmlProvider.java Tue Feb 21 22:48:01 2012
@@ -147,7 +147,7 @@ public class JAXBXmlProvider extends Abs
             closeXMLStreamReader(xmlStreamReader);
             throw e;
         }
-        return unmarshalWithXmlAdapter(unmarshaledResource, type, annotations);
+        return unmarshalWithXmlAdapter(unmarshaledResource, type, type, annotations);
     }
 
     public long getSize(Object t,
@@ -173,7 +173,7 @@ public class JAXBXmlProvider extends Abs
                         MultivaluedMap<String, Object> httpHeaders,
                         OutputStream entityStream) throws IOException, WebApplicationException {
 
-        t = marshalWithXmlAdapter(t, genericType, annotations);
+        t = marshalWithXmlAdapter(t, type, genericType, annotations);
         Class<?> concreteType = getConcreteTypeFromTypeMap(type, annotations);
         mediaType = MediaTypeUtils.setDefaultCharsetOnMediaTypeHeader(httpHeaders, mediaType);