Can you ost the camel route. Make sure you set bindy to fixed mode in the route
On Friday, May 27, 2011, cconesa <carlos.con...@rulefinancial.com> wrote: > I am having an issue when unmarshalling a message into a FixedLengthRecord. > The feed I am reading from contains the message below > > > 00000001500014400006874510000015000L X45011S**********SCPFI20110527RT > > > It seems that the BindyFixedLengthFactory is not obtaining correctly the > value for field9, > it format the value 20110527 into a date, but it picks up 50001440 instead. > > I am using version 2.7.1, > is FixedLength unmarshalling a supported feature? > is this a known issue or I may be defining something incorrectly? > > > > Caused by: java.text.ParseException: Unparseable date: "50001440" > > > The bean > > > @FixedLengthRecord(length=71, paddingChar=' ') > public class FixedLengthBean implements Serializable { > > @DataField(pos=1, length=15, pattern="000000000000000") > private long field1; > @DataField(pos=2, length=10, pattern="0000000000", required=true) > private long field2; > @DataField(pos=3, length=10, pattern="0000000000", required=true) > private long field3; > @DataField(pos=4, length=1, required=true) > private char field4; > @DataField(pos=5, length=10) > private String field5; > @DataField(pos=6, length=12, required=true) > private String field6; > @DataField(pos=7, length=1, required=true) > private char field7; > @DataField(pos=8, length=2) > private String field8; > @DataField(pos=9, length=8, pattern="yyyyMMdd") > private Date field9; > @DataField(pos=10, length=2) > private String field10; > ... > > > Instantiating the bean > > > Map<String, Object> model = new HashMap<String, Object>(); > FixedLengthBean contract= new FixedLengthBean(); > contract.setField1(15000144); > contract.setField2(687451); > contract.setField3(15000); > contract.setField4('L'); > contract.setField5("X45011S"); > contract.setField6("**********SC"); > contract.setField7('P'); > contract.setField8("FI"); > calendar.set(2011, 4, 27); > contract.setField9( calendar.getTime() ); > contract.setField10("RT"); > ... > > > The exception > > > 9063 [Camel (camel-1) thread #0 - file:///c:/bindy.inbound/fixedlength] WARN > org.apache.camel.component.file.GenericFileOnCompletion - Rollback file > strategy: > org.apache.camel.component.file.strategy.GenericFileRenameProcessStrategy@ee1ede > for file: GenericFile[c:\bindy.inbound\fixedlength\test.txt] > 9563 [Camel (camel-1) thread #0 - file:///c:/bindy.inbound/fixedlength] > ERROR org.apache.camel.processor.DefaultErrorHandler - Failed delivery for > exchangeId: ID-BAW0011-1744-1306485736643-0-32. Exhausted after delivery > attempt: 1 caught: java.lang.IllegalArgumentException: Parsing error > detected for field defined at the position/offset: 9, line: 1 > java.lang.IllegalArgumentException: Parsing error detected for field defined > at the position/offset: 9, line: 1 > at > org.apache.camel.dataformat.bindy.BindyFixedLengthFactory.bind(BindyFixedLengthFactory.java:229) > at > org.apache.camel.dataformat.bindy.fixed.BindyFixedLengthDataFormat.unmarshal(BindyFixedLengthDataFormat.java:141) > at > org.apache.camel.processor.UnmarshalProcessor.process(UnmarshalProcessor.java:56) > at > org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsyncProcessorBridge.process(AsyncProcessorTypeConverter.java:50) > at > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:77) > at > org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:98) > at > org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:89) > at > org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:68) > at > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:77) > at > org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:98) > at > org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:89) > at > org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:99) > at > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:77) > at > org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:299) > at > org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:208) > at > org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:269) > at > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:77) > at org.apache.camel.processor.Pipeline.process(Pipeline.java:125) > at org.apache.camel.processor.Pipeline.process(Pipeline.java:80) > at > org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:109) > at > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:77) > at > org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:98) > at > org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:89) > at > org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:68) > at > org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:330) > at > org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:157) > at > org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:121) > at > org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:97) > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) > at > java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317) > at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150) > at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98) > at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181) > at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > at java.lang.Thread.run(Thread.java:619) > Caused by: java.text.ParseException: Unparseable date: "50001440" > at java.text.DateFormat.parse(DateFormat.java:337) > at > org.apache.camel.dataformat.bindy.format.DatePatternFormat.parse(DatePatternFormat.java:63) > at > org.apache.camel.dataformat.bindy.format.DatePatternFormat.parse(DatePatternFormat.java:29) > at > org.apache.camel.dataformat.bindy.BindyFixedLengthFactory.bind(BindyFixedLengthFactory.java:225) > ... 36 more > 9563 [Camel (camel-1) thread #0 - file:///c:/bindy.inbound/fixedlength] WARN > org.apache.camel.component.file.GenericFileOnCompletion - Rollback file > strategy: > org.apache.camel.component.file.strategy.GenericFileRenameProcessStrategy@ee1ede > for file: GenericFile[c:\bindy.inbound\fixedlength\test.txt] > 10064 [Camel (camel-1) thread #0 - file:///c:/bindy.inbound/fixedlength] > ERROR org.apache.camel.processor.DefaultErrorHandler - Failed delivery for > exchangeId: ID-BAW0011-1744-1306485736643-0-34. Exhausted after delivery > attempt: 1 caught: java.lang.IllegalArgumentException: Parsing error > detected for field defined at the position/offset: 9, line: 1 > java.lang.IllegalArgumentException: Parsing error detected for field defined > at the position/offset: 9, line: 1 > at > org.apache.camel.dataformat.bindy.BindyFixedLengthFactory.bind(BindyFixedLengthFactory.java:229) > at > org.apache.camel.dataformat.bindy.fixed.BindyFixedLengthDataFormat.unmarshal(BindyFixedLengthDataFormat.java:141) > at > org.apache.camel.processor.UnmarshalProcessor.process(UnmarshalProcessor.java:56) > at > org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsyncProcessorBridge.process(AsyncProcessorTypeConverter.java:50) > at > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:77) > at > org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:98) > at > org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:89) > at > org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:68) > at > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:77) > at > org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:98) > at > org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:89) > at > org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:99) > at > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:77) > at > org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:299) > at > org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:208) > at > org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:269) > at > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:77) > at org.apache.camel.processor.Pipeline.process(Pipeline.java:125) > at org.apache.camel.processor.Pipeline.process(Pipeline.java:80) > at > org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:109) > at > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:77) > at > org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:98) > at > org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:89) > at > org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:68) > at > org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:330) > at > org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:157) > at > org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:121) > at > org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:97) > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) > at > java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317) > at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150) > at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98) > at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181) > at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > at java.lang.Thread.run(Thread.java:619) > Caused by: java.text.ParseException: Unparseable date: "50001440" > at java.text.DateFormat.parse(DateFormat.java:337) > at > org.apache.camel.dataformat.bindy.format.DatePatternFormat.parse(DatePatternFormat.java:63) > at > org.apache.camel.dataformat.bindy.format.DatePatternFormat.parse(DatePatternFormat.java:29) > at > org.apache.camel.dataformat.bindy.BindyFixedLengthFactory.bind(BindyFixedLengthFactory.java:225) > ... 36 more > 10064 [Camel (camel-1) thread #0 - file:///c:/bindy.inbound/fixedlength] > WARN org.apache.camel.component.file.GenericFileOnCompletion - Rollback file > strategy: > org.apache.camel.component.file.strategy.GenericFileRenameProcessStrategy@ee1ede > for file: GenericFile[c:\bindy.inbound\fixedlength\test.txt] > 10564 [Camel (camel-1) thread #0 - file:///c:/bindy.inbound/fixedlength] > ERROR org.apache.camel.processor.DefaultErrorHandler - Failed delivery for > exchangeId: ID-BAW0011-1744-1306485736643-0-36. Exhausted after delivery > attempt: 1 caught: java.lang.IllegalArgumentException: Parsing error > detected for field defined at the position/offset: 9, line: 1 > java.lang.IllegalArgumentException: Parsing error detected for field defined > at the position/offset: 9, line: 1 > at > org.apache.camel.dataformat.bindy.BindyFixedLengthFactory.bind(BindyFixedLengthFactory.java:229) > at > org.apache.camel.dataformat.bindy.fixed.BindyFixedLengthDataFormat.unmarshal(BindyFixedLengthDataFormat.java:141) > at > org.apache.camel.processor.UnmarshalProcessor.process(UnmarshalProcessor.java:56) > at > org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsyncProcessorBridge.process(AsyncProcessorTypeConverter.java:50) > at > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:77) > at > org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:98) > at > org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:89) > at > org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:68) > at > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:77) > at > org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:98) > at > org.apache. > > -- > View this message in context: > http://camel.465427.n5.nabble.com/Issue-unmarshalling-Fixed-Length-message-date-tp4431276p4431276.html > Sent from the Camel - Users mailing list archive at Nabble.com. -- Claus Ibsen ----------------- FuseSource Email: cib...@fusesource.com Web: http://fusesource.com CamelOne 2011: http://fusesource.com/camelone2011/ Twitter: davsclaus, fusenews Blog: http://davsclaus.blogspot.com/ Author of Camel in Action: http://www.manning.com/ibsen/