[ https://issues.apache.org/activemq/browse/CAMEL-1290?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=48935#action_48935 ]
Ramon Buckland commented on CAMEL-1290: --------------------------------------- The issue is caused by a call to getParentFile which assumes a / root path exists. Since there doesn't in an "ftp" server relative manner, the fix is simply to check first The patch and test case are attached. (see following) It does not affect Camel 1.5.x The fix is simply a check on resolving the getParent method in the new GenericFile. This change is applied AFTER CAMEL-1241 - CAMEL-1241_Refactor_S-FTP_to_use_GenericYYY.patch is applied. OLD {code} public String getParent() { return getAbsoluteFileName().substring(0, getAbsoluteFileName().lastIndexOf("/")); } {code} NEW {code} public String getParent() { if (getAbsoluteFileName().lastIndexOf("/") > 0) { return getAbsoluteFileName().substring(0, getAbsoluteFileName().lastIndexOf("/")); } else { return ""; } } {code} > FTPConsumer - Error in Rename Strategy. > --------------------------------------- > > Key: CAMEL-1290 > URL: https://issues.apache.org/activemq/browse/CAMEL-1290 > Project: Apache Camel > Issue Type: Bug > Components: camel-ftp > Affects Versions: 2.0.0 > Environment: Windows XP > Reporter: Paddy Daly > Assignee: Ramon Buckland > > Consuming from a FTP server using the following endpoint cause a > StringIndexOutOfBoundsException when using the rename strategy. > <endpoint id="candidateUrl" > uri="ftp://usern...@127.0.0.1?password=password&delete=true&binary=true&delay=10000&readLock=rename"/> > 22 Jan 2009 09:36:59,501 ERROR [Thread: 1 > org.apache.camel.component.file.remote.RemoteFileComponent > @8f7aa2] FtpConsumer.log(207) | String index out of range: -1 > java.lang.StringIndexOutOfBoundsException: String index out of range: -1 > at java.lang.String.substring(String.java:1938) > at > org.apache.camel.component.file.remote.RemoteFile.getParent(RemoteFile.java:139) > at > org.apache.camel.component.file.remote.RemoteFile.changeFileName(RemoteFile.java:65) > at > org.apache.camel.component.file.remote.strategy.RemoteFileRenameExclusiveReadLockStrategy > .acquireExclusiveReadLock(RemoteFileRenameExclusiveReadLockStrategy.java:45) > at > org.apache.camel.component.file.remote.strategy.RemoteFileProcessStrategySupport.begin(Re > moteFileProcessStrategySupport.java:32) > at > org.apache.camel.component.file.remote.RemoteFileConsumer.processExchange(RemoteFileConsu > mer.java:131) > at > org.apache.camel.component.file.remote.RemoteFileConsumer.poll(RemoteFileConsumer.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(Scheduled > ThreadPoolExecutor.java:98) > at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(Schedule > dThreadPoolExecutor.java:181) > at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadP > oolExecutor.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) > A workaround is to add a folder in the url like the following > <endpoint id="candidateUrl" > uri="ftp://usern...@127.0.0.1//myFolder/?password=password&delete=true&binary=true&delay=10000&readLock=rename"/> -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.