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]