I'm trying to use Camel to poll an incoming directory for files, and then FTP them elsewhere. I started with camel-example-spring, added camel-ftp as a dependency, and modified MyRouteBuilder to look like so:

public class MyRouteBuilder extends RouteBuilder {
   public void configure() {
from("file:/tmp/test/incoming/").to("ftp://[EMAIL PROTECTED]:2021/?password=admin");
   }
}

Putting a file in the "incoming" directory gives the following stack trace:

SEVERE: On delivery attempt: 0 caught: java.lang.ClassCastException: org.apache.camel.component.file.remote.RemoteFileExchange java.lang.ClassCastException: org.apache.camel.component.file.remote.RemoteFileExchange at org.apache.camel.component.file.FileMessage.getExchange(FileMessage.java:47) at org.apache.camel.component.file.FileMessage.getExchange(FileMessage.java:29) at org.apache.camel.impl.MessageSupport.getBody(MessageSupport.java:48) at org.apache.camel.component.file.remote.FtpProducer.process(FtpProducer.java:42) at org.apache.camel.component.file.remote.FtpProducer.process(FtpProducer.java:37) at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:65) at org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:78) at org.apache.camel.component.file.FileConsumer.pollFile(FileConsumer.java:81) at org.apache.camel.component.file.FileConsumer.pollFileOrDirectory(FileConsumer.java:51) at org.apache.camel.component.file.FileConsumer.poll(FileConsumer.java:45) at org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:63) 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)

Most of the other Producers appear to work fine with plain ol' Exchanges. I tried modifying FtpProducer to do the same, and things started working. Great! However, I'm concerned this fixes the symptom, and not the underlying problem. Neither FtpProducer, SftpProducer nor FileProducer appear to really need their specific Exchanges (unit tests still pass anyway.) However I suspect CxfProducer and CxfInvokerProducer might exhibit the "deeper" problem if I look further. Thoughts?

- aaron

Reply via email to