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
This commit is contained in:
Guilhem Lavaux 2004-09-24 07:35:40 +00:00 committed by Michael Koch
parent 5bb3fc2713
commit 56a4b3e249
2 changed files with 31 additions and 17 deletions

View File

@ -1,3 +1,9 @@
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".
2004-09-24 Guilhem Lavaux <guilhem@kaffe.org> 2004-09-24 Guilhem Lavaux <guilhem@kaffe.org>
* java/net/URL.java (URL): Delete whitespaces in the protocol string. * java/net/URL.java (URL): Delete whitespaces in the protocol string.

View File

@ -122,7 +122,7 @@ import java.util.StringTokenizer;
public final class URL implements Serializable public final class URL implements Serializable
{ {
private static final String DEFAULT_SEARCH_PATH = 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. * The name of the protocol for this URL.
@ -535,6 +535,8 @@ public final class URL implements Serializable
*/ */
public String getPath() 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) if (file == null)
return null; return null;
int quest = file.indexOf('?'); 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 * 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 * that only URLStreamHandlers can modify URL fields. This might be called
* by the <code>parseURL()</code> method in that class. URLs are otherwise * 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 protocol The protocol name for this URL
* @param host The hostname or IP address 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, protected void set(String protocol, String host, int port, String file,
String ref) String ref)
{ {
// TBD: Theoretically, a poorly written StreamHandler could pass an URLStreamHandler protocolHandler = null;
// invalid protocol. It will cause the handler to be set to null protocol = protocol.toLowerCase();
// thus overriding a valid handler. Callers of this method should if (! this.protocol.equals(protocol))
// be aware of this. protocolHandler = getURLStreamHandler(protocol);
protocol = protocol.toLowerCase ();
if (! this.protocol.equals (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.protocol = protocol;
} }
this.authority = ""; 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 * Sets the specified fields of the URL. This is not a public method so
* that only URLStreamHandlers can modify URL fields. URLs are otherwise * 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 protocol The protocol name for this URL.
* @param host The hostname or IP address 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, protected void set(String protocol, String host, int port, String authority,
String userInfo, String path, String query, String ref) String userInfo, String path, String query, String ref)
{ {
// TBD: Theoretically, a poorly written StreamHandler could pass an URLStreamHandler protocolHandler = null;
// invalid protocol. It will cause the handler to be set to null protocol = protocol.toLowerCase();
// thus overriding a valid handler. Callers of this method should if (! this.protocol.equals(protocol))
// be aware of this. protocolHandler = getURLStreamHandler(protocol);
protocol = protocol.toLowerCase ();
if (! this.protocol.equals (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.protocol = protocol;
} }
this.host = host; this.host = host;