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