[ 
https://issues.apache.org/jira/browse/CAMEL-3595?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mikael Jørgensen updated CAMEL-3595:
------------------------------------

    Attachment: camel-ftp-patch.txt

The previous patch did not work when the client (camel) machine is unix and the 
target (ftp server) is windows as the normalizePath method checks the local OS 
etc.

The attached patch is now working or us - but just takes the file name as the 
part of the string after the left-most occurence of either / or \ - so it will 
not work in a rare occation where a / or \ could be part of the filename.

> FTP rename fails
> ----------------
>
>                 Key: CAMEL-3595
>                 URL: https://issues.apache.org/jira/browse/CAMEL-3595
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-ftp
>    Affects Versions: 2.4.0
>            Reporter: Mikael Jørgensen
>            Assignee: Claus Ibsen
>             Fix For: 2.7.0
>
>         Attachments: camel-ftp-patch.txt, camel-ftp-patch.txt
>
>
> (This is related to the user group discussion 
> http://camel.465427.n5.nabble.com/Problem-renaming-existing-file-in-FTP-td3307670.html)
> When using a tmpPrefix when uploading, the rename from the tmp-file to the 
> destination file fails, if the destination file is already present, even 
> though the option fileExist=Override is used.
> We have the problem on just a few destination servers which all seems to be 
> windows machines(?).
> I have fetched the 2.4 branch of camel-ftp to find out why it does not work, 
> since the unit test you refer to in your previous post do excercise the 
> problem.
> It appears that the cause of the problem is, that the 
> FtpOperations.existsFile fails to return true, which then causes the code not 
> to enter the part where it deletes the exisiting file.
> The reason for the FtpOperations.existsFile to return false, is, that the 
> list of existing files has the directoryname prepended, e.g. I'm trying to 
> upload Test.REN to folder test/rename, and in the code 
> "if (existing.equals(onlyName))" 
> existing=test/rename\Test.REN and onlyName=Test.REN - which returns false - 
> but causes the later rename to fail as the target folder did contain the 
> Test.REN. 
> My guess is that it is server dependent whether the returned list of names in 
> the directory include the directory name or not?
> To fix this I have added the following line of code before the if-statement
> existing = FileUtil.stripPath(FileUtil.normalizePath(existing));
> So it will strip the path part of the file name before comparing it to 
> onlyName.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to