From 1681f6f638130d9401b577f3d446bffabc26d7d9 Mon Sep 17 00:00:00 2001
From: lutoff <lutoff@localhost>
Date: Fri, 17 Oct 2008 10:19:24 +0000
Subject: [PATCH] Fix for issue #3527 (uninstall: utility options (--log-files, --ldif-files, ...) don't work

---
 opendj-sdk/opends/src/guitools/org/opends/guitools/uninstaller/Uninstaller.java |   61 ++++++++++++++++++++----------
 1 files changed, 40 insertions(+), 21 deletions(-)

diff --git a/opendj-sdk/opends/src/guitools/org/opends/guitools/uninstaller/Uninstaller.java b/opendj-sdk/opends/src/guitools/org/opends/guitools/uninstaller/Uninstaller.java
index d3a1df3..9602c2d 100644
--- a/opendj-sdk/opends/src/guitools/org/opends/guitools/uninstaller/Uninstaller.java
+++ b/opendj-sdk/opends/src/guitools/org/opends/guitools/uninstaller/Uninstaller.java
@@ -1173,7 +1173,8 @@
       int totalRatio = 0;
       ArrayList<Integer> cumulatedRatio = new ArrayList<Integer>();
       for (int i = 0; i < rootFiles.length; i++) {
-        if (filter.accept(rootFiles[i])) {
+        File f = rootFiles[i];
+        if (filter.accept(f)) {
           Installation installation = getInstallation();
           int relativeRatio;
           if (equalsOrDescendant(rootFiles[i],
@@ -1219,7 +1220,7 @@
                 beforeRatio);
         deleteRecursively(rootFiles[i], filter);
       }
-      deleteRecursively(instanceFile);
+      deleteRecursively(instanceFile,filter);
       hmRatio.put(UninstallProgressStep.DELETING_INSTALLATION_FILES, maxRatio);
     }
     if (!isVerbose())
@@ -1248,34 +1249,43 @@
    */
   private void deleteRecursively(File file, FileFilter filter)
           throws ApplicationException {
-    if (file.exists()) {
-      if (file.isFile()) {
+    File cfile ;
+    try
+    {
+      cfile = file.getCanonicalFile();
+    }
+    catch (Exception e)
+    {
+      cfile = file ;
+    }
+    if (cfile.exists()) {
+      if (cfile.isFile()) {
         if (filter != null) {
-          if (filter.accept(file)) {
-            delete(file);
+          if (filter.accept(cfile)) {
+            delete(cfile);
           }
         } else {
-          delete(file);
+          delete(cfile);
         }
       } else {
-        File[] children = file.listFiles();
+        File[] children = cfile.listFiles();
         if (children != null) {
           for (int i = 0; i < children.length; i++) {
             deleteRecursively(children[i], filter);
           }
         }
         if (filter != null) {
-          if (filter.accept(file)) {
-            delete(file);
+          if (filter.accept(cfile)) {
+            delete(cfile);
           }
         } else {
-          delete(file);
+          delete(cfile);
         }
       }
     } else {
       // Just tell that the file/directory does not exist.
       notifyListeners(getFormattedWarning(
-              INFO_PROGRESS_DELETING_FILE_DOES_NOT_EXIST.get(file.toString())));
+          INFO_PROGRESS_DELETING_FILE_DOES_NOT_EXIST.get(cfile.toString())));
     }
   }
 
@@ -1370,15 +1380,23 @@
       };
 
       Installation installation = getInstallation();
-      File[] parentFiles = {
-              installation.getLibrariesDirectory(),
-              installation.getBinariesDirectory(),
-              installation.getDatabasesDirectory(),
-              installation.getLogsDirectory(),
-              installation.getConfigurationDirectory(),
-              installation.getBackupDirectory(),
-              installation.getLdifDirectory()
+      File[] parentFiles  ;
+      try {
+        File[] tmp  = {
+              installation.getLibrariesDirectory().getCanonicalFile(),
+              installation.getBinariesDirectory().getCanonicalFile(),
+              installation.getDatabasesDirectory().getCanonicalFile(),
+              installation.getLogsDirectory().getCanonicalFile(),
+              installation.getConfigurationDirectory().getCanonicalFile(),
+              installation.getBackupDirectory().getCanonicalFile(),
+              installation.getLdifDirectory().getCanonicalFile()
       };
+        parentFiles = tmp ;
+      }
+      catch (Exception e)
+      {
+        return true;
+      }
 
       boolean accept =
               !installationPath.equals(file)
@@ -1391,8 +1409,9 @@
       }
 
       for (int i = 0; i < uData.length && accept; i++) {
+        File parent = parentFiles[i];
         accept &= uData[i] ||
-                !equalsOrDescendant(file, parentFiles[i]);
+                !equalsOrDescendant(file, parent);
       }
 
       LOG.log(Level.INFO, "accept for :"+file+" is: "+accept);

--
Gitblit v1.10.0