Hi,
Please consider the route definitions below:
--------
<camel:camelContext id="vod_workflow">
        <camel:package>com.nordija.itv.vod.workflow</camel:package>
 <camel:route>
   <camel:from uri="file:///tmp/vodwof?recursive=true" />
        <camel:to uri="file:///tmp/vodIncoming?tempPrefix=.inprogress_" />
        <camel:to uri="bean:vodIncomingProcessor"/>
        <camel:to uri="direct:route_1"/>
 </camel:route>
 <camel:route>
        <camel:from uri="direct:route_1"/>                      
        <camel:to uri="bean:trailerHandler"/>
        <camel:to uri="file:///tmp/trailer?tempPrefix=.inprogress_"/>
        <camel:to uri="direct:end"/>
 </camel:route>
 ....
</camel:camelContext>
<bean name="trailerHandler" class="com.nordija.itv.vod.workflow.TarilerHandlerImpl" />
---------
The vodIncomingProcessor is a @RecipientList annotated bean that decides if the file in question should be handled by the "trailerHandler" or something else. The trailerHandler needs among other things to rename the resulting file. The following code is a very simplified version of the bean:

@Service(value="trailerHandler")
public class TarilerHandlerImpl implements TrailerHandler {
        public void handleTrailer(Exchange exchange) {
                if(exchange != null){           
String fileName = (String)exchange.getIn().getHeader(Exchange.FILE_NAME);
                        if(fileName != null){
                                exchange.getOut().setHeader(Exchange.FILE_NAME, 
rename(fileName));
                        }
                }
        }
}

The "rename(String filename)" method renames the file and it's implementation is not relevant here. For test, it just prefix the filename with "trailer_". When I run the application, the following exception is thrown, and the trailerHandler gets called again and again.

I appreciate any help,
-Farhad Shirazi

13:02:20,913 INFO [STDOUT] 13:02:20,911 ERROR [GenericFileOnCompletion] Cannot store file: /tmp/ trailer/.inprogress_trailer_test.mpg org.apache.camel.component.file.GenericFileOperationFailedException: Cannot store file: /tmp/trailer/.inprogress_trailer_test.mpg at org .apache .camel.component.file.FileOperations.storeFile(FileOperations.java:203) at org .apache .camel .component.file.GenericFileProducer.writeFile(GenericFileProducer.java: 144) at org .apache .camel .component .file.GenericFileProducer.processExchange(GenericFileProducer.java:86) at org .apache .camel .component.file.GenericFileProducer.process(GenericFileProducer.java:57) at org.apache.camel.processor.SendProcessor $1.doInProducer(SendProcessor.java:81) at org.apache.camel.processor.SendProcessor $1.doInProducer(SendProcessor.java:79) at org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:141) at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:78) at org .apache .camel .management .InstrumentationProcessor.process(InstrumentationProcessor.java:61) at org .apache .camel .processor .RedeliveryErrorHandler.processExchange(RedeliveryErrorHandler.java:186) at org .apache .camel .processor .RedeliveryErrorHandler .processErrorHandler(RedeliveryErrorHandler.java:155) at org .apache .camel .processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java: 88) at org .apache .camel.processor.DefaultErrorHandler.process(DefaultErrorHandler.java: 49) at org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java: 148)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:74)
at org .apache .camel .processor.UnitOfWorkProcessor.processNext(UnitOfWorkProcessor.java:70) at org .apache .camel.processor.DelegateProcessor.process(DelegateProcessor.java:48) at org .apache .camel.component.direct.DirectProducer.process(DirectProducer.java:45) at org.apache.camel.processor.SendProcessor $1.doInProducer(SendProcessor.java:81) at org.apache.camel.processor.SendProcessor $1.doInProducer(SendProcessor.java:79) at org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:141) at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:78) at org .apache .camel .management .InstrumentationProcessor.process(InstrumentationProcessor.java:61) at org .apache .camel .processor .RedeliveryErrorHandler.processExchange(RedeliveryErrorHandler.java:186) at org .apache .camel .processor .RedeliveryErrorHandler .processErrorHandler(RedeliveryErrorHandler.java:155) at org .apache .camel .processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java: 88) at org .apache .camel.processor.DefaultErrorHandler.process(DefaultErrorHandler.java: 49) at org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java: 148)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:74)
at org .apache .camel .processor.UnitOfWorkProcessor.processNext(UnitOfWorkProcessor.java:54) at org .apache .camel.processor.DelegateProcessor.process(DelegateProcessor.java:48) at org .apache .camel .component .file.GenericFileConsumer.processExchange(GenericFileConsumer.java:198) at org .apache .camel .component .file.GenericFileConsumer.processBatch(GenericFileConsumer.java:120) at org .apache .camel .component.file.GenericFileConsumer.poll(GenericFileConsumer.java:93) at org .apache .camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:99) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java: 417) at java.util.concurrent.FutureTask $Sync.innerRunAndReset(FutureTask.java:280)
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:135)
at java.util.concurrent.ScheduledThreadPoolExecutor $ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:65) at java.util.concurrent.ScheduledThreadPoolExecutor $ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:142) at java.util.concurrent.ScheduledThreadPoolExecutor $ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:166) at java.util.concurrent.ThreadPoolExecutor $Worker.runTask(ThreadPoolExecutor.java:650) at java.util.concurrent.ThreadPoolExecutor $Worker.run(ThreadPoolExecutor.java:675)
        at java.lang.Thread.run(Thread.java:613)
Caused by: org.apache.camel.InvalidPayloadException: No body available of type: java.io.InputStream but has value: [bean:trailerHandler] of type: java.util.ArrayList on: Message: [bean:trailerHandler]. Caused by: No type converter available to convert from type: java.util.ArrayList to the required type: java.io.InputStream with value [bean:trailerHandler] on the exchange: Exchange[Message: [bean:trailerHandler]] at org .apache.camel.impl.MessageSupport.getMandatoryBody(MessageSupport.java: 104) at org .apache .camel.util.ExchangeHelper.getMandatoryInBody(ExchangeHelper.java:136) at org .apache .camel.component.file.FileOperations.storeFile(FileOperations.java:197)
        ... 43 more
Caused by: org.apache.camel.NoTypeConversionAvailableException: No type converter available to convert from type: java.util.ArrayList to the required type: java.io.InputStream with value [bean:trailerHandler] at org .apache .camel .impl .converter .DefaultTypeConverter.mandatoryConvertTo(DefaultTypeConverter.java:119) at org .apache.camel.impl.MessageSupport.getMandatoryBody(MessageSupport.java: 102)
        ... 45 more

Reply via email to