OSDN Git Service

2002-10-08 Michael Koch <konqueror@gmx.de>
authormkoch <mkoch@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 10 Oct 2002 05:19:22 +0000 (05:19 +0000)
committermkoch <mkoch@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 10 Oct 2002 05:19:22 +0000 (05:19 +0000)
* java/net/HttpURLConnection.java
(getPermission): New method.
(getErrorStream): New stub method.
(getHeaderFieldDate): New stub method.
* java/net/Inet4Address.java:
(isLinkLocalAddress): Typo fixed.
* java/net/InetAddress.java:
(readResolve): New stubbed method (for serialization).
(isAnyLocalAddress): New stubbed method.
(isLoopbackAddress): New stubbed method.
(isLinkLocalAddress): New stubbed method.
(isSiteLocalAddress): New stubbed method.
(isMCGlobal): New stubbed method.
(isMCNodeGlobal): New stubbed method.
(isMCLinkLocal): New stubbed method.
(isMCSiteLocal): New stubbed method.
(isMCOrgLocal): New stubbed method.
(getCanonicalHostName): New stubbed method.
(getByAddress): Create instances of Inet4Address/Inet6Address,
instead of InetAddress, documentation added.
* java/net/MulticastSocket.java
(getInterface): Removed FIXME.
(getNetworkInterface): New method.
(setNetworkInterface): New method.
* java/net/NetworkInterface.java:
(toString): Use property "line.separator" instead of "\n".
* java/net/URLConnection.java
(getContent): New stubbed method.
* java/net/URLStreamHandler.java:
(equals): New stubbed method.
(hostsEqual): New stubbed method.
(hashCode): New stubbed method.
* java/net/natNetworkInterface.cc:
(getRealNetworkInterfaces): Create Inet4Address object
instead of InetAddress.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@58002 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/ChangeLog
libjava/java/net/HttpURLConnection.java
libjava/java/net/Inet4Address.java
libjava/java/net/InetAddress.java
libjava/java/net/MulticastSocket.java
libjava/java/net/NetworkInterface.java
libjava/java/net/URLConnection.java
libjava/java/net/URLStreamHandler.java
libjava/java/net/natNetworkInterface.cc

index 2a2932c..03683df 100644 (file)
@@ -1,3 +1,41 @@
+2002-10-08  Michael Koch  <konqueror@gmx.de>
+
+       * java/net/HttpURLConnection.java
+       (getPermission): New method.
+       (getErrorStream): New stub method.
+       (getHeaderFieldDate): New stub method.
+       * java/net/Inet4Address.java:
+       (isLinkLocalAddress): Typo fixed.
+       * java/net/InetAddress.java:
+       (readResolve): New stubbed method (for serialization).
+       (isAnyLocalAddress): New stubbed method.
+       (isLoopbackAddress): New stubbed method.
+       (isLinkLocalAddress): New stubbed method.
+       (isSiteLocalAddress): New stubbed method.
+       (isMCGlobal): New stubbed method.
+       (isMCNodeGlobal): New stubbed method.
+       (isMCLinkLocal): New stubbed method.
+       (isMCSiteLocal): New stubbed method.
+       (isMCOrgLocal): New stubbed method.
+       (getCanonicalHostName): New stubbed method.
+       (getByAddress): Create instances of Inet4Address/Inet6Address,
+       instead of InetAddress, documentation added.
+       * java/net/MulticastSocket.java
+       (getInterface): Removed FIXME.
+       (getNetworkInterface): New method.
+       (setNetworkInterface): New method.
+       * java/net/NetworkInterface.java:
+       (toString): Use property "line.separator" instead of "\n".
+       * java/net/URLConnection.java
+       (getContent): New stubbed method.
+       * java/net/URLStreamHandler.java:
+       (equals): New stubbed method.
+       (hostsEqual): New stubbed method.
+       (hashCode): New stubbed method.
+       * java/net/natNetworkInterface.cc:
+       (getRealNetworkInterfaces): Create Inet4Address object
+       instead of InetAddress.
+
 2002-10-08  Ulrich Weigand  <uweigand@de.ibm.com>
 
        * interpret.cc (_Jv_InterpMethod::run): Use UINT32 instead of
index 5072b60..ac48246 100644 (file)
@@ -217,11 +217,35 @@ public abstract class HttpURLConnection extends URLConnection
       }
   }
 
-  // TODO12: public Permission getPermission() throws IOException
-  // {
-  // }
+  /**
+   * Returns a permission object representing the permission necessary to make
+   * the connection represented by this object
+   *
+   * @exception IOException If an error occurs
+   */
+  public Permission getPermission() throws IOException
+  {
+    return new SocketPermission (url.getHost (), "connect");
+  }
+
+  /**
+   * Returns the error stream if the connection failed but the server sent
+   * useful data nonetheless
+   */
+  public InputStream getErrorStream ()
+  {
+    // FIXME: implement this
+    return null;
+  }
 
-  // TODO12: public InputStream getErrorStream()
-  // {
-  // }
+  /**
+   * Returns the value of the named field parsed as date
+   */
+  public long getHeaderFieldDate (String key, long value)
+  {
+    // FIXME: implement this correctly
+    // http://www.w3.org/Protocols/HTTP-NG/ng-notes.txt
+    
+    return super.getHeaderFieldDate (key, value);
+  }
 }
index 429919a..c635c67 100644 (file)
@@ -113,7 +113,7 @@ public final class Inet4Address extends InetAddress
    */
   public boolean isLinkLocalAddress ()
   {
-    // XXX: This seems to net exist with IPv4 addresses
+    // XXX: This seems to not exist with IPv4 addresses
     return false;
   }
 
index 970627e..c4ea6ef 100644 (file)
@@ -9,10 +9,12 @@ Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
 details.  */
 
 package java.net;
+
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.io.IOException;
 import java.io.Serializable;
+import java.io.ObjectStreamException;
 
 /**
  * @author Per Bothner
@@ -44,6 +46,14 @@ public class InetAddress implements Serializable
   int family;
   private static final long serialVersionUID = 3286316764910316507L;
 
+  /**
+   * Needed for serialization
+   */
+  private void readResolve () throws ObjectStreamException
+  {
+    // FIXME: implement this
+  }
+         
   private void readObject(ObjectInputStream ois)
     throws IOException, ClassNotFoundException
   {
@@ -96,6 +106,91 @@ public class InetAddress implements Serializable
     return false;
   }
 
+  /**
+   * Utility routine to check if the InetAddress in a wildcard address
+   * 
+   * @since 1.4
+   */
+  public boolean isAnyLocalAddress ()
+  {
+    // FIXME: implement this
+    return false;
+  }
+
+  /**
+   * Utility routine to check if the InetAddress is a loopback address
+   * 
+   * @since 1.4
+   */
+  public boolean isLoopbackAddress ()
+  {
+    // FIXME: implement this
+    return addr [0] == 0x7F;
+  }
+
+  /**
+   * @since 1.4
+   */
+  public boolean isLinkLocalAddress ()
+  {
+    // FIXME: implement this
+    return false;
+  }
+
+  /**
+   * @since 1.4
+   */
+  public boolean isSiteLocalAddress ()
+  {
+    // FIXME: implement this
+    return false;
+  }
+
+  /**
+   * @since 1.4
+   */
+  public boolean isMCGlobal ()
+  {
+    // FIXME: implement this
+    return false;
+  }
+
+  /**
+   * @since 1.4
+   */
+  public boolean isMCNodeLocal ()
+  {
+    // FIXME: implement this
+    return false;
+  }
+
+  /**
+   * @since 1.4
+   */
+  public boolean isMCLinkLocal ()
+  {
+    // FIXME: implement this
+    return false;
+  }
+
+  /**
+   * @since 1.4
+   */
+  public boolean isMCSiteLocal ()
+  {
+    // FIXME: implement this
+    return false;
+  }
+
+  /**
+   * @since 1.4
+   */
+  public boolean isMCOrgLocal ()
+  {
+    // FIXME: implement this
+    return false;
+  }
+
   public String getHostName ()
   {
     if (hostName == null)
@@ -103,6 +198,15 @@ public class InetAddress implements Serializable
     return hostName;
   }
 
+  /**
+   * @since 1.4
+   */
+  public String getCanonicalHostName ()
+  {
+    // FIXME: implement this
+    return "";
+  }
+
   public byte[] getAddress ()
   {
     // An experiment shows that JDK1.2 returns a different byte array each
@@ -199,6 +303,7 @@ public class InetAddress implements Serializable
   {
     if (obj == null || ! (obj instanceof InetAddress))
       return false;
+    
     // "The Java Class Libraries" 2nd edition says "If a machine has
     // multiple names instances of InetAddress for different name of
     // that same machine are not equal.  This is because they have
@@ -222,13 +327,15 @@ public class InetAddress implements Serializable
   {
     return getHostName()+'/'+getHostAddress();
   }
-  
+
   /**
    * Returns an InetAddress object given the raw IP address.
    *
    * The argument is in network byte order: the highest order byte of the
    * address is in getAddress()[0].
    *
+   * @param addr The IP address to create the InetAddress object from
+   *
    * @exception UnknownHostException If IP address has illegal length
    *
    * @since 1.4
@@ -241,11 +348,14 @@ public class InetAddress implements Serializable
 
     return new InetAddress (addr, "");
   }
-  
+
   /**
-   * Create an InetAddress based on the provided host name and IP address.
+   * Creates an InetAddress based on the provided host name and IP address.
    * No name service is checked for the validity of the address.
    *
+   * @param host The hostname of the InetAddress object to create
+   * @param addr The IP address to create the InetAddress object from
+   *
    * @exception UnknownHostException If IP address is of illegal length
    *
    * @since 1.4
@@ -253,8 +363,11 @@ public class InetAddress implements Serializable
   public static InetAddress getByAddress (String host, byte[] addr)
     throws UnknownHostException
   {
-    if (addr.length == 4 || addr.length == 16)
-      return new InetAddress (addr, host);
+    if (addr.length == 4)
+      return new Inet4Address (addr, host);
+
+    if (addr.length == 16)
+      return new Inet6Address (addr, host);
     
     throw new UnknownHostException ("IP address has illegal length");
   }
index 04d0735..2700ebe 100644 (file)
@@ -38,6 +38,7 @@ exception statement from your version. */
 package java.net;
 
 import java.io.IOException;
+import java.util.Enumeration;
 
 /**
  * Written using on-line Java Platform 1.2 API Specification, as well
@@ -120,7 +121,6 @@ public class MulticastSocket extends DatagramSocket
    */
   public InetAddress getInterface() throws SocketException
   {
-    // FIXME: Is it possible that an InetAddress wasn't returned from getOption?
     return (InetAddress) impl.getOption(SocketOptions.IP_MULTICAST_IF);
   }
 
@@ -173,6 +173,58 @@ public class MulticastSocket extends DatagramSocket
   }
 
   /**
+   * Sets the local network interface used to send multicast messages
+   *
+   * @param netIF The local network interface used to send multicast messages
+   * 
+   * @exception SocketException If an error occurs
+   * 
+   * @see MulticastSocket:getNetworkInterface
+   * 
+   * @since 1.4
+   */
+  public void setNetworkInterface(NetworkInterface netIf)
+    throws SocketException
+  {
+    if (impl == null)
+      throw new SocketException (
+                     "MulticastSocket: Cant access socket implementation");
+
+    Enumeration e = netIf.getInetAddresses ();
+
+    if (!e.hasMoreElements ())
+      throw new SocketException ("MulticastSocket: Error");
+
+    InetAddress address = (InetAddress) e.nextElement ();
+    impl.setOption (SocketOptions.IP_MULTICAST_IF, address);
+  }
+
+  /**
+   * Gets the local network interface which is used to send multicast messages
+   *
+   * @return The local network interface to send multicast messages
+   *
+   * @exception SocketException If an error occurs
+   *
+   * @see MulticastSocket:setNetworkInterface
+   * 
+   * @since 1.4
+   */
+  public NetworkInterface getNetworkInterface()
+    throws SocketException
+  {
+    if (impl == null)
+      throw new SocketException (
+                     "MulticastSocket: Cant access socket implementation");
+
+    InetAddress address =
+           (InetAddress) impl.getOption (SocketOptions.IP_MULTICAST_IF);
+    NetworkInterface netIf = NetworkInterface.getByInetAddress (address);
+
+    return netIf;
+  }
+
+  /**
    * Disable/Enable local loopback of multicast packets.  The option is used by
    * the platform's networking code as a hint for setting whether multicast
    * data will be looped back to the local socket. 
@@ -188,6 +240,10 @@ public class MulticastSocket extends DatagramSocket
    */
   public void setLoopbackMode(boolean disable) throws SocketException
   {
+    if (impl == null)
+      throw new SocketException (
+                     "MulticastSocket: Cant access socket implementation");
+
     impl.setOption (SocketOptions.IP_MULTICAST_LOOP, new Boolean (disable));
   }
 
index f0113d0..60a7d76 100644 (file)
@@ -220,15 +220,16 @@ public final class NetworkInterface
   {
     // FIXME: check if this is correct
     String result;
+    String separator = System.getProperty ("line.separator");
 
     result = "name: " + getDisplayName () + " (" + getName () +
-            ") addresses:\n";
+            ") addresses:" + separator;
 
     for (Enumeration e = inetAddresses.elements ();
          e.hasMoreElements (); )
       {
         InetAddress address = (InetAddress) e.nextElement ();
-        result += address.toString () + "\n";
+        result += address.toString () + separator;
       }
 
     return result;
index 91c229d..0b39fe8 100644 (file)
@@ -251,6 +251,19 @@ public abstract class URLConnection
   }
 
   /**
+   * Retrieves the content of this URLConnection
+   *
+   * @exception IOException If an error occurs
+   * @exception UnknownServiceException If the protocol does not support the
+   * content type
+   */
+  public Object getContent(Class[] classes) throws IOException
+  {
+    // FIXME: implement this
+    return getContent ();
+  }
+
+  /**
    * Returns a permission object representing the permission necessary to make
    * the connection represented by this object. This method returns null if no
    * permission is required to make the connection.
index 9c6ba25..58add6f 100644 (file)
@@ -224,6 +224,32 @@ public abstract class URLStreamHandler
   }
 
   /**
+   * Provides the default equals calculation. May be overidden by handlers for
+   * other protocols that have different requirements for equals(). This method
+   * requires that none of its arguments is null. This is guaranteed by the
+   * fact that it is only called by java.net.URL class.
+   *
+   * @param url1 An URL object
+   * @param url2 An URL object
+   */
+  protected boolean equals (URL url1, URL url2)
+  {
+    // FIXME: implement this
+    return false;
+  }
+
+  /**
+   * Compares the host components of two URLs.
+   *
+   * @exception UnknownHostException If an unknown host is found
+   */
+  protected boolean hostsEqual (URL url1, URL url2)
+  {
+    // FIXME: implement this
+    return false;
+  }
+
+  /**
    * Get the IP address of our host. An empty host field or a DNS failure will
    * result in a null return.
    */
@@ -254,6 +280,16 @@ public abstract class URLStreamHandler
   }
 
   /**
+   * Provides the default hash calculation. May be overidden by handlers for
+   * other protocols that have different requirements for hashCode calculation.
+   */
+  protected int hashCode (URL url)
+  {
+    // FIXME: implement this
+    return 0;
+  }
+
+  /**
    * Converts an URL of a specific protocol to a string
    *
    * @param u The URL to convert
index 9f3f0cd..f201940 100644 (file)
@@ -52,7 +52,7 @@ details.  */
 #include <gcj/cni.h>
 #include <jvm.h>
 #include <java/net/NetworkInterface.h>
-#include <java/net/InetAddress.h>
+#include <java/net/Inet4Address.h>
 #include <java/net/SocketException.h>
 #include <java/util/Vector.h>
 
@@ -123,8 +123,8 @@ java::net::NetworkInterface::getRealNetworkInterfaces ()
       jbyteArray baddr = JvNewByteArray (len);
       memcpy (elements (baddr), &(sa.sin_addr), len);
       jstring if_name = JvNewStringLatin1 (if_record->ifr_name);
-      InetAddress* address =
-        new java::net::InetAddress (baddr, JvNewStringLatin1 (""));
+      Inet4Address* address =
+        new java::net::Inet4Address (baddr, JvNewStringLatin1 (""));
       ht->add (new NetworkInterface (if_name, address));
       if_record++;
     }