You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "sebastien DAVID (JIRA)" <ji...@apache.org> on 2008/04/02 15:09:26 UTC
[jira] Created: (VFS-206) moveTo on Folder does not update the
FileName of children
moveTo on Folder does not update the FileName of children
---------------------------------------------------------
Key: VFS-206
URL: https://issues.apache.org/jira/browse/VFS-206
Project: Commons VFS
Issue Type: Bug
Affects Versions: 1.0
Environment: Windows
Reporter: sebastien DAVID
Priority: Critical
Hi,
I use the FTP provider.
When i move a folder, the destination folder is correctly created and the children are correctled referenced by the destination folder.
But the FileName of the children and the cache are not updated and contains the old parent path.
Ex:
Directory structure before the move:
/test/srcDir
/test/srcDir/File1
/test/srcDir/Dir1
Move to be applied:
/test/srcDir to /test/srcNewDir
Directory structure after the move:
/test/srcNewDir
/test/srcNewDir/File1
/test/srcNewDir/Dir1
I recreate the srcDir:
FileObject srcDir = fs.resolveFile("/test/srcDir")
srcDir.createFolder();
I recreate the File1
FileObject file1 = fs.resolveFile("/test/srcDir/File1")
---> But here file1.exists() return true !!!
With the following code, i fixed this problem:
I call this method after the doRename (in moveTo)
private void updateFileName(String p_NewParentPath) throws FileSystemException {
Map cache = getFileSystem().getFileSystemManager().getFilesCache().getMap(getFileSystem());
FileObject[] child = getChildren();
for (int i=0 ; i<child.length ; ++i) {
// Remove from the cache the old FileName
cache.remove(child[i].getName());
// Update the FileName with the new Parent
child[i].getName().setPath(p_NewParentPath+FileName.SEPARATOR+child[i].getBaseName());
// Put the new FileName in the Cache
cache.put(child[i].getName(), child[i]);
// Update the child if attached
if (child[i].isAttached() && child[i].getType().hasChildren()) {
child[i].updateFileName(child[i].getName().getPath());
}
}
}
Note that the setPath is a new method on the FileName
Can you include this fix (or a better fix) in the next release ?
When the new release will be published ?
Thanks
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.