You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@camel.apache.org by "Claus Ibsen (JIRA)" <ji...@apache.org> on 2009/05/19 15:36:50 UTC
[jira] Assigned: (CAMEL-1630) GenericFileProducer does not work
with absolute URLs on Linux
[ https://issues.apache.org/activemq/browse/CAMEL-1630?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Claus Ibsen reassigned CAMEL-1630:
----------------------------------
Assignee: Claus Ibsen
> GenericFileProducer does not work with absolute URLs on Linux
> -------------------------------------------------------------
>
> Key: CAMEL-1630
> URL: https://issues.apache.org/activemq/browse/CAMEL-1630
> Project: Apache Camel
> Issue Type: Bug
> Components: camel-core
> Affects Versions: 2.0-M1
> Environment: Linux
> Reporter: Julien Faissolle
> Assignee: Claus Ibsen
>
> I have the following simple configuration :
> {code:xml}<route>
> <from uri="file:///home/julien/tests/a?include=.*?\.xml" />
> <to uri="file:///home/julien/tests/b?fileName=${date:now:yyyy_MM_dd}/${file:onlyname}"/>
> </route>
> {code}
> After putting an input file into /home/julien/tests/a I get the following error:
> {noformat}
> org.apache.camel.component.file.GenericFileOperationFailedException: Cannot store file: /home/julien/tests/b/2009_05_19/160903061200040046.xml
> at org.apache.camel.component.file.FileOperations.storeFile(FileOperations.java:188)
> at org.apache.camel.component.file.GenericFileProducer.writeFile(GenericFileProducer.java:135)
> at org.apache.camel.component.file.GenericFileProducer.processExchange(GenericFileProducer.java:78)
> at org.apache.camel.component.file.GenericFileProducer.process(GenericFileProducer.java:49)
> at org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsyncProcessorBridge.process(AsyncProcessorTypeConverter.java:43)
> at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:83)
> at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:68)
> at org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:195)
> at org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:130)
> at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:68)
> at org.apache.camel.processor.interceptor.StreamCachingInterceptor.proceed(StreamCachingInterceptor.java:88)
> at org.apache.camel.processor.interceptor.StreamCachingInterceptor.process(StreamCachingInterceptor.java:83)
> at org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:52)
> at org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:157)
> at org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:98)
> at org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:66)
> 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.io.FileNotFoundException: /home/julien/tests/b/2009_05_19/160903061200040046.xml (No such file or directory)
> at java.io.RandomAccessFile.open(Native Method)
> at java.io.RandomAccessFile.<init>(RandomAccessFile.java:212)
> at org.apache.camel.component.file.FileOperations.prepareOutputFileChannel(FileOperations.java:253)
> at org.apache.camel.component.file.FileOperations.writeFileByFile(FileOperations.java:205)
> at org.apache.camel.component.file.FileOperations.storeFile(FileOperations.java:178)
> ... 24 more
> {noformat}
> In the meantime, Camel has created a fubar directory /home/julien/tests/b/home/julien/tests/b/2009_05_19 .
> I tracked the problem and found it to be cause by the following code section in GenericFileProducer.java
> {code:java}
> protected void writeFile(GenericFileExchange<T> exchange, String fileName) throws GenericFileOperationFailedException {
> InputStream payload = exchange.getIn().getBody(InputStream.class);
> try {
> // build directory if auto create is enabled
> if (endpoint.isAutoCreate()) {
> int lastPathIndex = fileName.lastIndexOf(File.separator);
> if (lastPathIndex != -1) {
> String directory = fileName.substring(0, lastPathIndex);
> // skip trailing /
> directory = FileUtil.stripLeadingSeparator(directory);
> if (!operations.buildDirectory(directory, false)) {
> log.debug("Cannot build directory [" + directory + "] (could be because of denied permissions)");
> }
> }
> }
> ....................
> {code}
> Instead of stripping the {{trailing}} separator as noted in the comment, the code strips the leading separator...
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.