From: Michael Koch Date: Sat, 5 Oct 2002 07:49:08 +0000 (+0000) Subject: 2002-10-05 Michael Koch X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f5b63cb6d7bb6b742d69f428cc80d60a93f45b3a;p=gcc.git 2002-10-05 Michael Koch * 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 --- diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 410412dbe44..8eae4790dd9 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,23 @@ +2002-10-05 Michael Koch + + * 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. + 2002-10-04 C. Scott Ananian * java/lang/ProtectionDomain.java (linesep): Remove field. diff --git a/libjava/Makefile.am b/libjava/Makefile.am index f5c6176af85..f56d5d5af68 100644 --- a/libjava/Makefile.am +++ b/libjava/Makefile.am @@ -1922,6 +1922,8 @@ java/net/DatagramSocketImplFactory.java \ java/net/FileNameMap.java \ java/net/HttpURLConnection.java \ java/net/InetAddress.java \ +java/net/Inet4Address.java \ +java/net/Inet6Address.java \ java/net/InetSocketAddress.java \ java/net/JarURLConnection.java \ java/net/MalformedURLException.java \ @@ -1943,6 +1945,7 @@ java/net/SocketImplFactory.java \ java/net/SocketOptions.java \ java/net/SocketPermission.java \ java/net/SocketTimeoutException.java \ +java/net/URI.java \ java/net/URISyntaxException.java \ java/net/URL.java \ java/net/URLClassLoader.java \ diff --git a/libjava/Makefile.in b/libjava/Makefile.in index 6bbc4756ea5..e7ff2242a30 100644 --- a/libjava/Makefile.in +++ b/libjava/Makefile.in @@ -1672,6 +1672,8 @@ java/net/DatagramSocketImplFactory.java \ java/net/FileNameMap.java \ java/net/HttpURLConnection.java \ java/net/InetAddress.java \ +java/net/Inet4Address.java \ +java/net/Inet6Address.java \ java/net/InetSocketAddress.java \ java/net/JarURLConnection.java \ java/net/MalformedURLException.java \ @@ -1693,6 +1695,7 @@ java/net/SocketImplFactory.java \ java/net/SocketOptions.java \ java/net/SocketPermission.java \ java/net/SocketTimeoutException.java \ +java/net/URI.java \ java/net/URISyntaxException.java \ java/net/URL.java \ java/net/URLClassLoader.java \ @@ -2912,7 +2915,8 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \ .deps/java/net/DatagramPacket.P .deps/java/net/DatagramSocket.P \ .deps/java/net/DatagramSocketImpl.P \ .deps/java/net/DatagramSocketImplFactory.P .deps/java/net/FileNameMap.P \ -.deps/java/net/HttpURLConnection.P .deps/java/net/InetAddress.P \ +.deps/java/net/HttpURLConnection.P .deps/java/net/Inet4Address.P \ +.deps/java/net/Inet6Address.P .deps/java/net/InetAddress.P \ .deps/java/net/InetSocketAddress.P .deps/java/net/JarURLConnection.P \ .deps/java/net/MalformedURLException.P .deps/java/net/MulticastSocket.P \ .deps/java/net/NetPermission.P .deps/java/net/NetworkInterface.P \ @@ -2926,7 +2930,7 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \ .deps/java/net/SocketException.P .deps/java/net/SocketImpl.P \ .deps/java/net/SocketImplFactory.P .deps/java/net/SocketOptions.P \ .deps/java/net/SocketPermission.P \ -.deps/java/net/SocketTimeoutException.P \ +.deps/java/net/SocketTimeoutException.P .deps/java/net/URI.P \ .deps/java/net/URISyntaxException.P .deps/java/net/URL.P \ .deps/java/net/URLClassLoader.P .deps/java/net/URLConnection.P \ .deps/java/net/URLDecoder.P .deps/java/net/URLEncoder.P \ diff --git a/libjava/java/net/Inet4Address.java b/libjava/java/net/Inet4Address.java new file mode 100644 index 00000000000..429919a130e --- /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 fcdd88cff78..970627e0f08 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 00000000000..e84ac5d0cd6 --- /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 + * @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 226ad6ca68c..d93dbfbb2aa 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) {