You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by py...@apache.org on 2006/11/02 14:30:00 UTC
svn commit: r470361 - in
/incubator/harmony/enhanced/classlib/trunk/modules/luni/src:
main/java/java/net/URLStreamHandler.java
test/java/tests/api/java/net/URLTest.java
Author: pyang
Date: Thu Nov 2 05:29:59 2006
New Revision: 470361
URL: http://svn.apache.org/viewvc?view=rev&rev=470361
Log:
Apply patch for HARMONY-1999([classlib][luni] Bug of java.net.URL.toExternalForm)
Modified:
incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/net/URLStreamHandler.java
incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/net/URLTest.java
Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/net/URLStreamHandler.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/net/URLStreamHandler.java?view=diff&rev=470361&r1=470360&r2=470361
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/net/URLStreamHandler.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/net/URLStreamHandler.java Thu Nov 2 05:29:59 2006
@@ -109,6 +109,11 @@
int hostIdx = 2, portIdx = -1;
port = -1;
fileIdx = parseString.indexOf('/', hostIdx);
+ int questionMarkIndex = parseString.indexOf('?', hostIdx);
+ if ((questionMarkIndex != -1)
+ && ((fileIdx == -1) || (fileIdx > questionMarkIndex))) {
+ fileIdx = questionMarkIndex;
+ }
if (fileIdx == -1) {
fileIdx = end;
// Use default
@@ -165,20 +170,25 @@
int fileEnd = (refIdx == -1 ? end : refIdx);
int queryIdx = parseString.lastIndexOf('?', fileEnd);
- if (queryIdx > -1) {
- query = parseString.substring(queryIdx + 1, fileEnd);
- // Don't inherit file if query is changed
- if (queryIdx == 0 && file != null) {
- file = "/";
+ boolean canonicalize = false;
+ if (queryIdx > -1) {
+ query = parseString.substring(queryIdx + 1, fileEnd);
+ if (queryIdx == 0 && file != null) {
+ if (file.equals("")) {
+ file = "/";
+ } else if (file.startsWith("/")) {
+ canonicalize = true;
+ }
+ int last = file.lastIndexOf('/') + 1;
+ file = file.substring(0, last);
}
- fileEnd = queryIdx;
- } else
- // Don't inherit query unless only the ref is changed
- if (refIdx != 0) {
+ fileEnd = queryIdx;
+ } else
+ // Don't inherit query unless only the ref is changed
+ if (refIdx != 0) {
query = null;
}
- boolean canonicalize = false;
if (fileIdx > -1) {
if (fileIdx < end && parseString.charAt(fileIdx) == '/') {
file = parseString.substring(fileIdx, fileEnd);
Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/net/URLTest.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/net/URLTest.java?view=diff&rev=470361&r1=470360&r2=470361
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/net/URLTest.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/net/URLTest.java Thu Nov 2 05:29:59 2006
@@ -1256,21 +1256,25 @@
// Expected NullPointerException
}
}
-
- /**
- * Sets up the fixture, for example, open a network connection. This method
- * is called before a test is executed.
- */
- protected void setUp() {
- }
-
- /**
- * Tears down the fixture, for example, close a network connection. This
- * method is called after a test is executed.
- */
- protected void tearDown() {
- }
+ public void test_toExternalForm_Absolute() throws MalformedURLException {
+ String strURL = "http://localhost?name=value";
+ URL url = new URL(strURL);
+ assertEquals(strURL, url.toExternalForm());
+
+ strURL = "http://localhost?name=value/age=12";
+ url = new URL(strURL);
+ assertEquals(strURL, url.toExternalForm());
+ }
+
+ public void test_toExternalForm_Relative() throws MalformedURLException {
+ String strURL = "http://a/b/c/d;p?q";
+ String ref = "?y";
+ URL url = new URL(new URL(strURL), ref);
+ assertEquals("http://a/b/c/?y", url.toExternalForm());
+
+ }
+
static class MockProxySelector extends ProxySelector {
public void connectFailed(URI uri, SocketAddress sa, IOException ioe) {