From 1690ca6b73e677aad3500fd03ad906cf2b3446ac Mon Sep 17 00:00:00 2001
From: kenneth_suter <kenneth_suter@localhost>
Date: Tue, 29 May 2007 22:03:02 +0000
Subject: [PATCH] This commit addresses issue 1599 as well as introduces some other changes suggested by Brian after reviewing the SWAED guidelines:
---
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/upgrader/Upgrader.java | 25 ++++++++----
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/ServerHealthChecker.java | 2
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/ExternalTools.java | 13 +++---
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/InProcessServerController.java | 49 ++++++++++++++----------
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ui/GuiApplication.java | 5 ++
5 files changed, 58 insertions(+), 36 deletions(-)
diff --git a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ui/GuiApplication.java b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ui/GuiApplication.java
index e3f15d4..c5e5e5a 100644
--- a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ui/GuiApplication.java
+++ b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ui/GuiApplication.java
@@ -481,7 +481,10 @@
if (getInstallation().getStatus().isServerRunning()) {
control.stopServer(true);
}
- new InProcessServerController(getInstallation()).startServer(true);
+ InProcessServerController ipsc =
+ new InProcessServerController(getInstallation());
+ ipsc.disableConnectionHandlers(true);
+ ipsc.startServer();
} catch (IOException e) {
String msg = "Failed to determine server state: " +
e.getLocalizedMessage();
diff --git a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/upgrader/Upgrader.java b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/upgrader/Upgrader.java
index c9e96c5..63a45e7 100644
--- a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/upgrader/Upgrader.java
+++ b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/upgrader/Upgrader.java
@@ -47,8 +47,9 @@
import org.opends.quicksetup.util.InProcessServerController;
import org.opends.quicksetup.util.ServerHealthChecker;
import org.opends.quicksetup.util.FileManager;
-import org.opends.quicksetup.util.OperationOutput;
+
import org.opends.quicksetup.util.ExternalTools;
+import org.opends.quicksetup.util.OperationOutput;
import org.opends.quicksetup.ui.GuiApplication;
import org.opends.quicksetup.ui.QuickSetupDialog;
import org.opends.quicksetup.ui.UIFactory;
@@ -59,7 +60,6 @@
import org.opends.quicksetup.upgrader.ui.UpgraderReviewPanel;
import org.opends.quicksetup.upgrader.ui.WelcomePanel;
-import javax.swing.*;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.FileFilter;
@@ -859,17 +859,21 @@
LOG.log(Level.INFO, "starting server");
setCurrentProgressStep(
UpgradeProgressStep.PREPARING_CUSTOMIZATIONS);
- startServerWithoutConnectionHandlers();
+ InProcessServerController ipsc =
+ new InProcessServerController(getInstallation());
+ InProcessServerController.disableConnectionHandlers(true);
+ ipsc.startServer();
+ LOG.log(Level.INFO, "start server finished");
notifyListeners(formatter.getFormattedDone() +
formatter.getLineBreak());
- LOG.log(Level.INFO, "start server finished");
- } catch (ApplicationException e) {
+ } catch (Exception e) {
notifyListeners(formatter.getFormattedError() +
formatter.getLineBreak());
LOG.log(Level.INFO,
- "Error starting server in process in order to apply custom" +
+ "Error starting server in order to apply custom" +
"schema and/or configuration", e);
- throw e;
+ throw new ApplicationException(ApplicationException.Type.APPLICATION,
+ "Error starting server:" + e.getLocalizedMessage(), e);
}
checkAbort();
@@ -919,6 +923,7 @@
// This class imports classes from the server
new InProcessServerController(
getInstallation()).stopServer();
+ InProcessServerController.disableConnectionHandlers(false);
LOG.log(Level.INFO, "server stopped");
} catch (Throwable t) {
LOG.log(Level.INFO, "Error stopping server", t);
@@ -1342,7 +1347,11 @@
throws ApplicationException {
ExternalTools et = new ExternalTools(getInstallation());
try {
- OperationOutput oo = et.ldifDiff(source, target, output);
+ String[] args = new String[] {
+ "-o", Utils.getPath(output),
+ "-O",
+ };
+ OperationOutput oo = et.ldifDiff(source, target, args);
int ret = oo.getReturnCode();
if (ret != 0) {
throw new ApplicationException(
diff --git a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/ExternalTools.java b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/ExternalTools.java
index d3f64ab..7988eeb 100644
--- a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/ExternalTools.java
+++ b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/ExternalTools.java
@@ -80,12 +80,12 @@
* Backs up all the databases to a specified directory.
* @param source File representing the source data
* @param target File representing the target data
- * @param output File representing the output data
+ * @param otherArgs File representing the output data
* @return OperationOutput containing information about the operation
* @throws java.io.IOException if the process could not be started
* @throws InterruptedException if the process was prematurely interrupted
*/
- public OperationOutput ldifDiff(File source, File target, File output)
+ public OperationOutput ldifDiff(File source, File target, String... otherArgs)
throws IOException, InterruptedException {
String toolName = Installation.LDIF_DIFF;
List<String> args = new ArrayList<String>();
@@ -94,10 +94,11 @@
args.add(Utils.getPath(source));
args.add("-t"); // target LDIF
args.add(Utils.getPath(target));
- args.add("-o"); // output LDIF
- args.add(Utils.getPath(output));
- args.add("-O"); // overwrite
- args.add("-S"); // single-value changes
+ if (otherArgs != null) {
+ for (String otherArg : otherArgs) {
+ args.add(otherArg);
+ }
+ }
return startProcess(toolName, args);
}
diff --git a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/InProcessServerController.java b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/InProcessServerController.java
index 5365a58..d123796 100644
--- a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/InProcessServerController.java
+++ b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/InProcessServerController.java
@@ -213,9 +213,8 @@
* Directory Server.
*/
public OperationOutput startServer(boolean disableConnectionHandlers)
- throws
- org.opends.server.types.InitializationException,
- org.opends.server.config.ConfigException {
+ throws InitializationException, ConfigException
+ {
LOG.log(Level.INFO, "Starting in process server with connection handlers " +
(disableConnectionHandlers ? "disabled" : "enabled"));
System.setProperty(
@@ -225,6 +224,23 @@
}
/**
+ * Disables the server's connection handlers upon startup. The server
+ * when started is otherwise up and running but will not accept any
+ * connections from external clients (i.e., does not create or initialize the
+ * connection handlers). This could be useful, for example, in an upgrade mode
+ * where it might be helpful to start the server but don't want it to appear
+ * externally as if the server is online without connection handlers
+ * listening.
+ * @param disable boolean that when true disables connection handlers when
+ * the server is started.
+ */
+ static public void disableConnectionHandlers(boolean disable) {
+ System.setProperty(
+ "org.opends.server.DisableConnectionHandlers",
+ disable ? "true" : "false");
+ }
+
+ /**
* Stops a server that had been running 'in process'.
*/
public void stopServer() {
@@ -333,8 +349,7 @@
}
/**
- * Applies configuration or schema customizations.
- * NOTE: Assumes that the server is running in process.
+ * Applies modifications contained in an LDIF file to the server.
*
* @param ldifFile LDIF file to apply
* @throws IOException if there is an IO Error
@@ -354,7 +369,7 @@
new LDIFReader(importCfg);
org.opends.server.util.ChangeRecordEntry cre;
while (null != (cre = ldifReader.readChangeRecord(false))) {
- if (cre instanceof org.opends.server.util.ModifyChangeRecordEntry) {
+ if (cre instanceof ModifyChangeRecordEntry) {
ModifyChangeRecordEntry mcre =
(ModifyChangeRecordEntry) cre;
ByteString dnByteString =
@@ -363,29 +378,23 @@
ModifyOperation op =
cc.processModify(dnByteString, mcre.getModifications());
ResultCode rc = op.getResultCode();
- if (rc.equals(
- ResultCode.
- OBJECTCLASS_VIOLATION)) {
- // try again without schema checking
- DirectoryServer.setCheckSchema(false);
- op = cc.processModify(dnByteString, mcre.getModifications());
- rc = op.getResultCode();
- }
if (rc.equals(ResultCode.
SUCCESS)) {
LOG.log(Level.INFO, "processed server modification " +
- (DirectoryServer.checkSchema() ?
- ":" : "(schema checking off):" +
- modListToString(op.getModifications())));
- if (!DirectoryServer.checkSchema()) {
- DirectoryServer.setCheckSchema(true);
- }
+ modListToString(op.getModifications()));
} else if (rc.equals(
ResultCode.
ATTRIBUTE_OR_VALUE_EXISTS)) {
// ignore this error
LOG.log(Level.INFO, "ignoring attribute that already exists: " +
modListToString(op.getModifications()));
+ } else if (rc.equals(ResultCode.NO_SUCH_ATTRIBUTE)) {
+ // This canĀ·happen if for instance the old configuration was
+ // changed so that the value of an attribute matches the default
+ // value of the attribute in the new configuration.
+ // Just log it and move on.
+ LOG.log(Level.INFO, "Ignoring attribute not found: " +
+ modListToString(op.getModifications()));
} else {
// report the error to the user
StringBuilder error = op.getErrorMessage();
diff --git a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/ServerHealthChecker.java b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/ServerHealthChecker.java
index 7a9fe2d..41319e0 100644
--- a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/ServerHealthChecker.java
+++ b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/ServerHealthChecker.java
@@ -78,7 +78,7 @@
if (installation.getStatus().isServerRunning()) {
new ServerController(installation).stopServer(true);
}
- OperationOutput op = control.startServer(false);
+ OperationOutput op = control.startServer();
errors = op.getErrorMessages(UNHEALTHY_SERVER_LOG_REGEX);
} catch (Exception e) {
if (e instanceof ApplicationException) {
--
Gitblit v1.10.0