mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Violette Roche-Montane
27.56.2013 6f163823cb9ca5e313699c657bb23dc7b39b586f
opends/src/server/org/opends/server/tools/upgrade/Upgrade.java
@@ -27,8 +27,6 @@
package org.opends.server.tools.upgrade;
import static org.opends.messages.ToolMessages.*;
import static org.opends.server.tools.upgrade.FormattedNotificationCallback.*;
import static org.opends.server.tools.upgrade.UpgradeTasks.*;
@@ -53,8 +51,6 @@
import org.opends.server.util.BuildVersion;
import org.opends.server.util.StaticUtils;
/**
 * This class contains the table of upgrade tasks that need performing when
 * upgrading from one version to another.
@@ -315,8 +311,6 @@
    // @formatter:on
  }
  /**
   * Returns a list containing all the tasks which are required in order to
   * upgrade from {@code fromVersion} to {@code toVersion}.
@@ -357,14 +351,15 @@
    isVersionCanBeUpdated(context);
    // Server must be offline.
    checkIfServerIsRunning();
    checkIfServerIsRunning(context);
    context.notify( INFO_UPGRADE_TITLE.get(), TITLE_CALLBACK);
    context.notify( INFO_UPGRADE_SUMMARY.get(context.getFromVersion()
        .toString(), context.getToVersion().toString()), NOTICE_CALLBACK);
    context.notify( INFO_UPGRADE_GENERAL_SEE_FOR_DETAILS
        .get(UpgradeUtils.getInstallationPath() + File.separator
            + UpgradeLog.UPGRADELOGNAME), NOTICE_CALLBACK);
    context.notify(INFO_UPGRADE_TITLE.get(), TITLE_CALLBACK);
    context.notify(
        INFO_UPGRADE_SUMMARY.get(context.getFromVersion().toString(), context
            .getToVersion().toString()), NOTICE_CALLBACK);
    context.notify(INFO_UPGRADE_GENERAL_SEE_FOR_DETAILS.get(UpgradeUtils
        .getInstallationPath()
        + File.separator + UpgradeLog.UPGRADELOGNAME), NOTICE_CALLBACK);
    // Checks License.
    checkLicence(context);
@@ -372,8 +367,8 @@
    /*
     * Get the list of required upgrade tasks.
     */
    final List<UpgradeTask> tasks = getUpgradeTasks(context.getFromVersion(),
        context.getToVersion());
    final List<UpgradeTask> tasks =
        getUpgradeTasks(context.getFromVersion(), context.getToVersion());
    if (tasks.isEmpty())
    {
      changeBuildInfoVersion(context);
@@ -381,10 +376,9 @@
    }
    /*
     * Verify tasks requirements.
     * E.g. if a task requires mandatory user interaction
     * and the application is non-interactive then, the process
     * may abort immediately.
     * Verify tasks requirements. E.g. if a task requires mandatory user
     * interaction and the application is non-interactive then, the process may
     * abort immediately.
     */
    for (final UpgradeTask task : tasks)
    {
@@ -401,12 +395,14 @@
    }
    // Starts upgrade
    final int userResponse = context.confirmYN(
        INFO_UPGRADE_DISPLAY_CONFIRM_START.get(), ConfirmationCallback.YES);
    final int userResponse =
        context.confirmYN(INFO_UPGRADE_DISPLAY_CONFIRM_START.get(),
            ConfirmationCallback.YES);
    if (userResponse == ConfirmationCallback.NO)
    {
      throw new ClientException(EXIT_CODE_ERROR,
          INFO_UPGRADE_ABORTED_BY_USER.get());
      final Message message = INFO_UPGRADE_ABORTED_BY_USER.get();
      context.notify(message, WARNING);
      throw new ClientException(EXIT_CODE_ERROR, message);
    }
    try
@@ -414,8 +410,7 @@
      /*
       * Perform the upgrade tasks.
       */
      context.notify(INFO_UPGRADE_PERFORMING_TASKS.get(),
          TITLE_CALLBACK);
      context.notify(INFO_UPGRADE_PERFORMING_TASKS.get(), TITLE_CALLBACK);
      for (final UpgradeTask task : tasks)
      {
        task.perform(context);
@@ -424,9 +419,9 @@
      if (UpgradeTasks.countErrors == 0)
      {
        /*
         * The end of a successful upgrade is marked up with the build info
         * file update and the license, if present, requires the creation of
         * an approval file.
         * The end of a successful upgrade is marked up with the build info file
         * update and the license, if present, requires the creation of an
         * approval file.
         */
        changeBuildInfoVersion(context);
@@ -434,8 +429,8 @@
      }
      else
      {
        context.notify(
            ERR_UPGRADE_FAILS.get(UpgradeTasks.countErrors), TITLE_CALLBACK);
        context.notify(ERR_UPGRADE_FAILS.get(UpgradeTasks.countErrors),
            TITLE_CALLBACK);
      }
      /*
@@ -451,27 +446,26 @@
    }
    catch (final ClientException e)
    {
      LOG.log(Level.SEVERE, e.getMessage());
      context.notify( e.getMessageObject());
      context.notify(e.getMessageObject(), ERROR_CALLBACK);
      throw e;
    }
    catch (final Exception e)
    {
      LOG.log(Level.SEVERE, e.getMessage());
      context.notify(ERR_UPGRADE_TASKS_FAIL.get(e.getMessage()));
      throw new ClientException(EXIT_CODE_ERROR, Message.raw(e.getMessage()));
      final Message message = ERR_UPGRADE_TASKS_FAIL.get(e.getMessage());
      context.notify(message, ERROR_CALLBACK);
      throw new ClientException(EXIT_CODE_ERROR, message);
    }
    finally
    {
      context.notify(INFO_UPGRADE_GENERAL_SEE_FOR_DETAILS
          .get(UpgradeUtils.getInstallationPath() + File.separator
              + UpgradeLog.UPGRADELOGNAME), NOTICE_CALLBACK);
      context.notify(INFO_UPGRADE_GENERAL_SEE_FOR_DETAILS.get(UpgradeUtils
          .getInstallationPath()
          + File.separator + UpgradeLog.UPGRADELOGNAME), NOTICE_CALLBACK);
      LOG.log(Level.CONFIG, INFO_UPGRADE_PROCESS_END.get().toString());
    }
  }
  private static void performPostUpgradeTasks(final UpgradeContext context,
      final List<UpgradeTask> tasks)
      throws ClientException
      final List<UpgradeTask> tasks) throws ClientException
  {
    boolean isOk = true;
    for (final UpgradeTask task : tasks)
@@ -518,7 +512,8 @@
   * @throws ClientException
   *           An exception is thrown if the server is currently running.
   */
  private final static void checkIfServerIsRunning() throws ClientException
  private final static void checkIfServerIsRunning(final UpgradeContext context)
      throws ClientException
  {
    final String lockFile = LockFileManager.getServerLockFileName();
@@ -529,9 +524,9 @@
      // running.
      if (!LockFileManager.acquireExclusiveLock(lockFile, failureReason))
      {
        LOG.log(Level.SEVERE, failureReason.toString());
        throw new ClientException(EXIT_CODE_ERROR,
            ERR_UPGRADE_REQUIRES_SERVER_OFFLINE.get());
        final Message message = ERR_UPGRADE_REQUIRES_SERVER_OFFLINE.get();
        context.notify(message, NOTICE_CALLBACK);
        throw new ClientException(EXIT_CODE_ERROR, message);
      }
    }
    finally
@@ -540,8 +535,6 @@
    }
  }
  /**
   * Checks if the version can be updated.
   *
@@ -559,22 +552,23 @@
       * If the server is already up to date then treat it as a successful
       * upgrade so that upgrade is idempotent.
       */
      final Message message = ERR_UPGRADE_VERSION_UP_TO_DATE.get(context
          .getToVersion().toString());
      final Message message =
          ERR_UPGRADE_VERSION_UP_TO_DATE.get(context.getToVersion().toString());
      context.notify(message, NOTICE_CALLBACK);
      throw new ClientException(EXIT_CODE_SUCCESS, message);
    }
    // The upgrade only supports version >= 2.4.5.
    if (context.getFromVersion().compareTo(UPGRADESUPPORTSVERSIONFROM) < 0)
    {
      throw new ClientException(EXIT_CODE_ERROR,
      final Message message =
          INFO_UPGRADE_VERSION_IS_NOT_SUPPORTED.get(UPGRADESUPPORTSVERSIONFROM
              .toString(), UPGRADESUPPORTSVERSIONFROM.toString()));
              .toString(), UPGRADESUPPORTSVERSIONFROM.toString());
      context.notify(message, NOTICE_CALLBACK);
      throw new ClientException(EXIT_CODE_ERROR, message);
    }
  }
  /**
   * Writes the up to date's version number within the build info file.
   *
@@ -591,20 +585,22 @@
    FileWriter buildInfo = null;
    try
    {
      buildInfo = new FileWriter(new File(UpgradeUtils.configDirectory,
          Installation.BUILDINFO_RELATIVE_PATH), false);
      buildInfo =
          new FileWriter(new File(UpgradeUtils.configDirectory,
              Installation.BUILDINFO_RELATIVE_PATH), false);
      // Write the new version
      buildInfo.write(context.getToVersion().toString());
      context.notify(INFO_UPGRADE_SUCCESSFUL.get(context
          .getFromVersion().toString(), context.getToVersion().toString()),
          TITLE_CALLBACK);
      context.notify(INFO_UPGRADE_SUCCESSFUL.get(context.getFromVersion()
          .toString(), context.getToVersion().toString()), TITLE_CALLBACK);
    }
    catch (IOException e)
    {
      throw new ClientException(EXIT_CODE_ERROR, Message.raw(e.getMessage()));
      final Message message = Message.raw(e.getMessage());
      context.notify(message, ERROR_CALLBACK);
      throw new ClientException(EXIT_CODE_ERROR, message);
    }
    finally
    {
@@ -612,7 +608,6 @@
    }
  }
  private static void checkLicence(final UpgradeContext context)
      throws ClientException
  {