The jaxb pojo (ignoe the csv annotation that will use as for later samples )
1: package org.apache.camel.example.console;2:3: import javax.xml.bind.annotation.XmlAccessorType;4: import javax.xml.bind.annotation.XmlAttribute;5: import javax.xml.bind.annotation.XmlRootElement;6:7: import org.apache.camel.dataformat.bindy.annotation.CsvRecord;8: import org.apache.camel.dataformat.bindy.annotation.DataField;9:10: @CsvRecord(separator = ",", crlf = "UNIX")11: @XmlRootElement12: public class PersoneData {13: @XmlAttribute14: @DataField(pos = 1)15: public String Name;16:17: @DataField(pos = 2)18: @XmlAttribute19: public int Age;20:21: @DataField(pos = 3)22: @XmlAttribute23: public String Email;24:25: @DataField(pos = 4)26: @XmlAttribute27: public String Address;28: }
The test program:
1: package org.apache.camel.example.console;2: import java.util.ArrayList;3: import java.util.List;4: import java.util.Map;5:6: import org.apache.camel.CamelContext;7: import org.apache.camel.Exchange;8: import org.apache.camel.Predicate;9: import org.apache.camel.ProducerTemplate;10: import org.apache.camel.builder.RouteBuilder;11: import org.apache.camel.dataformat.bindy.csv.BindyCsvDataFormat;12: import org.apache.camel.impl.DefaultCamelContext;13: import org.apache.camel.model.dataformat.BindyType;14: import org.apache.camel.model.language.ELExpression;15: import org.apache.camel.spi.DataFormat;16:17:18: public class TestCodeForBlog {19:20: public static RouteBuilder createRoute() {21:22: final DataFormat bindy = new BindyCsvDataFormat("org.apache.camel.example.console");23:24: return new RouteBuilder() {25: public void configure() throws Exception {26: from("direct:toXML")27: .marshal().jaxb("org.apache.camel.example.console").28: setHeader(Exchange.FILE_NAME, constant("test.Csv"))29: .to("file:target/TestmyFiles").30: to("stream:out");31: }32: };33: }34:35: public static void main(String[] args) {36:37: try {38: CamelContext context = new DefaultCamelContext();39:40: context.addRoutes(createRoute());41: context.start();42:43: PersoneData thePersoneData = new PersoneData();44:45: thePersoneData.Name = "Zvika";46:47: thePersoneData.Age = 42;48:49: thePersoneData.Email = "Loveme42@hotmail.com";50:51: thePersoneData.Address ="Bilo 9b Ness-Ziona";52:53: Thread.sleep(1000);54:55: ProducerTemplate template = context.createProducerTemplate();56:57: template.sendBody("direct:toXML", thePersoneData);58:59: //Let the camel thread route to work in its thread60: Thread.sleep(1000);61: System.out.print("I'm out");62:63: } catch (Exception e) {64: // TODO Auto-generated catch block65: e.printStackTrace();66: }67: }68: }69:
Solving jaxb no index problem:
In case while executing the program a problem that no jaxb index appears create a simple jaxb.index file and add it in the pojo file location
The jaxb.index file contains only the following string :PersoneData
And the Result
1: <?xml version="1.0" encoding="UTF-8" standalone="yes"?>2: <personeData name="Zvika" age="42" email="Loveme42@hotmail.com" address="Bilo 9b Ness-Ziona"/>3: I'm out
אין תגובות:
הוסף רשומת תגובה