From 3cf1a6fccee9c44bf7171170f4bf21d01cbb020b Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Thu, 30 Apr 2009 15:33:14 +0000
Subject: [PATCH] Fix for issue 3963 (control panel Java Settings panel error messages not specific)
---
opends/src/quicksetup/org/opends/quicksetup/util/Utils.java | 2
opends/src/messages/messages/admin_tool.properties | 26 ++++
opends/src/guitools/org/opends/guitools/controlpanel/ui/JavaPropertiesPanel.java | 227 ++++++++++++++++++++++++++++++---------------
3 files changed, 174 insertions(+), 81 deletions(-)
diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/ui/JavaPropertiesPanel.java b/opends/src/guitools/org/opends/guitools/controlpanel/ui/JavaPropertiesPanel.java
index 6d72733..5b3c28c 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/ui/JavaPropertiesPanel.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/ui/JavaPropertiesPanel.java
@@ -44,6 +44,7 @@
import java.util.Collection;
import java.util.Comparator;
import java.util.HashSet;
+import java.util.List;
import java.util.Properties;
import java.util.Set;
import java.util.TreeSet;
@@ -713,30 +714,30 @@
{
editor.stopCellEditing();
- ArrayList<Message> errors = new ArrayList<Message>();
+ final ArrayList<Message> javaHomeErrors = new ArrayList<Message>();
String f = javaHome.getText().trim();
if (f.length() > 0)
{
File file = new File(f);
if (!file.exists())
{
- errors.add(ERR_CTRL_PANEL_JAVA_PATH_DOES_NOT_EXIST.get(f));
+ javaHomeErrors.add(ERR_CTRL_PANEL_JAVA_PATH_DOES_NOT_EXIST.get(f));
}
else if (!file.isDirectory())
{
- errors.add(ERR_CTRL_PANEL_JAVA_PATH_NOT_A_DIRECTORY.get(f));
+ javaHomeErrors.add(ERR_CTRL_PANEL_JAVA_PATH_NOT_A_DIRECTORY.get(f));
}
else
{
File javaFile = getJavaFile(file);
if (!javaFile.exists())
{
- errors.add(ERR_CTRL_PANEL_JAVA_BINARY_NOT_FOUND.get(
+ javaHomeErrors.add(ERR_CTRL_PANEL_JAVA_BINARY_NOT_FOUND.get(
javaFile.toString()));
}
}
}
- if (errors.size() == 0)
+ if (javaHomeErrors.size() == 0)
{
final Set<String> providedArguments = new HashSet<String>();
for (JavaArgumentsDescriptor cmd : getCurrentJavaArguments())
@@ -747,103 +748,175 @@
providedArguments.add(args);
}
}
- if (!providedArguments.isEmpty())
+
+ disableComponents();
+ lInitContents.setText(
+ INFO_CTRL_PANEL_CHECKING_JAVA_OPTIONS_SUMMARY.get().toString());
+ BackgroundTask<List<Message>> worker =
+ new BackgroundTask<List<Message>>()
{
- disableComponents();
- lInitContents.setText(
- INFO_CTRL_PANEL_CHECKING_JAVA_ARGUMENTS_SUMMARY.get().toString());
- BackgroundTask<Set<String>> worker =
- new BackgroundTask<Set<String>>()
+ private boolean isConfirmation = false;
+ @Override
+ public List<Message> processBackgroundTask() throws Throwable
{
- private String jvm;
- @Override
- public Set<String> processBackgroundTask() throws Throwable
+ String[] jvms;
+ String userJVM = javaHome.getText();
+ ArrayList<Message> errorMessages = new ArrayList<Message>();
+ ArrayList<Message> confirmationMessages = new ArrayList<Message>();
+ String defaultJVM = System.getenv(SetupUtils.OPENDS_JAVA_HOME);
+ if (defaultJVM == null)
+ {
+ defaultJVM = System.getProperty("java.home");
+ }
+ if (useSpecifiedJavaHome.isSelected())
+ {
+ jvms = new String[]{userJVM};
+ }
+ else if ((userJVM != null) && (userJVM.trim().length() > 0))
+ {
+ jvms = new String[]{defaultJVM, userJVM};
+ }
+ else
+ {
+ jvms = new String[]{defaultJVM};
+ }
+ for (String jvm : jvms)
{
Set<String> notWorkingArgs = new HashSet<String>();
- jvm = javaHome.getText();
- if (jvm.trim().length() == 0)
- {
- jvm = System.getProperty("java.home");
- if ((jvm == null) || (jvm.length() == 0))
- {
- jvm = System.getenv(SetupUtils.OPENDS_JAVA_HOME);
- }
- }
String installPath = getInfo().getServerDescriptor().
getInstallPath().getAbsolutePath();
- for (String arg : providedArguments)
+ if (!Utils.supportsOption("", jvm, installPath))
{
- if (!Utils.supportsOption(arg, jvm, installPath))
+ if (jvm == userJVM && !useSpecifiedJavaHome.isSelected())
{
- notWorkingArgs.add(arg);
+ errorMessages.add(
+ ERR_CTRL_PANEL_NOT_WORKING_FALLBACK_JVM_DETAILS.get(jvm));
}
- }
-
- return notWorkingArgs;
- }
- /**
- * {@inheritDoc}
- */
- @Override
- public void backgroundTaskCompleted(Set<String> returnValue,
- Throwable t)
- {
- if (t == null)
- {
- boolean confirm = true;
- if (!returnValue.isEmpty())
+ else
{
- File javaFile = getJavaFile(new File(jvm));
- Message confirmationMessage =
- INFO_CTRL_PANEL_CONFIRM_NOT_WORKING_ARGUMENTS_DETAILS.get(
- javaFile.toString(),
- Utilities.getStringFromCollection(returnValue, "<br>-"));
- confirm = displayConfirmationDialog(
- INFO_CTRL_PANEL_CONFIRMATION_REQUIRED_SUMMARY.get(),
- confirmationMessage);
- }
- if (confirm)
- {
- launchTask();
+ errorMessages.add(
+ ERR_CTRL_PANEL_NOT_WORKING_JVM_DETAILS.get(jvm));
}
}
else
{
- String arg;
- if (t instanceof OpenDsException)
+ for (String arg : providedArguments)
{
- arg = ((OpenDsException)t).getMessageObject().toString();
+ if (!Utils.supportsOption(arg, jvm, installPath))
+ {
+ notWorkingArgs.add(arg);
+ }
+ }
+ }
+ if (notWorkingArgs.size() > 0)
+ {
+ File javaFile = getJavaFile(new File(jvm));
+ Message confirmationMessage;
+ if (useSpecifiedJavaArgs.isSelected())
+ {
+ confirmationMessage =
+ INFO_CTRL_PANEL_CONFIRM_NOT_WORKING_ARGUMENTS_DETAILS.get(
+ javaFile.toString(),
+ Utilities.getStringFromCollection(notWorkingArgs, "<br>-"));
}
else
{
- arg = t.toString();
+ confirmationMessage =
+ INFO_CTRL_PANEL_CONFIRM_NOT_WORKING_FALLBACK_ARGUMENTS_DETAILS.get(
+ javaFile.toString(),
+ Utilities.getStringFromCollection(notWorkingArgs, "<br>-"));
}
- Message title =
- ERR_CTRL_PANEL_ERROR_CHECKING_JAVA_SETTINGS_SUMMARY.get();
- Message details =
- ERR_CTRL_PANEL_ERROR_CHECKING_JAVA_SETTINGS_DETAILS.get(arg);
- updateErrorPane(errorPane, title,
- ColorAndFontConstants.errorTitleFont, details,
- errorPane.getFont());
- packParentDialog();
- errorPane.setVisible(true);
+ confirmationMessages.add(confirmationMessage);
}
- enableComponents();
- lInitContents.setText(READING_JAVA_SETTINGS.toString());
}
- };
- worker.startBackgroundTask();
- return;
- }
- }
- if (errors.size() == 0)
- {
- launchTask();
+ isConfirmation = errorMessages.isEmpty();
+ if (!errorMessages.isEmpty())
+ {
+ return errorMessages;
+ }
+ else
+ {
+ return confirmationMessages;
+ }
+ }
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void backgroundTaskCompleted(List<Message> returnValue,
+ Throwable t)
+ {
+ if (t == null)
+ {
+ boolean confirm = false;
+ if (isConfirmation && !returnValue.isEmpty())
+ {
+ confirm = displayConfirmationDialog(
+ INFO_CTRL_PANEL_CONFIRMATION_REQUIRED_SUMMARY.get(),
+ returnValue.iterator().next());
+ }
+ else if (!isConfirmation && !returnValue.isEmpty())
+ {
+ displayErrorDialog(returnValue);
+ }
+ else
+ {
+ confirm = true;
+ }
+
+ if (confirm)
+ {
+ launchTask();
+ }
+ }
+ else
+ {
+ String arg;
+ if (t instanceof OpenDsException)
+ {
+ arg = ((OpenDsException)t).getMessageObject().toString();
+ }
+ else
+ {
+ arg = t.toString();
+ }
+ Message title =
+ ERR_CTRL_PANEL_ERROR_CHECKING_JAVA_SETTINGS_SUMMARY.get();
+ Message details =
+ ERR_CTRL_PANEL_ERROR_CHECKING_JAVA_SETTINGS_DETAILS.get(arg);
+ updateErrorPane(errorPane, title,
+ ColorAndFontConstants.errorTitleFont, details,
+ errorPane.getFont());
+ packParentDialog();
+ errorPane.setVisible(true);
+ }
+ enableComponents();
+ lInitContents.setText(READING_JAVA_SETTINGS.toString());
+ }
+ };
+ worker.startBackgroundTask();
+ return;
}
else
{
- displayErrorDialog(errors);
+ if (useSpecifiedJavaHome.isSelected())
+ {
+ displayErrorDialog(javaHomeErrors);
+ }
+ else
+ {
+ ArrayList<String> s = new ArrayList<String>();
+ for (Message msg : javaHomeErrors)
+ {
+ s.add(msg.toString());
+ }
+ ArrayList<Message> msgs = new ArrayList<Message>();
+ Message msg = ERR_CTRL_PANEL_GENERIC_ERROR_FALLBACK_JAVAHOME.get(
+ f, Utilities.getStringFromCollection(s, "<br>-"));
+ msgs.add(msg);
+ displayErrorDialog(msgs);
+ }
}
}
diff --git a/opends/src/messages/messages/admin_tool.properties b/opends/src/messages/messages/admin_tool.properties
index 50c9df2..d90eec2 100644
--- a/opends/src/messages/messages/admin_tool.properties
+++ b/opends/src/messages/messages/admin_tool.properties
@@ -1713,20 +1713,40 @@
reading the Java settings. Details: %s
MILD_ERR_CTRL_PANEL_ERR_READING_JAVA_SETTINGS_SUMMARY=Error reading Java \
settings
-INFO_CTRL_PANEL_CHECKING_JAVA_ARGUMENTS_SUMMARY=Checking provided Java \
- arguments...
+INFO_CTRL_PANEL_CHECKING_JAVA_OPTIONS_SUMMARY=Checking provided Java \
+ options...
MILD_ERR_CTRL_PANEL_JAVA_PATH_DOES_NOT_EXIST=Path '%s' does not exist.
MILD_ERR_CTRL_PANEL_JAVA_PATH_NOT_A_DIRECTORY=Path '%s' is not a directory. \
You must specify the path to the Java installation to be used.
MILD_ERR_CTRL_PANEL_JAVA_BINARY_NOT_FOUND=Could not find binary '%s'. You \
must specify the path to the Java installation to be used.
#
-# Note that the following property contains line breaks in HTML format (<br>)
+# Note that the following five properties contain line breaks in HTML format
+# (<br>)
#
INFO_CTRL_PANEL_CONFIRM_NOT_WORKING_ARGUMENTS_DETAILS=The following Java \
arguments could not be used with binary '%s':<br>%s\
<br><br>The command-lines associated with those Java arguments may not \
work.<br>Do you want to continue?
+INFO_CTRL_PANEL_CONFIRM_NOT_WORKING_FALLBACK_ARGUMENTS_DETAILS=The following \
+ Java arguments could not be used with binary '%s':<br>%s\
+ <br><br>These arguments will be used as fall back when OPENDS_JAVA_ARGS is \
+ not defined. If you do not want to specify a fall back, leave those \
+ arguments empty.<br><br>The command-lines associated with those Java \
+ arguments may not work.<br>Do you want to continue?
+SEVERE_ERR_CTRL_PANEL_GENERIC_ERROR_FALLBACK_JAVAHOME=The Java home value '%s' \
+ is not valid. This value will be used as fall back when the OPENDS_JAVA_HOME \
+ environment variable is not defined. If you do not want to specify a fall \
+ back, leave the Java Home text field empty or specify a valid Java home.<br>\
+ Error details:<br>%s
+SEVERE_ERR_CTRL_PANEL_NOT_WORKING_JVM_DETAILS=The Java binary '%s' \
+ could not be used to launch the OpenDS scripts.<br>OpenDS cannot run using \
+ the provided Java Home.
+SEVERE_ERR_CTRL_PANEL_NOT_WORKING_FALLBACK_JVM_DETAILS=The Java binary '%s' \
+ could not be used to launch the OpenDS scripts. This value will be used as \
+ fall back when the OPENDS_JAVA_HOME environment variable is not defined. If \
+ you do not want to specify a fall back, leave the Java Home text field empty \
+ or specify a valid Java home.
MILD_ERR_CTRL_PANEL_ERROR_CHECKING_JAVA_SETTINGS_SUMMARY=Error checking Java \
settings
MILD_ERR_CTRL_PANEL_ERROR_CHECKING_JAVA_SETTINGS_DETAILS=An unexpected error \
diff --git a/opends/src/quicksetup/org/opends/quicksetup/util/Utils.java b/opends/src/quicksetup/org/opends/quicksetup/util/Utils.java
index 1db3a4d..6b89631 100644
--- a/opends/src/quicksetup/org/opends/quicksetup/util/Utils.java
+++ b/opends/src/quicksetup/org/opends/quicksetup/util/Utils.java
@@ -172,7 +172,7 @@
env.put("DO_NOT_PAUSE", "true");
}
Process process = pb.start();
- LOG.log(Level.INFO, "launching "+args);
+ LOG.log(Level.INFO, "launching "+args+ " with env: "+env);
InputStream is = process.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line;
--
Gitblit v1.10.0