2002-10-05 Michael Koch <konqueror@gmx.de>
authorMichael Koch <konqueror@gmx.de>
Sat, 5 Oct 2002 07:49:08 +0000 (07:49 +0000)
committerMichael Koch <mkoch@gcc.gnu.org>
Sat, 5 Oct 2002 07:49:08 +0000 (07:49 +0000)
* 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

libjava/ChangeLog
libjava/Makefile.am
libjava/Makefile.in
libjava/java/net/Inet4Address.java [new file with mode: 0644]
libjava/java/net/InetAddress.java
libjava/java/net/URI.java [new file with mode: 0644]
libjava/java/net/URL.java

index 410412dbe44d0c8a297e55b58fab0e19d11cbce8..8eae4790dd91164e33c1edda77ba8f82b072fb5c 100644 (file)
@@ -1,3 +1,23 @@
+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.
+
 2002-10-04  C. Scott Ananian <cananian@lesser-magoo.lcs.mit.edu>
        
        * java/lang/ProtectionDomain.java (linesep): Remove field.
index f5c6176af85856d5cb033d74d0bd08ab97085728..f56d5d5af6886f859df457d6bfd71dc9ffecf765 100644 (file)
@@ -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 \
index 6bbc4756ea57a4658d514d93aed2374be213cb59..e7ff2242a3024f28b33331db336849147b597e5f 100644 (file)
@@ -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 (file)
index 0000000..429919a
--- /dev/null
@@ -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
index fcdd88cff78b7e552299d4ad26283bd3a449b5fa..970627e0f08c8d8b78693f676da465359e63d389 100644 (file)
@@ -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 (file)
index 0000000..e84ac5d
--- /dev/null
@@ -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 "";
+  }
+}
index 226ad6ca68c5430fe0ea7449ca689186bfab889f..d93dbfbb2aab533c3ebea0cf32e9c03106d7ca48 100644 (file)
@@ -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)
   {