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.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
10564 [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]
11064 [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-38. 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
11064 [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]
27-May-2011 10:42:27
org.springframework.context.support.AbstractApplicationContext doClose
--
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.