I was able to marshal java object to Xml file successfully.
But not able to unmarshal Xml file to java object back.
My purchase order class:
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class PurchaseOrder {
@XmlAttribute
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public double getAmount() {
return amount;
}
public void setAmount(double amount) {
this.amount = amount;
}
@XmlAttribute
private double price;
@XmlAttribute
private double amount;
}
My unmarshaller code is as follows :
import javax.jms.ConnectionFactory;
import javax.xml.bind.JAXBContext;
import java.io.File;
import java.math.BigDecimal;
import java.util.Dictionary;
import java.util.HashMap;
import java.util.Map;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.jms.JmsComponent;
import org.apache.camel.dataformat.bindy.kvp.BindyKeyValuePairDataFormat;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.model.dataformat.BindyDataFormat;
import org.apache.camel.model.dataformat.BindyType;
import org.apache.camel.model.dataformat.CastorDataFormat;
import org.apache.camel.model.dataformat.JaxbDataFormat;
import org.apache.camel.spi.DataFormat;
public class JaxbTestUnmarshal
{
public static void main(String[] args) throws Exception {
CamelContext context = new DefaultCamelContext();
context.addRoutes(new RouteBuilder() {
public void configure() {
// JaxbDataFormat jaxbUnmarshal = new
JaxbDataFormat();
//
jaxbUnmarshal.setContextPath(PurchaseOrder.class.getPackage().getName().toString());
from("file://test2?fileName=jaxb.xml").unmarshal().jaxb(PurchaseOrder.class.getPackage().getName().toString()).process(new
Processor() {
@Override
public void
process(Exchange exchange) throws Exception {
PurchaseOrder
porder =(PurchaseOrder) exchange.getIn().getBody();
System.out.println("Name is :"+porder.getName());
}
});
}
});
context.start();
Thread.sleep(1000);
context.stop();
}
}
Here is my xml:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<purchaseOrder amount="45.0" price="45.0" name="kakashi"/>
i tried t debug the code .its not entering the process block.
Thanks in advance.
--
View this message in context:
http://camel.465427.n5.nabble.com/Unmarshalling-using-Jaxb-to-POJO-tp5743079.html
Sent from the Camel - Users mailing list archive at Nabble.com.