Author: ningjiang
Date: Wed Jun 29 04:19:37 2011
New Revision: 1140962

URL: http://svn.apache.org/viewvc?rev=1140962&view=rev
Log:
CAMEL-4162 Added an option fragment to JAXBDataFormat

Modified:
    
camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/JaxbDataFormat.java
    
camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbDataFormat.java
    
camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/example/SpringDataFormatPartialTest.java
    
camel/trunk/components/camel-jaxb/src/test/resources/org/apache/camel/example/springDataFormatPartial.xml

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/JaxbDataFormat.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/JaxbDataFormat.java?rev=1140962&r1=1140961&r2=1140962&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/JaxbDataFormat.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/JaxbDataFormat.java
 Wed Jun 29 04:19:37 2011
@@ -44,6 +44,8 @@ public class JaxbDataFormat extends Data
     private Boolean filterNonXmlChars;
     @XmlAttribute
     private String encoding;
+    @XmlAttribute
+    private Boolean fragment;
     // Partial encoding
     @XmlAttribute
     private String partClass;
@@ -82,6 +84,14 @@ public class JaxbDataFormat extends Data
     public void setIgnoreJAXBElement(Boolean ignoreJAXBElement) {
         this.ignoreJAXBElement = ignoreJAXBElement;
     }
+    
+    public void setFragment(Boolean fragment) {
+        this.fragment = fragment;
+    }
+    
+    public Boolean getFragment() {
+        return fragment;
+    }
 
     public Boolean getFilterNonXmlChars() {
         return filterNonXmlChars;
@@ -135,6 +145,12 @@ public class JaxbDataFormat extends Data
         } else { // the default value is false
             setProperty(dataFormat, "filterNonXmlChars", Boolean.FALSE);
         }
+        answer = ObjectHelper.toBoolean(getFragment());
+        if (answer != null && answer) {
+            setProperty(dataFormat, "fragment", Boolean.TRUE);
+        } else { // the default value is false
+            setProperty(dataFormat, "fragment", Boolean.FALSE);
+        }
         if (partClass != null) {
             setProperty(dataFormat, "partClass", partClass);
         }

Modified: 
camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbDataFormat.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbDataFormat.java?rev=1140962&r1=1140961&r2=1140962&view=diff
==============================================================================
--- 
camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbDataFormat.java
 (original)
+++ 
camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbDataFormat.java
 Wed Jun 29 04:19:37 2011
@@ -61,6 +61,7 @@ public class JaxbDataFormat extends Serv
     private boolean ignoreJAXBElement = true;
     private boolean filterNonXmlChars;
     private String encoding;
+    private boolean fragment;
     // partial support
     private QName partNamespace;
     private String partClass;
@@ -92,6 +93,9 @@ public class JaxbDataFormat extends Serv
             if (charset != null) {
                 marshaller.setProperty(Marshaller.JAXB_ENCODING, charset);
             }
+            if (isFragment()) {
+                marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
+            }
 
             marshal(exchange, graph, stream, marshaller);
 
@@ -201,6 +205,14 @@ public class JaxbDataFormat extends Serv
     public void setPrettyPrint(boolean prettyPrint) {
         this.prettyPrint = prettyPrint;
     }
+    
+    public boolean isFragment() {
+        return fragment;
+    }
+    
+    public void setFragment(boolean fragment) {
+        this.fragment = fragment;
+    }
 
     public boolean isFilterNonXmlChars() {
         return filterNonXmlChars;

Modified: 
camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/example/SpringDataFormatPartialTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/example/SpringDataFormatPartialTest.java?rev=1140962&r1=1140961&r2=1140962&view=diff
==============================================================================
--- 
camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/example/SpringDataFormatPartialTest.java
 (original)
+++ 
camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/example/SpringDataFormatPartialTest.java
 Wed Jun 29 04:19:37 2011
@@ -42,10 +42,13 @@ public class SpringDataFormatPartialTest
         XPathExpression xpath = new XPathExpression("count(//*[namespace-uri() 
= 'http://example.camel.org/apache' and local-name() = 'po']) = 1");
         xpath.setResultType(Boolean.class);
         mock.allMessages().body().matches(xpath);
-
-        template.sendBody("direct:marshal", bean);
-
+        
+        template.sendBody("direct:marshal", bean);        
         mock.assertIsSatisfied();
+        
+        //To make sure there is no XML declaration.
+        assertFalse("There should have no XML declaration.", 
+                    
mock.getExchanges().get(0).getIn().getBody(String.class).startsWith("<?xml 
version="));
     }
 
     @Test

Modified: 
camel/trunk/components/camel-jaxb/src/test/resources/org/apache/camel/example/springDataFormatPartial.xml
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-jaxb/src/test/resources/org/apache/camel/example/springDataFormatPartial.xml?rev=1140962&r1=1140961&r2=1140962&view=diff
==============================================================================
--- 
camel/trunk/components/camel-jaxb/src/test/resources/org/apache/camel/example/springDataFormatPartial.xml
 (original)
+++ 
camel/trunk/components/camel-jaxb/src/test/resources/org/apache/camel/example/springDataFormatPartial.xml
 Wed Jun 29 04:19:37 2011
@@ -29,6 +29,7 @@
             <marshal>
                 <jaxb prettyPrint="false" 
contextPath="org.apache.camel.example"
                     partClass="org.apache.camel.example.PurchaseOrder"
+                    fragment="true"
                     partNamespace="{http://example.camel.org/apache}po"; />
             </marshal>
             <to uri="mock:marshal"/>


Reply via email to