Ole Sandum created FOP-2861:
-------------------------------

             Summary: Allow resource loading from jar: URI
                 Key: FOP-2861
                 URL: https://issues.apache.org/jira/browse/FOP-2861
             Project: FOP
          Issue Type: Improvement
    Affects Versions: 2.3, 2.2, 2.1, 2.0
            Reporter: Ole Sandum
         Attachments: uri_resolve.diff

We would like to load our FOP config.xml along with related fonts and 
hyphenation files using  the common classloader URL, e.g.:

{{  URL configXml = getClass().getResource("config.xml");}}
{{  FopConfParser confParser = }}
{{      new FopConfParser(configXml.openStream(), configXml.toURI());}}

This makes for easy deployment, and works nicely as long as classes and 
resources are loaded from separate files, i.e. from file:/some/path/config.xml 
URIs. However, it fails when classes and resources are packaged and loaded 
directly from a jar, i.e. from jar:file:/some/archive.jar!/path/config.xml 
URIs, as is the case when deploying with JWS or running an all-in-one 
executable jar, as it will fail to properly resolve the related font and 
hyphenation file URIs. 

See [https://github.com/osandum/fop-test.git] for a test to illustrate.

This is a consequence of a long standing issue (reported in 
[https://bugs.openjdk.java.net/browse/JDK-8020755)] that URI.resolve(childUri) 
doesn't work as expected on jar:file: URIs.

In this case, it can be easily remedied by a work-around to the call in 
InternalResourceResolver.resolveFromBase(URI uri). Patch attached.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to