[
https://issues.apache.org/jira/browse/CAMEL-3595?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12988723#comment-12988723
]
Mikael Jørgensen commented on CAMEL-3595:
-----------------------------------------
I made the following small test case:
public void testNlstWin() throws Exception {
FTPClient ftpClient = new FTPClient();
ftpClient.connect("xxx", 21);
ftpClient.login("yyy", "zzz");
System.out.println(ftpClient.getSystemName());
String[] names = ftpClient.listNames("test/rename");
for (String existing : names) {
System.out.println(existing);
}
ftpClient.logout();
ftpClient.disconnect();
}
The strange thing is, that I get the same result from both windows and unix
(runing the test of a windows machine:
Windows_NT
test/rename\Test.REN
UNIX Type: L8 Version: BSD-44
test/rename/Test.REN
I.e. both of them contains the directory as part of the returned filename -
which I hadn't expected.
It might be, that we have only seen the problem on windows servers because this
has been the only place where we transfer multiple files to the same
destination-name.
> 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
>
>
> (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.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira