aboutsummaryrefslogtreecommitdiff
path: root/libjava/java
diff options
context:
space:
mode:
authorMichael Koch <konqueror@gmx.de>2002-10-05 07:49:08 +0000
committerMichael Koch <mkoch@gcc.gnu.org>2002-10-05 07:49:08 +0000
commitf5b63cb6d7bb6b742d69f428cc80d60a93f45b3a (patch)
treec89d38b0940a603cf77e3e41a1c3da5ff31cd85c /libjava/java
parentfec836256eb5cd5a1e9e2a7d16f2a19797f9f0fb (diff)
downloadgcc-f5b63cb6d7bb6b742d69f428cc80d60a93f45b3a.zip
gcc-f5b63cb6d7bb6b742d69f428cc80d60a93f45b3a.tar.gz
gcc-f5b63cb6d7bb6b742d69f428cc80d60a93f45b3a.tar.bz2
2002-10-05 Michael Koch <konqueror@gmx.de>
* java/net/InetAddress.java (getByAddress): Fixed documentation. (getByAddress): New method. * java/net/Inet4Address.java: New file. * java/net/URL.java (URL): Documentation added. (getContent): Documentation added. (getContent): New stubbed method. (getQuery): New method. (openConnection): Documentation added. (openStream): Documentation added. (setURLStreamHandlerFactory): Documentation added. * java/net/URI.java: New stub file. * Makefile.am (java_native_source_files): Added java/net/Inet4Address.java, java/net/Inet6Address.java and java/net/URI.java. * Makefile.in: Regenerated. From-SVN: r57841
Diffstat (limited to 'libjava/java')
-rw-r--r--libjava/java/net/Inet4Address.java275
-rw-r--r--libjava/java/net/InetAddress.java18
-rw-r--r--libjava/java/net/URI.java433
-rw-r--r--libjava/java/net/URL.java46
4 files changed, 771 insertions, 1 deletions
diff --git a/libjava/java/net/Inet4Address.java b/libjava/java/net/Inet4Address.java
new file mode 100644
index 0000000..429919a
--- /dev/null
+++ b/libjava/java/net/Inet4Address.java
@@ -0,0 +1,275 @@
+/* Inet4Address.java
+ Copyright (C) 2002 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package java.net;
+
+import java.io.IOException;
+import java.io.ObjectStreamException;
+
+/**
+ * @author Michael Koch
+ * @date August 3, 2002.
+ */
+
+/*
+ * Written using on-line Java Platform 1.4 API Specification and
+ * RFC 1884 (http://www.ietf.org/rfc/rfc1884.txt),
+ * RFC 1918 (http://www.ietf.org/rfc/rfc1918.txt),
+ * RFC 2365 (http://www.ietf.org/rfc/rfc2365.txt)
+ * Status: Believed complete and correct.
+ */
+
+public final class Inet4Address extends InetAddress
+{
+ static final long serialVersionUID = 7615067291688066509L;
+
+ /**
+ * needed for serialization
+ */
+ private Object writeReplace () throws ObjectStreamException
+ {
+ return new InetAddress (addr, hostName);
+ }
+
+ /**
+ * Creates a Inet4Address
+ *
+ * @param addr The IP address
+ * @param host The Hostname
+ */
+ protected Inet4Address(byte[] addr, String host)
+ {
+ super (addr, host);
+ }
+
+ /**
+ * Checks if the address is a multicast address
+ *
+ * @since 1.1
+ */
+ public boolean isMulticastAddress ()
+ {
+ return (addr [0] & 0xF0) == 0xE0;
+ }
+
+ /**
+ * Checks if this address is a loopback address
+ */
+ public boolean isLoopbackAddress ()
+ {
+ return addr [0] == 0x7F;
+ }
+
+ /**
+ * Checks if this address is a wildcard address
+ *
+ * @since 1.4
+ */
+ public boolean isAnyLocalAddress ()
+ {
+ byte[] anylocal = { 0, 0, 0, 0 };
+
+ return addr == anylocal;
+ }
+
+ /**
+ * Checks if this address is a link local address
+ *
+ * @since 1.4
+ */
+ public boolean isLinkLocalAddress ()
+ {
+ // XXX: This seems to net exist with IPv4 addresses
+ return false;
+ }
+
+ /**
+ * Checks if this address is a site local address
+ *
+ * @since 1.4
+ */
+ public boolean isSiteLocalAddress ()
+ {
+ // 10.0.0.0/8
+ if (addr [0] == 0x0A)
+ return true;
+
+ // XXX: Suns JDK 1.4.1 (on Linux) seems to have a bug here:
+ // it says 172.16.0.0 - 172.255.255.255 are site local addresses
+ //
+ // 172.16.0.0/12
+ if (addr [0] == 0xAC && (addr [1] & 0xF0) == 0x01)
+ return true;
+
+ // 192.168.0.0/16
+ if (addr [0] == 0xC0 && addr [1] == 0xA8)
+ return true;
+
+ // XXX: Do we need to check more addresses here ?
+ return false;
+ }
+
+ /**
+ * Checks if this multicast address has global scope
+ *
+ * @since 1.4
+ */
+ public boolean isMCGlobal ()
+ {
+ // XXX: This seems to net exist with IPv4 addresses
+ return false;
+ }
+
+ /**
+ * Checks if this multicast address has node scope
+ *
+ * @since 1.4
+ */
+ public boolean isMCNodeLocal ()
+ {
+ // XXX: This seems to net exist with IPv4 addresses
+ return false;
+ }
+
+ /**
+ * Checks if this multicast address has link scope
+ *
+ * @since 1.4
+ */
+ public boolean isMCLinkLocal ()
+ {
+ if (!isMulticastAddress ())
+ return false;
+
+ return (addr [0] == 0xE0)
+ && (addr [1] == 0x00)
+ && (addr [2] == 0x00);
+ }
+
+ /**
+ * Checks if this multicast address has site scope
+ *
+ * @since 1.4
+ */
+ public boolean isMCSiteLocal ()
+ {
+ // XXX: This seems to net exist with IPv4 addresses
+ return false;
+ }
+
+ /**
+ * Checks if this multicast address has organization scope
+ *
+ * @since 1.4
+ */
+ public boolean isMCOrgLocal ()
+ {
+ // XXX: This seems to net exist with IPv4 addresses
+ return false;
+ }
+
+ /**
+ * Returns the address of the current instance
+ */
+ public byte[] getAddress ()
+ {
+ return addr;
+ }
+
+ /**
+ * Returns the address as string
+ *
+ * @since 1.0.2
+ */
+ public String getHostAddress ()
+ {
+ StringBuffer sbuf = new StringBuffer (40);
+ int len = addr.length;
+ int i = 0;
+
+ for ( ; ; )
+ {
+ sbuf.append (addr [i] & 0xFF);
+ i++;
+
+ if (i == len)
+ break;
+
+ sbuf.append ('.');
+ }
+
+ return sbuf.toString ();
+ }
+
+ /**
+ * Computes the hashcode of the instance
+ */
+ public int hashCode ()
+ {
+ int hash = 0;
+ int len = addr.length;
+ int i = len > 4 ? len - 4 : 0;
+
+ for ( ; i < len; i++)
+ hash = (hash << 8) | (addr [i] & 0xFF);
+
+ return hash;
+ }
+
+ /**
+ * Compare the current Inet4Address instance with obj
+ *
+ * @param obj Object to compare with
+ */
+ public boolean equals (Object obj)
+ {
+ if (obj == null || ! (obj instanceof InetAddress))
+ return false;
+
+ byte[] addr1 = addr;
+ byte[] addr2 = ((InetAddress) obj).addr;
+
+ if (addr1.length != addr2.length)
+ return false;
+
+ for (int i = addr1.length; --i >= 0; )
+ if (addr1 [i] != addr2 [i])
+ return false;
+
+ return true;
+ }
+} // class Inet4Address
diff --git a/libjava/java/net/InetAddress.java b/libjava/java/net/InetAddress.java
index fcdd88c..970627e 100644
--- a/libjava/java/net/InetAddress.java
+++ b/libjava/java/net/InetAddress.java
@@ -230,7 +230,6 @@ public class InetAddress implements Serializable
* address is in getAddress()[0].
*
* @exception UnknownHostException If IP address has illegal length
- * be found
*
* @since 1.4
*/
@@ -243,6 +242,23 @@ public class InetAddress implements Serializable
return new InetAddress (addr, "");
}
+ /**
+ * Create an InetAddress based on the provided host name and IP address.
+ * No name service is checked for the validity of the address.
+ *
+ * @exception UnknownHostException If IP address is of illegal length
+ *
+ * @since 1.4
+ */
+ public static InetAddress getByAddress (String host, byte[] addr)
+ throws UnknownHostException
+ {
+ if (addr.length == 4 || addr.length == 16)
+ return new InetAddress (addr, host);
+
+ throw new UnknownHostException ("IP address has illegal length");
+ }
+
/** If host is a valid numeric IP address, return the numeric address.
* Otherwise, return null. */
private static native byte[] aton (String host);
diff --git a/libjava/java/net/URI.java b/libjava/java/net/URI.java
new file mode 100644
index 0000000..e84ac5d
--- /dev/null
+++ b/libjava/java/net/URI.java
@@ -0,0 +1,433 @@
+/* URI.java - An URI class
+ Copyright (C) 2002 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package java.net;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+
+/**
+ * @author Michael Koch <konqueror@gmx.de>
+ * @since 1.4
+ */
+public final class URI
+ implements Comparable, Serializable
+{
+ static final long serialVersionUID = -6052424284110960213L;
+
+ String string;
+ private String scheme;
+ private String schemeSpecificPart;
+ private String authority;
+ private String userInfo;
+ private String host;
+ private int port;
+ private String path;
+ private String query;
+ private String fragment;
+
+ private void readObject (ObjectInputStream is)
+ throws ClassNotFoundException, IOException
+ {
+ }
+
+ private void writeObject (ObjectOutputStream is)
+ throws IOException
+ {
+ }
+
+ private void parseURI (String str)
+ throws URISyntaxException
+ {
+ }
+
+ /**
+ * Creates an URI from the given string
+ *
+ * @param str The string to create the URI from
+ *
+ * @exception URISyntaxException If the given string violates RFC 2396
+ * @exception NullPointerException If str is null
+ */
+ public URI (String str)
+ throws URISyntaxException
+ {
+ }
+
+ /**
+ * Create an URI from the given components
+ *
+ * @param scheme The scheme name
+ * @param userInfo The username and authorization info
+ * @param host The hostname
+ * @param port The port number
+ * @param path The path
+ * @param query The query
+ * @param fragment The fragment
+ *
+ * @exception URISyntaxException If the given string violates RFC 2396
+ */
+ public URI (String scheme, String userInfo, String host, int port,
+ String path, String query, String fragment)
+ throws URISyntaxException
+ {
+ }
+
+ /**
+ * Create an URI from the given components
+ *
+ * @param scheme The scheme name
+ * @param authority The authority
+ * @param path The apth
+ * @param query The query
+ * @param fragment The fragmen
+ *
+ * @exception URISyntaxException If the given string violates RFC 2396
+ */
+ public URI (String scheme, String authority, String path, String query,
+ String fragment)
+ throws URISyntaxException
+ {
+ }
+
+ /**
+ * Create an URI from the given components
+ *
+ * @param scheme The scheme name
+ * @param host The hostname
+ * @param path The path
+ * @param fragment The fragment
+ *
+ * @exception URISyntaxException If the given string violates RFC 2396
+ */
+ public URI (String scheme, String host, String path, String fragment)
+ throws URISyntaxException
+ {
+ }
+
+ /**
+ * Create an URI from the given components
+ *
+ * @param scheme The scheme name
+ * @param ssp The scheme specific part
+ * @param fragment The fragment
+ *
+ * @exception URISyntaxException If the given string violates RFC 2396
+ */
+ public URI (String scheme, String ssp, String fragment)
+ throws URISyntaxException
+ {
+ }
+
+ /**
+ * Create an URI from the given string
+ *
+ * @param str The string to create the URI from
+ *
+ * @exception IllegalArgumentException If the given string violates RFC 2396
+ * @exception NullPointerException If str is null
+ */
+ public static URI create (String str)
+ throws IllegalArgumentException, URISyntaxException
+ {
+ return null;
+ }
+
+ /**
+ * Attempts to parse this URI's authority component, if defined,
+ * into user-information, host, and port components
+ *
+ * @exception URISyntaxException If the given string violates RFC 2396
+ */
+ public URI parseServerAuthority ()
+ throws URISyntaxException
+ {
+ return null;
+ }
+
+ /**
+ * Returns a normalizes versions of the URI
+ */
+ public URI normalize ()
+ {
+ return null;
+ }
+
+ /**
+ * Resolves the given URI against this URI
+ *
+ * @param uri The URI to resolve against this URI
+ *
+ * @return The resulting URI
+ *
+ * @exception NullPointerException If uri is null
+ */
+ public URI resolve (URI uri)
+ {
+ return null;
+ }
+
+ /**
+ * Resolves the given URI string against this URI
+ *
+ * @param str The URI as string to resolve against this URI
+ *
+ * @return The resulting URI
+ *
+ * @exception IllegalArgumentException If the given URI string
+ * violates RFC 2396
+ * @exception NullPointerException If uri is null
+ */
+ public URI resolve (String str)
+ throws IllegalArgumentException
+ {
+ return null;
+ }
+
+ /**
+ * Relativizes the given URI against this URI
+ *
+ * @param uri The URI to relativize this URI
+ *
+ * @return The resulting URI
+ *
+ * @exception NullPointerException If uri is null
+ */
+ public URI relativize (URI uri)
+ {
+ return null;
+ }
+
+ /**
+ * Creates an URL from an URI
+ *
+ * @exception MalformedURLException If a protocol handler for the URL could
+ * not be found, or if some other error occurred while constructing the URL
+ * @exception IllegalArgumentException If the URI is not absolute
+ */
+ public URL toURL ()
+ throws IllegalArgumentException, MalformedURLException
+ {
+ return null;
+ }
+
+ /**
+ * Returns the scheme of the URI
+ */
+ public String getScheme ()
+ {
+ return scheme;
+ }
+
+ /**
+ * Tells whether this URI is absolute or not
+ */
+ public boolean isAbsolute ()
+ {
+ return false;
+ }
+
+ /**
+ * Tell whether this URI is opaque or not
+ */
+ public boolean isOpaque ()
+ {
+ return false;
+ }
+
+ /**
+ * Returns the raw scheme specific part of this URI.
+ * The scheme-specific part is never undefined, though it may be empty
+ */
+ public String getRawSchemeSpecificPart ()
+ {
+ return null;
+ }
+
+ /**
+ * Returns the decoded scheme specific part of this URI.
+ */
+ public String getSchemeSpecificPart ()
+ {
+ return null;
+ }
+
+ /**
+ * Returns the rae authority part of this URI
+ */
+ public String getRawAuthority ()
+ {
+ return authority;
+ }
+
+ /**
+ * Returns the decoded authority part of this URI
+ */
+ public String getAuthority ()
+ {
+ return null;
+ }
+
+ /**
+ * Returns the raw user info part of this URI
+ */
+ public String getRawUserInfo ()
+ {
+ return userInfo;
+ }
+
+ /**
+ * Returns the decoded user info part of this URI
+ */
+ public String getUserInfo ()
+ {
+ return null;
+ }
+
+ /**
+ * Returns the hostname of the URI
+ */
+ public String getHost ()
+ {
+ return host;
+ }
+
+ /**
+ * Returns the port number of the URI
+ */
+ public int getPort ()
+ {
+ return port;
+ }
+
+ /**
+ * Returns the raw path part of this URI
+ */
+ public String getRawPath ()
+ {
+ return path;
+ }
+
+ /**
+ * Returns the path of the URI
+ */
+ public String getPath ()
+ {
+ return null;
+ }
+
+ /**
+ * Returns the raw query part of this URI
+ */
+ public String getRawQuery ()
+ {
+ return query;
+ }
+
+ /**
+ * Returns the query of the URI
+ */
+ public String getQuery ()
+ {
+ return null;
+ }
+
+ /**
+ * Return the raw fragment part of this URI
+ */
+ public String getRawFragment ()
+ {
+ return fragment;
+ }
+
+ /**
+ * Returns the fragment of the URI
+ */
+ public String getFragment ()
+ {
+ return null;
+ }
+
+ /**
+ * Compares the URI with a given object
+ *
+ * @param obj The obj to compare the URI with
+ */
+ public boolean equals(Object obj)
+ {
+ return false;
+ }
+
+ /**
+ * Computes the hascode of the URI
+ */
+ public int hashCode ()
+ {
+ return 0;
+ }
+
+ /**
+ * Compare the URI with another object that must be an URI too
+ *
+ * @param obj This object to compare this URI with
+ *
+ * @exception ClassCastException If given object ist not an URI
+ */
+ public int compareTo (Object obj)
+ throws ClassCastException
+ {
+ return 0;
+ }
+
+ /**
+ * Returns the URI as string
+ */
+ public String toString ()
+ {
+ return "";
+ }
+
+ /**
+ * Returns the URI as US-ASCII string
+ */
+ public String toASCIIString ()
+ {
+ return "";
+ }
+}
diff --git a/libjava/java/net/URL.java b/libjava/java/net/URL.java
index 226ad6c..d93dbfb 100644
--- a/libjava/java/net/URL.java
+++ b/libjava/java/net/URL.java
@@ -83,6 +83,9 @@ public final class URL implements Serializable
* @param handler The stream handler for the URL
*
* @exception MalformedURLException If an error occurs
+ * @exception SecurityException If a security manager exists and its
+ * checkPermission method doesn't allow specifying a stream handler
+ * explicitly
*
* @since 1.2
*/
@@ -166,6 +169,9 @@ public final class URL implements Serializable
* @param handler The stream handler for the URL
*
* @exception MalformedURLException If an error occurs
+ * @exception SecurityException If a security manager exists and its
+ * checkPermission method doesn't allow specifying a stream handler
+ * explicitly
*
* @since 1.2
*/
@@ -287,6 +293,8 @@ public final class URL implements Serializable
/**
* Gets the contents of this URL
*
+ * @exception IOException If an error occurs
+ *
* @since 1.3
*/
public final Object getContent() throws IOException
@@ -294,6 +302,17 @@ public final class URL implements Serializable
return openConnection().getContent();
}
+ /**
+ * Gets the contents of this URL
+ *
+ * @exception IOException If an error occurs
+ */
+ public final Object getContent (Class[] classes) throws IOException
+ {
+ // FIXME: implement this
+ return getContent();
+ }
+
public String getFile()
{
return file;
@@ -366,6 +385,14 @@ public final class URL implements Serializable
return at < 0 ? null : host.substring(0, at);
}
+ /**
+ * Returns the query of the URL
+ */
+ public String getQuery ()
+ {
+ return query;
+ }
+
public int hashCode()
{
// JCL book says this is computed using (only) the hashcodes of the
@@ -389,11 +416,23 @@ public final class URL implements Serializable
port + file.hashCode());
}
+ /**
+ * Returns a URLConnection object that represents a connection to the remote
+ * object referred to by the URL
+ *
+ * @exception IOException If an error occurs
+ */
public URLConnection openConnection() throws IOException
{
return handler.openConnection(this);
}
+ /**
+ * Opens a connection to this URL and returns an InputStream for reading
+ * from that connection
+ *
+ * @exception IOException If an error occurs
+ */
public final InputStream openStream() throws IOException
{
return openConnection().getInputStream();
@@ -458,6 +497,13 @@ public final class URL implements Serializable
hashCode = hashCode(); // Used for serialization.
}
+ /**
+ * Sets an application's URLStreamHandlerFactory
+ *
+ * @exception Error If the application has already set a factory
+ * @exception SecurityException If a security manager exists and its
+ * checkSetFactory method doesn't allow the operation
+ */
public static synchronized void
setURLStreamHandlerFactory(URLStreamHandlerFactory fac)
{