You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by bv...@apache.org on 2015/04/02 20:03:53 UTC
camel git commit: CAMEL-7877: support the prettyPrint option by all
the supported JSON libraries, that's XStream, Jackson and GSon.
Repository: camel
Updated Branches:
refs/heads/master c8d23d327 -> 1e923eca2
CAMEL-7877: support the prettyPrint option by all the supported JSON libraries, that's XStream, Jackson and GSon.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/1e923eca
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/1e923eca
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/1e923eca
Branch: refs/heads/master
Commit: 1e923eca2ce118be090231de7454b8793d1e5e54
Parents: c8d23d3
Author: Babak Vahdat <bv...@apache.org>
Authored: Thu Apr 2 20:03:33 2015 +0200
Committer: Babak Vahdat <bv...@apache.org>
Committed: Thu Apr 2 20:03:33 2015 +0200
----------------------------------------------------------------------
.../apache/camel/builder/DataFormatClause.java | 69 ++++++++++++++++++++
.../camel/component/gson/GsonDataFormat.java | 44 +++++++++++--
.../gson/SpringGsonJsonDataFormatTest.java | 22 +++++++
.../gson/SpringGsonJsonDataFormatTest.xml | 12 ++++
.../jackson/JacksonJsonDataFormatTest.java | 8 +--
.../component/jackson/JacksonMarshalTest.java | 4 +-
.../SpringJacksonJsonDataFormatTest.java | 2 +-
.../jackson/SpringJacksonJsonDataFormatTest.xml | 2 +-
.../dataformat/xstream/JsonDataFormat.java | 21 ++++++
.../dataformat/xstream/XStreamDataFormat.java | 2 +-
.../xstream/MarshalDomainObjectJSONTest.java | 34 +++++++++-
.../XStreamDataFormatDriverConfigTest.java | 2 +-
.../SpringMarshalDomainObjectJSONTest.xml | 12 ++++
13 files changed, 215 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/1e923eca/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java b/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
index c0857a9..1a446c3 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
@@ -361,6 +361,17 @@ public class DataFormatClause<T extends ProcessorDefinition<?>> {
}
/**
+ * Uses the JSON data format using the XStream json library with pretty-print option on or off
+ *
+ * @param prettyPrint turn the pretty-print option on or off
+ */
+ public T json(boolean prettyPrint) {
+ JsonDataFormat json = new JsonDataFormat();
+ json.setPrettyPrint(prettyPrint);
+ return dataFormat(json);
+ }
+
+ /**
* Uses the JSON data format
*
* @param library the json library to use
@@ -372,6 +383,18 @@ public class DataFormatClause<T extends ProcessorDefinition<?>> {
/**
* Uses the JSON data format
*
+ * @param library the json library to use
+ * @param prettyPrint turn the pretty-print option on or off
+ */
+ public T json(JsonLibrary library, boolean prettyPrint) {
+ JsonDataFormat json = new JsonDataFormat(library);
+ json.setPrettyPrint(prettyPrint);
+ return dataFormat(json);
+ }
+
+ /**
+ * Uses the JSON data format
+ *
* @param type the json type to use
* @param unmarshalType unmarshal type for json jackson type
*/
@@ -382,6 +405,20 @@ public class DataFormatClause<T extends ProcessorDefinition<?>> {
}
/**
+ * Uses the JSON data format
+ *
+ * @param type the json type to use
+ * @param unmarshalType unmarshal type for json jackson type
+ * @param prettyPrint turn the pretty-print option on or off
+ */
+ public T json(JsonLibrary type, Class<?> unmarshalType, boolean prettyPrint) {
+ JsonDataFormat json = new JsonDataFormat(type);
+ json.setUnmarshalType(unmarshalType);
+ json.setPrettyPrint(prettyPrint);
+ return dataFormat(json);
+ }
+
+ /**
* Uses the Jackson JSON data format
*
* @param unmarshalType unmarshal type for json jackson type
@@ -399,6 +436,21 @@ public class DataFormatClause<T extends ProcessorDefinition<?>> {
*
* @param unmarshalType unmarshal type for json jackson type
* @param jsonView the view type for json jackson type
+ * @param prettyPrint turn the pretty-print option on or off
+ */
+ public T json(Class<?> unmarshalType, Class<?> jsonView, boolean prettyPrint) {
+ JsonDataFormat json = new JsonDataFormat(JsonLibrary.Jackson);
+ json.setUnmarshalType(unmarshalType);
+ json.setJsonView(jsonView);
+ json.setPrettyPrint(prettyPrint);
+ return dataFormat(json);
+ }
+
+ /**
+ * Uses the Jackson JSON data format
+ *
+ * @param unmarshalType unmarshal type for json jackson type
+ * @param jsonView the view type for json jackson type
* @param include include such as <tt>ALWAYS</tt>, <tt>NON_NULL</tt>, etc.
*/
public T json(Class<?> unmarshalType, Class<?> jsonView, String include) {
@@ -410,6 +462,23 @@ public class DataFormatClause<T extends ProcessorDefinition<?>> {
}
/**
+ * Uses the Jackson JSON data format
+ *
+ * @param unmarshalType unmarshal type for json jackson type
+ * @param jsonView the view type for json jackson type
+ * @param include include such as <tt>ALWAYS</tt>, <tt>NON_NULL</tt>, etc.
+ * @param prettyPrint turn the pretty-print option on or off
+ */
+ public T json(Class<?> unmarshalType, Class<?> jsonView, String include, boolean prettyPrint) {
+ JsonDataFormat json = new JsonDataFormat(JsonLibrary.Jackson);
+ json.setUnmarshalType(unmarshalType);
+ json.setJsonView(jsonView);
+ json.setInclude(include);
+ json.setPrettyPrint(prettyPrint);
+ return dataFormat(json);
+ }
+
+ /**
* Uses the protobuf data format
*/
public T protobuf() {
http://git-wip-us.apache.org/repos/asf/camel/blob/1e923eca/components/camel-gson/src/main/java/org/apache/camel/component/gson/GsonDataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-gson/src/main/java/org/apache/camel/component/gson/GsonDataFormat.java b/components/camel-gson/src/main/java/org/apache/camel/component/gson/GsonDataFormat.java
index f12ff71..92ca6b9 100644
--- a/components/camel-gson/src/main/java/org/apache/camel/component/gson/GsonDataFormat.java
+++ b/components/camel-gson/src/main/java/org/apache/camel/component/gson/GsonDataFormat.java
@@ -51,8 +51,8 @@ public class GsonDataFormat extends ServiceSupport implements DataFormat {
private LongSerializationPolicy longSerializationPolicy;
private FieldNamingPolicy fieldNamingPolicy;
private FieldNamingStrategy fieldNamingStrategy;
- private Boolean serializeNulls;
- private Boolean prettyPrinting;
+ private boolean serializeNulls;
+ private boolean prettyPrint;
private String dateFormatPattern;
public GsonDataFormat() {
@@ -154,10 +154,10 @@ public class GsonDataFormat extends ServiceSupport implements DataFormat {
if (fieldNamingStrategy != null) {
builder.setFieldNamingStrategy(fieldNamingStrategy);
}
- if (serializeNulls != null && serializeNulls) {
+ if (serializeNulls) {
builder.serializeNulls();
}
- if (prettyPrinting != null && prettyPrinting) {
+ if (prettyPrint) {
builder.setPrettyPrinting();
}
if (dateFormatPattern != null) {
@@ -223,20 +223,52 @@ public class GsonDataFormat extends ServiceSupport implements DataFormat {
this.fieldNamingStrategy = fieldNamingStrategy;
}
+ /**
+ * @deprecated use {@link #isSerializeNulls()} instead
+ */
+ @Deprecated
public Boolean getSerializeNulls() {
return serializeNulls;
}
+ public boolean isSerializeNulls() {
+ return serializeNulls;
+ }
+
+ /**
+ * @deprecated use {@link #setSerializeNulls(boolean)} instead
+ */
+ @Deprecated
public void setSerializeNulls(Boolean serializeNulls) {
this.serializeNulls = serializeNulls;
}
+ public void setSerializeNulls(boolean serializeNulls) {
+ this.serializeNulls = serializeNulls;
+ }
+
+ /**
+ * @deprecated use {@link #isPrettyPrint()} instead
+ */
+ @Deprecated
public Boolean getPrettyPrinting() {
- return prettyPrinting;
+ return prettyPrint;
+ }
+
+ public boolean isPrettyPrint() {
+ return prettyPrint;
}
+ /**
+ * @deprecated use {@link #setPrettyPrint(boolean)} instead
+ */
+ @Deprecated
public void setPrettyPrinting(Boolean prettyPrinting) {
- this.prettyPrinting = prettyPrinting;
+ this.prettyPrint = prettyPrinting;
+ }
+
+ public void setPrettyPrint(boolean prettyPrint) {
+ this.prettyPrint = prettyPrint;
}
public String getDateFormatPattern() {
http://git-wip-us.apache.org/repos/asf/camel/blob/1e923eca/components/camel-gson/src/test/java/org/apache/camel/component/gson/SpringGsonJsonDataFormatTest.java
----------------------------------------------------------------------
diff --git a/components/camel-gson/src/test/java/org/apache/camel/component/gson/SpringGsonJsonDataFormatTest.java b/components/camel-gson/src/test/java/org/apache/camel/component/gson/SpringGsonJsonDataFormatTest.java
index 656d0c6..cece6fd 100644
--- a/components/camel-gson/src/test/java/org/apache/camel/component/gson/SpringGsonJsonDataFormatTest.java
+++ b/components/camel-gson/src/test/java/org/apache/camel/component/gson/SpringGsonJsonDataFormatTest.java
@@ -46,6 +46,28 @@ public class SpringGsonJsonDataFormatTest extends CamelSpringTestSupport {
mock.assertIsSatisfied();
}
+ @Test
+ public void testMarshalAndUnmarshalPojoWithPrettyPrint() throws Exception {
+ TestPojo in = new TestPojo();
+ in.setName("Camel");
+
+ MockEndpoint mock = getMockEndpoint("mock:reversePojo");
+ mock.expectedMessageCount(1);
+ mock.message(0).body().isInstanceOf(TestPojo.class);
+ mock.message(0).body().equals(in);
+
+ Object marshalled = template.requestBody("direct:inPretty", in);
+ String marshalledAsString = context.getTypeConverter().convertTo(String.class, marshalled);
+ String expected = "{\n" +
+ " \"name\": \"Camel\"" +
+ "\n}";
+ assertEquals(expected, marshalledAsString);
+
+ template.sendBody("direct:backPretty", marshalled);
+
+ mock.assertIsSatisfied();
+ }
+
@Override
protected AbstractXmlApplicationContext createApplicationContext() {
return new ClassPathXmlApplicationContext("org/apache/camel/component/gson/SpringGsonJsonDataFormatTest.xml");
http://git-wip-us.apache.org/repos/asf/camel/blob/1e923eca/components/camel-gson/src/test/resources/org/apache/camel/component/gson/SpringGsonJsonDataFormatTest.xml
----------------------------------------------------------------------
diff --git a/components/camel-gson/src/test/resources/org/apache/camel/component/gson/SpringGsonJsonDataFormatTest.xml b/components/camel-gson/src/test/resources/org/apache/camel/component/gson/SpringGsonJsonDataFormatTest.xml
index 2111799..8064cb3 100644
--- a/components/camel-gson/src/test/resources/org/apache/camel/component/gson/SpringGsonJsonDataFormatTest.xml
+++ b/components/camel-gson/src/test/resources/org/apache/camel/component/gson/SpringGsonJsonDataFormatTest.xml
@@ -29,6 +29,7 @@
<dataFormats>
<!-- this one uses our own TestPojo class as unmarshal type -->
<json id="gson" library="Gson" unmarshalTypeName="org.apache.camel.component.gson.TestPojo"/>
+ <json id="pretty" library="Gson" prettyPrint="true" unmarshalTypeName="org.apache.camel.component.gson.TestPojo"/>
</dataFormats>
<route>
@@ -42,6 +43,17 @@
<to uri="mock:reversePojo"/>
</route>
+ <route>
+ <from uri="direct:inPretty"/>
+ <marshal ref="pretty"/>
+ </route>
+
+ <route>
+ <from uri="direct:backPretty"/>
+ <unmarshal ref="pretty"/>
+ <to uri="mock:reversePojo"/>
+ </route>
+
</camelContext>
<!-- END SNIPPET: e1 -->
http://git-wip-us.apache.org/repos/asf/camel/blob/1e923eca/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonJsonDataFormatTest.java
----------------------------------------------------------------------
diff --git a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonJsonDataFormatTest.java b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonJsonDataFormatTest.java
index dfaa3ce..1555367 100644
--- a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonJsonDataFormatTest.java
+++ b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonJsonDataFormatTest.java
@@ -29,12 +29,8 @@ public class JacksonJsonDataFormatTest extends JacksonMarshalTest {
from("direct:in").marshal().json(JsonLibrary.Jackson);
from("direct:back").unmarshal().json(JsonLibrary.Jackson).to("mock:reverse");
- // no possible usage of the json() DSL method here as there's no prettyPrint option available through it
- JacksonDataFormat prettyPrintDataFormat = new JacksonDataFormat();
- prettyPrintDataFormat.setPrettyPrint(true);
-
- from("direct:pretty").marshal(prettyPrintDataFormat);
- from("direct:backPretty").unmarshal(prettyPrintDataFormat).to("mock:reverse");
+ from("direct:inPretty").marshal().json(JsonLibrary.Jackson, true);
+ from("direct:backPretty").unmarshal().json(JsonLibrary.Jackson).to("mock:reverse");
from("direct:inPojo").marshal().json(JsonLibrary.Jackson);
from("direct:backPojo").unmarshal().json(JsonLibrary.Jackson, TestPojo.class).to("mock:reversePojo");
http://git-wip-us.apache.org/repos/asf/camel/blob/1e923eca/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonMarshalTest.java
----------------------------------------------------------------------
diff --git a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonMarshalTest.java b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonMarshalTest.java
index bb7d0f5..95b8220 100644
--- a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonMarshalTest.java
+++ b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonMarshalTest.java
@@ -55,7 +55,7 @@ public class JacksonMarshalTest extends CamelTestSupport {
mock.message(0).body().isInstanceOf(Map.class);
mock.message(0).body().equals(in);
- Object marshalled = template.requestBody("direct:pretty", in);
+ Object marshalled = template.requestBody("direct:inPretty", in);
String marshalledAsString = context.getTypeConverter().convertTo(String.class, marshalled);
String expected = String.format("{%s \"name\" : \"Camel\"%s}", System.lineSeparator(), System.lineSeparator());
assertEquals(expected, marshalledAsString);
@@ -99,7 +99,7 @@ public class JacksonMarshalTest extends CamelTestSupport {
JacksonDataFormat prettyPrintDataFormat = new JacksonDataFormat();
prettyPrintDataFormat.setPrettyPrint(true);
- from("direct:pretty").marshal(prettyPrintDataFormat);
+ from("direct:inPretty").marshal(prettyPrintDataFormat);
from("direct:backPretty").unmarshal(prettyPrintDataFormat).to("mock:reverse");
JacksonDataFormat formatPojo = new JacksonDataFormat(TestPojo.class);
http://git-wip-us.apache.org/repos/asf/camel/blob/1e923eca/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/SpringJacksonJsonDataFormatTest.java
----------------------------------------------------------------------
diff --git a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/SpringJacksonJsonDataFormatTest.java b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/SpringJacksonJsonDataFormatTest.java
index bfa13ac..b1ef3ad 100644
--- a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/SpringJacksonJsonDataFormatTest.java
+++ b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/SpringJacksonJsonDataFormatTest.java
@@ -59,7 +59,7 @@ public class SpringJacksonJsonDataFormatTest extends CamelSpringTestSupport {
mock.message(0).body().isInstanceOf(Map.class);
mock.message(0).body().equals(in);
- Object marshalled = template.requestBody("direct:pretty", in);
+ Object marshalled = template.requestBody("direct:inPretty", in);
String marshalledAsString = context.getTypeConverter().convertTo(String.class, marshalled);
String expected = String.format("{%s \"name\" : \"Camel\"%s}", System.lineSeparator(), System.lineSeparator());
assertEquals(expected, marshalledAsString);
http://git-wip-us.apache.org/repos/asf/camel/blob/1e923eca/components/camel-jackson/src/test/resources/org/apache/camel/component/jackson/SpringJacksonJsonDataFormatTest.xml
----------------------------------------------------------------------
diff --git a/components/camel-jackson/src/test/resources/org/apache/camel/component/jackson/SpringJacksonJsonDataFormatTest.xml b/components/camel-jackson/src/test/resources/org/apache/camel/component/jackson/SpringJacksonJsonDataFormatTest.xml
index 61bd1a0..6849b95 100644
--- a/components/camel-jackson/src/test/resources/org/apache/camel/component/jackson/SpringJacksonJsonDataFormatTest.xml
+++ b/components/camel-jackson/src/test/resources/org/apache/camel/component/jackson/SpringJacksonJsonDataFormatTest.xml
@@ -42,7 +42,7 @@
</route>
<route>
- <from uri="direct:pretty"/>
+ <from uri="direct:inPretty"/>
<marshal ref="pretty"/>
</route>
http://git-wip-us.apache.org/repos/asf/camel/blob/1e923eca/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/JsonDataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/JsonDataFormat.java b/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/JsonDataFormat.java
index 7f6d714..bbf96b7 100644
--- a/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/JsonDataFormat.java
+++ b/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/JsonDataFormat.java
@@ -18,6 +18,8 @@ package org.apache.camel.dataformat.xstream;
import java.io.InputStream;
import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;
@@ -26,6 +28,7 @@ import javax.xml.stream.XMLStreamException;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
+import com.thoughtworks.xstream.io.json.JsonWriter;
import com.thoughtworks.xstream.io.xml.QNameMap;
import com.thoughtworks.xstream.io.xml.StaxReader;
import com.thoughtworks.xstream.io.xml.StaxWriter;
@@ -45,6 +48,7 @@ import org.codehaus.jettison.mapped.MappedXMLOutputFactory;
public class JsonDataFormat extends AbstractXStreamWrapper {
private final MappedXMLOutputFactory mof;
private final MappedXMLInputFactory mif;
+ private boolean prettyPrint;
public JsonDataFormat() {
final Map<?, ?> nstjsons = new HashMap<Object, Object>();
@@ -52,6 +56,14 @@ public class JsonDataFormat extends AbstractXStreamWrapper {
mif = new MappedXMLInputFactory(nstjsons);
}
+ public boolean isPrettyPrint() {
+ return prettyPrint;
+ }
+
+ public void setPrettyPrint(boolean prettyPrint) {
+ this.prettyPrint = prettyPrint;
+ }
+
@Override
protected XStream createXStream(ClassResolver resolver, ClassLoader classLoader) {
XStream xs = super.createXStream(resolver, classLoader);
@@ -64,6 +76,15 @@ public class JsonDataFormat extends AbstractXStreamWrapper {
}
protected HierarchicalStreamWriter createHierarchicalStreamWriter(Exchange exchange, Object body, OutputStream stream) throws XMLStreamException {
+ if (isPrettyPrint()) {
+ try {
+ // the json spec. expects UTF-8 as the default encoding
+ return new JsonWriter(new OutputStreamWriter(stream, "UTF-8"));
+ } catch (UnsupportedEncodingException uee) {
+ throw new XMLStreamException(uee);
+ }
+ }
+
return new StaxWriter(new QNameMap(), mof.createXMLStreamWriter(stream));
}
http://git-wip-us.apache.org/repos/asf/camel/blob/1e923eca/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/XStreamDataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/XStreamDataFormat.java b/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/XStreamDataFormat.java
index 1ae7c34..ca8a945 100644
--- a/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/XStreamDataFormat.java
+++ b/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/XStreamDataFormat.java
@@ -42,7 +42,7 @@ import org.apache.camel.util.IOHelper;
* @version
*/
public class XStreamDataFormat extends AbstractXStreamWrapper {
- String encoding;
+ private String encoding;
public XStreamDataFormat() {
}
http://git-wip-us.apache.org/repos/asf/camel/blob/1e923eca/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectJSONTest.java
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectJSONTest.java b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectJSONTest.java
index 3c5da94..6c3cdac 100644
--- a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectJSONTest.java
+++ b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectJSONTest.java
@@ -17,18 +17,50 @@
package org.apache.camel.dataformat.xstream;
import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.junit.Test;
public class MarshalDomainObjectJSONTest extends MarshalDomainObjectTest {
+ @Test
+ public void testMarshalAndUnmarshalWithPrettyPrint() throws Exception {
+ PurchaseOrder order = new PurchaseOrder();
+ order.setName("pretty printed Camel");
+ order.setAmount(1);
+ order.setPrice(7.91);
+
+ MockEndpoint mock = getMockEndpoint("mock:reverse");
+ mock.expectedMessageCount(1);
+ mock.message(0).body().isInstanceOf(PurchaseOrder.class);
+ mock.message(0).body().equals(order);
+
+ Object marshalled = template.requestBody("direct:inPretty", order);
+ String marshalledAsString = context.getTypeConverter().convertTo(String.class, marshalled);
+ // the line-separator used by JsonWriter is "\n", even on windows
+ String expected = "{\"org.apache.camel.dataformat.xstream.PurchaseOrder\": {\n" +
+ " \"name\": \"pretty printed Camel\",\n"+
+ " \"price\": 7.91,\n" +
+ " \"amount\": 1.0\n" +
+ "}}";
+ assertEquals(expected, marshalledAsString);
+
+ template.sendBody("direct:backPretty", marshalled);
+
+ mock.assertIsSatisfied();
+ }
+
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
public void configure() throws Exception {
from("direct:in").marshal().json().to("mock:result");
- // just used for helping to marhsal
+ // just used for helping to marshal
from("direct:marshal").marshal().json();
from("direct:reverse").unmarshal().json().to("mock:reverse");
+
+ from("direct:inPretty").marshal().json(true);
+ from("direct:backPretty").unmarshal().json().to("mock:reverse");
}
};
}
http://git-wip-us.apache.org/repos/asf/camel/blob/1e923eca/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamDataFormatDriverConfigTest.java
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamDataFormatDriverConfigTest.java b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamDataFormatDriverConfigTest.java
index d4777fb..c3e44fe 100644
--- a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamDataFormatDriverConfigTest.java
+++ b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamDataFormatDriverConfigTest.java
@@ -32,7 +32,7 @@ public class XStreamDataFormatDriverConfigTest extends CamelTestSupport {
XStreamDataFormat xStreamDataFormat = new XStreamDataFormat();
xStreamDataFormat.setXstreamDriver(new JsonHierarchicalStreamDriver());
- XStream xStream = xStreamDataFormat.createXStream(new DefaultClassResolver());
+ XStream xStream = xStreamDataFormat.createXStream(context.getClassResolver(), context.getApplicationContextClassLoader());
String marshalledOrder = xStream.toXML(purchaseOrder);
assertEquals("{", marshalledOrder.substring(0, 1));
http://git-wip-us.apache.org/repos/asf/camel/blob/1e923eca/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalDomainObjectJSONTest.xml
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalDomainObjectJSONTest.xml b/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalDomainObjectJSONTest.xml
index 0e9f7e4..d44d587 100644
--- a/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalDomainObjectJSONTest.xml
+++ b/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalDomainObjectJSONTest.xml
@@ -28,6 +28,7 @@
<!-- we define the json xstream data formats to be used (xstream is default) -->
<dataFormats>
<json id="json"/>
+ <json id="pretty" prettyPrint="true"/>
</dataFormats>
<route>
@@ -47,6 +48,17 @@
<to uri="mock:reverse"/>
</route>
+ <route>
+ <from uri="direct:inPretty"/>
+ <marshal ref="pretty"/>
+ </route>
+
+ <route>
+ <from uri="direct:backPretty"/>
+ <unmarshal ref="pretty"/>
+ <to uri="mock:reverse"/>
+ </route>
+
</camelContext>
<!-- END SNIPPET: e1 -->