/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