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]

Reply via email to