From f42398b67ac6f01f41e08939a48a7977630eebf8 Mon Sep 17 00:00:00 2001
From: Gaetan Boismal <gaetan.boismal@forgerock.com>
Date: Mon, 11 Apr 2016 17:22:17 +0000
Subject: [PATCH] OPENDJ-2622 Code cleanup
---
opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/Installer.java | 437 +++++++++++++++++++++--------------------------------
1 files changed, 175 insertions(+), 262 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/Installer.java b/opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/Installer.java
index 57d4252..5188ce0 100644
--- a/opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/Installer.java
+++ b/opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/Installer.java
@@ -231,15 +231,13 @@
/** This map contains the summary associated with each step. */
private final Map<ProgressStep, LocalizableMessage> hmSummary = new HashMap<>();
- private ApplicationException runError;
+ private ApplicationException applicationException;
- /**
- * Actually performs the install in this thread. The thread is blocked.
- */
+ /** Actually performs the install in this thread. The thread is blocked. */
@Override
public void run()
{
- runError = null;
+ applicationException = null;
PrintStream origErr = System.err;
PrintStream origOut = System.out;
try
@@ -263,69 +261,26 @@
if (isWindows() && getUserData().getEnableWindowsService())
{
- if (isVerbose())
- {
- notifyListeners(getTaskSeparator());
- }
- setCurrentProgressStep(InstallProgressStep.ENABLING_WINDOWS_SERVICE);
+ showStepStarted(InstallProgressStep.ENABLING_WINDOWS_SERVICE);
enableWindowsService();
checkAbort();
}
if (mustStart())
{
- if (isStartVerbose())
- {
- notifyListeners(getTaskSeparator());
- }
- setCurrentProgressStep(InstallProgressStep.STARTING_SERVER);
- PointAdder pointAdder = new PointAdder();
- if (!isStartVerbose())
- {
- notifyListeners(getFormattedProgress(
- INFO_PROGRESS_STARTING_NON_VERBOSE.get()));
- pointAdder.start();
- }
- try
- {
- new ServerController(this).startServer(!isStartVerbose());
- }
- finally
- {
- if (!isStartVerbose())
- {
- pointAdder.stop();
- }
- }
- if (!isStartVerbose())
- {
- notifyListeners(getFormattedDoneWithLineBreak());
- }
- else
- {
- notifyListeners(getLineBreak());
- }
- checkAbort();
+ startServer();
}
if (mustCreateAds())
{
- if (isVerbose())
- {
- notifyListeners(getTaskSeparator());
- }
- setCurrentProgressStep(InstallProgressStep.CONFIGURING_ADS);
+ showStepStarted(InstallProgressStep.CONFIGURING_ADS);
updateADS();
checkAbort();
}
if (mustConfigureReplication())
{
- if (isVerbose())
- {
- notifyListeners(getTaskSeparator());
- }
- setCurrentProgressStep(InstallProgressStep.CONFIGURING_REPLICATION);
+ showStepStarted(InstallProgressStep.CONFIGURING_REPLICATION);
createReplicatedBackendsIfRequired();
configureReplication();
checkAbort();
@@ -333,33 +288,15 @@
if (mustInitializeSuffixes())
{
- if (isVerbose())
- {
- notifyListeners(getTaskSeparator());
- }
- setCurrentProgressStep(
- InstallProgressStep.INITIALIZE_REPLICATED_SUFFIXES);
+ showStepStarted(InstallProgressStep.INITIALIZE_REPLICATED_SUFFIXES);
initializeSuffixes();
checkAbort();
}
if (mustStop())
{
- if (isVerbose())
- {
- notifyListeners(getTaskSeparator());
- }
- setCurrentProgressStep(InstallProgressStep.STOPPING_SERVER);
- if (!isVerbose())
- {
- notifyListeners(getFormattedWithPoints(
- INFO_PROGRESS_STOPPING_NON_VERBOSE.get()));
- }
- new ServerController(this).stopServer(!isVerbose());
- if (!isVerbose())
- {
- notifyListeners(getFormattedDoneWithLineBreak());
- }
+ showStepStarted(InstallProgressStep.STOPPING_SERVER);
+ stopServer(new ServerController(this));
}
checkAbort();
@@ -367,7 +304,8 @@
setCurrentProgressStep(InstallProgressStep.FINISHED_SUCCESSFULLY);
notifyListeners(null);
tempLogFile.deleteLogFileAfterSuccess();
- } catch (ApplicationException ex)
+ }
+ catch (final ApplicationException ex)
{
logger.error(LocalizableMessage.raw("Caught exception: "+ex, ex));
if (ReturnCode.CANCELED.equals(ex.getType())) {
@@ -375,67 +313,16 @@
setCurrentProgressStep(InstallProgressStep.FINISHED_CANCELED);
notifyListeners(null);
} else {
- // Stop the server if necessary
- Installation installation = getInstallation();
- if (installation.getStatus().isServerRunning()) {
- try {
- if (!isVerbose())
- {
- notifyListeners(getFormattedWithPoints(
- INFO_PROGRESS_STOPPING_NON_VERBOSE.get()));
- }
- new ServerController(installation).stopServer(!isVerbose());
- if (!isVerbose())
- {
- notifyListeners(getFormattedDoneWithLineBreak());
- }
- } catch (Throwable t) {
- logger.info(LocalizableMessage.raw("error stopping server", t));
- }
- }
- notifyListeners(getLineBreak());
- updateSummaryWithServerState(hmSummary, true);
- setCurrentProgressStep(InstallProgressStep.FINISHED_WITH_ERROR);
- LocalizableMessage html = getFormattedError(ex, true);
- notifyListeners(html);
- logger.error(LocalizableMessage.raw("Error installing.", ex));
- notifyListeners(getLineBreak());
- notifyListenersOfLog(true);
+ handleInstallationError(ex);
}
- runError = ex;
+ applicationException = ex;
}
- catch (Throwable t)
+ catch (final Throwable t)
{
- // Stop the server if necessary
- Installation installation = getInstallation();
- if (installation.getStatus().isServerRunning()) {
- try {
- if (!isVerbose())
- {
- notifyListeners(getFormattedWithPoints(
- INFO_PROGRESS_STOPPING_NON_VERBOSE.get()));
- }
- new ServerController(installation).stopServer(!isVerbose());
- if (!isVerbose())
- {
- notifyListeners(getFormattedDoneWithLineBreak());
- }
- } catch (Throwable t2) {
- logger.info(LocalizableMessage.raw("error stopping server", t2));
- }
- }
- notifyListeners(getLineBreak());
- updateSummaryWithServerState(hmSummary, true);
- setCurrentProgressStep(InstallProgressStep.FINISHED_WITH_ERROR);
- ApplicationException ex = new ApplicationException(
- ReturnCode.BUG,
- getThrowableMsg(INFO_BUG_MSG.get(), t), t);
- LocalizableMessage msg = getFormattedError(ex, true);
- notifyListeners(msg);
- logger.error(LocalizableMessage.raw("Error installing.", t));
- notifyListeners(getLineBreak());
- notifyListenersOfLog(true);
- runError = ex;
+ final ApplicationException ex =
+ new ApplicationException(ReturnCode.BUG, getThrowableMsg(INFO_BUG_MSG.get(), t), t);
+ handleInstallationError(ex);
+ applicationException = ex;
}
finally
{
@@ -444,14 +331,92 @@
}
}
- /** {@inheritDoc} */
+ private void showStepStarted(final InstallProgressStep step)
+ {
+ if (isVerbose())
+ {
+ notifyListeners(getTaskSeparator());
+ }
+ setCurrentProgressStep(step);
+ }
+
+ private void startServer() throws ApplicationException
+ {
+ final boolean verbose = isStartVerbose();
+ if (verbose)
+ {
+ notifyListeners(getTaskSeparator());
+ }
+ setCurrentProgressStep(InstallProgressStep.STARTING_SERVER);
+ final PointAdder pointAdder = new PointAdder();
+ if (!verbose)
+ {
+ notifyListeners(getFormattedProgress(INFO_PROGRESS_STARTING_NON_VERBOSE.get()));
+ pointAdder.start();
+ }
+ try
+ {
+ new ServerController(this).startServer(!verbose);
+ }
+ finally
+ {
+ if (!verbose)
+ {
+ pointAdder.stop();
+ }
+ }
+ notifyListeners(verbose ? getLineBreak() : getFormattedDoneWithLineBreak());
+ checkAbort();
+ }
+
+ private void handleInstallationError(final ApplicationException exception)
+ {
+ stopServerIfNeeded();
+ notifyListeners(getLineBreak());
+ updateSummaryWithServerState(hmSummary, true);
+ setCurrentProgressStep(InstallProgressStep.FINISHED_WITH_ERROR);
+ notifyListeners(getFormattedError(exception, true));
+ logger.error(LocalizableMessage.raw("Error installing.", exception));
+ notifyListeners(getLineBreak());
+ notifyListenersOfLog(true);
+ }
+
+ private void stopServerIfNeeded()
+ {
+ final Installation installation = getInstallation();
+ if (installation.getStatus().isServerRunning())
+ {
+ try
+ {
+ stopServer(new ServerController(installation));
+ }
+ catch (final ApplicationException t)
+ {
+ logger.info(LocalizableMessage.raw("error stopping server", t));
+ }
+ }
+ }
+
+ private void stopServer(final ServerController serverController) throws ApplicationException
+ {
+ if (isVerbose())
+ {
+ serverController.stopServer(false);
+ }
+ else
+ {
+ notifyListeners(getFormattedWithPoints(INFO_PROGRESS_STOPPING_NON_VERBOSE.get()));
+ serverController.stopServer(true);
+ notifyListeners(getFormattedDoneWithLineBreak());
+ }
+ }
+
@Override
public Integer getRatio(ProgressStep status)
{
return hmRatio.get(status);
}
- /** {@inheritDoc} */
@Override
public LocalizableMessage getSummary(ProgressStep status)
{
@@ -463,16 +428,12 @@
* @return the ApplicationException raised during the run() method, if any.
* null otherwise.
*/
- public ApplicationException getRunError()
+ public ApplicationException getApplicationException()
{
- return runError;
+ return applicationException;
}
- /**
- * Called when the user elects to cancel this operation.
- */
- protected void uninstall() {
-
+ private void uninstall() {
notifyListeners(getTaskSeparator());
if (!isVerbose())
{
@@ -486,89 +447,10 @@
Installation installation = getInstallation();
FileManager fm = new FileManager(this);
- // Stop the server if necessary
- if (installation.getStatus().isServerRunning()) {
- try {
- if (!isVerbose())
- {
- notifyListeners(getFormattedWithPoints(
- INFO_PROGRESS_STOPPING_NON_VERBOSE.get()));
- }
- new ServerController(installation).stopServer(!isVerbose());
- if (!isVerbose())
- {
- notifyListeners(getFormattedDoneWithLineBreak());
- }
- } catch (ApplicationException e) {
- logger.info(LocalizableMessage.raw("error stopping server", e));
- }
- }
-
+ stopServerIfNeeded();
uninstallServices();
-
- // Revert to the base configuration
- try {
- File newConfig = fm.copy(installation.getBaseConfigurationFile(),
- installation.getConfigurationDirectory(),
- /*overwrite=*/true);
- fm.rename(newConfig, installation.getCurrentConfigurationFile());
-
- } catch (ApplicationException ae) {
- logger.info(LocalizableMessage.raw("failed to restore base configuration", ae));
- }
-
- // Cleanup SSL if necessary
- SecurityOptions sec = getUserData().getSecurityOptions();
- if (sec.getEnableSSL() || sec.getEnableStartTLS()) {
- if (SecurityOptions.CertificateType.SELF_SIGNED_CERTIFICATE.equals(
- sec.getCertificateType())) {
- CertificateManager cm = new CertificateManager(
- getSelfSignedKeystorePath(),
- CertificateManager.KEY_STORE_TYPE_JKS,
- getSelfSignedCertificatePwd());
- try {
- for (String alias : SELF_SIGNED_CERT_ALIASES)
- {
- if (cm.aliasInUse(alias))
- {
- cm.removeCertificate(alias);
- }
- }
- } catch (KeyStoreException e) {
- logger.info(LocalizableMessage.raw("Error deleting self signed certification", e));
- }
- }
-
- File keystore = new File(installation.getConfigurationDirectory(),
- "keystore");
- if (keystore.exists()) {
- try {
- fm.delete(keystore);
- } catch (ApplicationException e) {
- logger.info(LocalizableMessage.raw("Failed to delete keystore", e));
- }
- }
-
- File keystorePin = new File(installation.getConfigurationDirectory(),
- "keystore.pin");
- if (keystorePin.exists()) {
- try {
- fm.delete(keystorePin);
- } catch (ApplicationException e) {
- logger.info(LocalizableMessage.raw("Failed to delete keystore.pin", e));
- }
- }
-
- File truststore = new File(installation.getConfigurationDirectory(),
- "truststore");
- if (truststore.exists()) {
- try {
- fm.delete(truststore);
- } catch (ApplicationException e) {
- logger.info(LocalizableMessage.raw("Failed to delete truststore", e));
- }
- }
- }
+ revertToBaseConfiguration(installation, fm);
+ cleanupSSLIfNeeded(installation, fm);
// Remove the databases
try {
@@ -583,31 +465,73 @@
}
}
+ private void revertToBaseConfiguration(final Installation installation, final FileManager fm)
+ {
+ try
+ {
+ File newConfig = fm.copy(installation.getBaseConfigurationFile(),
+ installation.getConfigurationDirectory(), /*overwrite=*/ true);
+ fm.rename(newConfig, installation.getCurrentConfigurationFile());
+ }
+ catch (ApplicationException ae)
+ {
+ logger.info(LocalizableMessage.raw("failed to restore base configuration", ae));
+ }
+ }
+
+ private void cleanupSSLIfNeeded(final Installation installation, final FileManager fm)
+ {
+ final SecurityOptions sec = getUserData().getSecurityOptions();
+ if (sec.getEnableSSL() || sec.getEnableStartTLS())
+ {
+ if (SecurityOptions.CertificateType.SELF_SIGNED_CERTIFICATE.equals(sec.getCertificateType()))
+ {
+ final CertificateManager cm = new CertificateManager(
+ getSelfSignedKeystorePath(), CertificateManager.KEY_STORE_TYPE_JKS, getSelfSignedCertificatePwd());
+ try
+ {
+ for (final String alias : SELF_SIGNED_CERT_ALIASES)
+ {
+ if (cm.aliasInUse(alias))
+ {
+ cm.removeCertificate(alias);
+ }
+ }
+ }
+ catch (KeyStoreException e)
+ {
+ logger.info(LocalizableMessage.raw("Error deleting self signed certification", e));
+ }
+ }
+
+ final File configDir = installation.getConfigurationDirectory();
+ removeFileIfExists(fm, configDir, "keystore");
+ removeFileIfExists(fm, configDir, "keystore.pin");
+ removeFileIfExists(fm, configDir, "truststore");
+ }
+ }
+
+ private void removeFileIfExists(final FileManager fileManager, final File configDir, final String fileName)
+ {
+ final File file = new File(configDir, fileName);
+ if (file.exists())
+ {
+ try
+ {
+ fileManager.delete(file);
+ }
+ catch (ApplicationException e)
+ {
+ logger.info(LocalizableMessage.raw("Failed to delete " + fileName, e));
+ }
+ }
+ }
+
private void initMaps()
{
initSummaryMap(hmSummary, true);
- /*
- * hmTime contains the relative time that takes for each task to be
- * accomplished. For instance if downloading takes twice the time of
- * extracting, the value for downloading will be the double of the value for
- * extracting.
- */
- Map<ProgressStep, Integer> hmTime = new HashMap<>();
- hmTime.put(InstallProgressStep.CONFIGURING_SERVER, 5);
- hmTime.put(InstallProgressStep.CREATING_BASE_ENTRY, 10);
- hmTime.put(InstallProgressStep.IMPORTING_LDIF, 20);
- hmTime.put(InstallProgressStep.IMPORTING_AUTOMATICALLY_GENERATED, 20);
- hmTime.put(InstallProgressStep.CONFIGURING_REPLICATION, 10);
- hmTime.put(InstallProgressStep.ENABLING_WINDOWS_SERVICE, 5);
- hmTime.put(InstallProgressStep.STARTING_SERVER, 10);
- hmTime.put(InstallProgressStep.STOPPING_SERVER, 5);
- hmTime.put(InstallProgressStep.CONFIGURING_ADS, 5);
- hmTime.put(InstallProgressStep.INITIALIZE_REPLICATED_SUFFIXES, 25);
-
- int totalTime = 0;
- List<InstallProgressStep> steps = new ArrayList<>();
- totalTime += hmTime.get(InstallProgressStep.CONFIGURING_SERVER);
+ final List<InstallProgressStep> steps = new ArrayList<>();
steps.add(InstallProgressStep.CONFIGURING_SERVER);
if (createNotReplicatedSuffix())
{
@@ -615,80 +539,69 @@
{
case CREATE_BASE_ENTRY:
steps.add(InstallProgressStep.CREATING_BASE_ENTRY);
- totalTime += hmTime.get(InstallProgressStep.CREATING_BASE_ENTRY);
break;
case IMPORT_FROM_LDIF_FILE:
steps.add(InstallProgressStep.IMPORTING_LDIF);
- totalTime += hmTime.get(InstallProgressStep.IMPORTING_LDIF);
break;
case IMPORT_AUTOMATICALLY_GENERATED_DATA:
steps.add(InstallProgressStep.IMPORTING_AUTOMATICALLY_GENERATED);
- totalTime += hmTime.get(
- InstallProgressStep.IMPORTING_AUTOMATICALLY_GENERATED);
break;
}
}
if (isWindows() && getUserData().getEnableWindowsService())
{
- totalTime += hmTime.get(InstallProgressStep.ENABLING_WINDOWS_SERVICE);
steps.add(InstallProgressStep.ENABLING_WINDOWS_SERVICE);
}
if (mustStart())
{
- totalTime += hmTime.get(InstallProgressStep.STARTING_SERVER);
steps.add(InstallProgressStep.STARTING_SERVER);
}
if (mustCreateAds())
{
- totalTime += hmTime.get(InstallProgressStep.CONFIGURING_ADS);
steps.add(InstallProgressStep.CONFIGURING_ADS);
}
if (mustConfigureReplication())
{
steps.add(InstallProgressStep.CONFIGURING_REPLICATION);
- totalTime += hmTime.get(InstallProgressStep.CONFIGURING_REPLICATION);
}
if (mustInitializeSuffixes())
{
- totalTime += hmTime.get(
- InstallProgressStep.INITIALIZE_REPLICATED_SUFFIXES);
steps.add(InstallProgressStep.INITIALIZE_REPLICATED_SUFFIXES);
}
if (mustStop())
{
- totalTime += hmTime.get(InstallProgressStep.STOPPING_SERVER);
steps.add(InstallProgressStep.STOPPING_SERVER);
}
+ int totalTime = 0;
+ for (final InstallProgressStep step : steps) {
+ totalTime += step.getRelativeDuration();
+ }
+
int cumulatedTime = 0;
for (InstallProgressStep s : steps)
{
- Integer statusTime = hmTime.get(s);
+ Integer statusTime = s.getRelativeDuration();
hmRatio.put(s, (100 * cumulatedTime) / totalTime);
- if (statusTime != null)
- {
- cumulatedTime += statusTime;
- }
+ cumulatedTime += statusTime;
}
hmRatio.put(InstallProgressStep.FINISHED_SUCCESSFULLY, 100);
hmRatio.put(InstallProgressStep.FINISHED_WITH_ERROR, 100);
hmRatio.put(InstallProgressStep.FINISHED_CANCELED, 100);
}
- /** {@inheritDoc} */
@Override
public String getInstallationPath()
{
return Utils.getInstallPathFromClasspath();
}
- /** {@inheritDoc} */
@Override
public String getInstancePath()
{
--
Gitblit v1.10.0