/hg/icedtea-web: Added dialogue to allow setting of custom JRE
jvanek at icedtea.classpath.org
jvanek at icedtea.classpath.org
Fri Apr 12 04:31:29 PDT 2013
changeset e6055625cbbf in /hg/icedtea-web
details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=e6055625cbbf
author: Jiri Vanek <jvanek at redhat.com>
date: Fri Apr 12 13:31:49 2013 +0200
Added dialogue to allow setting of custom JRE
diffstat:
ChangeLog | 20 +
NEWS | 6 +-
launcher/itweb-settings.in | 2 +-
launcher/javaws.in | 2 +-
netx/net/sourceforge/jnlp/config/Defaults.java | 6 +
netx/net/sourceforge/jnlp/config/DeploymentConfiguration.java | 29 +-
netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java | 34 +-
netx/net/sourceforge/jnlp/controlpanel/JVMPanel.java | 236 +++++++++-
netx/net/sourceforge/jnlp/resources/Messages.properties | 24 +
netx/net/sourceforge/jnlp/util/FileUtils.java | 37 +-
netx/net/sourceforge/jnlp/util/StreamUtils.java | 19 +
11 files changed, 400 insertions(+), 15 deletions(-)
diffs (truncated from 645 to 500 lines):
diff -r 50863f01bf84 -r e6055625cbbf ChangeLog
--- a/ChangeLog Thu Apr 11 15:37:32 2013 -0400
+++ b/ChangeLog Fri Apr 12 13:31:49 2013 +0200
@@ -1,3 +1,23 @@
+2013-04-12 Jiri Vanek <jvanek at redhat.com>
+
+ Added dialogue to allow setting of custom JRE
+ * launcher/itweb-settings.in: and
+ * launcher/javaws.in: check for custom jre less strict
+ * netx/net/sourceforge/jnlp/config/Defaults.java:made aware of
+ deployment.jre.dir constant
+ * netx/net/sourceforge/jnlp/config/DeploymentConfiguration.java: added\
+ KEY_JRE_DIR= "deployment.jre.dir" constant, user file occurrences extracted
+ to USER_DEPLOYMENT_PROPERTIES_FILE.
+ * netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java: used validation
+ of jdk when saving properties
+ * netx/net/sourceforge/jnlp/controlpanel/JVMPanel.java: added text-field
+ to set JVM directory, friendly with logic and validation.
+ * netx/net/sourceforge/jnlp/resources/Messages.properties: added messages
+ to JVM selection and validation.
+ * netx/net/sourceforge/jnlp/util/StreamUtils.java: (readStreamAsString)
+ new utility method.
+ * NEWS: mentioned select-able JVM
+
2013-04-11 Adam Domurad <adomurad at redhat.com>
Remove legacy support for the old version of NPAPI.
diff -r 50863f01bf84 -r e6055625cbbf NEWS
--- a/NEWS Thu Apr 11 15:37:32 2013 -0400
+++ b/NEWS Fri Apr 12 13:31:49 2013 +0200
@@ -9,11 +9,13 @@
CVE-XXXX-YYYY: http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=XXXX-YYYY
New in release 1.4 (2012-XX-XX):
-* Added cs_CZ localisation
-* Added de localisation
+* Added cs_CZ localization
+* Added de localization
* Splash screen for javaws and plugin
+* Better error reporting for plugin via Error-splash-screen
* All IcedTea-Web dialogues are centered to middle of active screen
* Download indicator made compact for more then one jar
+* User can select its own JVM via itw-settings and deploy.properties.
* Security updates
- CVE-2012-3422, RH840592: Potential read from an uninitialized memory location
- CVE-2012-3423, RH841345: Incorrect handling of not 0-terminated strings
diff -r 50863f01bf84 -r e6055625cbbf launcher/itweb-settings.in
--- a/launcher/itweb-settings.in Thu Apr 11 15:37:32 2013 -0400
+++ b/launcher/itweb-settings.in Fri Apr 12 13:31:49 2013 +0200
@@ -14,7 +14,7 @@
CUSTOM_JRE=`grep "$CUSTOM_JRE_REGEX" /etc/.java/.deploy/deployment.properties 2>/dev/null | sed "s/$CUSTOM_JRE_REGEX//g"`
fi;
if [ "x$CUSTOM_JRE" != "x" ] ; then
- if [ -d "$CUSTOM_JRE" -a -f "$CUSTOM_JRE/bin/java" ] ; then
+ if [ -e "$CUSTOM_JRE" -a -e "$CUSTOM_JRE/bin/java" ] ; then
JAVA=$CUSTOM_JRE/bin/java
else
echo "Your custom JRE $CUSTOM_JRE read from deployment.properties under key $PROPERTY_NAME as $CUSTOM_JRE is not valid. Using default ($JAVA) in attempt to start. Please fix this."
diff -r 50863f01bf84 -r e6055625cbbf launcher/javaws.in
--- a/launcher/javaws.in Thu Apr 11 15:37:32 2013 -0400
+++ b/launcher/javaws.in Fri Apr 12 13:31:49 2013 +0200
@@ -16,7 +16,7 @@
CUSTOM_JRE=`grep "$CUSTOM_JRE_REGEX" /etc/.java/.deploy/deployment.properties 2>/dev/null | sed "s/$CUSTOM_JRE_REGEX//g"`
fi;
if [ "x$CUSTOM_JRE" != "x" ] ; then
- if [ -d "$CUSTOM_JRE" -a -f "$CUSTOM_JRE/bin/java" -a -f "$CUSTOM_JRE/lib/rt.jar" ] ; then
+ if [ -e "$CUSTOM_JRE" -a -e "$CUSTOM_JRE/bin/java" -a -e "$CUSTOM_JRE/lib/rt.jar" ] ; then
JAVA=$CUSTOM_JRE/bin/java
CP=$CUSTOM_JRE/lib/rt.jar
else
diff -r 50863f01bf84 -r e6055625cbbf netx/net/sourceforge/jnlp/config/Defaults.java
--- a/netx/net/sourceforge/jnlp/config/Defaults.java Thu Apr 11 15:37:32 2013 -0400
+++ b/netx/net/sourceforge/jnlp/config/Defaults.java Fri Apr 12 13:31:49 2013 +0200
@@ -391,6 +391,12 @@
DeploymentConfiguration.KEY_SECURITY_LEVEL,
new SecurityValueValidator(),
null
+ },
+ //JVM executable for itw
+ {
+ DeploymentConfiguration.KEY_JRE_DIR,
+ null,
+ null
}
};
diff -r 50863f01bf84 -r e6055625cbbf netx/net/sourceforge/jnlp/config/DeploymentConfiguration.java
--- a/netx/net/sourceforge/jnlp/config/DeploymentConfiguration.java Thu Apr 11 15:37:32 2013 -0400
+++ b/netx/net/sourceforge/jnlp/config/DeploymentConfiguration.java Fri Apr 12 13:31:49 2013 +0200
@@ -166,6 +166,7 @@
* JVM arguments for plugin
*/
public static final String KEY_PLUGIN_JVM_ARGUMENTS= "deployment.plugin.jvm.arguments";
+ public static final String KEY_JRE_DIR= "deployment.jre.dir";
public enum ConfigType {
System, User
@@ -178,6 +179,10 @@
private File systemPropertiesFile = null;
/** The user's deployment.config file */
private File userPropertiesFile = null;
+
+ /*default user file*/
+ public static final File USER_DEPLOYMENT_PROPERTIES_FILE = new File(System.getProperty("user.home") + File.separator + DEPLOYMENT_DIR
+ + File.separator + DEPLOYMENT_PROPERTIES);
/** the current deployment properties */
private Map<String, Setting<String>> currentConfiguration;
@@ -221,8 +226,7 @@
*/
public void load(boolean fixIssues) throws ConfigurationException {
// make sure no state leaks if security check fails later on
- File userFile = new File(System.getProperty("user.home") + File.separator + DEPLOYMENT_DIR
- + File.separator + DEPLOYMENT_PROPERTIES);
+ File userFile = new File(USER_DEPLOYMENT_PROPERTIES_FILE.getAbsolutePath());
SecurityManager sm = System.getSecurityManager();
if (sm != null) {
@@ -415,8 +419,25 @@
return etcFile;
}
- File jreFile = new File(System.getProperty("java.home") + File.separator + "lib"
- + File.separator + DEPLOYMENT_CONFIG);
+ String jrePath = null;
+ try {
+ Map<String, Setting<String>> tmpProperties = parsePropertiesFile(USER_DEPLOYMENT_PROPERTIES_FILE);
+ Setting<String> jreSetting = tmpProperties.get(KEY_JRE_DIR);
+ if (jreSetting != null) {
+ jrePath = jreSetting.getValue();
+ }
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+
+ File jreFile;
+ if (jrePath != null) {
+ jreFile = new File(jrePath + File.separator + "lib"
+ + File.separator + DEPLOYMENT_CONFIG);
+ } else {
+ jreFile = new File(System.getProperty("java.home") + File.separator + "lib"
+ + File.separator + DEPLOYMENT_CONFIG);
+ }
if (jreFile.isFile()) {
return jreFile;
}
diff -r 50863f01bf84 -r e6055625cbbf netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java
--- a/netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java Thu Apr 11 15:37:32 2013 -0400
+++ b/netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java Fri Apr 12 13:31:49 2013 +0200
@@ -53,6 +53,7 @@
import javax.swing.event.ListSelectionListener;
import net.sourceforge.jnlp.config.DeploymentConfiguration;
+import net.sourceforge.jnlp.controlpanel.JVMPanel.JvmValidationResult;
import net.sourceforge.jnlp.runtime.Translator;
import net.sourceforge.jnlp.security.KeyStores;
import net.sourceforge.jnlp.security.viewer.CertificatePane;
@@ -66,6 +67,7 @@
*
*/
public class ControlPanel extends JFrame {
+ private JVMPanel jvmPanel;
/**
* Class for keeping track of the panels and their associated text.
@@ -157,6 +159,21 @@
topPanel.setBorder(new EmptyBorder(10, 10, 10, 10));
return topPanel;
}
+
+ private int validateJdk() {
+ String s = ControlPanel.this.config.getProperty(DeploymentConfiguration.KEY_JRE_DIR);
+ JvmValidationResult validationResult = JVMPanel.validateJvm(s);
+ if (validationResult.id == JvmValidationResult.STATE.NOT_DIR
+ || validationResult.id == JvmValidationResult.STATE.NOT_VALID_DIR
+ || validationResult.id == JvmValidationResult.STATE.NOT_VALID_JDK) {
+ return JOptionPane.showConfirmDialog(ControlPanel.this,
+ "<html>"+Translator.R("CPJVMNotokMessage1", s)+"<br>"
+ + validationResult.formattedText+"<br>"
+ + Translator.R("CPJVMNotokMessage2", DeploymentConfiguration.KEY_JRE_DIR, DeploymentConfiguration.USER_DEPLOYMENT_PROPERTIES_FILE)+"</html>",
+ Translator.R("CPJVMconfirmInvalidJdkTitle"),JOptionPane.OK_CANCEL_OPTION);
+ }
+ return JOptionPane.OK_OPTION;
+ }
/**
* Creates the "ok" "apply" and "cancel" buttons.
@@ -173,6 +190,10 @@
@Override
public void actionPerformed(ActionEvent e) {
ControlPanel.this.saveConfiguration();
+ int validationResult = validateJdk();
+ if (validationResult!= JOptionPane.OK_OPTION){
+ return;
+ }
ControlPanel.this.dispose();
}
});
@@ -183,6 +204,15 @@
@Override
public void actionPerformed(ActionEvent e) {
ControlPanel.this.saveConfiguration();
+ int validationResult = validateJdk();
+ if (validationResult != JOptionPane.OK_OPTION) {
+ int i = JOptionPane.showConfirmDialog(ControlPanel.this,
+ Translator.R("CPJVMconfirmReset"),
+ Translator.R("CPJVMconfirmReset"), JOptionPane.OK_CANCEL_OPTION);
+ if (i == JOptionPane.OK_OPTION) {
+ jvmPanel.resetTestFieldArgumentsExec();
+ }
+ }
}
});
buttons.add(applyButton);
@@ -219,7 +249,7 @@
* @return A panel with all the components in place.
*/
private JPanel createMainSettingsPanel() {
-
+ jvmPanel = (JVMPanel) createJVMSettingsPanel();
SettingsPanel[] panels = new SettingsPanel[] { new SettingsPanel(Translator.R("CPTabAbout"), createAboutPanel()),
new SettingsPanel(Translator.R("CPTabCache"), createCacheSettingsPanel()),
new SettingsPanel(Translator.R("CPTabCertificate"), createCertificatesSettingsPanel()),
@@ -227,7 +257,7 @@
// new SettingsPanel(Translator.R("CPTabClassLoader"), createClassLoaderSettingsPanel()),
new SettingsPanel(Translator.R("CPTabDebugging"), createDebugSettingsPanel()),
new SettingsPanel(Translator.R("CPTabDesktopIntegration"), createDesktopSettingsPanel()),
- new SettingsPanel(Translator.R("CPTabJVMSettings"), createJVMSettingsPanel()),
+ new SettingsPanel(Translator.R("CPTabJVMSettings"),jvmPanel),
new SettingsPanel(Translator.R("CPTabNetwork"), createNetworkSettingsPanel()),
// TODO: This is commented out since this is not implemented yet
// new SettingsPanel(Translator.R("CPTabRuntimes"), createRuntimesSettingsPanel()),
diff -r 50863f01bf84 -r e6055625cbbf netx/net/sourceforge/jnlp/controlpanel/JVMPanel.java
--- a/netx/net/sourceforge/jnlp/controlpanel/JVMPanel.java Thu Apr 11 15:37:32 2013 -0400
+++ b/netx/net/sourceforge/jnlp/controlpanel/JVMPanel.java Fri Apr 12 13:31:49 2013 +0200
@@ -40,17 +40,43 @@
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
-
+import java.awt.Insets;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.File;
import javax.swing.Box;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JTextField;
-
+import javax.swing.event.DocumentEvent;
+import javax.swing.event.DocumentListener;
+import javax.swing.text.Document;
import net.sourceforge.jnlp.config.DeploymentConfiguration;
import net.sourceforge.jnlp.runtime.Translator;
+import net.sourceforge.jnlp.util.StreamUtils;
@SuppressWarnings("serial")
public class JVMPanel extends NamedBorderPanel {
+
+ public static class JvmValidationResult {
+
+ public static enum STATE {
+
+ EMPTY, NOT_DIR, NOT_VALID_DIR, NOT_VALID_JDK, VALID_JDK;
+ }
+ public final String formattedText;
+ public final STATE id;
+
+ public JvmValidationResult(String formattedText, STATE id) {
+ this.id = id;
+ this.formattedText = formattedText;
+ }
+ }
private DeploymentConfiguration config;
+ private File lastPath = new File("/usr/lib/jvm/java/jre/");
+ JTextField testFieldArgumentsExec;
JVMPanel(DeploymentConfiguration config) {
super(Translator.R("CPHeadJVMSettings"), new GridBagLayout());
@@ -58,23 +84,125 @@
addComponents();
}
+
+ void resetTestFieldArgumentsExec(){
+ testFieldArgumentsExec.setText("");
+ }
private void addComponents() {
- JLabel description = new JLabel("<html>" + Translator.R("CPJVMPluginArguments") + "<hr /></html>");
- JTextField testFieldArguments = new JTextField(25);
+ final JLabel description = new JLabel("<html>" + Translator.R("CPJVMPluginArguments") + "<hr /></html>");
+ final JTextField testFieldArguments = new JTextField(25);
testFieldArguments.getDocument().addDocumentListener(new DocumentAdapter(config, DeploymentConfiguration.KEY_PLUGIN_JVM_ARGUMENTS));
testFieldArguments.setText(config.getProperty(DeploymentConfiguration.KEY_PLUGIN_JVM_ARGUMENTS));
+
+ final JLabel descriptionExec = new JLabel("<html>" + Translator.R("CPJVMitwExec") + "<hr /></html>");
+ testFieldArgumentsExec = new JTextField(100);
+ final JLabel validationResult = new JLabel(resetValidationResult(testFieldArgumentsExec.getText(), "", "CPJVMnone"));
+ final JCheckBox allowTypoTimeValidation = new JCheckBox(Translator.R("CPJVMPluginAllowTTValidation"), true);
+ allowTypoTimeValidation.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ validationResult.setText(resetValidationResult(testFieldArgumentsExec.getText(), "", "CPJVMnone"));
+ }
+ });
+ testFieldArgumentsExec.getDocument().addDocumentListener(new DocumentListener() {
+
+ @Override
+ public void insertUpdate(DocumentEvent e) {
+ if (allowTypoTimeValidation.isSelected()) {
+ JvmValidationResult s = validateJvm(testFieldArgumentsExec.getText());
+ validationResult.setText(resetValidationResult(testFieldArgumentsExec.getText(), s.formattedText, "CPJVMvalidated"));
+ }
+ }
+
+ @Override
+ public void removeUpdate(DocumentEvent e) {
+ if (allowTypoTimeValidation.isSelected()) {
+ JvmValidationResult s = validateJvm(testFieldArgumentsExec.getText());
+ validationResult.setText(resetValidationResult(testFieldArgumentsExec.getText(), s.formattedText, "CPJVMvalidated"));
+ }
+ }
+
+ @Override
+ public void changedUpdate(DocumentEvent e) {
+ if (allowTypoTimeValidation.isSelected()) {
+ JvmValidationResult s = validateJvm(testFieldArgumentsExec.getText());
+ validationResult.setText(resetValidationResult(testFieldArgumentsExec.getText(), s.formattedText, "CPJVMvalidated"));
+ }
+ }
+ });
+
+ testFieldArgumentsExec.getDocument().addDocumentListener(new DocumentAdapter(config, DeploymentConfiguration.KEY_JRE_DIR));
+ testFieldArgumentsExec.setText(config.getProperty(DeploymentConfiguration.KEY_JRE_DIR));
+
+ final JButton selectJvm = new JButton(Translator.R("CPJVMPluginSelectExec"));
+ selectJvm.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ JFileChooser jfch;
+ if (lastPath != null && lastPath.exists()) {
+ jfch = new JFileChooser(lastPath);
+ } else {
+ jfch = new JFileChooser();
+ }
+ jfch.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
+ int i = jfch.showOpenDialog(JVMPanel.this);
+ if (i == JFileChooser.APPROVE_OPTION && jfch.getSelectedFile() != null) {
+ lastPath = jfch.getSelectedFile().getParentFile();
+ String nws = jfch.getSelectedFile().getAbsolutePath();
+ String olds = testFieldArgumentsExec.getText();
+ if (!nws.equals(olds)) {
+ validationResult.setText(resetValidationResult(testFieldArgumentsExec.getText(), "", "CPJVMnone"));
+ }
+ testFieldArgumentsExec.setText(nws);
+ }
+
+ }
+ });
+ final JButton validateJvm = new JButton(Translator.R("CPJVMitwExecValidation"));
+ validateJvm.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ JvmValidationResult s = validateJvm(testFieldArgumentsExec.getText());
+ validationResult.setText(resetValidationResult(testFieldArgumentsExec.getText(), s.formattedText, "CPJVMvalidated"));
+
+ }
+ });
+
// Filler to pack the bottom of the panel.
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.BOTH;
c.weightx = 1;
+ c.gridwidth = 4;
c.gridx = 0;
c.gridy = 0;
+ c.insets = new Insets(2, 2, 4, 4);
this.add(description, c);
c.gridy++;
this.add(testFieldArguments, c);
+ c.gridy++;
+ this.add(descriptionExec, c);
+ c.gridy++;
+ this.add(testFieldArgumentsExec, c);
+ c.gridy++;
+ GridBagConstraints cb1 = (GridBagConstraints) c.clone();
+ cb1.fill = GridBagConstraints.NONE;
+ cb1.gridwidth = 1;
+ this.add(selectJvm, cb1);
+ GridBagConstraints cb3 = (GridBagConstraints) c.clone();
+ cb3.fill = GridBagConstraints.NONE;
+ cb3.gridx = 2;
+ cb3.gridwidth = 1;
+ this.add(allowTypoTimeValidation, cb3);
+ GridBagConstraints cb2 = (GridBagConstraints) c.clone();
+ cb2.fill = GridBagConstraints.NONE;
+ cb2.gridx = 3;
+ cb2.gridwidth = 1;
+ this.add(validateJvm, cb2);
+ c.gridy++;
+ this.add(validationResult, c);
// This is to keep it from expanding vertically if resized.
Component filler = Box.createRigidArea(new Dimension(1, 1));
@@ -82,4 +210,104 @@
c.weighty++;
this.add(filler, c);
}
+
+ public static JvmValidationResult validateJvm(String cmd) {
+ if (cmd == null || cmd.trim().equals("")) {
+ return new JvmValidationResult("<span color=\"orange\">" + Translator.R("CPJVMvalueNotSet") + "</span>",
+ JvmValidationResult.STATE.EMPTY);
+ }
+ String validationResult = "";
+ File jreDirFile = new File(cmd);
+ JvmValidationResult.STATE latestOne = JvmValidationResult.STATE.EMPTY;
+ if (jreDirFile.isDirectory()) {
+ validationResult += "<span color=\"green\">" + Translator.R("CPJVMisDir") + "</span><br />";
+ } else {
+ validationResult += "<span color=\"red\">" + Translator.R("CPJVMnotDir") + "</span><br />";
+ latestOne = JvmValidationResult.STATE.NOT_DIR;
+ }
+ File javaFile = new File(cmd + File.separator + "bin" + File.separator + "java");
+ if (javaFile.isFile()) {
+ validationResult += "<span color=\"green\">" + Translator.R("CPJVMjava") + "</span><br />";
+ } else {
+ validationResult += "<span color=\"red\">" + Translator.R("CPJVMnoJava") + "</span><br />";
+ if (latestOne != JvmValidationResult.STATE.NOT_DIR) {
+ latestOne = JvmValidationResult.STATE.NOT_VALID_JDK;
+ }
+ }
+ File rtFile = new File(cmd + File.separator + "lib" + File.separator + "rt.jar");
+ if (rtFile.isFile()) {
+ validationResult += "<span color=\"green\">" + Translator.R("CPJVMrtJar") + "</span><br />";
+ } else {
+ validationResult += "<span color=\"red\">" + Translator.R("CPJVMnoRtJar") + "</span><br />";
+ if (latestOne != JvmValidationResult.STATE.NOT_DIR) {
+ latestOne = JvmValidationResult.STATE.NOT_VALID_JDK;
+ }
+ }
+ ProcessBuilder sb = new ProcessBuilder(javaFile.getAbsolutePath(), "-version");
+ Process p = null;
+ String processErrorStream = "";
+ String processStdOutStream = "";
+ Integer r = null;
+ try {
+ p = sb.start();
+ p.waitFor();
+ processErrorStream = StreamUtils.readStreamAsString(p.getErrorStream());
+ processStdOutStream = StreamUtils.readStreamAsString(p.getInputStream());
+ r = p.exitValue();
+ System.err.println(processErrorStream);
+ System.out.println(processStdOutStream);
+ processErrorStream = processErrorStream.toLowerCase();
+ processStdOutStream = processStdOutStream.toLowerCase();
+ } catch (Exception ex) {;
+ ex.printStackTrace();
+
+ }
+ if (r == null) {
+ validationResult += "<span color=\"red\">" + Translator.R("CPJVMnotLaunched") + "</span>";
+ if (latestOne != JvmValidationResult.STATE.NOT_DIR) {
+ latestOne = JvmValidationResult.STATE.NOT_VALID_JDK;
+ }
+ return new JvmValidationResult(validationResult, latestOne);
+ }
+ if (r.intValue() != 0) {
+ validationResult += "<span color=\"red\">" + Translator.R("CPJVMnoSuccess") + "</span>";
+ if (latestOne != JvmValidationResult.STATE.NOT_DIR) {
+ latestOne = JvmValidationResult.STATE.NOT_VALID_JDK;
+ }
+ return new JvmValidationResult(validationResult, latestOne);
+ }
+ if (processErrorStream.contains("openjdk") || processStdOutStream.contains("openjdk")) {
+ validationResult += "<span color=\"#00EE00\">" + Translator.R("CPJVMopenJdkFound") + "</span>";
+ return new JvmValidationResult(validationResult, JvmValidationResult.STATE.VALID_JDK);
+ }
+ if (processErrorStream.contains("ibm") || processStdOutStream.contains("ibm")) {
+ validationResult += "<span color=\"green\">" + Translator.R("CPJVMibmFound") + "</span>";
+ if (latestOne != JvmValidationResult.STATE.NOT_DIR) {
+ latestOne = JvmValidationResult.STATE.NOT_VALID_JDK;
+ }
+ return new JvmValidationResult(validationResult, latestOne);
+ }
+ if (processErrorStream.contains("gij") || processStdOutStream.contains("gij")) {
+ validationResult += "<span color=\"orange\">" + Translator.R("CPJVMgijFound") + "</span>";
+ if (latestOne != JvmValidationResult.STATE.NOT_DIR) {
+ latestOne = JvmValidationResult.STATE.NOT_VALID_JDK;
+ }
+ return new JvmValidationResult(validationResult, latestOne);
+ }
+ if (processErrorStream.contains("oracle") || processStdOutStream.contains("oracle")
+ || processErrorStream.contains("java(tm)") || processStdOutStream.contains("java(tm)")) {
+ validationResult += "<span color=\"green\">" + Translator.R("CPJVMoracleFound") + "</span>";
More information about the distro-pkg-dev
mailing list