You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2011/05/17 14:04:52 UTC

svn commit: r1104180 - in /cxf/trunk/rt/frontend/jaxrs/src: main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java test/java/org/apache/cxf/jaxrs/provider/JAXBElementProviderTest.java test/java/org/apache/cxf/jaxrs/provider/JSONProviderTest.java

Author: sergeyb
Date: Tue May 17 12:04:51 2011
New Revision: 1104180

URL: http://svn.apache.org/viewvc?rev=1104180&view=rev
Log:
[CXF-3528] Transform writer needs to writeEndDocument

Modified:
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/JAXBElementProviderTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/JSONProviderTest.java

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java?rev=1104180&r1=1104179&r2=1104180&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java Tue May 17 12:04:51 2011
@@ -399,13 +399,8 @@ public class JAXBElementProvider extends
                 }
                 mc.put(XMLStreamWriter.class.getName(), writer);    
             }
-                
             marshalToWriter(ms, obj, writer, mt);
-            if (mc != null && mc.getContent(XMLStreamWriter.class) != null) {
-                writer.writeEndDocument();
-                writer.flush();
-                writer.close();
-            }
+            writer.writeEndDocument();
         } else {
             marshalToOutputStream(ms, obj, os, mt);
         }

Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/JAXBElementProviderTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/JAXBElementProviderTest.java?rev=1104180&r1=1104179&r2=1104180&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/JAXBElementProviderTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/JAXBElementProviderTest.java Tue May 17 12:04:51 2011
@@ -26,6 +26,7 @@ import java.io.OutputStream;
 import java.io.Writer;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Method;
+import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -716,6 +717,42 @@ public class JAXBElementProviderTest ext
             + "<thetag><group>B</group><name>A</name></thetag></tagholder>";
         assertEquals(expected, bos.toString());
     }
+    @Test
+    public void testOutAttributesAsElementsForList() throws Exception {
+
+        //Provider
+        JAXBElementProvider provider = new JAXBElementProvider();
+        provider.setCollectionWrapperName("tagholders");
+        Map<String, String> map = new HashMap<String, String>();
+        map.put("{http://tags}*", "*");
+        provider.setOutTransformElements(map);
+        provider.setAttributesToElements(true);
+    
+        //data setup
+        TagVO2 tag = new TagVO2("A", "B");
+        TagVO2Holder holder = new TagVO2Holder();
+        holder.setTag(tag);
+        List<TagVO2Holder> list = new ArrayList<JAXBElementProviderTest.TagVO2Holder>();
+        list.add(holder);
+    
+        //ParameterizedType required for Lists of Objects
+        ParameterizedType type = new ParameterizedType() {
+            public Type getRawType() { return List.class; }
+            public Type getOwnerType() { return null; }
+            public Type[] getActualTypeArguments() {
+                return new Type[] {TagVO2Holder.class};
+            }
+        };
+    
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        provider.writeTo(list, ArrayList.class, type,
+            new Annotation[0], MediaType.TEXT_XML_TYPE, new MetadataMap<String, Object>(), bos);
+    
+        String expected = "<tagholders><tagholder><attr>attribute</attr>"
+            + "<thetag><group>B</group><name>A</name></thetag></tagholder></tagholders>";
+        assertEquals(expected, bos.toString());
+    }
+    
     
     @Test
     public void testOutAppendElementsDiffNs() throws Exception {

Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/JSONProviderTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/JSONProviderTest.java?rev=1104180&r1=1104179&r2=1104180&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/JSONProviderTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/JSONProviderTest.java Tue May 17 12:04:51 2011
@@ -24,6 +24,8 @@ import java.io.ByteArrayOutputStream;
 import java.io.InputStream;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Method;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -818,6 +820,43 @@ public class JSONProviderTest extends As
         assertEquals(expected, bos.toString());
     }
     
+    @Test
+    public void testOutAttributesAsElementsForList() throws Exception {
+
+        //Provider
+        JSONProvider provider = new JSONProvider();
+        provider.setCollectionWrapperName("tagholders");
+        Map<String, String> map = new HashMap<String, String>();
+        map.put("{http://tags}*", "*");
+        provider.setOutTransformElements(map);
+        provider.setAttributesToElements(true);
+    
+        //data setup
+        TagVO2 tag = new TagVO2("A", "B");
+        TagVO2Holder holder = new TagVO2Holder();
+        holder.setTag(tag);
+        List<TagVO2Holder> list = new ArrayList<JAXBElementProviderTest.TagVO2Holder>();
+        list.add(holder);
+    
+        //ParameterizedType required for Lists of Objects
+        ParameterizedType type = new ParameterizedType() {
+            public Type getRawType() { return List.class; }
+            public Type getOwnerType() { return null; }
+            public Type[] getActualTypeArguments() {
+                return new Type[] {TagVO2Holder.class};
+            }
+        };
+    
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        provider.writeTo(list, ArrayList.class, type,
+            new Annotation[0], MediaType.TEXT_XML_TYPE, new MetadataMap<String, Object>(), bos);
+        String expected = 
+            "{\"tagholders\":["
+            + "{\"tagholder\":{\"attr\":\"attribute\",\"thetag\":{\"group\":\"B\",\"name\":\"A\"}}}"
+            + "]}";
+        assertEquals(expected, bos.toString());
+    }
+    
     @SuppressWarnings("unchecked")
     private void readTagVOAfterTransform(String data, String keyValue) throws Exception {
         JSONProvider provider = new JSONProvider();