Author: ningjiang
Date: Wed Dec 19 03:03:21 2012
New Revision: 1423741
URL: http://svn.apache.org/viewvc?rev=1423741&view=rev
Log:
CAMEL-5893 JAXB FallbackTypeConverter supports to check the isPrettyPrint
setting from the camel properties
Modified:
camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/FallbackTypeConverter.java
camel/trunk/tests/camel-itest/src/test/java/org/apache/camel/itest/jaxb/JaxbFallbackTypeConverterTest.java
Modified:
camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/FallbackTypeConverter.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/FallbackTypeConverter.java?rev=1423741&r1=1423740&r2=1423741&view=diff
==============================================================================
---
camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/FallbackTypeConverter.java
(original)
+++
camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/FallbackTypeConverter.java
Wed Dec 19 03:03:21 2012
@@ -56,6 +56,7 @@ import org.slf4j.LoggerFactory;
* @version
*/
public class FallbackTypeConverter extends ServiceSupport implements
TypeConverter, TypeConverterAware {
+ public static final String PRETTY_PRINT = "CamelJaxbPrettyPrint";
private static final transient Logger LOG =
LoggerFactory.getLogger(FallbackTypeConverter.class);
private final Map<Class<?>, JAXBContext> contexts = new HashMap<Class<?>,
JAXBContext>();
private final StaxConverter staxConverter = new StaxConverter();
@@ -206,7 +207,19 @@ public class FallbackTypeConverter exten
// must create a new instance of marshaller as its not thread safe
Marshaller marshaller = context.createMarshaller();
Writer buffer = new StringWriter();
- if (isPrettyPrint()) {
+ boolean prettyPrint = isPrettyPrint();
+ // check the camel context property to decide the value of
PrettyPrint
+ if (exchange != null) {
+ String property =
exchange.getContext().getProperty(PRETTY_PRINT);
+ if (property != null) {
+ if (property.equalsIgnoreCase("false")) {
+ prettyPrint = false;
+ } else {
+ prettyPrint = true;
+ }
+ }
+ }
+ if (prettyPrint) {
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
Boolean.TRUE);
}
if (exchange != null &&
exchange.getProperty(Exchange.CHARSET_NAME, String.class) != null) {
Modified:
camel/trunk/tests/camel-itest/src/test/java/org/apache/camel/itest/jaxb/JaxbFallbackTypeConverterTest.java
URL:
http://svn.apache.org/viewvc/camel/trunk/tests/camel-itest/src/test/java/org/apache/camel/itest/jaxb/JaxbFallbackTypeConverterTest.java?rev=1423741&r1=1423740&r2=1423741&view=diff
==============================================================================
---
camel/trunk/tests/camel-itest/src/test/java/org/apache/camel/itest/jaxb/JaxbFallbackTypeConverterTest.java
(original)
+++
camel/trunk/tests/camel-itest/src/test/java/org/apache/camel/itest/jaxb/JaxbFallbackTypeConverterTest.java
Wed Dec 19 03:03:21 2012
@@ -22,6 +22,7 @@ import org.apache.camel.Exchange;
import org.apache.camel.Message;
import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.converter.jaxb.FallbackTypeConverter;
import org.apache.camel.itest.jaxb.example.Bar;
import org.apache.camel.test.junit4.CamelTestSupport;
import org.apache.commons.httpclient.methods.RequestEntity;
@@ -37,6 +38,7 @@ public class JaxbFallbackTypeConverterTe
String result = template.requestBody("direct:start", bar,
String.class);
assertNotNull(result);
assertTrue("Get a wrong xml string", result.indexOf("<bar
name=\"camel\" value=\"cool\"/>") > 0);
+ assertTrue("The pretty print setting is not working",
result.indexOf("><bar") > 0);
}
@Override
@@ -45,6 +47,8 @@ public class JaxbFallbackTypeConverterTe
return new RouteBuilder() {
@Override
public void configure() throws Exception {
+ // setup the camel property for the PrettyPrint
+
context.getProperties().put(FallbackTypeConverter.PRETTY_PRINT, "false");
from("direct:start").process(new Processor() {