You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-dev@xmlgraphics.apache.org by de...@apache.org on 2001/09/26 16:49:58 UTC

cvs commit: xml-batik/test-resources/org/apache/batik/util regParsedURL.xml

deweese     01/09/26 07:49:58

  Modified:    sources/org/apache/batik/util
                        ParsedURLDefaultProtocolHandler.java
               test-resources/org/apache/batik/util regParsedURL.xml
  Log:
  1) Cleaned up last remaining corner cases in relative URL parsing.
  2) Added tests for remaining corner cases
  3) Added some documentation on what the tests are testing.
  
  Revision  Changes    Path
  1.3       +14 -3     xml-batik/sources/org/apache/batik/util/ParsedURLDefaultProtocolHandler.java
  
  Index: ParsedURLDefaultProtocolHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/util/ParsedURLDefaultProtocolHandler.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ParsedURLDefaultProtocolHandler.java	2001/09/26 12:40:51	1.2
  +++ ParsedURLDefaultProtocolHandler.java	2001/09/26 14:49:58	1.3
  @@ -162,6 +162,10 @@
        * @param urlStr the string to parse as a URL.  
        */
       public ParsedURLData parseURL(ParsedURL baseURL, String urlStr) {
  +        // Reference to same document (including fragment, and query).
  +        if (urlStr.length() == 0) 
  +            return baseURL.data;
  +
           int idx = urlStr.indexOf(':');
           if (idx != -1) {
               String protocol = urlStr.substring(0,idx).toLowerCase();
  @@ -177,7 +181,7 @@
                   // Just a Protocol???
                   return parseURL(urlStr);
   
  -            if (urlStr.charAt(idx) == '/')
  +            if (urlStr.charAt(idx) == '/') 
                   // Absolute URL...
                   return parseURL(urlStr);
   
  @@ -186,9 +190,16 @@
               urlStr = urlStr.substring(idx);
           }
   
  -        if (urlStr.startsWith("/"))
  -            // Absolute path.
  +        if (urlStr.startsWith("/")) {
  +            if ((urlStr.length() > 1) &&
  +                (urlStr.charAt(1) == '/')) {
  +                // Relative but only uses protocol from base
  +                return parseURL(baseURL.getProtocol() + ":" + urlStr);
  +            }
  +            // Relative 'absolute' path, uses protocol and authority
  +            // (host) from base
               return parseURL(baseURL.getPortStr() + urlStr);
  +        }
   
           if (urlStr.startsWith("#"))
               return parseURL(baseURL.getPortStr() + 
  
  
  
  1.3       +46 -11    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.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- regParsedURL.xml	2001/09/26 12:40:51	1.2
  +++ regParsedURL.xml	2001/09/26 14:49:58	1.3
  @@ -8,39 +8,46 @@
   
   <!-- ====================================================================== -->
   <!-- @author deweese@apache.org                                             -->
  -<!-- @version $Id: regParsedURL.xml,v 1.2 2001/09/26 12:40:51 deweese Exp $     -->
  +<!-- @version $Id: regParsedURL.xml,v 1.3 2001/09/26 14:49:58 deweese Exp $     -->
   <!-- ====================================================================== -->
   
   <testSuite name="Parsed URL test Suite">
       <test class="org.apache.batik.util.ParsedURLTest">
  +        <!-- Test simple parsing -->
           <arg class="java.lang.String" value="xml.apache.org" />
           <arg class="java.lang.String" value="//xml.apache.org" />
       </test>
       <test class="org.apache.batik.util.ParsedURLTest">
  -        <arg class="java.lang.String" value="http://xml.apache.org/" />
  -        <arg class="java.lang.String" value="~deweese" />
  -        <arg class="java.lang.String" value="http://xml.apache.org/~deweese" />
  -    </test>
  -    <test class="org.apache.batik.util.ParsedURLTest">
  -        <arg class="java.lang.String" value="file:///xml.apache.org" />
  -        <arg class="java.lang.String" value="~deweese" />
  -        <arg class="java.lang.String" value="file:/~deweese" />
  -    </test>
  -    <test class="org.apache.batik.util.ParsedURLTest">
  +        <!-- Test simple parsing -->
           <arg class="java.lang.String" value="fooz:/home/deweese/.cshrc" />
           <arg class="java.lang.String" value="fooz:/home/deweese/.cshrc" />
       </test>
       <test class="org.apache.batik.util.ParsedURLTest">
  +        <!-- Test simple parsing -->
           <arg class="java.lang.String" value="fazz:///home/deweese/.cshrc" />
           <arg class="java.lang.String" value="fazz:/home/deweese/.cshrc" />
       </test>
       <test class="org.apache.batik.util.ParsedURLTest">
  +        <!-- Test simple parsing of single URL -->
           <arg class="java.lang.String" 
                value="fooz://www.com:1234/home/deweese/.cshrc#abcd" />
           <arg class="java.lang.String" 
                value="fooz://www.com:1234/home/deweese/.cshrc#abcd" />
       </test>
       <test class="org.apache.batik.util.ParsedURLTest">
  +        <!-- Test relative url off root -->
  +        <arg class="java.lang.String" value="http://xml.apache.org/" />
  +        <arg class="java.lang.String" value="~deweese" />
  +        <arg class="java.lang.String" value="http://xml.apache.org/~deweese" />
  +    </test>
  +    <test class="org.apache.batik.util.ParsedURLTest">
  +        <!-- Test relative url off file in root dir -->
  +        <arg class="java.lang.String" value="file:///xml.apache.org" />
  +        <arg class="java.lang.String" value="~deweese" />
  +        <arg class="java.lang.String" value="file:/~deweese" />
  +    </test>
  +    <test class="org.apache.batik.util.ParsedURLTest">
  +        <!-- Test relative with partial path and fragement ident -->
           <arg class="java.lang.String" 
                value="fooz://www.com:1234/home/deweese/.cshrc#abcd" />
           <arg class="java.lang.String" 
  @@ -49,6 +56,7 @@
                value="fooz://www.com:1234/home/deweese/xyz.html#efgh" />
       </test>
       <test class="org.apache.batik.util.ParsedURLTest">
  +        <!-- Test relative with absolute path and fragement ident -->
           <arg class="java.lang.String" 
                value="fooz://www.com:1234/home/deweese/xyz.html#efgh" />
           <arg class="java.lang.String" 
  @@ -57,11 +65,38 @@
                value="fooz://www.com:1234/xyz.svg#ijkl" />
       </test>
       <test class="org.apache.batik.util.ParsedURLTest">
  +        <!-- Test relative with matching protocol -->
           <arg class="java.lang.String" 
                value="file:/home/deweese/test.txt" />
           <arg class="java.lang.String" 
                value="file:junk.html" />
           <arg class="java.lang.String" 
                value="file:/home/deweese/junk.html" />
  +    </test>
  +    <test class="org.apache.batik.util.ParsedURLTest">
  +        <!-- Test just keeping protocol -->
  +        <arg class="java.lang.String" value="http://xml.apache.org/batik/" />
  +        <arg class="java.lang.String" value="//jakarta.apache.org/ant/" />
  +        <arg class="java.lang.String" value="http://jakarta.apache.org/ant/" />
  +    </test>
  +    <test class="org.apache.batik.util.ParsedURLTest">
  +        <!-- Test references to same document -->
  +        <arg class="java.lang.String" 
  +             value="http://xml.apache.org/batik/#test" />
  +        <arg class="java.lang.String" value="" />
  +        <arg class="java.lang.String" 
  +             value="http://xml.apache.org/batik/#test" />
  +    </test>
  +    <test class="org.apache.batik.util.ParsedURLTest">
  +        <!-- Test relative with absolute path to root -->
  +        <arg class="java.lang.String" value="http://xml.apache.org/batik/" />
  +        <arg class="java.lang.String" value="/" />
  +        <arg class="java.lang.String" value="http://xml.apache.org/" />
  +    </test>
  +    <test class="org.apache.batik.util.ParsedURLTest">
  +        <!-- Test relative with absolute path to item -->
  +        <arg class="java.lang.String" value="http://xml.apache.org/batik/" />
  +        <arg class="java.lang.String" value="/fop/" />
  +        <arg class="java.lang.String" value="http://xml.apache.org/fop/" />
       </test>
   </testSuite>
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: batik-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-dev-help@xml.apache.org