2002-09-25 Michael Koch <konqueror@gmx.de>

* java/net/DatagramSocket.java
	(DatagramSocket): Initialize new instance variables.
	(close): Reset new instance variables.
	(getLocalAddress): Remove unneeded SecurityManager usage.
	(getLocalPort): Check if socket is already bound.
	(isConnected): New method.
	(getInetAddress): Implemented.
	(getPort): Better Implementation, documentation fixed.
	(getRemoteSocketAddress): New method.
	* java/net/JarURLConnection.java
	(element): Typo fixed.
	(getMainAttributes): New method.
	(getAttributes): New method (stub only).
	(getManifest): New method (stub only).
	* java/net/NetPermission.java: Added serialVersionsUID.
	* java/net/Socket.java
	(connect): Check blocking mode of associated channel,
	documentation added.
	(getLocalSocketAddress): Better implementation.
	(getRemoteSocketAddress): Implemented.
	(isBound): New method.
	(setSendBufferSize): Documentation added.
	* java/net/SocketAddress.java: Added serialVersionsUID.
	* java/net/SocketPermission.java: Added serialVersionsUID.
	* java/net/URL.java
	(URL): Wrap for shorter lines, initialize new instance variables,
	documentation added.
	(equals): Check new instance variables too.
	(getContent): Documentation added.
	(getPath): Documentation added.
	(getAuthority): New method.
	(getHost): Documentation added.
	(getPort): Documentation added.
	(getDefaultPort): New method.
	(getProtocol): Documentation added.
	(getUserInfo): Documentation added.
	(set): Initialize new instance variables, documentation added.
	* java/net/URLStreamHandler.java
	(setURL): New method.
	* java/net/natPlainDatagramSocketImpl.cc
	(connect): Fix exception name.
	(disconnect): Fix exception name.

From-SVN: r57501
This commit is contained in:
Michael Koch 2002-09-25 17:14:09 +00:00 committed by Michael Koch
parent 6f950405a0
commit fc44b85de7
10 changed files with 320 additions and 32 deletions

View file

@ -28,9 +28,12 @@ import java.util.StringTokenizer;
public final class URL implements Serializable
{
private String protocol;
private String authority;
private String userInfo;
private String host;
private int port = -1; // Initialize for constructor using context.
private String file;
private String query;
private String ref;
private int hashCode = 0;
transient private URLStreamHandler handler;
@ -39,19 +42,50 @@ public final class URL implements Serializable
private static final long serialVersionUID = -7627629688361524110L;
/**
* Creates an URL object from the given arguments
*
* @param protocol The protocol of the URL
* @param host The host of the URL
* @param port The port of the URL
* @param file The file of the URL
*
* @exception MalformedURLException If an error occurs
*/
public URL(String protocol, String host, int port, String file)
throws MalformedURLException
{
this(protocol, host, port, file, null);
}
/**
* Creates an URL object from the given arguments
*
* @param protocol The protocol of the URL
* @param host The host of the URL
* @param file The file of the URL
*
* @exception MalformedURLException If an error occurs
*/
public URL(String protocol, String host, String file)
throws MalformedURLException
{
this(protocol, host, -1, file, null);
}
// JDK1.2
/**
* Creates an URL object from the given arguments
*
* @param protocol The protocol of the URL
* @param host The host of the URL
* @param port The port of the URL
* @param file The file of the URL
* @param handler The stream handler for the URL
*
* @exception MalformedURLException If an error occurs
*
* @since 1.2
*/
public URL(String protocol, String host, int port, String file,
URLStreamHandler handler) throws MalformedURLException
{
@ -76,11 +110,14 @@ public final class URL implements Serializable
this.handler = setURLStreamHandler(protocol);
if (this.handler == null)
throw new MalformedURLException("Protocol handler not found: " + protocol);
throw new MalformedURLException (
"Protocol handler not found: " + protocol);
this.host = host;
this.port = port;
this.userInfo = null;
this.authority = null;
this.query = null;
int hashAt = file.indexOf('#');
if (hashAt < 0)
@ -96,17 +133,42 @@ public final class URL implements Serializable
hashCode = hashCode(); // Used for serialization.
}
/**
* Creates an URL object from the given arguments
*
* @param spec The string to parse an URL
*
* @exception MalformedURLException If an error occurs
*/
public URL(String spec) throws MalformedURLException
{
this((URL) null, spec, (URLStreamHandler) null);
}
/**
* Creates an URL object from the given arguments
*
* @param context The context on which to parse the specification
* @param spec The string to parse an URL
*
* @exception MalformedURLException If an error occurs
*/
public URL(URL context, String spec) throws MalformedURLException
{
this(context, spec, (URLStreamHandler) null);
}
// JDK1.2
/**
* Creates an URL from given arguments
*
* @param context The context in which to parse the specification
* @param spec The string to parse as an URL
* @param handler The stream handler for the URL
*
* @exception MalformedURLException If an error occurs
*
* @since 1.2
*/
public URL(URL context, String spec, URLStreamHandler handler)
throws MalformedURLException
{
@ -142,6 +204,9 @@ public final class URL implements Serializable
host = context.host;
port = context.port;
file = context.file;
userInfo = context.userInfo;
authority = context.authority;
query = context.query;
}
}
else if (context != null)
@ -153,6 +218,9 @@ public final class URL implements Serializable
host = context.host;
port = context.port;
file = context.file;
userInfo = context.userInfo;
authority = context.authority;
query = context.query;
}
else // Protocol NOT specified in spec. and no context available.
throw new
@ -202,14 +270,25 @@ public final class URL implements Serializable
return (port == uObj.port
&& ((protocol == null && uObj.protocol == null)
|| (protocol != null && protocol.equals(uObj.protocol)))
&& ((userInfo == null && uObj.userInfo == null)
|| (userInfo != null && userInfo.equals(uObj.userInfo)))
&& ((authority == null && uObj.authority == null)
|| (authority != null && authority.equals(uObj.authority)))
&& ((host == null && uObj.host == null)
|| (host != null && host.equals(uObj.host)))
&& ((file == null && uObj.file == null)
|| (file != null && file.equals(uObj.file)))
&& ((query == null && uObj.query == null)
|| (query != null && query.equals(uObj.query)))
&& ((ref == null && uObj.ref == null)
|| (ref != null && ref.equals(uObj.ref))));
}
/**
* Gets the contents of this URL
*
* @since 1.3
*/
public final Object getContent() throws IOException
{
return openConnection().getContent();
@ -220,22 +299,54 @@ public final class URL implements Serializable
return file;
}
/**
* Returns the path of the URL
*
* @since 1.3
*/
public String getPath()
{
int quest = file.indexOf('?');
return quest < 0 ? file : file.substring(0, quest);
}
/**
* Returns the authority of the URL
*
* @since 1.3
*/
public String getAuthority()
{
return authority;
}
/**
* Returns the host of the URL
*/
public String getHost()
{
return host;
}
/**
* Returns of port of the URL
*/
public int getPort()
{
return port;
}
/**
* Returns the default port of the URL
*/
public int getDefaultPort()
{
return 0;
}
/**
* Returns the protocol of the URL
*/
public String getProtocol()
{
return protocol;
@ -246,6 +357,9 @@ public final class URL implements Serializable
return ref;
}
/**
* Returns the user information of the URL
*/
public String getUserInfo ()
{
int at = host.indexOf('@');
@ -290,6 +404,11 @@ public final class URL implements Serializable
return handler.sameFile(this, other);
}
/**
* 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
*/
protected void set(String protocol, String host, int port, String file,
String ref)
{
@ -299,14 +418,23 @@ public final class URL implements Serializable
// be aware of this.
this.handler = setURLStreamHandler(protocol);
this.protocol = protocol;
this.authority = null;
this.userInfo = null;
this.port = port;
this.host = host;
this.file = file;
this.query = null;
this.ref = ref;
hashCode = hashCode(); // Used for serialization.
}
/** @since 1.3 */
/**
* 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
*
* @since 1.3
*/
protected void set(String protocol, String host, int port,
String authority, String userInfo,
String path, String query, String ref)