From 24fc3f1bec00d45b2950774b88940a5f558f763b Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Fri, 12 Jun 2009 13:35:23 +0000
Subject: [PATCH] Frontport of fix for issue 4047 ( Uninstall deletes systematically resources and classes directories).

---
 opends/src/guitools/org/opends/guitools/uninstaller/Uninstaller.java |   53 +++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 41 insertions(+), 12 deletions(-)

diff --git a/opends/src/guitools/org/opends/guitools/uninstaller/Uninstaller.java b/opends/src/guitools/org/opends/guitools/uninstaller/Uninstaller.java
index f1b59eb..e15a21f 100644
--- a/opends/src/guitools/org/opends/guitools/uninstaller/Uninstaller.java
+++ b/opends/src/guitools/org/opends/guitools/uninstaller/Uninstaller.java
@@ -649,26 +649,43 @@
     Message successMsg;
     Installation installation = getInstallation();
     String libPath = getPath(installation.getLibrariesDirectory());
+    String resourcesPath = getPath(installation.getResourcesDirectory());
+    String classesPath = getPath(installation.getClassesDirectory());
+    boolean resourcesDefined =
+     Utils.directoryExistsAndIsNotEmpty(resourcesPath);
+    boolean classesDefined =
+      Utils.directoryExistsAndIsNotEmpty(classesPath);
+    ArrayList<String> paths = new ArrayList<String>();
+    paths.add(libPath);
+    if (resourcesDefined)
+    {
+      paths.add(resourcesPath);
+    }
+    if (classesDefined)
+    {
+      paths.add(classesPath);
+    }
     if (isCli()) {
       if (getUninstallUserData().getRemoveLibrariesAndTools()) {
         String arg;
         if (isWindows()) {
           arg = installation.getUninstallBatFile() + getLineBreak().toString() +
-                  getTab() + libPath;
+                  getTab() + getStringFromCollection(paths,
+                      getLineBreak().toString());
         } else {
-          arg = libPath;
+          arg = getStringFromCollection(paths, getLineBreak().toString());
         }
         successMsg =
-                INFO_SUMMARY_UNINSTALL_FINISHED_SUCCESSFULLY_REMOVE_JARFILES_CLI
-                        .get(arg);
+            INFO_SUMMARY_UNINSTALL_FINISHED_SUCCESSFULLY_REMOVE_JARFILES_CLI
+            .get(arg);
       } else {
         successMsg = INFO_SUMMARY_UNINSTALL_FINISHED_SUCCESSFULLY_CLI.get();
       }
     } else {
       if (getUninstallUserData().getRemoveLibrariesAndTools()) {
         successMsg =
-                INFO_SUMMARY_UNINSTALL_FINISHED_SUCCESSFULLY_REMOVE_JARFILES
-                        .get(libPath);
+            INFO_SUMMARY_UNINSTALL_FINISHED_SUCCESSFULLY_REMOVE_JARFILES
+            .get(getStringFromCollection(paths, getLineBreak().toString()));
       } else {
         successMsg = INFO_SUMMARY_UNINSTALL_FINISHED_SUCCESSFULLY.get();
       }
@@ -1376,10 +1393,16 @@
     File quicksetupFile = installation.getQuicksetupJarFile();
     File openDSFile = installation.getOpenDSJarFile();
     File librariesFile = installation.getLibrariesDirectory();
-    File activationFile = new File(librariesFile, "activation.jar");
-    File aspectRuntimeFile = new File(librariesFile, "aspectjrt.jar");
+    File resourcesDir = installation.getResourcesDirectory();
+    File classesDir = installation.getClassesDirectory();
     File uninstallBatFile = installation.getUninstallBatFile();
 
+    boolean canDeleteResourcesDir =
+      !Utils.directoryExistsAndIsNotEmpty(resourcesDir.getAbsolutePath());
+    boolean canDeleteClassesDir =
+      !Utils.directoryExistsAndIsNotEmpty(classesDir.getAbsolutePath());
+
+
     File installationPath = installation.getRootDirectory();
 
     /**
@@ -1390,6 +1413,8 @@
       boolean[] uData = {
               userData.getRemoveLibrariesAndTools(),
               userData.getRemoveLibrariesAndTools(),
+              userData.getRemoveLibrariesAndTools(),
+              userData.getRemoveLibrariesAndTools(),
               userData.getRemoveDatabases(),
               userData.getRemoveLogs(),
               userData.getRemoveConfigurationAndSchema(),
@@ -1403,6 +1428,8 @@
         File[] tmp  = {
               installation.getLibrariesDirectory().getCanonicalFile(),
               installation.getBinariesDirectory().getCanonicalFile(),
+              installation.getResourcesDirectory().getCanonicalFile(),
+              installation.getClassesDirectory().getCanonicalFile(),
               installation.getDatabasesDirectory().getCanonicalFile(),
               installation.getLogsDirectory().getCanonicalFile(),
               installation.getConfigurationDirectory().getCanonicalFile(),
@@ -1417,10 +1444,12 @@
       }
 
       boolean accept =
-              !installationPath.equals(file)
-                      && !equalsOrDescendant(file, librariesFile)
-                      && !quicksetupFile.equals(file)
-                      && !openDSFile.equals(file);
+        !installationPath.equals(file)
+        && !equalsOrDescendant(file, librariesFile)
+        && (canDeleteClassesDir  || !equalsOrDescendant(file, classesDir))
+        && (canDeleteResourcesDir || !equalsOrDescendant(file, resourcesDir))
+        && !quicksetupFile.equals(file)
+        && !openDSFile.equals(file);
 
       if (accept && isWindows() && isCli()) {
         accept = !uninstallBatFile.equals(file);

--
Gitblit v1.10.0