[ https://issues.apache.org/jira/browse/FOP-2861?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17311227#comment-17311227 ]
Yannick SAVANIER edited comment on FOP-2861 at 3/30/21, 7:36 AM: ----------------------------------------------------------------- Still I'm sorry but the problem persist in FontCache : {code:java} public void addFont(EmbedFontInfo fontInfo, InternalResourceResolver resourceResolver) { String cacheKey = getCacheKey(fontInfo); synchronized (changeLock) { CachedFontFile cachedFontFile; if (containsFont(cacheKey)) { cachedFontFile = getFontFileMap().get(cacheKey); if (!cachedFontFile.containsFont(fontInfo)) { cachedFontFile.put(fontInfo); } } else { // try and determine modified date URI fontUri = resourceResolver.resolveFromBase(fontInfo.getEmbedURI()); <== this is using an InternalResourceResolver on an URI pointing a font located into a jar which will fail because of URI bug https://bugs.openjdk.java.net/browse/JDK-8020755 {code} was (Author: ysavanier): Still I'm sorry but the problem persist in FontCache : {code:java} public void addFont(EmbedFontInfo fontInfo, InternalResourceResolver resourceResolver) { String cacheKey = getCacheKey(fontInfo); synchronized (changeLock) { CachedFontFile cachedFontFile; if (containsFont(cacheKey)) { cachedFontFile = getFontFileMap().get(cacheKey); if (!cachedFontFile.containsFont(fontInfo)) { cachedFontFile.put(fontInfo); } } else { // try and determine modified date URI fontUri = resourceResolver.resolveFromBase(fontInfo.getEmbedURI()); <== this is using an InternalResourceResolver on an URI pointing font located into a jar {code} > 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.0, 2.1, 2.2, 2.3 > Reporter: Ole Sandum > Priority: Major > Attachments: FopResourceResolver.java, 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 (v8.3.4#803005)