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 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]