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


Reply via email to