Not sure if only one processor in allowed withing a Camel context.

Having the below intercept code which would call a different Processor
"marsTraceProcessor" to create a JPA Entity is actually messing up the
Processor within the actual route that processes the message.

                <intercept>
                        <process ref="marsTraceProcessor"/>
                         <to
uri="jpa://org.apache.camel.processor.interceptor.JpaTraceEventMessage?persistenceUnit=tracer"/>
  
                </intercept>


The out put of the below processor seems to be messed up with the JPA Entity
created in the intercept Processor.
                <route>
                        <from uri="file:C:\\camelProject\\data\\inbox\\mars"/>
                        <process ref="marsProcessor"/>
                </route>



*Intecept Processor code:*

public class MarsTraceProcessor implements Processor {
        private static Logger log = Logger.getLogger(MarsTraceProcessor.class);
        @Override
        public void process(Exchange exchange) throws Exception {
                MarsTracerEntity entity = new MarsTracerEntity();
                if(null != exchange.getIn().getHeader("CamelFileNameOnly"))
                
entity.setInputFileName((String)exchange.getIn().getHeader("CamelFileNameOnly"));
                if(null != exchange.getIn().getHeader("CamelBatchSize"))
                
entity.setBatchSize((Integer)exchange.getIn().getHeader("CamelBatchSize"));
                if(null != exchange.getIn().getHeader("breadcrumbId"))
                
entity.setOutputFileName((String)exchange.getIn().getHeader("breadcrumbId"));
                
                log.info("InputFilename  5555 : "+entity.getInputFileName());
                log.info("outputFilename  2222 : "+entity.getOutputFileName());
                log.info("Batch  1111 : "+entity.getBatchSize());
                
                exchange.getIn().setBody(entity);
        }

}



*Processor within Route:*

public class MarsProcessor implements Processor {
        private static Logger log = Logger.getLogger(MarsProcessor.class);

        @Override
        public void process(Exchange exchange) throws Exception {
                
                MarsParser jniParser = new MarsParser();
                List<ParsedDataBean> marsData = 
jniParser.parseMarsRecords(exchange);
                ProducerTemplate prod = 
exchange.getContext().createProducerTemplate();
                for(ParsedDataBean data: marsData){
                        log.info("File name : "+data.getFileName());
                        exchange.getIn().setBody(data.getData());
                        
exchange.getIn().setHeader(Exchange.FILE_NAME,data.getFileName());
                        exchange.getIn().setHeader(Exchange.BATCH_SIZE, 
data.getSize());
                        //log.info("File name : "+exchange.getIn().getBody());
                        prod.send("seda:marsDataProcessingQueue", exchange);
                }
        }
}



--
View this message in context: 
http://camel.465427.n5.nabble.com/convert-Exchange-Headers-to-JPA-Entity-tp5077846p5080368.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to