Imported GNU Classpath 0.92
2006-08-14 Mark Wielaard <mark@klomp.org> Imported GNU Classpath 0.92 * HACKING: Add more importing hints. Update automake version requirement. * configure.ac (gconf-peer): New enable AC argument. Add --disable-gconf-peer and --enable-default-preferences-peer to classpath configure when gconf is disabled. * scripts/makemake.tcl: Set gnu/java/util/prefs/gconf and gnu/java/awt/dnd/peer/gtk to bc. Classify gnu/java/security/Configuration.java as generated source file. * gnu/java/lang/management/VMGarbageCollectorMXBeanImpl.java, gnu/java/lang/management/VMMemoryPoolMXBeanImpl.java, gnu/java/lang/management/VMClassLoadingMXBeanImpl.java, gnu/java/lang/management/VMRuntimeMXBeanImpl.java, gnu/java/lang/management/VMMemoryManagerMXBeanImpl.java, gnu/java/lang/management/VMThreadMXBeanImpl.java, gnu/java/lang/management/VMMemoryMXBeanImpl.java, gnu/java/lang/management/VMCompilationMXBeanImpl.java: New VM stub classes. * java/lang/management/VMManagementFactory.java: Likewise. * java/net/VMURLConnection.java: Likewise. * gnu/java/nio/VMChannel.java: Likewise. * java/lang/Thread.java (getState): Add stub implementation. * java/lang/Class.java (isEnum): Likewise. * java/lang/Class.h (isEnum): Likewise. * gnu/awt/xlib/XToolkit.java (getClasspathTextLayoutPeer): Removed. * javax/naming/spi/NamingManager.java: New override for StackWalker functionality. * configure, sources.am, Makefile.in, gcj/Makefile.in, include/Makefile.in, testsuite/Makefile.in: Regenerated. From-SVN: r116139
This commit is contained in:
parent
abab460491
commit
ac1ed908de
1294 changed files with 99479 additions and 35933 deletions
|
@ -39,13 +39,16 @@ exception statement from your version. */
|
|||
package java.net;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.io.ObjectOutputStream;
|
||||
import java.io.IOException;
|
||||
|
||||
/*
|
||||
* Written using on-line Java Platform 1.4 API Specification and
|
||||
* RFC 1884 (http://www.ietf.org/rfc/rfc1884.txt)
|
||||
*
|
||||
* @author Michael Koch
|
||||
* @status Believed complete and correct.
|
||||
* @status Updated to 1.5. Serialization compatibility is tested.
|
||||
*/
|
||||
public final class Inet6Address extends InetAddress
|
||||
{
|
||||
|
@ -56,6 +59,39 @@ public final class Inet6Address extends InetAddress
|
|||
*/
|
||||
byte[] ipaddress;
|
||||
|
||||
/**
|
||||
* The scope ID, if any.
|
||||
* @since 1.5
|
||||
* @serial
|
||||
*/
|
||||
private int scope_id;
|
||||
|
||||
/**
|
||||
* The scope ID, if any.
|
||||
* @since 1.5
|
||||
* @serial
|
||||
*/
|
||||
private boolean scope_id_set;
|
||||
|
||||
/**
|
||||
* Whether ifname is set or not.
|
||||
* @since 1.5
|
||||
* @serial
|
||||
*/
|
||||
private boolean scope_ifname_set;
|
||||
|
||||
/**
|
||||
* Name of the network interface, used only by the serialization methods
|
||||
* @since 1.5
|
||||
* @serial
|
||||
*/
|
||||
private String ifname;
|
||||
|
||||
/**
|
||||
* Scope network interface, or <code>null</code>.
|
||||
*/
|
||||
private transient NetworkInterface nif;
|
||||
|
||||
/**
|
||||
* Create an Inet6Address object
|
||||
*
|
||||
|
@ -67,6 +103,10 @@ public final class Inet6Address extends InetAddress
|
|||
super(addr, host);
|
||||
// Super constructor clones the addr. Get a reference to the clone.
|
||||
this.ipaddress = this.addr;
|
||||
ifname = null;
|
||||
scope_ifname_set = scope_id_set = false;
|
||||
scope_id = 0;
|
||||
nif = null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -198,6 +238,75 @@ public final class Inet6Address extends InetAddress
|
|||
return (byte[]) ipaddress.clone();
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a scoped Inet6Address where the scope has an integer id.
|
||||
*
|
||||
* @throws UnkownHostException if the address is an invalid number of bytes.
|
||||
* @since 1.5
|
||||
*/
|
||||
public static Inet6Address getByAddress(String host, byte[] addr,
|
||||
int scopeId)
|
||||
throws UnknownHostException
|
||||
{
|
||||
if( addr.length != 16 )
|
||||
throw new UnknownHostException("Illegal address length: " + addr.length
|
||||
+ " bytes.");
|
||||
Inet6Address ip = new Inet6Address( addr, host );
|
||||
ip.scope_id = scopeId;
|
||||
ip.scope_id_set = true;
|
||||
return ip;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a scoped Inet6Address where the scope is a given
|
||||
* NetworkInterface.
|
||||
*
|
||||
* @throws UnkownHostException if the address is an invalid number of bytes.
|
||||
* @since 1.5
|
||||
*/
|
||||
public static Inet6Address getByAddress(String host, byte[] addr,
|
||||
NetworkInterface nif)
|
||||
throws UnknownHostException
|
||||
{
|
||||
if( addr.length != 16 )
|
||||
throw new UnknownHostException("Illegal address length: " + addr.length
|
||||
+ " bytes.");
|
||||
Inet6Address ip = new Inet6Address( addr, host );
|
||||
ip.nif = nif;
|
||||
|
||||
return ip;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the <code>NetworkInterface</code> of the address scope
|
||||
* if it is a scoped address and the scope is given in the form of a
|
||||
* NetworkInterface.
|
||||
* (I.e. the address was created using the
|
||||
* getByAddress(String, byte[], NetworkInterface) method)
|
||||
* Otherwise this method returns <code>null</code>.
|
||||
* @since 1.5
|
||||
*/
|
||||
public NetworkInterface getScopedInterface()
|
||||
{
|
||||
return nif;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the scope ID of the address scope if it is a scoped adress using
|
||||
* an integer to identify the scope.
|
||||
*
|
||||
* Otherwise this method returns 0.
|
||||
* @since 1.5
|
||||
*/
|
||||
public int getScopeId()
|
||||
{
|
||||
// check scope_id_set because some JDK-serialized objects seem to have
|
||||
// scope_id set to a nonzero value even when scope_id_set == false
|
||||
if( scope_id_set )
|
||||
return scope_id;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the IP address string in textual presentation
|
||||
*/
|
||||
|
@ -214,12 +323,17 @@ public final class Inet6Address extends InetAddress
|
|||
|
||||
sbuf.append(Integer.toHexString(x));
|
||||
}
|
||||
if( nif != null )
|
||||
sbuf.append( "%" + nif.getName() );
|
||||
else if( scope_id_set )
|
||||
sbuf.append( "%" + scope_id );
|
||||
|
||||
return sbuf.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a hashcode for this IP address
|
||||
* (The hashcode is independent of scope)
|
||||
*/
|
||||
public int hashCode()
|
||||
{
|
||||
|
@ -234,10 +348,23 @@ public final class Inet6Address extends InetAddress
|
|||
if (! (obj instanceof Inet6Address))
|
||||
return false;
|
||||
|
||||
// this.ipaddress is never set in this class except to
|
||||
// the value of the super class' addr. The super classes
|
||||
// equals(Object) will do the compare.
|
||||
return super.equals(obj);
|
||||
Inet6Address ip = (Inet6Address)obj;
|
||||
if (ipaddress.length != ip.ipaddress.length)
|
||||
return false;
|
||||
|
||||
for (int i = 0; i < ip.ipaddress.length; i++)
|
||||
if (ipaddress[i] != ip.ipaddress[i])
|
||||
return false;
|
||||
|
||||
if( ip.nif != null && nif != null )
|
||||
return nif.equals( ip.nif );
|
||||
if( ip.nif != nif )
|
||||
return false;
|
||||
if( ip.scope_id_set != scope_id_set )
|
||||
return false;
|
||||
if( scope_id_set )
|
||||
return (scope_id == ip.scope_id);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -258,4 +385,38 @@ public final class Inet6Address extends InetAddress
|
|||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Required for 1.5-compatible serialization.
|
||||
* @since 1.5
|
||||
*/
|
||||
private void readObject(ObjectInputStream s)
|
||||
throws IOException, ClassNotFoundException
|
||||
{
|
||||
s.defaultReadObject();
|
||||
try
|
||||
{
|
||||
if( scope_ifname_set )
|
||||
nif = NetworkInterface.getByName( ifname );
|
||||
}
|
||||
catch( SocketException se )
|
||||
{
|
||||
// FIXME: Ignore this? or throw an IOException?
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Required for 1.5-compatible serialization.
|
||||
* @since 1.5
|
||||
*/
|
||||
private void writeObject(ObjectOutputStream s)
|
||||
throws IOException
|
||||
{
|
||||
if( nif != null )
|
||||
{
|
||||
ifname = nif.getName();
|
||||
scope_ifname_set = true;
|
||||
}
|
||||
s.defaultWriteObject();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue