diff options
author | Guilhem Lavaux <guilhem@kaffe.org> | 2004-09-24 07:35:40 +0000 |
---|---|---|
committer | Michael Koch <mkoch@gcc.gnu.org> | 2004-09-24 07:35:40 +0000 |
commit | 56a4b3e249e32274893ced1368c8793b265043ab (patch) | |
tree | c6b9c7bb7b3ba809190cb127aa150cd7c22286f0 /libjava/java/net | |
parent | 5bb3fc271351cc0e0d99f85bf0a491078352e81f (diff) | |
download | gcc-56a4b3e249e32274893ced1368c8793b265043ab.zip gcc-56a4b3e249e32274893ced1368c8793b265043ab.tar.gz gcc-56a4b3e249e32274893ced1368c8793b265043ab.tar.bz2 |
2004-09-24 Guilhem Lavaux <guilhem@kaffe.org>
* java/net/URL.java
(set): This method now matches the behaviour of the JDK.
(DEFAULT_SEARCH_PATH): Added "gnu.inet".
From-SVN: r88016
Diffstat (limited to 'libjava/java/net')
-rw-r--r-- | libjava/java/net/URL.java | 42 |
1 files changed, 25 insertions, 17 deletions
diff --git a/libjava/java/net/URL.java b/libjava/java/net/URL.java index bc891f4..71e4358 100644 --- a/libjava/java/net/URL.java +++ b/libjava/java/net/URL.java @@ -122,7 +122,7 @@ import java.util.StringTokenizer; public final class URL implements Serializable { private static final String DEFAULT_SEARCH_PATH = - "gnu.java.net.protocol|sun.net.www.protocol"; + "gnu.java.net.protocol|gnu.inet"; /** * The name of the protocol for this URL. @@ -535,6 +535,8 @@ public final class URL implements Serializable */ public String getPath() { + // The spec says we need to return an empty string, but some + // applications depends on receiving null when the path is empty. if (file == null) return null; int quest = file.indexOf('?'); @@ -694,7 +696,8 @@ public final class URL implements Serializable * Sets the specified fields of the URL. This is not a public method so * that only URLStreamHandlers can modify URL fields. This might be called * by the <code>parseURL()</code> method in that class. URLs are otherwise - * constant. + * constant. If the given protocol does not exist, it will keep the previously + * set protocol. * * @param protocol The protocol name for this URL * @param host The hostname or IP address for this URL @@ -705,14 +708,16 @@ public final class URL implements Serializable protected void set(String protocol, String host, int port, String file, String ref) { - // TBD: Theoretically, a poorly written StreamHandler could pass an - // invalid protocol. It will cause the handler to be set to null - // thus overriding a valid handler. Callers of this method should - // be aware of this. - protocol = protocol.toLowerCase (); - if (! this.protocol.equals (protocol)) + URLStreamHandler protocolHandler = null; + protocol = protocol.toLowerCase(); + if (! this.protocol.equals(protocol)) + protocolHandler = getURLStreamHandler(protocol); + + // It is an hidden feature of the JDK. If the protocol does not exist, + // we keep the previously initialized protocol. + if (protocolHandler != null) { - this.ph = getURLStreamHandler(protocol); + this.ph = protocolHandler; this.protocol = protocol; } this.authority = ""; @@ -732,7 +737,8 @@ public final class URL implements Serializable /** * Sets the specified fields of the URL. This is not a public method so * that only URLStreamHandlers can modify URL fields. URLs are otherwise - * constant. + * constant. If the given protocol does not exist, it will keep the previously + * set protocol. * * @param protocol The protocol name for this URL. * @param host The hostname or IP address for this URL. @@ -748,14 +754,16 @@ public final class URL implements Serializable protected void set(String protocol, String host, int port, String authority, String userInfo, String path, String query, String ref) { - // TBD: Theoretically, a poorly written StreamHandler could pass an - // invalid protocol. It will cause the handler to be set to null - // thus overriding a valid handler. Callers of this method should - // be aware of this. - protocol = protocol.toLowerCase (); - if (! this.protocol.equals (protocol)) + URLStreamHandler protocolHandler = null; + protocol = protocol.toLowerCase(); + if (! this.protocol.equals(protocol)) + protocolHandler = getURLStreamHandler(protocol); + + // It is an hidden feature of the JDK. If the protocol does not exist, + // we keep the previously initialized protocol. + if (protocolHandler != null) { - this.ph = getURLStreamHandler(protocol); + this.ph = protocolHandler; this.protocol = protocol; } this.host = host; |