From 84e3c2e819f9921255bdc11041fdb45d61557f55 Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Wed, 26 Mar 2008 12:00:42 +0000
Subject: [PATCH] Fix for issue 3064 (The setup command should check the Java version)
---
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/installer/Installer.java | 50 +++++
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ui/GuiUserInteraction.java | 14 +
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/installer/SetupLauncher.java | 12 +
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/Utils.java | 94 +++++++++++
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/Constants.java | 3
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ReturnCode.java | 9
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ui/QuickSetupDialog.java | 1
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/HtmlProgressMessageFormatter.java | 98 +----------
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ui/QuickSetupErrorPanel.java | 18 +
opendj-sdk/opends/src/messages/messages/quicksetup.properties | 8
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/IncompatibleVersionException.java | 50 ++++++
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ui/QuickSetup.java | 9 -
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/CompatibleJava.java | 69 ++++++++
13 files changed, 324 insertions(+), 111 deletions(-)
diff --git a/opendj-sdk/opends/src/messages/messages/quicksetup.properties b/opendj-sdk/opends/src/messages/messages/quicksetup.properties
index 4586693..6298f7f 100644
--- a/opendj-sdk/opends/src/messages/messages/quicksetup.properties
+++ b/opendj-sdk/opends/src/messages/messages/quicksetup.properties
@@ -1304,7 +1304,11 @@
SEVERE_ERR_COULD_NOT_FIND_REPLICATIONID=Could not find a remote peer to \
initialize the contents of local base DN: %s.
INFO_NEW_UPGRADE_SCRIPT_AVAILABLE=A new version of '%s' has been made \
- available. After this operation you should delete this script and rename \
- '%s' to '%1$s'.
+ available. After this operation you should delete this script and rename \
+ '%s' to '%1$s'.
MILD_ERR_ERROR_CREATING_JAVA_HOME_SCRIPTS=Error updating scripts with java \
properties. Error code: %d
+SEVERE_ERR_INCOMPATIBLE_VERSION=The minimum Java version required is %s.%n%n\
+ The detected version is %s.%n%n\Please set OPENDS_JAVA_HOME to the root of a \
+ compatible Java installation or edit the java.properties file and then run \
+ the dsjavaproperties script to specify the java version to be used.
diff --git a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/Constants.java b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/Constants.java
index 8dfa398..22e2e1f 100644
--- a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/Constants.java
+++ b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/Constants.java
@@ -93,4 +93,7 @@
/** The default replication port. */
public static final int DEFAULT_REPLICATION_PORT = 8989;
+
+ /** The maximum chars we show in a line of a dialog. */
+ public static final int MAX_CHARS_PER_LINE_IN_DIALOG = 100;
}
diff --git a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ReturnCode.java b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ReturnCode.java
index 129ddaa..b4ed83a 100644
--- a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ReturnCode.java
+++ b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ReturnCode.java
@@ -101,12 +101,17 @@
public static final ReturnCode BUG = new ReturnCode(12);
/**
- * Return code: Bug.
+ * Return code: java version non-compatible.
+ */
+ public static final ReturnCode JAVA_VERSION_INCOMPATIBLE = new ReturnCode(13);
+
+ /**
+ * Return code: Print Version.
*/
public static final ReturnCode PRINT_VERSION = new ReturnCode(50);
/**
- * Return code: Bug.
+ * Return code: Print Usage.
*/
public static final ReturnCode PRINT_USAGE = new ReturnCode(51);
diff --git a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/installer/Installer.java b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/installer/Installer.java
index 5365efc..1260689 100644
--- a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/installer/Installer.java
+++ b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/installer/Installer.java
@@ -63,12 +63,15 @@
import org.opends.admin.ads.util.ConnectionUtils;
import org.opends.admin.ads.util.PreferredConnection;
import org.opends.quicksetup.ui.*;
+import org.opends.quicksetup.util.IncompatibleVersionException;
import org.opends.quicksetup.util.Utils;
import static org.opends.quicksetup.util.Utils.*;
import static org.opends.quicksetup.Step.*;
import org.opends.quicksetup.*;
import org.opends.server.util.CertificateManager;
+import org.opends.quicksetup.event.ButtonActionListener;
+import org.opends.quicksetup.event.ButtonEvent;
import org.opends.quicksetup.installer.ui.DataOptionsPanel;
import org.opends.quicksetup.installer.ui.DataReplicationPanel;
import org.opends.quicksetup.installer.ui.GlobalAdministratorPanel;
@@ -111,6 +114,8 @@
/** When true indicates that the user has canceled this operation. */
protected boolean canceled = false;
+ private boolean javaVersionCheckFailed;
+
/** Map containing information about what has been configured remotely. */
Map<ServerDescriptor, ConfiguredReplication> hmConfiguredRemoteReplication =
new HashMap<ServerDescriptor, ConfiguredReplication>();
@@ -403,6 +408,11 @@
"Cannot click on quit from progress step");
} else if (installStatus.isInstalled()) {
qs.quit();
+
+ } else if (javaVersionCheckFailed)
+ {
+ qs.quit();
+
} else if (qs.displayConfirmation(INFO_CONFIRM_QUIT_INSTALL_MSG.get(),
INFO_CONFIRM_QUIT_INSTALL_TITLE.get())) {
qs.quit();
@@ -436,10 +446,42 @@
*/
public JPanel createFramePanel(QuickSetupDialog dlg) {
JPanel p;
- if (installStatus.isInstalled() && !forceToDisplaySetup) {
- p = dlg.getInstalledPanel();
- } else {
- p = super.createFramePanel(dlg);
+ javaVersionCheckFailed = true;
+ try
+ {
+ Utils.checkJavaVersion();
+ javaVersionCheckFailed = false;
+ if (installStatus.isInstalled() && !forceToDisplaySetup) {
+ p = dlg.getInstalledPanel();
+ } else {
+ p = super.createFramePanel(dlg);
+ }
+ }
+ catch (IncompatibleVersionException ijv)
+ {
+ MessageBuilder sb = new MessageBuilder();
+ sb.append(Utils.breakHtmlString(
+ Utils.getHtml(ijv.getMessageObject().toString()),
+ Constants.MAX_CHARS_PER_LINE_IN_DIALOG));
+ QuickSetupErrorPanel errPanel =
+ new QuickSetupErrorPanel(this, sb.toMessage());
+ final QuickSetupDialog fDlg = dlg;
+ errPanel.addButtonActionListener(
+ new ButtonActionListener()
+ {
+ /**
+ * ButtonActionListener implementation. It assumes that we are
+ * called in the event thread.
+ *
+ * @param ev the ButtonEvent we receive.
+ */
+ public void buttonActionPerformed(ButtonEvent ev)
+ {
+ // Simulate a close button event
+ fDlg.notifyButtonEvent(ButtonName.QUIT);
+ }
+ });
+ p = errPanel;
}
return p;
}
diff --git a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/installer/SetupLauncher.java b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/installer/SetupLauncher.java
index 6ba1ca0..e6a7d7a 100644
--- a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/installer/SetupLauncher.java
+++ b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/installer/SetupLauncher.java
@@ -39,6 +39,7 @@
import org.opends.quicksetup.Launcher;
import org.opends.quicksetup.QuickSetupLog;
import org.opends.quicksetup.installer.offline.OfflineInstaller;
+import org.opends.quicksetup.util.IncompatibleVersionException;
import org.opends.quicksetup.util.Utils;
import org.opends.messages.Message;
import org.opends.server.tools.InstallDS;
@@ -128,7 +129,6 @@
* {@inheritDoc}
*/
public void launch() {
- // Validate user provided data
try
{
argParser.parseArguments(args);
@@ -145,11 +145,15 @@
}
else if (isCli())
{
+ Utils.checkJavaVersion();
System.exit(InstallDS.mainCLI(args));
}
else
{
willLaunchGui();
+ // The java version is checked in the launchGui code to be sure
+ // that if there is a problem with the java version the message
+ // (if possible) is displayed graphically.
int exitCode = launchGui(args);
if (exitCode != 0) {
File logFile = QuickSetupLog.getLogFile();
@@ -161,6 +165,7 @@
{
guiLaunchFailed(null);
}
+ Utils.checkJavaVersion();
System.exit(InstallDS.mainCLI(args));
}
}
@@ -174,6 +179,11 @@
System.exit(ReturnCode.USER_DATA_ERROR.getReturnCode());
}
+ catch (IncompatibleVersionException ive)
+ {
+ System.err.println(ive.getMessageObject());
+ System.exit(ReturnCode.JAVA_VERSION_INCOMPATIBLE.getReturnCode());
+ }
}
/**
diff --git a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ui/GuiUserInteraction.java b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ui/GuiUserInteraction.java
index 117baab..3a3f56e 100644
--- a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ui/GuiUserInteraction.java
+++ b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ui/GuiUserInteraction.java
@@ -48,8 +48,6 @@
*/
public class GuiUserInteraction implements UserInteraction {
- static private final int MAX_CHARS_PER_LINE = 100;
-
private Component parent = null;
/**
@@ -99,9 +97,11 @@
}
JOptionPane op;
if (fineDetails != null) {
- op = new DetailsOptionPane(MAX_CHARS_PER_LINE, fineDetails);
+ op = new DetailsOptionPane(Constants.MAX_CHARS_PER_LINE_IN_DIALOG,
+ fineDetails);
} else {
- op = new MaxCharactersPerLineOptionPane(MAX_CHARS_PER_LINE);
+ op = new MaxCharactersPerLineOptionPane(
+ Constants.MAX_CHARS_PER_LINE_IN_DIALOG);
}
// Create the main message using HTML formatting. The max
@@ -110,12 +110,14 @@
// have to format this ourselves.
MessageBuilder sb = new MessageBuilder();
sb.append(Constants.HTML_BOLD_OPEN);
- sb.append(Utils.breakHtmlString(summary, MAX_CHARS_PER_LINE));
+ sb.append(Utils.breakHtmlString(summary,
+ Constants.MAX_CHARS_PER_LINE_IN_DIALOG));
sb.append(Constants.HTML_BOLD_CLOSE);
sb.append(Constants.HTML_LINE_BREAK);
sb.append(Constants.HTML_LINE_BREAK);
- sb.append(Utils.breakHtmlString(details, MAX_CHARS_PER_LINE));
+ sb.append(Utils.breakHtmlString(details,
+ Constants.MAX_CHARS_PER_LINE_IN_DIALOG));
JEditorPane ep = UIFactory.makeHtmlPane(
sb.toMessage(),
UIFactory.INSTRUCTIONS_FONT);
diff --git a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ui/QuickSetup.java b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ui/QuickSetup.java
index 1421c2e..5532770 100644
--- a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ui/QuickSetup.java
+++ b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ui/QuickSetup.java
@@ -125,15 +125,6 @@
}
/**
- * Gets the current installation status of the filesystem
- * bits this quick setup is managing.
- * @return CurrentInstallStatus indicating the install status
- */
- public CurrentInstallStatus getInstallStatus() {
- return installStatus;
- }
-
- /**
* This method displays the setup dialog. This method must be called from the
* event thread.
*/
diff --git a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ui/QuickSetupDialog.java b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ui/QuickSetupDialog.java
index 591c42d..294b5ba 100644
--- a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ui/QuickSetupDialog.java
+++ b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ui/QuickSetupDialog.java
@@ -270,7 +270,6 @@
{
getButtonsPanel().addButtonActionListener(l);
getInstalledPanel().addButtonActionListener(l);
- getButtonsPanel().addButtonActionListener(l);
getCurrentStepPanel().addButtonActionListener(l);
buttonListeners.add(l);
diff --git a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ui/QuickSetupErrorPanel.java b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ui/QuickSetupErrorPanel.java
index 407e91c..7c331eb 100644
--- a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ui/QuickSetupErrorPanel.java
+++ b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/ui/QuickSetupErrorPanel.java
@@ -38,6 +38,7 @@
import javax.swing.JPanel;
import javax.swing.text.JTextComponent;
+import org.opends.messages.Message;
import org.opends.quicksetup.ButtonName;
import org.opends.quicksetup.CurrentInstallStatus;
import org.opends.quicksetup.event.ButtonActionListener;
@@ -68,6 +69,18 @@
public QuickSetupErrorPanel(GuiApplication application,
CurrentInstallStatus installStatus)
{
+ this(application, installStatus.getInstallationMsg());
+ continueButton.setVisible(installStatus.canOverwriteCurrentInstall());
+ }
+
+ /**
+ * Constructor of the QuickSetupErrorPanel.
+ * @param application Application this panel represents
+ * @param msg the error message to display formatted in HTML.
+ */
+ public QuickSetupErrorPanel(GuiApplication application,
+ Message msg)
+ {
super(application);
JPanel p1 = new JPanel(new GridBagLayout());
p1.setBackground(UIFactory.CURRENT_STEP_PANEL_BACKGROUND);
@@ -83,8 +96,7 @@
gbc.fill = GridBagConstraints.BOTH;
gbc.insets.left = 0;
JTextComponent tf =
- UIFactory.makeHtmlPane(
- installStatus.getInstallationMsg(),
+ UIFactory.makeHtmlPane(msg,
UIFactory.INSTRUCTIONS_FONT);
tf.setOpaque(false);
tf.setEditable(false);
@@ -143,7 +155,7 @@
gbc.gridwidth = GridBagConstraints.RELATIVE;
p2.add(continueButton, gbc);
- continueButton.setVisible(installStatus.canOverwriteCurrentInstall());
+ continueButton.setVisible(false);
gbc.insets.left = UIFactory.HORIZONTAL_INSET_BETWEEN_BUTTONS;
gbc.gridwidth = GridBagConstraints.REMAINDER;
diff --git a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/CompatibleJava.java b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/CompatibleJava.java
new file mode 100644
index 0000000..67edfd6
--- /dev/null
+++ b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/CompatibleJava.java
@@ -0,0 +1,69 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License"). You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
+ * add the following below this CDDL HEADER, with the fields enclosed
+ * by brackets "[]" replaced with your own identifying information:
+ * Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ *
+ *
+ * Copyright 2008 Sun Microsystems, Inc.
+ */
+
+package org.opends.quicksetup.util;
+
+/**
+ * This enumeration contains the different minimal java versions required
+ * to run properly OpenDS. The versions specify a vendor and a java version.
+ *
+ */
+enum CompatibleJava
+{
+ JDK_SUN("Sun Microsystems Inc.", "1.5.0_08");
+ private String vendor;
+ private String version;
+
+ /**
+ * Private constructor.
+ * @param vendor the JVM vendor.
+ * @param version the JVM version.
+ */
+ private CompatibleJava(String vendor, String version)
+ {
+ this.vendor = vendor;
+ this.version = version;
+ }
+
+ /**
+ * Returns the version of this compatible java version.
+ * @return the version of this compatible java version.
+ */
+ String getVersion()
+ {
+ return version;
+ }
+
+ /**
+ * Returns the vendor of this compatible java version.
+ * @return the vendor of this compatible java version.
+ */
+ String getVendor()
+ {
+ return vendor;
+ }
+}
diff --git a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/HtmlProgressMessageFormatter.java b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/HtmlProgressMessageFormatter.java
index 80c6118..64828e2 100644
--- a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/HtmlProgressMessageFormatter.java
+++ b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/HtmlProgressMessageFormatter.java
@@ -72,7 +72,7 @@
*/
public Message getFormattedText(Message text)
{
- return Message.raw(getHtml(String.valueOf(text)));
+ return Message.raw(Utils.getHtml(String.valueOf(text)));
}
/**
@@ -106,7 +106,7 @@
html = UIFactory.getIconHtml(UIFactory.IconType.ERROR_LARGE)
+ SPACE
+ SPACE
- + UIFactory.applyFontToHtml(getHtml(String.valueOf(text)),
+ + UIFactory.applyFontToHtml(Utils.getHtml(String.valueOf(text)),
UIFactory.PROGRESS_ERROR_FONT);
} else {
html =
@@ -141,7 +141,7 @@
UIFactory.getIconHtml(UIFactory.IconType.WARNING_LARGE)
+ SPACE
+ SPACE
- + UIFactory.applyFontToHtml(getHtml(String.valueOf(text)),
+ + UIFactory.applyFontToHtml(Utils.getHtml(String.valueOf(text)),
UIFactory.PROGRESS_WARNING_FONT);
} else {
html =
@@ -187,7 +187,7 @@
*/
public Message getFormattedLogError(Message text)
{
- String html = getHtml(String.valueOf(text));
+ String html = Utils.getHtml(String.valueOf(text));
return Message.raw(UIFactory.applyFontToHtml(html,
UIFactory.PROGRESS_LOG_ERROR_FONT));
}
@@ -201,7 +201,7 @@
*/
public Message getFormattedLog(Message text)
{
- String html = getHtml(String.valueOf(text));
+ String html = Utils.getHtml(String.valueOf(text));
return Message.raw(UIFactory.applyFontToHtml(html,
UIFactory.PROGRESS_LOG_FONT));
}
@@ -214,7 +214,7 @@
{
if (doneHtml == null)
{
- String html = getHtml(INFO_PROGRESS_DONE.get().toString());
+ String html = Utils.getHtml(INFO_PROGRESS_DONE.get().toString());
doneHtml = Message.raw(UIFactory.applyFontToHtml(html,
UIFactory.PROGRESS_DONE_FONT));
}
@@ -228,7 +228,7 @@
public Message getFormattedError() {
if (errorHtml == null)
{
- String html = getHtml(INFO_PROGRESS_ERROR.get().toString());
+ String html = Utils.getHtml(INFO_PROGRESS_ERROR.get().toString());
errorHtml = Message.raw(UIFactory.applyFontToHtml(html,
UIFactory.PROGRESS_ERROR_FONT));
}
@@ -244,9 +244,9 @@
*/
public Message getFormattedWithPoints(Message text)
{
- String html = getHtml(String.valueOf(text));
+ String html = Utils.getHtml(String.valueOf(text));
String points = SPACE +
- getHtml(INFO_PROGRESS_POINTS.get().toString()) + SPACE;
+ Utils.getHtml(INFO_PROGRESS_POINTS.get().toString()) + SPACE;
MessageBuilder buf = new MessageBuilder();
buf.append(UIFactory.applyFontToHtml(html, UIFactory.PROGRESS_FONT))
@@ -285,7 +285,8 @@
*/
public Message getFormattedProgress(Message text)
{
- return Message.raw(UIFactory.applyFontToHtml(getHtml(String.valueOf(text)),
+ return Message.raw(UIFactory.applyFontToHtml(
+ Utils.getHtml(String.valueOf(text)),
UIFactory.PROGRESS_FONT));
}
@@ -315,7 +316,7 @@
Throwable root = t.getCause();
while (root != null)
{
- stackBuf.append(getHtml(INFO_EXCEPTION_ROOT_CAUSE.get().toString()))
+ stackBuf.append(Utils.getHtml(INFO_EXCEPTION_ROOT_CAUSE.get().toString()))
.append(Constants.HTML_LINE_BREAK);
stackBuf.append(getHtmlStack(root));
root = root.getCause();
@@ -328,7 +329,7 @@
String msg = t.getMessage();
if (msg != null)
{
- buf.append(UIFactory.applyFontToHtml(getHtml(t.getMessage()),
+ buf.append(UIFactory.applyFontToHtml(Utils.getHtml(t.getMessage()),
UIFactory.PROGRESS_ERROR_FONT)).append(Constants.HTML_LINE_BREAK);
} else
{
@@ -416,75 +417,6 @@
}
/**
- * Returns the HTML representation for a given text. without adding any kind
- * of font or style elements. Just escapes the problematic characters
- * (like '<') and transform the break lines into '\n' characters.
- *
- * @param text the source text from which we want to get the HTML
- * representation
- * @return the HTML representation for the given text.
- */
- private String getHtml(String text)
- {
- StringBuilder buffer = new StringBuilder();
- if (text != null) {
- text = text.replaceAll("\r\n", "\n");
- String[] lines = text.split("[\n\r\u0085\u2028\u2029]");
- for (int i = 0; i < lines.length; i++)
- {
- if (i != 0)
- {
- buffer.append(Constants.HTML_LINE_BREAK);
- }
- buffer.append(escape(lines[i]));
- }
- }
- return buffer.toString();
- }
-
- /**
- * Returns the HTML representation of a plain text string which is obtained
- * by converting some special characters (like '<') into its equivalent
- * escaped HTML representation.
- *
- * @param rawString the String from which we want to obtain the HTML
- * representation.
- * @return the HTML representation of the plain text string.
- */
- private String escape(String rawString)
- {
- StringBuilder buffer = new StringBuilder();
- for (int i = 0; i < rawString.length(); i++)
- {
- char c = rawString.charAt(i);
- switch (c)
- {
- case '<':
- buffer.append("<");
- break;
-
- case '>':
- buffer.append(">");
- break;
-
- case '&':
- buffer.append("&");
- break;
-
- case '"':
- buffer.append(""");
- break;
-
- default:
- buffer.append(c);
- break;
- }
- }
-
- return buffer.toString();
- }
-
- /**
* Returns a HTML representation of the stack trace of a Throwable object.
* @param ex the throwable object from which we want to obtain the stack
* trace HTML representation.
@@ -503,7 +435,7 @@
.append(SPACE)
.append(SPACE)
.append(SPACE)
- .append(getHtml(ex.toString()))
+ .append(Utils.getHtml(ex.toString()))
.append(Constants.HTML_LINE_BREAK);
StackTraceElement[] stack = ex.getStackTrace();
for (StackTraceElement aStack : stack) {
@@ -517,7 +449,7 @@
.append(SPACE)
.append(SPACE)
.append(SPACE)
- .append(getHtml(aStack.toString()))
+ .append(Utils.getHtml(aStack.toString()))
.append(Constants.HTML_LINE_BREAK);
}
return buf.toString();
diff --git a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/IncompatibleVersionException.java b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/IncompatibleVersionException.java
new file mode 100644
index 0000000..249971d
--- /dev/null
+++ b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/IncompatibleVersionException.java
@@ -0,0 +1,50 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License"). You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
+ * add the following below this CDDL HEADER, with the fields enclosed
+ * by brackets "[]" replaced with your own identifying information:
+ * Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ *
+ *
+ * Copyright 2008 Sun Microsystems, Inc.
+ */
+package org.opends.quicksetup.util;
+
+import org.opends.messages.Message;
+import org.opends.server.types.OpenDsException;
+
+/**
+ * The exception representing an incompatible java version being used. Even
+ * if the code can be run under 1.5, some bugs have been found in some versions
+ * of the JVM that prevent OpenDS to work properly (see
+ */
+public class IncompatibleVersionException extends OpenDsException
+{
+
+ private static final long serialVersionUID = 4283735375192567277L;
+ /**
+ * Constructor of the IncompatibleVersionException.
+ * @param msg the error message.
+ * @param rootCause the root cause.
+ */
+ public IncompatibleVersionException(Message msg, Throwable rootCause)
+ {
+ super(msg, rootCause);
+ }
+}
diff --git a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/Utils.java b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/Utils.java
index 16744f1..581b16a 100644
--- a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/Utils.java
+++ b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/Utils.java
@@ -1454,6 +1454,100 @@
}
return time;
}
+
+ /**
+ * Checks that the java version we are running is compatible with OpenDS.
+ * @throws IncompatibleVersionException if the java version we are running
+ * is not compatible with OpenDS.
+ */
+ public static void checkJavaVersion() throws IncompatibleVersionException
+ {
+ String vendor = System.getProperty("java.vendor");
+ String version = System.getProperty("java.version");
+ for (CompatibleJava i : CompatibleJava.values())
+ {
+ if (i.getVendor().equalsIgnoreCase(vendor))
+ {
+ // Compare versions.
+ boolean versionCompatible =
+ i.getVersion().compareToIgnoreCase(version) <= 0;
+ if (!versionCompatible)
+ {
+ throw new IncompatibleVersionException(
+ ERR_INCOMPATIBLE_VERSION.get(i.getVersion(), version), null);
+ }
+ }
+ }
+ }
+
+ /**
+ * Returns the HTML representation of a plain text string which is obtained
+ * by converting some special characters (like '<') into its equivalent
+ * escaped HTML representation.
+ *
+ * @param rawString the String from which we want to obtain the HTML
+ * representation.
+ * @return the HTML representation of the plain text string.
+ */
+ static String escapeHtml(String rawString)
+ {
+ StringBuilder buffer = new StringBuilder();
+ for (int i = 0; i < rawString.length(); i++)
+ {
+ char c = rawString.charAt(i);
+ switch (c)
+ {
+ case '<':
+ buffer.append("<");
+ break;
+
+ case '>':
+ buffer.append(">");
+ break;
+
+ case '&':
+ buffer.append("&");
+ break;
+
+ case '"':
+ buffer.append(""");
+ break;
+
+ default:
+ buffer.append(c);
+ break;
+ }
+ }
+
+ return buffer.toString();
+ }
+
+ /**
+ * Returns the HTML representation for a given text. without adding any kind
+ * of font or style elements. Just escapes the problematic characters
+ * (like '<') and transform the break lines into '\n' characters.
+ *
+ * @param text the source text from which we want to get the HTML
+ * representation
+ * @return the HTML representation for the given text.
+ */
+ public static String getHtml(String text)
+ {
+ StringBuilder buffer = new StringBuilder();
+ if (text != null) {
+ text = text.replaceAll("\r\n", "\n");
+ String[] lines = text.split("[\n\r\u0085\u2028\u2029]");
+ for (int i = 0; i < lines.length; i++)
+ {
+ if (i != 0)
+ {
+ buffer.append(Constants.HTML_LINE_BREAK);
+ }
+ buffer.append(escapeHtml(lines[i]));
+ }
+ }
+ return buffer.toString();
+ }
}
/**
--
Gitblit v1.10.0