2016-03-30 4 views
1
public class ConverterRoute implements RoutesBuilder { 

    public void addRoutesToCamelContext(CamelContext context) throws Exception { 
     Tracer tracer = new Tracer(); 
     tracer.setTraceOutExchanges(true); 

     // we configure the default trace formatter where we can 
     // specify which fields we want in the output 
     DefaultTraceFormatter formatter = new DefaultTraceFormatter(); 
     formatter.setShowOutBody(true); 
     formatter.setShowOutBodyType(true); 

     // set to use our formatter 
     tracer.setFormatter(formatter); 

     context.addInterceptStrategy(tracer); 
     context.addRoutes(new RouteBuilder() { 

      public void configure() { 


       try { 
        DataFormat bindy = new BindyCsvDataFormat(com.dto.EmployeeDTO.class); 
          from("file://TEST?fileName=Employee.csv"). 
          unmarshal(bindy). 
          marshal(). 
          xstream(). 
          to("file://TESTOUT?fileName=EmployeeXML.xml"); 
        /*DataFormat bindy = new BindyCsvDataFormat(com.dto.EmployeeDTO.class); 
         from("F://Employee.csv"). 
         unmarshal(bindy). 
         marshal(). 
         xstream(). 
         to("F://EmployeeXML.xml");*/ 
        } catch (Exception e) { 
           e.printStackTrace(); 
       } 

      } 
     }); 
    } 

    public static void main(String[] args) { 
     try{ 
      CamelContext context = new DefaultCamelContext(); 
      ConverterRoute route = new ConverterRoute(); 
      System.out.println("Starting........"); 
      route.addRoutesToCamelContext(context); 
      context.start(); 
      Thread.sleep(5000); 
      System.out.println("Ending........"); 
      context.stop(); 
     }catch(Exception exe){ 
      exe.printStackTrace(); 
     } 
    } 


    @XmlRootElement 
@XmlAccessorType(XmlAccessType.FIELD) 
@CsvRecord(separator = ",", skipFirstLine = true) 
public class EmployeeDTO implements Serializable{ 
@XmlAttribute 
     @DataField(pos = 1) 
     private int employeeId; 
     @XmlAttribute 
     @DataField(pos = 2) 
     private String firstName; 
     @XmlAttribute 
     @DataField(pos = 3) 
     private String lastName; 
     @XmlAttribute 
     @DataField(pos = 4) 
     private String role; 
} 

erstellt wird erhalte ich folgende Fehlermeldung:Konvertieren von CSV-Datei xml-Datei mit Apache Camel: XML-Datei ist nicht

Starting........
log4j:WARN No appenders could be found for logger (org.apache.camel.impl.DefaultCamelContext). log4j:WARN Please initialize the log4j system properly.
Ending........

Converted xml wird in Wunsch-Ordner erzeugt wird, nicht zu werden.

Antwort

0

Zunächst besagt die Warnung, dass keine log4j-Konfigurationsdatei im Klassenpfad vorhanden ist. Versuchen Sie, eine Datei mit dem Namen „log4j.properties“ mit folgendem Inhalt in Ihrem Ressourcenverzeichnis:

log4j.rootLogger=INFO, out 
# uncomment the following line to turn on Camel debugging 
log4j.logger.org.apache.camel=INFO 
log4j.logger.org.apache.camel.component.mongodb=DEBUG 
log4j.logger.org.springframework=WARN 
log4j.appender.out=org.apache.log4j.ConsoleAppender 
log4j.appender.out.layout=org.apache.log4j.PatternLayout 
log4j.appender.out.layout.ConversionPattern=[%30.30t] %-30.30c{1} %-5p %m%n 

Von oben können Sie die einzelnen Protokolle in Ihrem IDE bekommen und sehen, was los ist.

Schließlich könnten Sie JAXB anstelle von XTREAM verwenden. Das einzige, was Sie tun müssen, ist EmployeeDTO mit JAXB Annotationen zu kommentieren.