commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bernd Eckenfels (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (VFS-206) moveTo on Folder does not update the FileName of children
Date Wed, 23 Sep 2015 22:15:04 GMT

    [ https://issues.apache.org/jira/browse/VFS-206?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14905392#comment-14905392
] 

Bernd Eckenfels commented on VFS-206:
-------------------------------------

Do you still see this with 2.0 or trunk (2.1) version?

> 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 was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message