Chapter 176. JiBX DataFormat Available as of Camel version 2.6 JiBX is a Data Format which uses the JiBX library to marshal and unmarshal Java objects to and from XML. // lets turn Object messages into XML then send to MQSeries from("activemq:My.Queue"). marshal().jibx(). to("mqseries:Another.Queue"); Please note that marshaling process can recognize the message type at the runtime. However while unmarshaling message from XML we need to specify target class explicitly. // lets turn XML into PurchaseOrder message from("mqseries:Another.Queue"). unmarshal().jibx(PurchaseOrder.class). to("activemq:My.Queue"); 176.1. Options The JiBX dataformat supports 3 options, which are listed below. Name Default Java Type Description unmarshallClass String Class name to use when unmarshalling from XML to Java. bindingName String To use a custom binding factory contentTypeHeader false Boolean Whether the data format should set the Content-Type header with the type from the data format if the data format is capable of doing so. For example application/xml for data formats marshalling to XML, or application/json for data formats marshalling to JSon etc. 176.2. Spring Boot Auto-Configuration The component supports 4 options, which are listed below. Name Description Default Type camel.dataformat.jibx.binding-name To use a custom binding factory String camel.dataformat.jibx.content-type-header Whether the data format should set the Content-Type header with the type from the data format if the data format is capable of doing so. For example application/xml for data formats marshalling to XML, or application/json for data formats marshalling to JSon etc. false Boolean camel.dataformat.jibx.enabled Enable jibx dataformat true Boolean camel.dataformat.jibx.unmarshall-class Class name to use when unmarshalling from XML to Java. String ND 176.3. JiBX Spring DSL JiBX data format is also supported by Camel Spring DSL. <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"> <!-- Define data formats --> <dataFormats> <jibx id="jibx" unmarshallClass="org.apache.camel.dataformat.jibx.PurchaseOrder"/> </dataFormats> <!-- Marshal message to XML --> <route> <from uri="direct:marshal"/> <marshal ref="jibx"/> <to uri="mock:result"/> </route> <!-- Unmarshal message from XML --> <route> <from uri="direct:unmarshal"/> <unmarshal ref="jibx"/> <to uri="mock:result"/> </route> </camelContext> 176.4. Dependencies To use JiBX in your camel routes you need to add the a dependency on camel-jibx which implements this data format. If you use maven you could just add the following to your pom.xml, substituting the version number for the latest & greatest release (see the download page for the latest versions). <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-jibx</artifactId> <version>2.6.0</version> </dependency>

Commands:
// lets turn Object messages into XML then send to MQSeries from("activemq:My.Queue"). marshal().jibx(). to("mqseries:Another.Queue");
// lets turn XML into PurchaseOrder message from("mqseries:Another.Queue"). unmarshal().jibx(PurchaseOrder.class). to("activemq:My.Queue");
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"> <!-- Define data formats --> <dataFormats> <jibx id="jibx" unmarshallClass="org.apache.camel.dataformat.jibx.PurchaseOrder"/> </dataFormats> <!-- Marshal message to XML --> <route> <from uri="direct:marshal"/> <marshal ref="jibx"/> <to uri="mock:result"/> </route> <!-- Unmarshal message from XML --> <route> <from uri="direct:unmarshal"/> <unmarshal ref="jibx"/> <to uri="mock:result"/> </route> </camelContext>
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-jibx</artifactId> <version>2.6.0</version> </dependency>