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"/>