Hi Well its a bug in UseLatestAggregationStrategy which is shipped in Camel. Its used by default for pollEnrich, enrich if you dont specify a custom AggregationStrategy.
Normally you would enrich your existing message with what you poll, and hence why an AggregationStrategy is needed where you can do this "merge". The NPE is fixed on trunk so it will be in the upcoming 2.1 release. Another workaround is to use your own custom AggregationStrategy and pass it to pollEnrich. On Fri, Nov 27, 2009 at 12:55 PM, shirazi <m...@farhad.eu> wrote: > > Hi, > Please consider the following route: > > from("timer://someTrigger?delay=30000&fixedRate=true&period=300000"). > pollEnrich("ftp://cmoreFtp?binary=true&localWorkDirectory=/tmp&idempotent=true&idempotentRepository=#caStreams", > 10000). > to("file:///tmp/vw/cmore?tempPrefix=.inprogress"); > > The pollEnrich cast a NullPointerException in camel-2.0, if there is nothing > to fetch from the ftp. I got rid of the exception by a > "try-catch(NullpointerExcpetion.class).stop()" around the route. Now in > camel-2.1-SNAPSHOT, I get the following exception on the "to" endpoint: > ================= > 12:37:06,899 INFO [Tracer] >>> --> > file:///tmp/vw/cmore?tempPrefix=.inprogress_, Pattern:InOnly, > Headers:{firedTime=Fri Nov 27 12:36:56 CET 2009}, > Exception:org.apache.camel.component.file.GenericFileOperationFailedException: > Cannot store file: > /tmp/vw/cmore/.inprogress_02216f38-8ffc-4aec-b638-27229d857075 > 12:37:06,899 INFO [Tracer] >>> --> > file:///tmp/vw/cmore?tempPrefix=.inprogress_, Pattern:InOnly, > Headers:{firedTime=Fri Nov 27 12:36:56 CET 2009}, > Exception:org.apache.camel.component.file.GenericFileOperationFailedException: > Cannot store file: > /tmp/vw/cmore/.inprogress_02216f38-8ffc-4aec-b638-27229d857075 > 12:37:06,899 ERROR [TimerConsumer] Cannot store file: > /tmp/vw/cmore/.inprogress_02216f38-8ffc-4aec-b638-27229d857075 > org.apache.camel.component.file.GenericFileOperationFailedException: Cannot > store file: /tmp/vw/cmore/.inprogress_02216f38-8ffc-4aec-b638-27229d857075 > at > org.apache.camel.component.file.FileOperations.storeFile(FileOperations.java:204) > at > org.apache.camel.component.file.GenericFileProducer.writeFile(GenericFileProducer.java:184) > at > org.apache.camel.component.file.GenericFileProducer.processExchange(GenericFileProducer.java:126) > at > org.apache.camel.component.file.GenericFileProducer.process(GenericFileProducer.java:57) > at > org.apache.camel.processor.SendProcessor$1.doInProducer(SendProcessor.java:97) > at > org.apache.camel.processor.SendProcessor$1.doInProducer(SendProcessor.java:95) > at > org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:146) > at > org.apache.camel.processor.SendProcessor.doProcess(SendProcessor.java:94) > at > org.apache.camel.processor.SendProcessor.process(SendProcessor.java:82) > at > org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67) > at > org.apache.camel.processor.DelegateProcessor.processNext(DelegateProcessor.java:53) > at > org.apache.camel.processor.DelegateProcessor.proceed(DelegateProcessor.java:82) > at > org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:162) > at > org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67) > at > org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:206) > at org.apache.camel.processor.Pipeline.process(Pipeline.java:74) > at > org.apache.camel.processor.TryProcessor.process(TryProcessor.java:63) > at > org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67) > at > org.apache.camel.processor.DelegateProcessor.processNext(DelegateProcessor.java:53) > at > org.apache.camel.processor.DelegateProcessor.proceed(DelegateProcessor.java:82) > at > org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:162) > at > org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67) > at > org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:206) > at > org.apache.camel.processor.UnitOfWorkProcessor.processNext(UnitOfWorkProcessor.java:54) > at > org.apache.camel.processor.DelegateProcessor.process(DelegateProcessor.java:48) > at > org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67) > at > org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:103) > at > org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:50) > at java.util.TimerThread.mainLoop(Timer.java:512) > at java.util.TimerThread.run(Timer.java:462) > Caused by: org.apache.camel.InvalidPayloadException: No body available of > type: java.io.InputStream on: Message: [Body is null]. Caused by: No type > converter available to convert from type: null to the required type: > java.io.InputStream with value null on the exchange: Exchange[Message: [Body > is null]] > at > org.apache.camel.impl.MessageSupport.getMandatoryBody(MessageSupport.java:103) > at > org.apache.camel.util.ExchangeHelper.getMandatoryInBody(ExchangeHelper.java:116) > at > org.apache.camel.component.file.FileOperations.storeFile(FileOperations.java:198) > ... 29 more > Caused by: org.apache.camel.NoTypeConversionAvailableException: No type > converter available to convert from type: null to the required type: > java.io.InputStream with value null > at > org.apache.camel.impl.converter.DefaultTypeConverter.mandatoryConvertTo(DefaultTypeConverter.java:126) > at > org.apache.camel.impl.MessageSupport.getMandatoryBody(MessageSupport.java:101) > ... 31 more > ============ > Now, I can remedy the situation by a try-catch block or an interceptor, but > in my opinion this should be considered a bug in camel and it should > silently ignore if there was nothing to fetch from the ftp. > > Bests, > Farhad Shiraz > > -- > View this message in context: > http://old.nabble.com/camel-casts-exception-when-there-is-nothing-to-fetch-from-the-ftp-endpoint-tp26541447p26541447.html > Sent from the Camel - Users mailing list archive at Nabble.com. > > -- Claus Ibsen Apache Camel Committer Author of Camel in Action: http://www.manning.com/ibsen/ Open Source Integration: http://fusesource.com Blog: http://davsclaus.blogspot.com/ Twitter: http://twitter.com/davsclaus