svn commit: r1903877 - in /xmlgraphics/fop/trunk/fop-core/src: main/java/org/apache/fop/apps/io/InternalResourceResolver.java test/java/org/apache/fop/apps/io/URIResolverWrapperTestCase.java
[email protected] Mon, 05 Sep 2022 08:54:26 -0000
| Newsgroups | gmane.text.xml.fop.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: ssteiner
Date: Mon Sep 5 08:54:25 2022
New Revision: 1903877
URL: http://svn.apache.org/viewvc?rev=1903877&view=rev
Log:
FOP-2861: Allow resource loading from jar
Modified:
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/apps/io/InternalResourceResolver.java
xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/apps/io/URIResolverWrapperTestCase.java
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/apps/io/InternalResourceResolver.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/apps/io/InternalResourceResolver.java?rev=1903877&r1=1903876&r2=1903877&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/apps/io/InternalResourceResolver.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/apps/io/InternalResourceResolver.java Mon Sep 5 08:54:25 2022
@@ -22,8 +22,10 @@ package org.apache.fop.apps.io;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
+import java.net.URL;
import javax.xml.transform.Source;
import javax.xml.transform.TransformerException;
@@ -110,7 +112,11 @@ public class InternalResourceResolver {
* @return the resolved URI
*/
public URI resolveFromBase(URI uri) {
- return baseUri.resolve(uri);
+ try {
+ return new URL(baseUri.toURL(), uri.toString()).toURI();
+ } catch (MalformedURLException | URISyntaxException | IllegalArgumentException e) {
+ return baseUri.resolve(uri);
+ }
}
/**
Modified: xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/apps/io/URIResolverWrapperTestCase.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/apps/io/URIResolverWrapperTestCase.java?rev=1903877&r1=1903876&r2=1903877&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/apps/io/URIResolverWrapperTestCase.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/apps/io/URIResolverWrapperTestCase.java Mon Sep 5 08:54:25 2022
@@ -46,12 +46,10 @@ import org.apache.xmlgraphics.util.io.Ba
public class URIResolverWrapperTestCase {
private static final List<String> BASE_URIS = Collections.unmodifiableList(Arrays.asList(
- new String[] {
- ".",
- "../",
- "some/path",
- "file:///absolute/file/path"}
- ));
+ ".",
+ "../",
+ "some/path",
+ "file:///absolute/file/path"));
private URI base;
@@ -151,4 +149,11 @@ public class URIResolverWrapperTestCase
// PASS
}
}
+
+ @Test
+ public void testJarUri() {
+ URI uri = new InternalResourceResolver(URI.create("jar:file:/home/my.jar!/fop.xconf"), null)
+ .resolveFromBase(URI.create("x"));
+ assertEquals(uri.toString(), "jar:file:/home/my.jar!/x");
+ }
}