diff options
author | Omair Majid <[email protected]> | 2013-09-09 11:32:36 -0400 |
---|---|---|
committer | Omair Majid <[email protected]> | 2013-09-09 11:32:36 -0400 |
commit | eae8bd5edfb2300861eb1e646595b27b68293829 (patch) | |
tree | 0ad66a0bdefaa8472b8b61b98151bbd316021efd | |
parent | 6d8f2f2829a06dee43cfe08eea2be162836b65a3 (diff) |
PR1533: Inherit jnlp.packEnabled and jnlp.versionEnabled like other properties
Treat jnlp.packEnabled and jnlp.versionEnabled just like other
properties that can be set in one resource element and
inherited/filtered in others.
2013-09-09 Omair Majid <[email protected]>
* netx/net/sourceforge/jnlp/JNLPFile.java
(getDownloadOptionsForJar): Rename to ...
(getDownloadOptions): New method. Look up jnlp.packEnabled and
jnlp.versionEnabled in any resources element.
* netx/net/sourceforge/jnlp/PluginBridge.java
(getDownloadOptionsForJar): Rename to ...
(getDownloadOptions): New method.
* netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java
(initializeResources): Invoke file.getDownloadResources.
(getDownloadOptionsForJar): Remove.
* tests/netx/unit/net/sourceforge/jnlp/JNLPFileTest.java
(testDownloadOptionsAppliedEverywhere): New method.
(testDownloadOptionsFilteredOut): New method.
-rw-r--r-- | ChangeLog | 16 | ||||
-rw-r--r-- | netx/net/sourceforge/jnlp/JNLPFile.java | 29 | ||||
-rw-r--r-- | netx/net/sourceforge/jnlp/PluginBridge.java | 2 | ||||
-rw-r--r-- | netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java | 6 | ||||
-rw-r--r-- | tests/netx/unit/net/sourceforge/jnlp/JNLPFileTest.java | 68 |
5 files changed, 94 insertions, 27 deletions
@@ -1,3 +1,19 @@ +2013-09-09 Omair Majid <[email protected]> + + * netx/net/sourceforge/jnlp/JNLPFile.java + (getDownloadOptionsForJar): Rename to ... + (getDownloadOptions): New method. Look up jnlp.packEnabled and + jnlp.versionEnabled in any resources element. + * netx/net/sourceforge/jnlp/PluginBridge.java + (getDownloadOptionsForJar): Rename to ... + (getDownloadOptions): New method. + * netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java + (initializeResources): Invoke file.getDownloadResources. + (getDownloadOptionsForJar): Remove. + * tests/netx/unit/net/sourceforge/jnlp/JNLPFileTest.java + (testDownloadOptionsAppliedEverywhere): New method. + (testDownloadOptionsFilteredOut): New method. + 2013-09-04 Andrew Azores <[email protected]> * netx/net/sourceforge/jnlp/config/Defaults.java: (USER_CACHE_HOME) made diff --git a/netx/net/sourceforge/jnlp/JNLPFile.java b/netx/net/sourceforge/jnlp/JNLPFile.java index f8c953e..a48ed7e 100644 --- a/netx/net/sourceforge/jnlp/JNLPFile.java +++ b/netx/net/sourceforge/jnlp/JNLPFile.java @@ -20,7 +20,6 @@ import static net.sourceforge.jnlp.runtime.Translator.R; import java.io.IOException; import java.io.InputStream; -import java.io.Reader; import java.net.URL; import java.util.ArrayList; import java.util.Arrays; @@ -791,29 +790,17 @@ public class JNLPFile { } /** - * XXX: this method does a "==" comparison between the input JARDesc and - * jars it finds through getResourcesDescs(). If ever the implementation - * of that function should change to return copies of JARDescs objects, - * then the "jar == aJar" comparison below should change accordingly. - * @param jar the jar whose download options to get. - * @return the download options. + * @return the download options to use for downloading jars listed in this jnlp file. */ - public DownloadOptions getDownloadOptionsForJar(JARDesc jar) { + public DownloadOptions getDownloadOptions() { boolean usePack = false; boolean useVersion = false; - ResourcesDesc[] descs = getResourcesDescs(); - for (ResourcesDesc desc: descs) { - JARDesc[] jars = desc.getJARs(); - for (JARDesc aJar: jars) { - if (jar == aJar) { - if (Boolean.valueOf(desc.getPropertiesMap().get("jnlp.packEnabled"))) { - usePack = true; - } - if (Boolean.valueOf(desc.getPropertiesMap().get("jnlp.versionEnabled"))) { - useVersion = true; - } - } - } + ResourcesDesc desc = getResources(); + if (Boolean.valueOf(desc.getPropertiesMap().get("jnlp.packEnabled"))) { + usePack = true; + } + if (Boolean.valueOf(desc.getPropertiesMap().get("jnlp.versionEnabled"))) { + useVersion = true; } return new DownloadOptions(usePack, useVersion); } diff --git a/netx/net/sourceforge/jnlp/PluginBridge.java b/netx/net/sourceforge/jnlp/PluginBridge.java index 4f4c8f1..51c22a1 100644 --- a/netx/net/sourceforge/jnlp/PluginBridge.java +++ b/netx/net/sourceforge/jnlp/PluginBridge.java @@ -228,7 +228,7 @@ public class PluginBridge extends JNLPFile { * {@inheritDoc } */ @Override - public DownloadOptions getDownloadOptionsForJar(JARDesc jar) { + public DownloadOptions getDownloadOptions() { return new DownloadOptions(usePack, useVersion); } diff --git a/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java b/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java index a74f541..4efa435 100644 --- a/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java +++ b/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java @@ -626,7 +626,7 @@ public class JNLPClassLoader extends URLClassLoader { tracker.addResource(jars[i].getLocation(), jars[i].getVersion(), - getDownloadOptionsForJar(jars[i]), + file.getDownloadOptions(), jars[i].isCacheable() ? JNLPRuntime.getDefaultUpdatePolicy() : UpdatePolicy.FORCE ); } @@ -1966,10 +1966,6 @@ public class JNLPClassLoader extends URLClassLoader { } } - private DownloadOptions getDownloadOptionsForJar(JARDesc jar) { - return file.getDownloadOptionsForJar(jar); - } - /** * Returns a set of paths that indicate the Class-Path entries in the * manifest file. The paths are rooted in the same directory as the diff --git a/tests/netx/unit/net/sourceforge/jnlp/JNLPFileTest.java b/tests/netx/unit/net/sourceforge/jnlp/JNLPFileTest.java index 1f517be..8285df2 100644 --- a/tests/netx/unit/net/sourceforge/jnlp/JNLPFileTest.java +++ b/tests/netx/unit/net/sourceforge/jnlp/JNLPFileTest.java @@ -45,6 +45,7 @@ import java.util.Locale; import java.util.Map; import net.sourceforge.jnlp.JNLPFile.Match; +import net.sourceforge.jnlp.annotations.Bug; import net.sourceforge.jnlp.mock.MockJNLPFile; import org.junit.Assert; @@ -208,4 +209,71 @@ public class JNLPFileTest { Assert.assertEquals("os2", properties.get("os")); Assert.assertEquals("arch2", properties.get("arch")); } + + @Bug(id={"PR1533"}) + @Test + public void testDownloadOptionsAppliedEverywhere() throws MalformedURLException, ParseException { + String os = System.getProperty("os.name"); + String arch = System.getProperty("os.arch"); + + String jnlpContents = "<?xml version='1.0'?>\n" + + "<jnlp spec='1.5' href='foo' codebase='bar'>\n" + + " <information>\n" + + " <title>Parsing Test</title>\n" + + " <vendor>IcedTea</vendor>\n" + + " <offline-allowed/>\n" + + " </information>\n" + + " <resources>\n" + + " <property name='jnlp.packEnabled' value='false'/>" + + " <property name='jnlp.versionEnabled' value='false'/>" + + " </resources>\n" + + " <resources os='" + os + "'>" + + " <property name='jnlp.packEnabled' value='true'/>" + + " </resources>\n" + + " <resources arch='" + arch + "'>" + + " <property name='jnlp.versionEnabled' value='true'/>" + + " </resources>\n" + + " <installer-desc/>\n" + + "</jnlp>"; + + URL codeBase = new URL("http://icedtea.classpath.org"); + InputStream is = new ByteArrayInputStream(jnlpContents.getBytes()); + JNLPFile jnlpFile = new JNLPFile(is, codeBase, new ParserSettings(false,false,false)); + DownloadOptions downloadOptions = jnlpFile.getDownloadOptions(); + + Assert.assertTrue(downloadOptions.useExplicitPack()); + Assert.assertTrue(downloadOptions.useExplicitVersion()); + } + + @Bug(id={"PR1533"}) + @Test + public void testDownloadOptionsFilteredOut() throws MalformedURLException, ParseException { + String jnlpContents = "<?xml version='1.0'?>\n" + + "<jnlp spec='1.5' href='foo' codebase='bar'>\n" + + " <information>\n" + + " <title>Parsing Test</title>\n" + + " <vendor>IcedTea</vendor>\n" + + " <offline-allowed/>\n" + + " </information>\n" + + " <resources>\n" + + " <property name='jnlp.packEnabled' value='false'/>" + + " <property name='jnlp.versionEnabled' value='false'/>" + + " </resources>\n" + + " <resources os='someOtherOs'>" + + " <property name='jnlp.packEnabled' value='true'/>" + + " </resources>\n" + + " <resources arch='someOtherArch'>" + + " <property name='jnlp.versionEnabled' value='true'/>" + + " </resources>\n" + + " <installer-desc/>\n" + + "</jnlp>"; + + URL codeBase = new URL("http://icedtea.classpath.org"); + InputStream is = new ByteArrayInputStream(jnlpContents.getBytes()); + JNLPFile jnlpFile = new JNLPFile(is, codeBase, new ParserSettings(false,false,false)); + DownloadOptions downloadOptions = jnlpFile.getDownloadOptions(); + + Assert.assertFalse(downloadOptions.useExplicitPack()); + Assert.assertFalse(downloadOptions.useExplicitVersion()); + } } |