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();