[jira] [Updated] (VFS-620) FileObject.moveTo(FileObject) API doesn't work well for a Linux FTP

2017-03-19 Thread Gary Gregory (JIRA)

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

Gary Gregory updated VFS-620:
-
Description: 
FileObject.moveTo(FileObject) API doesn't work well for a Linux FTP, especially 
for setting a user directory as its root directory case,
For example, for a ubuntu vsftpd, which is having "/home/user1" as its root 
directory, when renaming "/test/test.txt" to "/test1/test1.txt", it will throw 
an exception.
In this case, it should consider the workingDirectory(would be "/home/user1") 
together and append it to the from/to path to make the API work.

Sample codes,
{code:java}
FileObject fileObject = null;
FileObject toFileObject = null;
try {
StandardFileSystemManager fsManager = new 
StandardFileSystemManager();
fsManager.init();
FileSystemOptions fsOpts = new FileSystemOptions();

FtpFileSystemConfigBuilder.getInstance().setPassiveMode(fsOpts, 
true);
FtpFileSystemConfigBuilder.getInstance().setUserDirIsRoot(fsOpts, 
true);
UserAuthenticator auth = new StaticUserAuthenticator(null, 
"", "");

DefaultFileSystemConfigBuilder.getInstance().setUserAuthenticator(fsOpts, auth);

fileObject = fsManager.resolveFile("ftp:///test/test.txt", fsOpts);
System.out.println("File exists:" + fileObject.exists());

toFileObject = fsManager.resolveFile("ftp:///test1/test1.txt", fsOpts);
System.out.println("File exists:" + toFileObject.exists());
if (!toFileObject.exists()) {
toFileObject.createFile();
}
fileObject.moveTo(toFileObject);
} catch (FileSystemException ex) {
ex.printStackTrace();
} finally {
if (fileObject != null) {
try {
fileObject.close();
} catch (FileSystemException ex) {
}
}
if (toFileObject != null) {
try {
toFileObject.close();
} catch (FileSystemException ex) {
}
}
}
{code}
And the output,

{noformat}
File exists:true
File exists:false
org.apache.commons.vfs2.FileSystemException: Could not rename "ftp:///test/test.txt" to "ftp:///test1/test1.txt".
at 
org.apache.commons.vfs2.provider.AbstractFileObject.moveTo(AbstractFileObject.java:1902)
at TestFTP.main(TestFTP.java:59)
Caused by: org.apache.commons.vfs2.FileSystemException: Could not rename FTP 
file "ftp:///test/test.txt" to "ftp:///test1/test1.txt".
at 
org.apache.commons.vfs2.provider.ftp.FtpFileObject.doRename(FtpFileObject.java:524)
at 
org.apache.commons.vfs2.provider.AbstractFileObject.moveTo(AbstractFileObject.java:1887)
{noformat}

  was:
FileObject.moveTo(FileObject) API doesn't work well for a Linux FTP, especially 
for setting a user directory as its root directory case,
For example, for a ubuntu vsftpd, which is having "/home/user1" as its root 
directory, when renaming "/test/test.txt" to "/test1/test1.txt", it will throw 
an exception.
In this case, it should consider the workingDirectory(would be "/home/user1") 
together and append it to the from/to path to make the API work.

Sample codes,
FileObject fileObject = null;
FileObject toFileObject = null;
try {
StandardFileSystemManager fsManager = new 
StandardFileSystemManager();
fsManager.init();
FileSystemOptions fsOpts = new FileSystemOptions();

FtpFileSystemConfigBuilder.getInstance().setPassiveMode(fsOpts, 
true);
FtpFileSystemConfigBuilder.getInstance().setUserDirIsRoot(fsOpts, 
true);
UserAuthenticator auth = new StaticUserAuthenticator(null, 
"", "");

DefaultFileSystemConfigBuilder.getInstance().setUserAuthenticator(fsOpts, auth);

fileObject = fsManager.resolveFile("ftp:///test/test.txt", fsOpts);
System.out.println("File exists:" + fileObject.exists());

toFileObject = fsManager.resolveFile("ftp:///test1/test1.txt", fsOpts);
System.out.println("File exists:" + toFileObject.exists());
if (!toFileObject.exists()) {
toFileObject.createFile();
}
fileObject.moveTo(toFileObject);
} catch (FileSystemException ex) {
ex.printStackTrace();
} finally {
if (fileObject != null) {
try {
fileObject.close();
} catch (FileSystemException ex) {
}
}
if (toFileObject != null) {
try {
toFileObject.close();
} catch (FileSystemException ex) {
}
}
}

And the output,
File exists:true
File exists:false
org.apache.commons.vfs2.FileSystemException: 

[jira] [Updated] (VFS-620) FileObject.moveTo(FileObject) API doesn't work well for a Linux FTP

2017-03-15 Thread Shon Vella (JIRA)

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

Shon Vella updated VFS-620:
---
Attachment: VFS-620c.patch

Sorry - I guess that what I get for trying to copy and paste the changes into 
the existing patch instead of doing a new diff from the sources that are 
working for me. Updated patch uploaded.



> FileObject.moveTo(FileObject) API doesn't work well for a Linux FTP
> ---
>
> Key: VFS-620
> URL: https://issues.apache.org/jira/browse/VFS-620
> Project: Commons VFS
>  Issue Type: Bug
>Affects Versions: 2.1
> Environment: ubuntu vsftpd
>Reporter: stevezhuang
> Attachments: VFS-620c.patch
>
>
> FileObject.moveTo(FileObject) API doesn't work well for a Linux FTP, 
> especially for setting a user directory as its root directory case,
> For example, for a ubuntu vsftpd, which is having "/home/user1" as its root 
> directory, when renaming "/test/test.txt" to "/test1/test1.txt", it will 
> throw an exception.
> In this case, it should consider the workingDirectory(would be "/home/user1") 
> together and append it to the from/to path to make the API work.
> Sample codes,
> FileObject fileObject = null;
> FileObject toFileObject = null;
> try {
> StandardFileSystemManager fsManager = new 
> StandardFileSystemManager();
> fsManager.init();
> FileSystemOptions fsOpts = new FileSystemOptions();
> FtpFileSystemConfigBuilder.getInstance().setPassiveMode(fsOpts, 
> true);
> FtpFileSystemConfigBuilder.getInstance().setUserDirIsRoot(fsOpts, 
> true);
> UserAuthenticator auth = new StaticUserAuthenticator(null, 
> "", "");
> 
> DefaultFileSystemConfigBuilder.getInstance().setUserAuthenticator(fsOpts, 
> auth);
> fileObject = fsManager.resolveFile("ftp:// address>/test/test.txt", fsOpts);
> System.out.println("File exists:" + fileObject.exists());
> toFileObject = fsManager.resolveFile("ftp:// address>/test1/test1.txt", fsOpts);
> System.out.println("File exists:" + toFileObject.exists());
> if (!toFileObject.exists()) {
> toFileObject.createFile();
> }
> fileObject.moveTo(toFileObject);
> } catch (FileSystemException ex) {
> ex.printStackTrace();
> } finally {
> if (fileObject != null) {
> try {
> fileObject.close();
> } catch (FileSystemException ex) {
> }
> }
> if (toFileObject != null) {
> try {
> toFileObject.close();
> } catch (FileSystemException ex) {
> }
> }
> }
> And the output,
> File exists:true
> File exists:false
> org.apache.commons.vfs2.FileSystemException: Could not rename 
> "ftp:///test/test.txt" to "ftp:// address>/test1/test1.txt".
>   at 
> org.apache.commons.vfs2.provider.AbstractFileObject.moveTo(AbstractFileObject.java:1902)
>   at TestFTP.main(TestFTP.java:59)
> Caused by: org.apache.commons.vfs2.FileSystemException: Could not rename FTP 
> file "ftp:///test/test.txt" to "ftp:// address>/test1/test1.txt".
>   at 
> org.apache.commons.vfs2.provider.ftp.FtpFileObject.doRename(FtpFileObject.java:524)
>   at 
> org.apache.commons.vfs2.provider.AbstractFileObject.moveTo(AbstractFileObject.java:1887)



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Updated] (VFS-620) FileObject.moveTo(FileObject) API doesn't work well for a Linux FTP

2017-03-15 Thread Shon Vella (JIRA)

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

Shon Vella updated VFS-620:
---
Attachment: (was: VFS-620.patch)

> FileObject.moveTo(FileObject) API doesn't work well for a Linux FTP
> ---
>
> Key: VFS-620
> URL: https://issues.apache.org/jira/browse/VFS-620
> Project: Commons VFS
>  Issue Type: Bug
>Affects Versions: 2.1
> Environment: ubuntu vsftpd
>Reporter: stevezhuang
>
> FileObject.moveTo(FileObject) API doesn't work well for a Linux FTP, 
> especially for setting a user directory as its root directory case,
> For example, for a ubuntu vsftpd, which is having "/home/user1" as its root 
> directory, when renaming "/test/test.txt" to "/test1/test1.txt", it will 
> throw an exception.
> In this case, it should consider the workingDirectory(would be "/home/user1") 
> together and append it to the from/to path to make the API work.
> Sample codes,
> FileObject fileObject = null;
> FileObject toFileObject = null;
> try {
> StandardFileSystemManager fsManager = new 
> StandardFileSystemManager();
> fsManager.init();
> FileSystemOptions fsOpts = new FileSystemOptions();
> FtpFileSystemConfigBuilder.getInstance().setPassiveMode(fsOpts, 
> true);
> FtpFileSystemConfigBuilder.getInstance().setUserDirIsRoot(fsOpts, 
> true);
> UserAuthenticator auth = new StaticUserAuthenticator(null, 
> "", "");
> 
> DefaultFileSystemConfigBuilder.getInstance().setUserAuthenticator(fsOpts, 
> auth);
> fileObject = fsManager.resolveFile("ftp:// address>/test/test.txt", fsOpts);
> System.out.println("File exists:" + fileObject.exists());
> toFileObject = fsManager.resolveFile("ftp:// address>/test1/test1.txt", fsOpts);
> System.out.println("File exists:" + toFileObject.exists());
> if (!toFileObject.exists()) {
> toFileObject.createFile();
> }
> fileObject.moveTo(toFileObject);
> } catch (FileSystemException ex) {
> ex.printStackTrace();
> } finally {
> if (fileObject != null) {
> try {
> fileObject.close();
> } catch (FileSystemException ex) {
> }
> }
> if (toFileObject != null) {
> try {
> toFileObject.close();
> } catch (FileSystemException ex) {
> }
> }
> }
> And the output,
> File exists:true
> File exists:false
> org.apache.commons.vfs2.FileSystemException: Could not rename 
> "ftp:///test/test.txt" to "ftp:// address>/test1/test1.txt".
>   at 
> org.apache.commons.vfs2.provider.AbstractFileObject.moveTo(AbstractFileObject.java:1902)
>   at TestFTP.main(TestFTP.java:59)
> Caused by: org.apache.commons.vfs2.FileSystemException: Could not rename FTP 
> file "ftp:///test/test.txt" to "ftp:// address>/test1/test1.txt".
>   at 
> org.apache.commons.vfs2.provider.ftp.FtpFileObject.doRename(FtpFileObject.java:524)
>   at 
> org.apache.commons.vfs2.provider.AbstractFileObject.moveTo(AbstractFileObject.java:1887)



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Updated] (VFS-620) FileObject.moveTo(FileObject) API doesn't work well for a Linux FTP

2017-03-14 Thread Shon Vella (JIRA)

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

Shon Vella updated VFS-620:
---
Attachment: (was: VFS-620.patch)

> FileObject.moveTo(FileObject) API doesn't work well for a Linux FTP
> ---
>
> Key: VFS-620
> URL: https://issues.apache.org/jira/browse/VFS-620
> Project: Commons VFS
>  Issue Type: Bug
>Affects Versions: 2.1
> Environment: ubuntu vsftpd
>Reporter: stevezhuang
> Attachments: VFS-620.patch
>
>
> FileObject.moveTo(FileObject) API doesn't work well for a Linux FTP, 
> especially for setting a user directory as its root directory case,
> For example, for a ubuntu vsftpd, which is having "/home/user1" as its root 
> directory, when renaming "/test/test.txt" to "/test1/test1.txt", it will 
> throw an exception.
> In this case, it should consider the workingDirectory(would be "/home/user1") 
> together and append it to the from/to path to make the API work.
> Sample codes,
> FileObject fileObject = null;
> FileObject toFileObject = null;
> try {
> StandardFileSystemManager fsManager = new 
> StandardFileSystemManager();
> fsManager.init();
> FileSystemOptions fsOpts = new FileSystemOptions();
> FtpFileSystemConfigBuilder.getInstance().setPassiveMode(fsOpts, 
> true);
> FtpFileSystemConfigBuilder.getInstance().setUserDirIsRoot(fsOpts, 
> true);
> UserAuthenticator auth = new StaticUserAuthenticator(null, 
> "", "");
> 
> DefaultFileSystemConfigBuilder.getInstance().setUserAuthenticator(fsOpts, 
> auth);
> fileObject = fsManager.resolveFile("ftp:// address>/test/test.txt", fsOpts);
> System.out.println("File exists:" + fileObject.exists());
> toFileObject = fsManager.resolveFile("ftp:// address>/test1/test1.txt", fsOpts);
> System.out.println("File exists:" + toFileObject.exists());
> if (!toFileObject.exists()) {
> toFileObject.createFile();
> }
> fileObject.moveTo(toFileObject);
> } catch (FileSystemException ex) {
> ex.printStackTrace();
> } finally {
> if (fileObject != null) {
> try {
> fileObject.close();
> } catch (FileSystemException ex) {
> }
> }
> if (toFileObject != null) {
> try {
> toFileObject.close();
> } catch (FileSystemException ex) {
> }
> }
> }
> And the output,
> File exists:true
> File exists:false
> org.apache.commons.vfs2.FileSystemException: Could not rename 
> "ftp:///test/test.txt" to "ftp:// address>/test1/test1.txt".
>   at 
> org.apache.commons.vfs2.provider.AbstractFileObject.moveTo(AbstractFileObject.java:1902)
>   at TestFTP.main(TestFTP.java:59)
> Caused by: org.apache.commons.vfs2.FileSystemException: Could not rename FTP 
> file "ftp:///test/test.txt" to "ftp:// address>/test1/test1.txt".
>   at 
> org.apache.commons.vfs2.provider.ftp.FtpFileObject.doRename(FtpFileObject.java:524)
>   at 
> org.apache.commons.vfs2.provider.AbstractFileObject.moveTo(AbstractFileObject.java:1887)



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Updated] (VFS-620) FileObject.moveTo(FileObject) API doesn't work well for a Linux FTP

2017-03-14 Thread Shon Vella (JIRA)

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

Shon Vella updated VFS-620:
---
Attachment: VFS-620.patch

Updated patch

> FileObject.moveTo(FileObject) API doesn't work well for a Linux FTP
> ---
>
> Key: VFS-620
> URL: https://issues.apache.org/jira/browse/VFS-620
> Project: Commons VFS
>  Issue Type: Bug
>Affects Versions: 2.1
> Environment: ubuntu vsftpd
>Reporter: stevezhuang
> Attachments: VFS-620.patch
>
>
> FileObject.moveTo(FileObject) API doesn't work well for a Linux FTP, 
> especially for setting a user directory as its root directory case,
> For example, for a ubuntu vsftpd, which is having "/home/user1" as its root 
> directory, when renaming "/test/test.txt" to "/test1/test1.txt", it will 
> throw an exception.
> In this case, it should consider the workingDirectory(would be "/home/user1") 
> together and append it to the from/to path to make the API work.
> Sample codes,
> FileObject fileObject = null;
> FileObject toFileObject = null;
> try {
> StandardFileSystemManager fsManager = new 
> StandardFileSystemManager();
> fsManager.init();
> FileSystemOptions fsOpts = new FileSystemOptions();
> FtpFileSystemConfigBuilder.getInstance().setPassiveMode(fsOpts, 
> true);
> FtpFileSystemConfigBuilder.getInstance().setUserDirIsRoot(fsOpts, 
> true);
> UserAuthenticator auth = new StaticUserAuthenticator(null, 
> "", "");
> 
> DefaultFileSystemConfigBuilder.getInstance().setUserAuthenticator(fsOpts, 
> auth);
> fileObject = fsManager.resolveFile("ftp:// address>/test/test.txt", fsOpts);
> System.out.println("File exists:" + fileObject.exists());
> toFileObject = fsManager.resolveFile("ftp:// address>/test1/test1.txt", fsOpts);
> System.out.println("File exists:" + toFileObject.exists());
> if (!toFileObject.exists()) {
> toFileObject.createFile();
> }
> fileObject.moveTo(toFileObject);
> } catch (FileSystemException ex) {
> ex.printStackTrace();
> } finally {
> if (fileObject != null) {
> try {
> fileObject.close();
> } catch (FileSystemException ex) {
> }
> }
> if (toFileObject != null) {
> try {
> toFileObject.close();
> } catch (FileSystemException ex) {
> }
> }
> }
> And the output,
> File exists:true
> File exists:false
> org.apache.commons.vfs2.FileSystemException: Could not rename 
> "ftp:///test/test.txt" to "ftp:// address>/test1/test1.txt".
>   at 
> org.apache.commons.vfs2.provider.AbstractFileObject.moveTo(AbstractFileObject.java:1902)
>   at TestFTP.main(TestFTP.java:59)
> Caused by: org.apache.commons.vfs2.FileSystemException: Could not rename FTP 
> file "ftp:///test/test.txt" to "ftp:// address>/test1/test1.txt".
>   at 
> org.apache.commons.vfs2.provider.ftp.FtpFileObject.doRename(FtpFileObject.java:524)
>   at 
> org.apache.commons.vfs2.provider.AbstractFileObject.moveTo(AbstractFileObject.java:1887)



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Updated] (VFS-620) FileObject.moveTo(FileObject) API doesn't work well for a Linux FTP

2017-03-07 Thread Shon Vella (JIRA)

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

Shon Vella updated VFS-620:
---
Attachment: VFS-620.patch

This appears to be a duplicate of both VFS-188 and VFS-292, both of which had 
patches submitted last decade without so much as an acknowledgment, though 
neither patch is exactly right, in that they don't account for the possibility 
of a decorator on the source FileObject no include an updated test case. Here 
is a new patch that accounts for that and adds in a test case that causes the 
entire suite being run against the FTP provider to be run both with and without 
the UserDirIsRoot option.

> FileObject.moveTo(FileObject) API doesn't work well for a Linux FTP
> ---
>
> Key: VFS-620
> URL: https://issues.apache.org/jira/browse/VFS-620
> Project: Commons VFS
>  Issue Type: Bug
>Affects Versions: 2.1
> Environment: ubuntu vsftpd
>Reporter: stevezhuang
> Attachments: VFS-620.patch
>
>
> FileObject.moveTo(FileObject) API doesn't work well for a Linux FTP, 
> especially for setting a user directory as its root directory case,
> For example, for a ubuntu vsftpd, which is having "/home/user1" as its root 
> directory, when renaming "/test/test.txt" to "/test1/test1.txt", it will 
> throw an exception.
> In this case, it should consider the workingDirectory(would be "/home/user1") 
> together and append it to the from/to path to make the API work.
> Sample codes,
> FileObject fileObject = null;
> FileObject toFileObject = null;
> try {
> StandardFileSystemManager fsManager = new 
> StandardFileSystemManager();
> fsManager.init();
> FileSystemOptions fsOpts = new FileSystemOptions();
> FtpFileSystemConfigBuilder.getInstance().setPassiveMode(fsOpts, 
> true);
> FtpFileSystemConfigBuilder.getInstance().setUserDirIsRoot(fsOpts, 
> true);
> UserAuthenticator auth = new StaticUserAuthenticator(null, 
> "", "");
> 
> DefaultFileSystemConfigBuilder.getInstance().setUserAuthenticator(fsOpts, 
> auth);
> fileObject = fsManager.resolveFile("ftp:// address>/test/test.txt", fsOpts);
> System.out.println("File exists:" + fileObject.exists());
> toFileObject = fsManager.resolveFile("ftp:// address>/test1/test1.txt", fsOpts);
> System.out.println("File exists:" + toFileObject.exists());
> if (!toFileObject.exists()) {
> toFileObject.createFile();
> }
> fileObject.moveTo(toFileObject);
> } catch (FileSystemException ex) {
> ex.printStackTrace();
> } finally {
> if (fileObject != null) {
> try {
> fileObject.close();
> } catch (FileSystemException ex) {
> }
> }
> if (toFileObject != null) {
> try {
> toFileObject.close();
> } catch (FileSystemException ex) {
> }
> }
> }
> And the output,
> File exists:true
> File exists:false
> org.apache.commons.vfs2.FileSystemException: Could not rename 
> "ftp:///test/test.txt" to "ftp:// address>/test1/test1.txt".
>   at 
> org.apache.commons.vfs2.provider.AbstractFileObject.moveTo(AbstractFileObject.java:1902)
>   at TestFTP.main(TestFTP.java:59)
> Caused by: org.apache.commons.vfs2.FileSystemException: Could not rename FTP 
> file "ftp:///test/test.txt" to "ftp:// address>/test1/test1.txt".
>   at 
> org.apache.commons.vfs2.provider.ftp.FtpFileObject.doRename(FtpFileObject.java:524)
>   at 
> org.apache.commons.vfs2.provider.AbstractFileObject.moveTo(AbstractFileObject.java:1887)



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Updated] (VFS-620) FileObject.moveTo(FileObject) API doesn't work well for a Linux FTP

2016-08-01 Thread stevezhuang (JIRA)

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

stevezhuang updated VFS-620:

Description: 
FileObject.moveTo(FileObject) API doesn't work well for a Linux FTP, especially 
for setting a user directory as its root directory case,
For example, for a ubuntu vsftpd, which is having "/home/user1" as its root 
directory, when renaming "/test/test.txt" to "/test1/test1.txt", it will throw 
an exception.
In this case, it should consider the workingDirectory(would be "/home/user1") 
together and append it to the from/to path to make the API work.

Sample codes,
FileObject fileObject = null;
FileObject toFileObject = null;
try {
StandardFileSystemManager fsManager = new 
StandardFileSystemManager();
fsManager.init();
FileSystemOptions fsOpts = new FileSystemOptions();

FtpFileSystemConfigBuilder.getInstance().setPassiveMode(fsOpts, 
true);
FtpFileSystemConfigBuilder.getInstance().setUserDirIsRoot(fsOpts, 
true);
UserAuthenticator auth = new StaticUserAuthenticator(null, 
"", "");

DefaultFileSystemConfigBuilder.getInstance().setUserAuthenticator(fsOpts, auth);

fileObject = fsManager.resolveFile("ftp:///test/test.txt", fsOpts);
System.out.println("File exists:" + fileObject.exists());

toFileObject = fsManager.resolveFile("ftp:///test1/test1.txt", fsOpts);
System.out.println("File exists:" + toFileObject.exists());
if (!toFileObject.exists()) {
toFileObject.createFile();
}
fileObject.moveTo(toFileObject);
} catch (FileSystemException ex) {
ex.printStackTrace();
} finally {
if (fileObject != null) {
try {
fileObject.close();
} catch (FileSystemException ex) {
}
}
if (toFileObject != null) {
try {
toFileObject.close();
} catch (FileSystemException ex) {
}
}
}

And the output,
File exists:true
File exists:false
org.apache.commons.vfs2.FileSystemException: Could not rename "ftp:///test/test.txt" to "ftp:///test1/test1.txt".
at 
org.apache.commons.vfs2.provider.AbstractFileObject.moveTo(AbstractFileObject.java:1902)
at TestFTP.main(TestFTP.java:59)
Caused by: org.apache.commons.vfs2.FileSystemException: Could not rename FTP 
file "ftp:///test/test.txt" to "ftp:///test1/test1.txt".
at 
org.apache.commons.vfs2.provider.ftp.FtpFileObject.doRename(FtpFileObject.java:524)
at 
org.apache.commons.vfs2.provider.AbstractFileObject.moveTo(AbstractFileObject.java:1887)

  was:
FileObject.moveTo(FileObject) API doesn't work well for a Linux FTP, especially 
for setting a user directory as its root directory case,
For example, for a ubuntu vsftpd, which is having "/home/user1" as its root 
directory, when renaming "/test/test1.txt" to "/test1/test1.txt", it will throw 
an exception.
In this case, it should consider the workingDirectory(would be "/home/user1") 
together and append it to the from/to path to make the API work.

Sample codes,
FileObject fileObject = null;
FileObject toFileObject = null;
try {
StandardFileSystemManager fsManager = new 
StandardFileSystemManager();
fsManager.init();
FileSystemOptions fsOpts = new FileSystemOptions();

FtpFileSystemConfigBuilder.getInstance().setPassiveMode(fsOpts, 
true);
FtpFileSystemConfigBuilder.getInstance().setUserDirIsRoot(fsOpts, 
true);
UserAuthenticator auth = new StaticUserAuthenticator(null, 
"", "");

DefaultFileSystemConfigBuilder.getInstance().setUserAuthenticator(fsOpts, auth);

fileObject = fsManager.resolveFile("ftp:///test/test.txt", fsOpts);
System.out.println("File exists:" + fileObject.exists());

toFileObject = fsManager.resolveFile("ftp:///test1/test1.txt", fsOpts);
System.out.println("File exists:" + toFileObject.exists());
if (!toFileObject.exists()) {
toFileObject.createFile();
}
fileObject.moveTo(toFileObject);
} catch (FileSystemException ex) {
ex.printStackTrace();
} finally {
if (fileObject != null) {
try {
fileObject.close();
} catch (FileSystemException ex) {
}
}
if (toFileObject != null) {
try {
toFileObject.close();
} catch (FileSystemException ex) {
}
}
}

And the output,
File exists:true
File exists:false
org.apache.commons.vfs2.FileSystemException: Could not rename "ftp:///test/test.txt" 

[jira] [Updated] (VFS-620) FileObject.moveTo(FileObject) API doesn't work well for a Linux FTP

2016-08-01 Thread stevezhuang (JIRA)

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

stevezhuang updated VFS-620:

Description: 
FileObject.moveTo(FileObject) API doesn't work well for a Linux FTP, especially 
for setting a user directory as its root directory case,
For example, for a ubuntu vsftpd, which is having "/home/user1" as its root 
directory, when renaming "/test/test1.txt" to "/test1/test1.txt", it will throw 
an exception.
In this case, it should consider the workingDirectory(would be "/home/user1") 
together and append it to the from/to path to make the API work.

Sample codes,
FileObject fileObject = null;
FileObject toFileObject = null;
try {
StandardFileSystemManager fsManager = new 
StandardFileSystemManager();
fsManager.init();
FileSystemOptions fsOpts = new FileSystemOptions();

FtpFileSystemConfigBuilder.getInstance().setPassiveMode(fsOpts, 
true);
FtpFileSystemConfigBuilder.getInstance().setUserDirIsRoot(fsOpts, 
true);
UserAuthenticator auth = new StaticUserAuthenticator(null, 
"", "");

DefaultFileSystemConfigBuilder.getInstance().setUserAuthenticator(fsOpts, auth);

fileObject = fsManager.resolveFile("ftp:///test/test.txt", fsOpts);
System.out.println("File exists:" + fileObject.exists());

toFileObject = fsManager.resolveFile("ftp:///test1/test1.txt", fsOpts);
System.out.println("File exists:" + toFileObject.exists());
if (!toFileObject.exists()) {
toFileObject.createFile();
}
fileObject.moveTo(toFileObject);
} catch (FileSystemException ex) {
ex.printStackTrace();
} finally {
if (fileObject != null) {
try {
fileObject.close();
} catch (FileSystemException ex) {
}
}
if (toFileObject != null) {
try {
toFileObject.close();
} catch (FileSystemException ex) {
}
}
}

And the output,
File exists:true
File exists:false
org.apache.commons.vfs2.FileSystemException: Could not rename "ftp:///test/test.txt" to "ftp:///test1/test1.txt".
at 
org.apache.commons.vfs2.provider.AbstractFileObject.moveTo(AbstractFileObject.java:1902)
at TestFTP.main(TestFTP.java:59)
Caused by: org.apache.commons.vfs2.FileSystemException: Could not rename FTP 
file "ftp:///test/test.txt" to "ftp:///test1/test1.txt".
at 
org.apache.commons.vfs2.provider.ftp.FtpFileObject.doRename(FtpFileObject.java:524)
at 
org.apache.commons.vfs2.provider.AbstractFileObject.moveTo(AbstractFileObject.java:1887)

  was:
FileObject.moveTo(FileObject) API doesn't work well for a Linux FTP, especially 
for setting a user directory as its root directory case,
For example, for a ubuntu vsftpd, which is having "/home/user1" as its root 
directory, when renaming "/test/test1.txt" to "/test1/test1.txt", it will throw 
an exception.
In this case, it should consider the workingDirectory(would be "/home/user1") 
together and append it to the from/to path to make the API work.

Sample codes,
FileObject fileObject = null;
FileObject toFileObject = null;
try {
StandardFileSystemManager fsManager = new 
StandardFileSystemManager();
fsManager.init();
FileSystemOptions fsOpts = new FileSystemOptions();

FtpFileSystemConfigBuilder.getInstance().setPassiveMode(fsOpts, 
true);
FtpFileSystemConfigBuilder.getInstance().setUserDirIsRoot(fsOpts, 
true);
UserAuthenticator auth = new StaticUserAuthenticator(null, 
"", "");

DefaultFileSystemConfigBuilder.getInstance().setUserAuthenticator(fsOpts, auth);

fileObject = fsManager.resolveFile("ftp:///test/test.txt", fsOpts);
System.out.println("File exists:" + fileObject.exists());

toFileObject = fsManager.resolveFile("ftp://*/test1/test1.txt;, 
fsOpts);
System.out.println("File exists:" + toFileObject.exists());
if (!toFileObject.exists()) {
toFileObject.createFile();
}
fileObject.moveTo(toFileObject);
} catch (FileSystemException ex) {
ex.printStackTrace();
} finally {
if (fileObject != null) {
try {
fileObject.close();
} catch (FileSystemException ex) {
}
}
if (toFileObject != null) {
try {
toFileObject.close();
} catch (FileSystemException ex) {
}
}
}

And the output,
File exists:true
File exists:false
org.apache.commons.vfs2.FileSystemException: Could not rename 

[jira] [Updated] (VFS-620) FileObject.moveTo(FileObject) API doesn't work well for a Linux FTP

2016-08-01 Thread stevezhuang (JIRA)

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

stevezhuang updated VFS-620:

Description: 
FileObject.moveTo(FileObject) API doesn't work well for a Linux FTP, especially 
for setting a user directory as its root directory case,
For example, for a ubuntu vsftpd, which is having "/home/user1" as its root 
directory, when renaming "/test/test1.txt" to "/test1/test1.txt", it will throw 
an exception.
In this case, it should consider the workingDirectory(would be "/home/user1") 
together and append it to the from/to path to make the API work.

Sample codes,
FileObject fileObject = null;
FileObject toFileObject = null;
try {
StandardFileSystemManager fsManager = new 
StandardFileSystemManager();
fsManager.init();
FileSystemOptions fsOpts = new FileSystemOptions();

FtpFileSystemConfigBuilder.getInstance().setPassiveMode(fsOpts, 
true);
FtpFileSystemConfigBuilder.getInstance().setUserDirIsRoot(fsOpts, 
true);
UserAuthenticator auth = new StaticUserAuthenticator(null, 
"", "");

DefaultFileSystemConfigBuilder.getInstance().setUserAuthenticator(fsOpts, auth);

fileObject = fsManager.resolveFile("ftp:///test/test.txt", fsOpts);
System.out.println("File exists:" + fileObject.exists());

toFileObject = fsManager.resolveFile("ftp://*/test1/test1.txt;, 
fsOpts);
System.out.println("File exists:" + toFileObject.exists());
if (!toFileObject.exists()) {
toFileObject.createFile();
}
fileObject.moveTo(toFileObject);
} catch (FileSystemException ex) {
ex.printStackTrace();
} finally {
if (fileObject != null) {
try {
fileObject.close();
} catch (FileSystemException ex) {
}
}
if (toFileObject != null) {
try {
toFileObject.close();
} catch (FileSystemException ex) {
}
}
}

And the output,
File exists:true
File exists:false
org.apache.commons.vfs2.FileSystemException: Could not rename "ftp:///test/test.txt" to "ftp:///test1/test1.txt".
at 
org.apache.commons.vfs2.provider.AbstractFileObject.moveTo(AbstractFileObject.java:1902)
at TestFTP.main(TestFTP.java:59)
Caused by: org.apache.commons.vfs2.FileSystemException: Could not rename FTP 
file "ftp:///test/test.txt" to "ftp:///test1/test1.txt".
at 
org.apache.commons.vfs2.provider.ftp.FtpFileObject.doRename(FtpFileObject.java:524)
at 
org.apache.commons.vfs2.provider.AbstractFileObject.moveTo(AbstractFileObject.java:1887)

  was:
FileObject.moveTo(FileObject) API doesn't work well for a Linux FTP, especially 
for setting a user directory as its root directory case,
For example, for a ubuntu vsftpd, which is having "/home/user1" as its root 
directory, when renaming "/test/test1.txt" to "/test1/test1.txt", it will throw 
an exception.
In this case, it should consider the workingDirectory(would be "/home/user1") 
together and append it to the from/to path to make the API work.

Sample codes,
FileObject fileObject = null;
FileObject toFileObject = null;
try {
StandardFileSystemManager fsManager = new 
StandardFileSystemManager();
fsManager.init();
FileSystemOptions fsOpts = new FileSystemOptions();

FtpFileSystemConfigBuilder.getInstance().setPassiveMode(fsOpts, 
true);
FtpFileSystemConfigBuilder.getInstance().setUserDirIsRoot(fsOpts, 
true);
UserAuthenticator auth = new StaticUserAuthenticator(null, "*", 
"*");

DefaultFileSystemConfigBuilder.getInstance().setUserAuthenticator(fsOpts, auth);

fileObject = fsManager.resolveFile("ftp://*/test/test.txt;, fsOpts);
System.out.println("File exists:" + fileObject.exists());

toFileObject = fsManager.resolveFile("ftp://*/test1/test1.txt;, 
fsOpts);
System.out.println("File exists:" + toFileObject.exists());
if (!toFileObject.exists()) {
toFileObject.createFile();
}
fileObject.moveTo(toFileObject);
} catch (FileSystemException ex) {
ex.printStackTrace();
} finally {
if (fileObject != null) {
try {
fileObject.close();
} catch (FileSystemException ex) {
}
}
if (toFileObject != null) {
try {
toFileObject.close();
} catch (FileSystemException ex) {
}
}
}

And the output,
File exists:true
File exists:false
org.apache.commons.vfs2.FileSystemException: Could not rename