Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
1.0-RC1
-
None
-
None
Description
The JellyContext assumes all URLs can be decomposed into a String, and then recomposed via a simple "new URL(urlString)" invocation. This causes significant problems when custom URL handlers are involved, since a user may have created a URL and passed in a custom URLHandler. In a case such as this, if the URL is reduced to a String any subsequent reification may result in either a MalformedURLException, or in a new URL with the default system URLHandler rather than the custom handler.
Of primary concern are the following methods:
createRelativeURL(URL, String)
getJellyContextURL(InputSource)
getJellyContextURL(URL)
runScript(URL, XMLOutput, boolean, boolean)
Attached is a subclass of JellyContext, URLFriendlyJellyContext, that resolves many URL-handling issues, assuming that the context is created with a valid URL, and subsequent operations (such as runScript()) pass String arguments that are either absolute or relative paths to be based upon the URL used to initialize the context.
The content of URLFriendlyJellyContext can easily be merged into the JellyContext class, making JellyContext much more robust when handling custom URLs.