From e9d8e51279f417f2f4948210b1cd1484cadf0bda Mon Sep 17 00:00:00 2001
From: Chris Ridd <chris.ridd@forgerock.com>
Date: Thu, 20 Aug 2015 17:19:24 +0000
Subject: [PATCH] CR-8001 OPENDJ-2216 Add upgrade task which reruns dsjavaproperties

---
 opendj-server-legacy/src/main/java/org/opends/server/tools/JavaPropertiesTool.java      |    2 +-
 opendj-server-legacy/src/main/java/org/opends/server/tools/upgrade/Upgrade.java         |    4 ++++
 opendj-server-legacy/src/main/java/org/opends/server/tools/upgrade/UpgradeTasks.java    |   31 +++++++++++++++++++++++++++++++
 opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/InstallerHelper.java |   10 ++--------
 opendj-server-legacy/src/messages/org/opends/messages/tool.properties                   |    3 +++
 5 files changed, 41 insertions(+), 9 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/InstallerHelper.java b/opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/InstallerHelper.java
index 62da6e5..2b607b0 100644
--- a/opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/InstallerHelper.java
+++ b/opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/InstallerHelper.java
@@ -1147,14 +1147,8 @@
     final String destinationFile = Utils.getPath(libDir, isWindows() ? Installation.SET_JAVA_PROPERTIES_FILE_WINDOWS
                                                                      : Installation.SET_JAVA_PROPERTIES_FILE_UNIX);
     // Launch the script
-    String[] args =
-    {
-        "--propertiesFile", propertiesFile,
-        "--destinationFile", destinationFile,
-        "--quiet"
-    };
-
-    int returnValue = JavaPropertiesTool.mainCLI(args);
+    int returnValue = JavaPropertiesTool.mainCLI(
+        "--propertiesFile", propertiesFile, "--destinationFile", destinationFile, "--quiet");
     if (JavaPropertiesTool.ErrorReturnCode.SUCCESSFUL.getReturnCode() != returnValue &&
         JavaPropertiesTool.ErrorReturnCode.SUCCESSFUL_NOP.getReturnCode() != returnValue)
     {
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/JavaPropertiesTool.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/JavaPropertiesTool.java
index 37804c6..c5d24f6 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/JavaPropertiesTool.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/JavaPropertiesTool.java
@@ -156,7 +156,7 @@
    * @return The error code.
    */
 
-  public static int mainCLI(String[] args)
+  public static int mainCLI(String... args)
   {
     return mainCLI(args, System.out, System.err, System.in);
   }
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/upgrade/Upgrade.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/upgrade/Upgrade.java
index 1159ee2..f6c840d 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/upgrade/Upgrade.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/upgrade/Upgrade.java
@@ -403,6 +403,10 @@
         deleteFile(new File(binDirectory, "dsframework")),
         deleteFile(new File(batDirectory, "dsframework.bat")));
 
+    /** See OPENDJ-1322 and OPENDJ-1067 */
+    register("2.7.0.9206",
+        rerunJavaPropertiesTool(INFO_UPGRADE_TASK_9206_SUMMARY.get()));
+
     /*
      * All upgrades will refresh the server configuration schema and generate
      * a new upgrade folder.
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/upgrade/UpgradeTasks.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/upgrade/UpgradeTasks.java
index 82fd890..dceb4e6 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/upgrade/UpgradeTasks.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/upgrade/UpgradeTasks.java
@@ -38,6 +38,7 @@
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
 import org.forgerock.opendj.ldap.Filter;
+import org.opends.server.tools.JavaPropertiesTool;
 import org.opends.server.tools.RebuildIndex;
 import org.opends.server.util.BuildVersion;
 import org.opends.server.util.ChangeOperationType;
@@ -335,6 +336,36 @@
   }
 
   /**
+   * Re-run the dsjavaproperties tool to rewrite the set-java-home script/batch file.
+   *
+   * @param summary
+   *          The summary of the task.
+   * @return An upgrade task which runs dsjavaproperties.
+   */
+  public static UpgradeTask rerunJavaPropertiesTool(final LocalizableMessage summary)
+  {
+    return new AbstractUpgradeTask()
+    {
+      @Override
+      public void perform(UpgradeContext context) throws ClientException
+      {
+        logger.debug(summary);
+
+        final ProgressNotificationCallback pnc = new ProgressNotificationCallback(0, summary, 50);
+        context.notifyProgress(pnc);
+
+        int returnValue = JavaPropertiesTool.mainCLI("--quiet");
+        context.notifyProgress(pnc.setProgress(100));
+
+        if (JavaPropertiesTool.ErrorReturnCode.SUCCESSFUL.getReturnCode() != returnValue &&
+                JavaPropertiesTool.ErrorReturnCode.SUCCESSFUL_NOP.getReturnCode() != returnValue) {
+          throw new ClientException(ReturnCode.ERROR_UNEXPECTED, ERR_UPGRADE_DSJAVAPROPERTIES_FAILED.get());
+        }
+      }
+    };
+  }
+
+  /**
    * Creates a group of tasks which will only be invoked if the current version
    * is more recent than the provided version. This may be useful in cases where
    * a regression was introduced in version X and resolved in a later version Y.
diff --git a/opendj-server-legacy/src/messages/org/opends/messages/tool.properties b/opendj-server-legacy/src/messages/org/opends/messages/tool.properties
index 5cea53f..9752dec 100644
--- a/opendj-server-legacy/src/messages/org/opends/messages/tool.properties
+++ b/opendj-server-legacy/src/messages/org/opends/messages/tool.properties
@@ -2568,6 +2568,8 @@
 stops
 INFO_UPGRADE_CLASSES_FOLDER_RENAMED_1852=The classes folder has been renamed to \
 '%s' to avoid compatibility issues
+ERR_UPGRADE_DSJAVAPROPERTIES_FAILED_1853=The dsjavaproperties tool failed to run. \
+Please rerun dsjavaproperties manually
 
 # Upgrade tasks
 INFO_UPGRADE_TASK_6869_SUMMARY_10000=Fixing de-DE collation matching rule OID
@@ -2616,6 +2618,7 @@
 INFO_UPGRADE_TASK_11339_SUMMARY_10036=Removing config for 'Extensions'
 INFO_UPGRADE_TASK_11476_SUMMARY_10037=Removing config for 'File System Entry Cache'
 INFO_UPGRADE_TASK_12226_SUMMARY_10038=Removing config for 'Entry Cache Preload'
+INFO_UPGRADE_TASK_9206_SUMMARY_10039=Rerunning dsjavaproperties
 
 # Strings for generated reference documentation.
 REF_SHORT_DESC_BACKUP_15000=back up OpenDJ directory data

--
Gitblit v1.10.0