diff options
author | Danesh Dadachanji <[email protected]> | 2012-06-04 13:35:25 -0400 |
---|---|---|
committer | Danesh Dadachanji <[email protected]> | 2012-06-04 13:35:25 -0400 |
commit | b6a2b55190c36fd9b42fdb3c61e8ff0e06776263 (patch) | |
tree | 194690c969f4375fa9e690ccb81446944e2fda3f /netx/net | |
parent | 9a31bacf619e4f9ffa32fb6c1e348079db2d417c (diff) |
Handle absolute paths passed into jnlp_href's value.
Diffstat (limited to 'netx/net')
-rw-r--r-- | netx/net/sourceforge/jnlp/JNLPCreator.java | 35 | ||||
-rw-r--r-- | netx/net/sourceforge/jnlp/PluginBridge.java | 22 |
2 files changed, 52 insertions, 5 deletions
diff --git a/netx/net/sourceforge/jnlp/JNLPCreator.java b/netx/net/sourceforge/jnlp/JNLPCreator.java new file mode 100644 index 0000000..ca1b94b --- /dev/null +++ b/netx/net/sourceforge/jnlp/JNLPCreator.java @@ -0,0 +1,35 @@ +/* + * Copyright 2012 Red Hat, Inc. + * This file is part of IcedTea, http://icedtea.classpath.org + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +package net.sourceforge.jnlp; + +import java.io.IOException; +import java.net.URL; + +import net.sourceforge.jnlp.cache.UpdatePolicy; + +public class JNLPCreator { + public JNLPFile create(URL location, Version version, boolean strict, + UpdatePolicy policy, URL forceCodebase) throws IOException, ParseException { + return new JNLPFile(location, version, strict, policy, forceCodebase); + } +} diff --git a/netx/net/sourceforge/jnlp/PluginBridge.java b/netx/net/sourceforge/jnlp/PluginBridge.java index 273b213..d241f7c 100644 --- a/netx/net/sourceforge/jnlp/PluginBridge.java +++ b/netx/net/sourceforge/jnlp/PluginBridge.java @@ -1,5 +1,5 @@ /* - * Copyright 2007 Red Hat, Inc. + * Copyright 2012 Red Hat, Inc. * This file is part of IcedTea, http://icedtea.classpath.org * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -46,10 +46,20 @@ public class PluginBridge extends JNLPFile { private boolean codeBaseLookup; private boolean useJNLPHref; + /** + * Creates a new PluginBridge using a default JNLPCreator. + */ public PluginBridge(URL codebase, URL documentBase, String jar, String main, int width, int height, Hashtable<String, String> atts, String uKey) throws Exception { + this(codebase, documentBase, jar, main, width, height, atts, uKey, new JNLPCreator()); + } + + public PluginBridge(URL codebase, URL documentBase, String jar, String main, + int width, int height, Hashtable<String, String> atts, + String uKey, JNLPCreator jnlpCreator) + throws Exception { specVersion = new Version("1.0"); fileVersion = new Version("1.1"); this.codeBase = codebase; @@ -59,8 +69,10 @@ public class PluginBridge extends JNLPFile { if (atts.containsKey("jnlp_href")) { useJNLPHref = true; try { - URL jnlp = new URL(codeBase.toExternalForm() + atts.get("jnlp_href")); - JNLPFile jnlpFile = new JNLPFile(jnlp, null, false, JNLPRuntime.getDefaultUpdatePolicy(), this.codeBase); + // Use codeBase as the context for the URL. If jnlp_href's + // value is a complete URL, it will replace codeBase's context. + URL jnlp = new URL(codeBase, atts.get("jnlp_href")); + JNLPFile jnlpFile = jnlpCreator.create(jnlp, null, false, JNLPRuntime.getDefaultUpdatePolicy(), codeBase); Map<String, String> jnlpParams = jnlpFile.getApplet().getParameters(); info = jnlpFile.info; @@ -76,8 +88,8 @@ public class PluginBridge extends JNLPFile { } catch (MalformedURLException e) { // Don't fail because we cannot get the jnlp file. Parameters are optional not required. // it is the site developer who should ensure that file exist. - System.err.println("Unable to get JNLP file at: " + codeBase.toExternalForm() - + atts.get("jnlp_href")); + System.err.println("Unable to get JNLP file at: " + atts.get("jnlp_href") + + " with context of URL as: " + codeBase.toExternalForm()); } } else { // Should we populate this list with applet attribute tags? |