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.

From-SVN: r58002
This commit is contained in:
Michael Koch 2002-10-10 05:19:22 +00:00 committed by Michael Koch
parent 402a402cab
commit 7393decb70
9 changed files with 299 additions and 18 deletions

View 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

View 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");
}
// TODO12: public InputStream getErrorStream()
// {
// }
/**
* Returns the error stream if the connection failed but the server sent
* useful data nonetheless
*/
public InputStream getErrorStream ()
{
// FIXME: implement this
return null;
}
/**
* 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);
}
}

View 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;
}

View 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");
}

View 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);
}
@ -172,6 +172,58 @@ public class MulticastSocket extends DatagramSocket
impl.setOption(SocketOptions.IP_MULTICAST_IF, inf);
}
/**
* 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
@ -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));
}

View 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;

View File

@ -250,6 +250,19 @@ public abstract class URLConnection
return contentHandler.getContent(this);
}
/**
* 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

View File

@ -223,6 +223,32 @@ public abstract class URLStreamHandler
u.set(protocol, host, port, authority, userInfo, path, query, ref);
}
/**
* 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.
@ -253,6 +279,16 @@ public abstract class URLStreamHandler
return -1;
}
/**
* 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
*

View 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++;
}