/hg/icedtea-web: 3 new changesets

jvanek at icedtea.classpath.org jvanek at icedtea.classpath.org
Fri Feb 13 12:32:32 UTC 2015


changeset f150f0a8cfcc in /hg/icedtea-web
details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=f150f0a8cfcc
author: Jiri Vanek <jvanek at redhat.com>
date: Fri Feb 13 13:00:45 2015 +0100

	Added better support for not-matching detected jdk when version forced.

	* netx/net/sourceforge/jnlp/JREDesc.java: is using JreVersion instead of pure Version
	* netx/net/sourceforge/jnlp/Parser.java: (getJRE) JREDesc is constructed with JreVersion
	* netx/net/sourceforge/jnlp/Version.java:  made immutable, added specialized inner class, tho handle JRE version.
	* /tests/netx/unit/net/sourceforge/jnlp/VersionTest.java: added tests for main cases cornerCases, testMatchesMinus, multiplePossibilities and tests for new class jreVersionTestOk, jreVersionTestFails1, jreVersionTestFails2.
	* netx/net/sourceforge/jnlp/resources/Messages.properties: added JRE family of warnings for JreVersion


changeset 5e348bb0f43d in /hg/icedtea-web
details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=5e348bb0f43d
author: Jiri Vanek <jvanek at redhat.com>
date: Fri Feb 13 11:22:37 2015 +0100

	netx-dist-tests-whitelist added to .hgignore to prevent unintentional commits


changeset a8baec8d9d21 in /hg/icedtea-web
details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=a8baec8d9d21
author: Jiri Vanek <jvanek at redhat.com>
date: Fri Feb 13 12:48:24 2015 +0100

	Fixed few small errors in jacoco processing after removal of bootstrap.

	* Makefile.am: (JACOCO_CLASSPATH) changed to be space delimited, to be used via joinsegments. (JACOCO_OPERATOR_EXEC) using joinsegments on JACOCO_CLASSPATH. (UNIFIED_CLASSPATH) split to new *_SEGMENTS and call of joinsegments on it. Similarly with UNIFIED_JACOCO_CLASSPATH/(_SEGMENTS). Adapted PLUGIN_COVERAGE_BOOTCLASSPATH. (stamps/compile-jacoco-operator.stamp) uses composeclasspath on JACOCO_CLASSPATH. (stamps/compile-jacoco-operator.stamp) nw_bootclasspath adapted. (stamps/run-reproducers-test-code-coverage-jacoco.stamp) added missing comma in CLASSPATH=$(call joinsegment, ... ) call.


diffstat:

 .hgignore                                               |   1 +
 ChangeLog                                               |  31 +++++++-
 Makefile.am                                             |  20 +++--
 netx/net/sourceforge/jnlp/JREDesc.java                  |   6 +-
 netx/net/sourceforge/jnlp/Parser.java                   |   2 +-
 netx/net/sourceforge/jnlp/Version.java                  |  65 ++++++++++++++++-
 netx/net/sourceforge/jnlp/resources/Messages.properties |   5 +
 tests/netx/unit/net/sourceforge/jnlp/VersionTest.java   |  47 ++++++++++++
 8 files changed, 161 insertions(+), 16 deletions(-)

diffs (320 lines):

diff -r 6d7f7e0e3829 -r a8baec8d9d21 .hgignore
--- a/.hgignore	Wed Feb 11 09:56:37 2015 +0100
+++ b/.hgignore	Fri Feb 13 12:48:24 2015 +0100
@@ -11,3 +11,4 @@
 netx/net/sourceforge/jnlp/resources/COPYING.html
 netx/net/sourceforge/jnlp/resources/ChangeLog.html
 netx/net/sourceforge/jnlp/resources/NEWS.html
+netx-dist-tests-whitelist
diff -r 6d7f7e0e3829 -r a8baec8d9d21 ChangeLog
--- a/ChangeLog	Wed Feb 11 09:56:37 2015 +0100
+++ b/ChangeLog	Fri Feb 13 12:48:24 2015 +0100
@@ -1,6 +1,35 @@
+2015-02-13  Jiri Vanek  <jvanek at redhat.com>
+
+	Fixed few small errors in jacoco processing after removal of bootstrap.
+	* Makefile.am: (JACOCO_CLASSPATH) changed to be space delimited, to be used
+	via joinsegments. (JACOCO_OPERATOR_EXEC) using joinsegments on JACOCO_CLASSPATH.
+	(UNIFIED_CLASSPATH) split to new *_SEGMENTS and call of joinsegments on it.
+	Similarly with UNIFIED_JACOCO_CLASSPATH/(_SEGMENTS). Adapted 
+	PLUGIN_COVERAGE_BOOTCLASSPATH. (stamps/compile-jacoco-operator.stamp) uses
+	composeclasspath on JACOCO_CLASSPATH. (stamps/compile-jacoco-operator.stamp)
+	nw_bootclasspath adapted. (stamps/run-reproducers-test-code-coverage-jacoco.stamp)
+	added missing comma in CLASSPATH=$(call joinsegment, ... ) call.
+
+2015-02-13  Jie Kang  <jkang at redhat.com>
+
+	* .hgignore: added netx-dist-tests-whitelist to prevent unintentional commits
+
+2015-02-13  Jiri Vanek  <jvanek at redhat.com>
+
+	Added better support for not-matching detected jdk when version forced.
+	* netx/net/sourceforge/jnlp/JREDesc.java: is using JreVersion instead of pure Version
+	* netx/net/sourceforge/jnlp/Parser.java: (getJRE) JREDesc is constructed with JreVersion
+	* netx/net/sourceforge/jnlp/Version.java:  made immutable, added specialized
+	inner class, tho handle JRE version.
+	* /tests/netx/unit/net/sourceforge/jnlp/VersionTest.java: added tests for
+	main cases cornerCases, testMatchesMinus, multiplePossibilities and tests for
+	new class jreVersionTestOk, jreVersionTestFails1, jreVersionTestFails2.
+	* netx/net/sourceforge/jnlp/resources/Messages.properties: added JRE family
+	of warnings for JreVersion
+
 2015-02-11  Jiri Vanek  <jvanek at redhat.com>
 
-	Saving/Loading of icon made resistent against URLs with invalid/without target
+	Saving/Loading of icon made resistant against URLs with invalid/without target
 	* netx/net/sourceforge/jnlp/cache/CacheUtil.java: getCachedResource split
 	into getCachedResourceFile and getCachedResourceURL (which is jsut transforming
 	file from getCachedResourceFile to URL)
diff -r 6d7f7e0e3829 -r a8baec8d9d21 Makefile.am
--- a/Makefile.am	Wed Feb 11 09:56:37 2015 +0100
+++ b/Makefile.am	Fri Feb 13 12:48:24 2015 +0100
@@ -77,14 +77,15 @@
 export JACOCO_CORE=org.jacoco.core.jar
 export JACOCO_JAVAWS_RESULTS=$(TEST_EXTENSIONS_DIR)/jacoco_javaws.exec
 export JACOCO_PLUGIN_RESULTS=$(TEST_EXTENSIONS_DIR)/jacoco_plugin.exec
-export JACOCO_CLASSPATH=$(JACOCO_PATH)/$(JACOCO_CORE):$(JACOCO_PATH)/$(JACOCO_AGENT):$(JACOCO_PATH)/$(JACOCO_REPORT):$(JACOCO_PATH)/$(JACOCO_AGENTRT):$(JACOCO_PATH)/$(JACOCO_ANT):$(ASM_JAR)
+# space separated fragments for composeclasspath
+export JACOCO_CLASSPATH=$(JACOCO_PATH)/$(JACOCO_CORE) $(JACOCO_PATH)/$(JACOCO_AGENT) $(JACOCO_PATH)/$(JACOCO_REPORT) $(JACOCO_PATH)/$(JACOCO_AGENTRT) $(JACOCO_PATH)/$(JACOCO_ANT) $(ASM_JAR)
 export JACOCO_AGENT_SWITCH_BODY=-javaagent:$(JACOCO_PATH)/$(JACOCO_AGENTRT)
 export JACOCO_BASE_EXCLUDE=org.junit.*:junit.*
 export JACOCO_ADVANCED_EXCLUDE=:*jacoco*:java.lang.*:java.reflect.*:java.util.*:sun.reflect.*
 export JACOCO_AGENT_SWITCH="$(JACOCO_AGENT_SWITCH_BODY)=excludes=$(JACOCO_BASE_EXCLUDE)$(JACOCO_ADVANCED_EXCLUDE),inclbootstrapclasses=true"
 export JACOCO_AGENT_JAVAWS_SWITCH=\"$(JACOCO_AGENT_SWITCH),destfile=$(JACOCO_JAVAWS_RESULTS)\"
 export JACOCO_AGENT_PLUGIN_SWITCH=\"$(JACOCO_AGENT_SWITCH),destfile=$(JACOCO_PLUGIN_RESULTS)\"
-export JACOCO_OPERATOR_EXEC=$(SYSTEM_JRE_DIR)/bin/java $(COVERAGE_JAVA_ARGS) -cp $(JACOCO_OPERATOR_DIR):$(JACOCO_CLASSPATH):. org.jacoco.operator.Main
+export JACOCO_OPERATOR_EXEC=$(SYSTEM_JRE_DIR)/bin/java $(COVERAGE_JAVA_ARGS) -cp $(call joinsegments, $(JACOCO_OPERATOR_DIR) $(JACOCO_CLASSPATH) .) org.jacoco.operator.Main
 
 # linking variables
 export PLUGIN_LINK_NAME=libjavaplugin.so
@@ -135,12 +136,15 @@
 #    IllegalAccessException
 #  - we want full privileges
 #
-export UNIFIED_CLASSPATH=$(call joinsegments, $(datadir)/$(PACKAGE_NAME)/netx.jar $(PLUGIN_JAR) $(RHINO_JAR) $(TAGSOUP_JAR))
+export UNIFIED_CLASSPATH_SEGMENTS=$(datadir)/$(PACKAGE_NAME)/netx.jar $(PLUGIN_JAR) $(RHINO_JAR) $(TAGSOUP_JAR)
+export UNIFIED_JACOCO_CLASSPATH_SEGMENTS=$(UNIFIED_CLASSPATH_SEGMENTS) $(JACOCO_CLASSPATH)
+export UNIFIED_CLASSPATH=$(call joinsegments, $(UNIFIED_CLASSPATH_SEGMENTS))
+export UNIFIED_JACOCO_CLASSPATH=$(call joinsegments, $(UNIFIED_JACOCO_CLASSPATH_SEGMENTS))
 export UNIFIED_BOOTCLASSPATH=-Xbootclasspath/a:$(UNIFIED_CLASSPATH)
-# note javaws, itwebsettings and policyeditor (== LAUNCHER_BOOTCLASSPATH) must be always able to compileand run *without* plugin
+# note javaws, itwebsettings and policyeditor (== LAUNCHER_BOOTCLASSPATH) must be always able to compile and run *without* plugin
 export LAUNCHER_BOOTCLASSPATH="$(UNIFIED_BOOTCLASSPATH)"
 export PLUGIN_BOOTCLASSPATH='"$(UNIFIED_BOOTCLASSPATH)"'
-export PLUGIN_COVERAGE_BOOTCLASSPATH='"$(UNIFIED_BOOTCLASSPATH):$(JACOCO_CLASSPATH)"'
+export PLUGIN_COVERAGE_BOOTCLASSPATH='"-Xbootclasspath/a:$(UNIFIED_JACOCO_CLASSPATH)"'
 
 # Fake update version to work with the Deployment Toolkit script used by Oracle
 # http://download.oracle.com/javase/tutorial/deployment/deploymentInDepth/depltoolkit_index.html
@@ -1168,7 +1172,7 @@
 	mkdir -p $(JACOCO_OPERATOR_DIR) && \
 	$(SYSTEM_JDK_DIR)/bin/javac $(IT_JAVACFLAGS) \
 	  -d $(JACOCO_OPERATOR_DIR) \
-	  -classpath $(JACOCO_CLASSPATH) \
+	  $(call composeclasspath, $(JACOCO_CLASSPATH)) \
 	  @jacoco-operator-source-files.txt ;
 else 
 	echo "Sorry, jacoco coverage report generator  cant be compiled without jacoco installed. Try installing jacoco or specify with-jacoco value" ;
@@ -1256,7 +1260,7 @@
 	javaws_backup=$(DESTDIR)$(bindir)/javaws_backup ; \
 	mv $(DESTDIR)$(bindir)/javaws $$javaws_backup ;  \
 	echo "patching $(javaws)" ; \
-	nw_bootclasspath="$(LAUNCHER_BOOTCLASSPATH):$(JACOCO_CLASSPATH)" ; \
+	nw_bootclasspath="-Xbootclasspath/a:$(UNIFIED_JACOCO_CLASSPATH)" ; \
 	cat $$javaws_backup | sed "s|COMMAND.k.=\"..JAVA.\"|COMMAND[k]=\"\\$$\\{JAVA\\}\" ;  k=1 ; COMMAND[k]=$(JACOCO_AGENT_JAVAWS_SWITCH)|" | sed "s,$(LAUNCHER_BOOTCLASSPATH),$$nw_bootclasspath," > $(DESTDIR)$(bindir)/$(javaws) ; \
 	chmod 777 $(DESTDIR)$(bindir)/$(javaws) ; \
 	echo "backuping plugin in $(DESTDIR)/$(libdir)$(BUILT_PLUGIN_LIBRARY)" ; \
@@ -1278,7 +1282,7 @@
 	  done ; \
 	cd $(TEST_EXTENSIONS_DIR) ; \
 	class_names=`cat $(REPRODUCERS_CLASS_NAMES)` ; \
-	CLASSPATH=$(call joinsegments $(NETX_DIR)/lib/classes.jar $(JUNIT_RUNTIME) $(JUNIT_RUNNER_JAR) . $(TEST_EXTENSIONS_DIR) $(JACOCO_CLASSPATH) $(TEST_EXTENSIONS_TESTS_DIR) $(TEST_EXTENSIONS_SRCDIR)) ; \
+	CLASSPATH=$(call joinsegments, $(NETX_DIR)/lib/classes.jar $(JUNIT_RUNTIME) $(JUNIT_RUNNER_JAR) . $(TEST_EXTENSIONS_DIR) $(JACOCO_CLASSPATH) $(TEST_EXTENSIONS_TESTS_DIR) $(TEST_EXTENSIONS_SRCDIR)) ; \
 	  $(SYSTEM_JRE_DIR)/bin/java $(JACOCO_AGENT_SWITCH) $(REPRODUCERS_DPARAMETERS) \
 	 -Xbootclasspath/a:$$CLASSPATH CommandLine $$class_names ; \
 	if [ -f $(JACOCO_JAVAWS_RESULTS) ] ; then \
diff -r 6d7f7e0e3829 -r a8baec8d9d21 netx/net/sourceforge/jnlp/JREDesc.java
--- a/netx/net/sourceforge/jnlp/JREDesc.java	Wed Feb 11 09:56:37 2015 +0100
+++ b/netx/net/sourceforge/jnlp/JREDesc.java	Fri Feb 13 12:48:24 2015 +0100
@@ -34,7 +34,7 @@
     private static final Pattern heapPattern= Pattern.compile("\\d+[kmg]?");
 
     /** the platform version or the product version if location is not null */
-    final private Version version;
+    final private Version.JreVersion version;
 
     /** the location of a JRE product or null */
     final private URL location;
@@ -61,7 +61,7 @@
      * @param maximumHeapSize maximum head size
      * @param resources list of ResourceDesc objects
      */
-    public JREDesc(Version version, URL location,
+    public JREDesc(Version.JreVersion version, URL location,
             String vmArgs, String initialHeapSize,
             String maximumHeapSize, List<ResourcesDesc> resources) throws ParseException {
         this.version = version;
@@ -77,7 +77,7 @@
      * determine if this version corresponds to a platform or
      * product version.
      */
-    public Version getVersion() {
+    public Version.JreVersion getVersion() {
         return version;
     }
 
diff -r 6d7f7e0e3829 -r a8baec8d9d21 netx/net/sourceforge/jnlp/Parser.java
--- a/netx/net/sourceforge/jnlp/Parser.java	Wed Feb 11 09:56:37 2015 +0100
+++ b/netx/net/sourceforge/jnlp/Parser.java	Fri Feb 13 12:48:24 2015 +0100
@@ -352,7 +352,7 @@
         // require version attribute
         getRequiredAttribute(node, "version", null);
 
-        return new JREDesc(version, location, vmArgs, initialHeap, maxHeap, resources);
+        return new JREDesc(new Version.JreVersion(version.toString(), strict), location, vmArgs, initialHeap, maxHeap, resources);
     }
 
     /**
diff -r 6d7f7e0e3829 -r a8baec8d9d21 netx/net/sourceforge/jnlp/Version.java
--- a/netx/net/sourceforge/jnlp/Version.java	Wed Feb 11 09:56:37 2015 +0100
+++ b/netx/net/sourceforge/jnlp/Version.java	Fri Feb 13 12:48:24 2015 +0100
@@ -17,6 +17,10 @@
 package net.sourceforge.jnlp;
 
 import java.util.*;
+import javax.swing.JOptionPane;
+import net.sourceforge.jnlp.runtime.JNLPRuntime;
+import net.sourceforge.jnlp.runtime.Translator;
+import net.sourceforge.jnlp.util.logging.OutputController;
 
 /**
  * <p>
@@ -39,6 +43,61 @@
  * @version $Revision: 1.5 $
  */
 public class Version {
+    
+    /**
+     * This is special case of version, used only for checking jre version. If
+     * jre do not match, in strict not-headless mode the dialog with
+     * confirrmation appears If jre do not match, in strict headless mode the
+     * exception is thrown If jre match, or non-strict mode is run, then only
+     * message is printed
+     *
+     */
+    public static class JreVersion extends Version {
+
+        public static boolean warned = false;
+
+        public JreVersion(String v, boolean strict) {
+            this(v, strict, JNLPRuntime.isHeadless());
+        }
+
+        /*
+         *  for testing purposes
+         */
+        JreVersion(String v, boolean strict, boolean headless) {
+            super(v);
+            boolean match = matchesJreVersion();
+            if (!match) {
+                String s = Translator.R("JREversionDontMatch", getJreVersion(), v);
+                String e = "Strict run is  deffined, and your JRE - " + getJreVersion() + " - dont match requested JRE(s) - " + v;
+                if (strict) {
+                    if (!headless) {
+                        if (!warned) {
+                            int r = JOptionPane.showConfirmDialog(null, s + "\n" + Translator.R("JREContinueDialogSentence2"), Translator.R("JREContinueDialogSentenceTitle"), JOptionPane.YES_NO_OPTION);
+                            if (r == JOptionPane.NO_OPTION) {
+                                throw new RuntimeException(e);
+                            }
+                            warned = true;
+                        }
+                    } else {
+                        throw new RuntimeException(e);
+                    }
+                } else {
+                    OutputController.getLogger().log(OutputController.Level.WARNING_ALL, s);
+                }
+            } else {
+                OutputController.getLogger().log("good - your JRE - " + getJreVersion() + " - match requested JRE - " + v);
+            }
+        }
+
+        public boolean matchesJreVersion() {
+            return matches(getJreVersion());
+        }
+
+        private String getJreVersion() {
+            return System.getProperty("java.version");
+        }
+
+    }
 
     // to do: web start does not match versions with a "-" like
     // "1.4-beta1" using the + modifier, change to mimic that
@@ -49,13 +108,13 @@
     // "*" and "+" modifiers.
 
     /** separates parts of a version string */
-    private static String seperators = ".-_";
+    private static final String seperators = ".-_";
 
     /** magic key for whether a version part was created due to normalization */
-    private static String emptyString = new String("<EMPTY>"); // not intern'ed
+    private static final String emptyString = new String("<EMPTY>"); // not intern'ed
 
     /** contains all the versions matched */
-    private String versionString;
+    private final String versionString;
 
     /**
      * Create a Version object based on a version string (ie,
diff -r 6d7f7e0e3829 -r a8baec8d9d21 netx/net/sourceforge/jnlp/resources/Messages.properties
--- a/netx/net/sourceforge/jnlp/resources/Messages.properties	Wed Feb 11 09:56:37 2015 +0100
+++ b/netx/net/sourceforge/jnlp/resources/Messages.properties	Fri Feb 13 12:48:24 2015 +0100
@@ -54,6 +54,11 @@
 AboutDialogueTabNews=News
 AboutDialogueTabGPLv2=GPLv2
 
+# version check minidialogue
+JREversionDontMatch=Warning - your JRE - {0} - don't match requested JRE - {1}
+JREContinueDialogSentence2=Do you wont to continue in running?
+JREContinueDialogSentenceTitle=Incompatible JRE
+
 # missing permissions dialogue
 MissingPermissionsMainTitle=Application <span color='red'> {0} </span> \
 from <span color='red'> {1} </span> is missing the permissions attribute. \
diff -r 6d7f7e0e3829 -r a8baec8d9d21 tests/netx/unit/net/sourceforge/jnlp/VersionTest.java
--- a/tests/netx/unit/net/sourceforge/jnlp/VersionTest.java	Wed Feb 11 09:56:37 2015 +0100
+++ b/tests/netx/unit/net/sourceforge/jnlp/VersionTest.java	Fri Feb 13 12:48:24 2015 +0100
@@ -95,4 +95,51 @@
 
 
     }
+    
+    
+      @Test
+    public void cornerCases() {
+        Assert.assertTrue(new Version("1.5").matches("1.5"));
+        Assert.assertTrue(new Version("1.5+").matches("1.5"));
+        Assert.assertTrue(new Version("1.5+").matches("1.6"));
+        Assert.assertFalse(new Version("1.5+").matches("1.4"));
+        Assert.assertFalse(new Version("1.5").matches("1.4"));
+        Assert.assertFalse(new Version("1.5").matches("1.6"));
+    }
+
+    @Test
+    public void testMatchesMinus() {
+        Assert.assertTrue(new Version("1.5-").matches("1.5"));
+        //this fails, do we need to patch it?
+        //Assert.assertTrue(new Version("1.5-").matches("1.4"));
+        //not until somebody complains
+        Assert.assertFalse(new Version("1.5-").matches("1.6"));
+
+    }
+
+    @Test
+    public void multiplePossibilities() {
+        Assert.assertTrue(new Version("1.4 1.5").matches("1.5"));
+        Assert.assertFalse(new Version("1.3 1.4").matches("1.5"));
+    }
+
+    @Test
+    public void jreVersionTestOk() {
+        //no exception occures
+        //head support jdk 7+, so this statements should be always true
+        Version.JreVersion jreVersion = new Version.JreVersion("1.4 1.5+", true, true);
+        Version.JreVersion jreVersion1 = new Version.JreVersion("1.6+", true, true);
+    }
+
+    @Test(expected = RuntimeException.class)
+    public void jreVersionTestFails1() {
+        //head support jdk 7+, so this statements should be always false
+        Version.JreVersion jreVersion = new Version.JreVersion("2", true, true);
+    }
+
+    @Test(expected = RuntimeException.class)
+    public void jreVersionTestFails2() {
+        //head support jdk 7+, so this statements should be always false
+        Version.JreVersion jreVersion = new Version.JreVersion("1.4", true, true);
+    }
 }


More information about the distro-pkg-dev mailing list