deweese 01/12/05 10:45:56
Modified: sources/org/apache/batik/util ParsedURL.java
test-resources/org/apache/batik/util regParsedURL.xml
unitTesting.xml
Added: sources/org/apache/batik/util
ParsedURLJarProtocolHandler.java
Log:
1) Fixed Batik's handling of jar URLS.
2) Added several tests for jar URLS.
Revision Changes Path
1.10 +5 -1 xml-batik/sources/org/apache/batik/util/ParsedURL.java
Index: ParsedURL.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/util/ParsedURL.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- ParsedURL.java 2001/09/27 20:09:11 1.9
+++ ParsedURL.java 2001/12/05 18:45:56 1.10
@@ -43,7 +43,7 @@
* protocol specific instances of the ParsedURLData class.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Thomas DeWeese</a>
- * @version $Id: ParsedURL.java,v 1.9 2001/09/27 20:09:11 deweese Exp $
+ * @version $Id: ParsedURL.java,v 1.10 2001/12/05 18:45:56 deweese Exp $
*/
public class ParsedURL {
@@ -89,6 +89,7 @@
handlersMap = new HashMap();
registerHandler(new ParsedURLDataProtocolHandler());
+ registerHandler(new ParsedURLJarProtocolHandler());
Iterator iter = Service.providers(ParsedURLProtocolHandler.class);
while (iter.hasNext()) {
@@ -480,6 +481,9 @@
*/
public static ParsedURLData parseURL(ParsedURL baseURL, String urlStr) {
String protocol = getProtocol(urlStr);
+
+ if (protocol == null)
+ protocol = baseURL.getProtocol();
ParsedURLProtocolHandler handler = getHandler(protocol);
return handler.parseURL(baseURL, urlStr);
}
1.1
xml-batik/sources/org/apache/batik/util/ParsedURLJarProtocolHandler.java
Index: ParsedURLJarProtocolHandler.java
===================================================================
/*****************************************************************************
* Copyright (C) The Apache Software Foundation. All rights reserved. *
* ------------------------------------------------------------------------- *
* This software is published under the terms of the Apache Software License *
* version 1.1, a copy of which has been included with this distribution in *
* the LICENSE file. *
*****************************************************************************/
package org.apache.batik.util;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.IOException;
import java.util.Iterator;
/**
* Protocol Handler for the 'jar' protocol.
* This appears to have the format:
* jar:<URL for jar file>!<path in jar file>
*
* @author <a href="mailto:[EMAIL PROTECTED]">Thomas DeWeese</a>
* @version $Id: ParsedURLJarProtocolHandler.java,v 1.1 2001/12/05 18:45:56 deweese
Exp $
*/
public class ParsedURLJarProtocolHandler
extends ParsedURLDefaultProtocolHandler {
public static final String JAR = "jar";
public ParsedURLJarProtocolHandler() {
super(JAR);
}
public ParsedURLData parseURL(ParsedURL baseURL, String urlStr) {
System.out.println("In parseURL");
String start = urlStr.substring(0, JAR.length()+1).toLowerCase();
if (start.equals(JAR+":"))
return parseURL(urlStr);
return super.parseURL(baseURL, urlStr);
}
}
1.5 +59 -1 xml-batik/test-resources/org/apache/batik/util/regParsedURL.xml
Index: regParsedURL.xml
===================================================================
RCS file: /home/cvs/xml-batik/test-resources/org/apache/batik/util/regParsedURL.xml,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- regParsedURL.xml 2001/09/27 11:33:20 1.4
+++ regParsedURL.xml 2001/12/05 18:45:56 1.5
@@ -8,7 +8,7 @@
<!-- ====================================================================== -->
<!-- @author [EMAIL PROTECTED] -->
-<!-- @version $Id: regParsedURL.xml,v 1.4 2001/09/27 11:33:20 deweese Exp $ -->
+<!-- @version $Id: regParsedURL.xml,v 1.5 2001/12/05 18:45:56 deweese Exp $ -->
<!-- ====================================================================== -->
<testSuite name="Parsed URL test Suite">
@@ -110,5 +110,63 @@
<arg class="java.lang.String" value="file:" />
<arg class="java.lang.String" value="file:junk.svg#Bar" />
<arg class="java.lang.String" value="file:junk.svg#Bar" />
+ </test>
+
+ <!-- Tests for the jar protocol... -->
+ <test class="org.apache.batik.util.ParsedURLTest">
+ <!-- Test basic parsing of jar URL -->
+ <arg class="java.lang.String"
+ value="jar:file:dir/file.jar!/p/a/t/h/init.svg" />
+ <arg class="java.lang.String"
+ value="jar:file:dir/file.jar!/p/a/t/h/init.svg" />
+ </test>
+ <test class="org.apache.batik.util.ParsedURLTest">
+ <!-- more basic parsing of jar URL -->
+ <arg class="java.lang.String"
+ value="jar:file:dir/file.jar!/p/a/t/h/init.svg#foo" />
+ <arg class="java.lang.String"
+ value="jar:file:dir/file.jar!/p/a/t/h/init.svg#foo" />
+ </test>
+ <test class="org.apache.batik.util.ParsedURLTest">
+ <!-- Test relative file from base jar URL -->
+ <arg class="java.lang.String"
+ value="jar:file:dir/file.jar!/p/a/t/h/init.svg" />
+ <arg class="java.lang.String" value="../base.svg" />
+ <arg class="java.lang.String"
+ value="jar:file:dir/file.jar!/p/a/t/base.svg" />
+ </test>
+ <test class="org.apache.batik.util.ParsedURLTest">
+ <!-- Test fragment from base jar URL -->
+ <arg class="java.lang.String"
+ value="jar:file:dir/file.jar!/p/a/t/h/init.svg" />
+ <arg class="java.lang.String" value="#foo" />
+ <arg class="java.lang.String"
+ value="jar:file:dir/file.jar!/p/a/t/h/init.svg#foo" />
+ </test>
+ <test class="org.apache.batik.util.ParsedURLTest">
+ <!-- Test fragment replacement in base jar URL -->
+ <arg class="java.lang.String"
+ value="jar:file:dir/file.jar!/p/a/t/h/init.svg#bar" />
+ <arg class="java.lang.String" value="#faz" />
+ <arg class="java.lang.String"
+ value="jar:file:dir/file.jar!/p/a/t/h/init.svg#faz" />
+ </test>
+ <test class="org.apache.batik.util.ParsedURLTest">
+ <!-- Test simple absolute child jar URL -->
+ <arg class="java.lang.String"
+ value="jar:file:/path1!/path2" />
+ <arg class="java.lang.String"
+ value="jar:file:/path3!/path4" />
+ <arg class="java.lang.String"
+ value="jar:file:/path3!/path4" />
+ </test>
+ <test class="org.apache.batik.util.ParsedURLTest">
+ <!-- Test complex absolute child jar URL -->
+ <arg class="java.lang.String"
+ value="jar:file:dir/file.jar!/p/a/t/h/init.svg" />
+ <arg class="java.lang.String"
+ value="jar:file:dir/file.jar!/b/a/t/i/k/new.svg#bar" />
+ <arg class="java.lang.String"
+ value="jar:file:dir/file.jar!/b/a/t/i/k/new.svg#bar" />
</test>
</testSuite>
1.3 +59 -1 xml-batik/test-resources/org/apache/batik/util/unitTesting.xml
Index: unitTesting.xml
===================================================================
RCS file: /home/cvs/xml-batik/test-resources/org/apache/batik/util/unitTesting.xml,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- unitTesting.xml 2001/10/04 14:01:34 1.2
+++ unitTesting.xml 2001/12/05 18:45:56 1.3
@@ -9,7 +9,7 @@
<!-- ====================================================================== -->
<!-- @author [EMAIL PROTECTED] -->
<!-- @author [EMAIL PROTECTED] -->
-<!-- @version $Id: unitTesting.xml,v 1.2 2001/10/04 14:01:34 vhardy Exp $ -->
+<!-- @version $Id: unitTesting.xml,v 1.3 2001/12/05 18:45:56 deweese Exp $ -->
<!-- ====================================================================== -->
<testSuite id="util.unitTesting" name="org.apache.batik.util Unit Testing">
@@ -240,6 +240,64 @@
<arg class="java.lang.String" value="file:" />
<arg class="java.lang.String" value="file:junk.svg#Bar" />
<arg class="java.lang.String" value="file:junk.svg#Bar" />
+ </test>
+
+ <!-- Tests for the jar protocol... -->
+ <test id="ParsedURL.15" class="org.apache.batik.util.ParsedURLTest">
+ <!-- Test basic parsing of jar URL -->
+ <arg class="java.lang.String"
+ value="jar:file:dir/file.jar!/p/a/t/h/init.svg" />
+ <arg class="java.lang.String"
+ value="jar:file:dir/file.jar!/p/a/t/h/init.svg" />
+ </test>
+ <test id="ParsedURL.16" class="org.apache.batik.util.ParsedURLTest">
+ <!-- more basic parsing of jar URL -->
+ <arg class="java.lang.String"
+ value="jar:file:dir/file.jar!/p/a/t/h/init.svg#foo" />
+ <arg class="java.lang.String"
+ value="jar:file:dir/file.jar!/p/a/t/h/init.svg#foo" />
+ </test>
+ <test id="ParsedURL.17" class="org.apache.batik.util.ParsedURLTest">
+ <!-- Test relative file from base jar URL -->
+ <arg class="java.lang.String"
+ value="jar:file:dir/file.jar!/p/a/t/h/init.svg" />
+ <arg class="java.lang.String" value="../base.svg" />
+ <arg class="java.lang.String"
+ value="jar:file:dir/file.jar!/p/a/t/h/../base.svg" />
+ </test>
+ <test id="ParsedURL.18" class="org.apache.batik.util.ParsedURLTest">
+ <!-- Test fragment from base jar URL -->
+ <arg class="java.lang.String"
+ value="jar:file:dir/file.jar!/p/a/t/h/init.svg" />
+ <arg class="java.lang.String" value="#foo" />
+ <arg class="java.lang.String"
+ value="jar:file:dir/file.jar!/p/a/t/h/init.svg#foo" />
+ </test>
+ <test id="ParsedURL.19" class="org.apache.batik.util.ParsedURLTest">
+ <!-- Test fragment replacement in base jar URL -->
+ <arg class="java.lang.String"
+ value="jar:file:dir/file.jar!/p/a/t/h/init.svg#bar" />
+ <arg class="java.lang.String" value="#faz" />
+ <arg class="java.lang.String"
+ value="jar:file:dir/file.jar!/p/a/t/h/init.svg#faz" />
+ </test>
+ <test id="ParsedURL.20" class="org.apache.batik.util.ParsedURLTest">
+ <!-- Test simple absolute child jar URL -->
+ <arg class="java.lang.String"
+ value="jar:file:/path1!/path2" />
+ <arg class="java.lang.String"
+ value="jar:file:/path3!/path4" />
+ <arg class="java.lang.String"
+ value="jar:file:/path3!/path4" />
+ </test>
+ <test id="ParsedURL.21" class="org.apache.batik.util.ParsedURLTest">
+ <!-- Test complex absolute child jar URL -->
+ <arg class="java.lang.String"
+ value="jar:file:dir/file.jar!/p/a/t/h/init.svg" />
+ <arg class="java.lang.String"
+ value="jar:file:dir/file.jar!/b/a/t/i/k/new.svg#bar" />
+ <arg class="java.lang.String"
+ value="jar:file:dir/file.jar!/b/a/t/i/k/new.svg#bar" />
</test>
</testSuite>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]