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

Oliver Zeigermann resolved TRANSACTION-18.
------------------------------------------

    Resolution: Fixed

Fixed by applying your patch. Thansk :)

> applyDeletes method does not delete symbolic links
> --------------------------------------------------
>
>                 Key: TRANSACTION-18
>                 URL: https://issues.apache.org/jira/browse/TRANSACTION-18
>             Project: Commons Transaction
>          Issue Type: Bug
>    Affects Versions: 1.2
>         Environment: Linux CENT OS
>            Reporter: Bojan Vukojevic
>            Assignee: Oliver Zeigermann
>
> applyDeletes static method in FileResourceManager (line 154) checks "isFile" 
> and if this returns "false" assumes it is a directory. This fails if the 
> resource is symbolic link. Instead, it should call "isDirectory" and then 
> recursively call itself, otherwise, it should delete the resource.
> The fix is shown below:
> protected static void applyDeletes(File removeDir, File targetDir, File 
> rootDir) throws IOException {
>         if (removeDir.isDirectory() && targetDir.isDirectory()) {
>             File[] files = removeDir.listFiles();
>             for (int i = 0; i < files.length; i++) {
>                 File removeFile = files[i];
>                 File targetFile = new File(targetDir, removeFile.getName());
>                 if (!removeFile.isDirectory()) {  //===========THIS IS THE 
> FIX - WAS removeFile.isFile=======
>                     if (targetFile.exists()) {
>                         if (!targetFile.delete()) {
>                             throw new IOException("Could not delete file " + 
> removeFile.getName()
>                                     + " in directory targetDir");
>                         }
>                     }
>                     // indicate, this has been done
>                     removeFile.delete();
>                 } else {
>                     applyDeletes(removeFile, targetFile, rootDir);
>                 }
>                 // delete empty target directories, except root dir
>                 if (!targetDir.equals(rootDir) && targetDir.list().length == 
> 0) {
>                     targetDir.delete();
>                 }
>             }
>         }
>     }

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


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to