aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/net
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/java/net')
-rw-r--r--libjava/java/net/Authenticator.java313
-rw-r--r--libjava/java/net/BindException.java74
-rw-r--r--libjava/java/net/ConnectException.java75
-rw-r--r--libjava/java/net/ContentHandler.java126
-rw-r--r--libjava/java/net/ContentHandlerFactory.java65
-rw-r--r--libjava/java/net/DatagramPacket.java391
-rw-r--r--libjava/java/net/DatagramSocket.java931
-rw-r--r--libjava/java/net/DatagramSocketImpl.java296
-rw-r--r--libjava/java/net/DatagramSocketImplFactory.java60
-rw-r--r--libjava/java/net/FileNameMap.java65
-rw-r--r--libjava/java/net/HttpURLConnection.java589
-rw-r--r--libjava/java/net/Inet4Address.java233
-rw-r--r--libjava/java/net/Inet6Address.java261
-rw-r--r--libjava/java/net/InetSocketAddress.java221
-rw-r--r--libjava/java/net/MalformedURLException.java74
-rw-r--r--libjava/java/net/MulticastSocket.java486
-rw-r--r--libjava/java/net/NetPermission.java90
-rw-r--r--libjava/java/net/NetworkInterface.java259
-rw-r--r--libjava/java/net/NoRouteToHostException.java74
-rw-r--r--libjava/java/net/PasswordAuthentication.java92
-rw-r--r--libjava/java/net/PortUnreachableException.java72
-rw-r--r--libjava/java/net/ProtocolException.java75
-rw-r--r--libjava/java/net/Socket.java1284
-rw-r--r--libjava/java/net/SocketAddress.java63
-rw-r--r--libjava/java/net/SocketException.java75
-rw-r--r--libjava/java/net/SocketImpl.java321
-rw-r--r--libjava/java/net/SocketImplFactory.java59
-rw-r--r--libjava/java/net/SocketOptions.java166
-rw-r--r--libjava/java/net/SocketPermission.java408
-rw-r--r--libjava/java/net/SocketTimeoutException.java73
-rw-r--r--libjava/java/net/URI.java893
-rw-r--r--libjava/java/net/URISyntaxException.java144
-rw-r--r--libjava/java/net/URLDecoder.java180
-rw-r--r--libjava/java/net/URLEncoder.java184
-rw-r--r--libjava/java/net/URLStreamHandler.java532
-rw-r--r--libjava/java/net/URLStreamHandlerFactory.java65
-rw-r--r--libjava/java/net/UnknownHostException.java77
-rw-r--r--libjava/java/net/UnknownServiceException.java76
38 files changed, 0 insertions, 9522 deletions
diff --git a/libjava/java/net/Authenticator.java b/libjava/java/net/Authenticator.java
deleted file mode 100644
index 229e140..0000000
--- a/libjava/java/net/Authenticator.java
+++ /dev/null
@@ -1,313 +0,0 @@
-/* Authenticator.java -- Abstract class for obtaining authentication info
- Copyright (C) 1998, 2000, 2003 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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;
-
-
-/**
- * This abstract class provides a model for obtaining authentication
- * information (in the form of a username and password) required by
- * some network operations (such as hitting a password protected
- * web site).
- * <p>
- * To make use of this feature, a programmer must create a subclass
- * that knows how to obtain the necessary info. An example
- * would be a class that popped up a dialog box to prompt the user.
- * After creating an instance of that subclass, the static
- * <code>setDefault</code> method of this class is called to set up
- * that instance as the object to use on subsequent calls to obtain
- * authorization.
- *
- * @since 1.2
- *
- * @author Aaron M. Renn (arenn@urbanophile.com)
- * @status Believed to be JDK 1.4 complete
- */
-public abstract class Authenticator
-{
- /*
- * Class Variables
- */
-
- /**
- * This is the default Authenticator object to use for password requests
- */
- private static Authenticator defaultAuthenticator;
-
- /*
- * Instance Variables
- */
-
- /**
- * The hostname of the site requesting authentication
- */
- private String host;
-
- /**
- * InternetAddress of the site requesting authentication
- */
- private InetAddress addr;
-
- /**
- * The port number of the site requesting authentication
- */
- private int port;
-
- /**
- * The protocol name of the site requesting authentication
- */
- private String protocol;
-
- /**
- * The prompt to display to the user when requesting authentication info
- */
- private String prompt;
-
- /**
- * The authentication scheme in use
- */
- private String scheme;
-
- /*
- * Class Methods
- */
-
- /**
- * This method sets the default <code>Authenticator</code> object (an
- * instance of a subclass of <code>Authenticator</code>) to use when
- * prompting the user for
- * information. Note that this method checks to see if the caller is
- * allowed to set this value (the "setDefaultAuthenticator" permission)
- * and throws a <code>SecurityException</code> if it is not.
- *
- * @param defAuth The new default <code>Authenticator</code> object to use
- *
- * @exception SecurityException If the caller does not have permission
- * to perform this operation
- */
- public static void setDefault(Authenticator defAuth)
- {
- SecurityManager sm = System.getSecurityManager();
- if (sm != null)
- sm.checkPermission(new NetPermission("setDefaultAuthenticator"));
-
- defaultAuthenticator = defAuth;
- }
-
- /**
- * This method is called whenever a username and password for a given
- * network operation is required. First, a security check is made to see
- * if the caller has the "requestPasswordAuthentication"
- * permission. If not, the method thows an exception. If there is no
- * default <code>Authenticator</code> object, the method then returns
- * <code>null</code>. Otherwise, the default authenticators's instance
- * variables are initialized and it's <code>getPasswordAuthentication</code>
- * method is called to get the actual authentication information to return.
- *
- * @param addr The address requesting authentication
- * @param port The port requesting authentication
- * @param protocol The protocol requesting authentication
- * @param prompt The prompt to display to the user when requesting
- * authentication info
- * @param scheme The authentication scheme in use
- *
- * @return A <code>PasswordAuthentication</code> object with the user's
- * authentication info.
- *
- * @exception SecurityException If the caller does not have permission to
- * perform this operation
- */
- public static PasswordAuthentication requestPasswordAuthentication(InetAddress addr,
- int port,
- String protocol,
- String prompt,
- String scheme)
- throws SecurityException
- {
- return requestPasswordAuthentication(null, addr, port, protocol, prompt,
- scheme);
- }
-
- /**
- * This method is called whenever a username and password for a given
- * network operation is required. First, a security check is made to see
- * if the caller has the "requestPasswordAuthentication"
- * permission. If not, the method thows an exception. If there is no
- * default <code>Authenticator</code> object, the method then returns
- * <code>null</code>. Otherwise, the default authenticators's instance
- * variables are initialized and it's <code>getPasswordAuthentication</code>
- * method is called to get the actual authentication information to return.
- * This method is the preferred one as it can be used with hostname
- * when addr is unknown.
- *
- * @param host The hostname requesting authentication
- * @param addr The address requesting authentication
- * @param port The port requesting authentication
- * @param protocol The protocol requesting authentication
- * @param prompt The prompt to display to the user when requesting
- * authentication info
- * @param scheme The authentication scheme in use
- *
- * @return A <code>PasswordAuthentication</code> object with the user's
- * authentication info.
- *
- * @exception SecurityException If the caller does not have permission to
- * perform this operation
- *
- * @since 1.4
- */
- public static PasswordAuthentication requestPasswordAuthentication(String host,
- InetAddress addr,
- int port,
- String protocol,
- String prompt,
- String scheme)
- throws SecurityException
- {
- SecurityManager sm = System.getSecurityManager();
- if (sm != null)
- sm.checkPermission(new NetPermission("requestPasswordAuthentication"));
-
- if (defaultAuthenticator == null)
- return null;
-
- defaultAuthenticator.host = host;
- defaultAuthenticator.addr = addr;
- defaultAuthenticator.port = port;
- defaultAuthenticator.protocol = protocol;
- defaultAuthenticator.prompt = prompt;
- defaultAuthenticator.scheme = scheme;
-
- return defaultAuthenticator.getPasswordAuthentication();
- }
-
- /*
- * Constructors
- */
-
- /**
- * Default, no-argument constructor for subclasses to call.
- */
- public Authenticator()
- {
- }
-
- /*
- * Instance Methods
- */
-
- /**
- * This method returns the address of the site that is requesting
- * authentication.
- *
- * @return The requesting site's address
- */
- protected final InetAddress getRequestingSite()
- {
- return addr;
- }
-
- /**
- * Returns the hostname of the host or proxy requesting authorization,
- * or <code>null</code> if not available.
- *
- * @return The name of the host requesting authentication, or
- * <code>null</code> if it is not available.
- *
- * @since 1.4
- */
- protected final String getRequestingHost()
- {
- return host;
- }
-
- /**
- * This method returns the port of the site that is requesting
- * authentication.
- *
- * @return The requesting port
- */
- protected final int getRequestingPort()
- {
- return port;
- }
-
- /**
- * This method returns the requesting protocol of the operation that is
- * requesting authentication
- *
- * @return The requesting protocol
- */
- protected final String getRequestingProtocol()
- {
- return protocol;
- }
-
- /**
- * Returns the prompt that should be used when requesting authentication
- * information from the user
- *
- * @return The user prompt
- */
- protected final String getRequestingPrompt()
- {
- return prompt;
- }
-
- /**
- * This method returns the authentication scheme in use
- *
- * @return The authentication scheme
- */
- protected final String getRequestingScheme()
- {
- return scheme;
- }
-
- /**
- * This method is called whenever a request for authentication is made. It
- * can call the other getXXX methods to determine the information relevant
- * to this request. Subclasses should override this method, which returns
- * <code>null</code> by default.
- *
- * @return The <code>PasswordAuthentication</code> information
- */
- protected PasswordAuthentication getPasswordAuthentication()
- {
- return null;
- }
-} // class Authenticator
diff --git a/libjava/java/net/BindException.java b/libjava/java/net/BindException.java
deleted file mode 100644
index cfb509a..0000000
--- a/libjava/java/net/BindException.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/* BindException.java -- An exception occurred while binding to a socket
- Copyright (C) 1998, 1999, 2000, 2001, 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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;
-
-
-/**
- * This exception indicates that an error occurred while attempting to bind
- * socket to a particular port.
- *
- * @author Aaron M. Renn (arenn@urbanophile.com)
- * @author Warren Levy (warrenl@cygnus.com)
- * @since 1.1
- * @status updated to 1.4
- */
-public class BindException extends SocketException
-{
- /**
- * Compatible with JDK 1.1+.
- */
- private static final long serialVersionUID = -5945005768251722951L;
-
- /**
- * Create a new instance without a descriptive error message.
- */
- public BindException()
- {
- }
-
- /**
- * Create a new instance with a descriptive error message, such as the
- * text from strerror(3).
- *
- * @param message a message describing the error that occurred
- */
- public BindException(String message)
- {
- super(message);
- }
-} // class BindException
diff --git a/libjava/java/net/ConnectException.java b/libjava/java/net/ConnectException.java
deleted file mode 100644
index c115d2f..0000000
--- a/libjava/java/net/ConnectException.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/* ConnectException.java -- An exception occurred while connecting to a host
- Copyright (C) 1998, 1999, 2000, 2001, 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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;
-
-
-/**
- * This exception indicates that an error occurred while attempting to
- * connect to a remote host. Often this indicates that the remote host
- * refused the connection (ie, is not listening on the target socket).
- *
- * @author Aaron M. Renn (arenn@urbanophile.com)
- * @author Warren Levy (warrenl@cygnus.com)
- * @since 1.1
- * @status updated to 1.4
- */
-public class ConnectException extends SocketException
-{
- /**
- * Compatible with JDK 1.1+.
- */
- private static final long serialVersionUID = 3831404271622369215L;
-
- /**
- * Create a new instance without a descriptive error message.
- */
- public ConnectException()
- {
- }
-
- /**
- * Create a new instance with a descriptive error message, such as the
- * text from strerror(3).
- *
- * @param message a message describing the error that occurred
- */
- public ConnectException(String message)
- {
- super(message);
- }
-} // class ConnectException
diff --git a/libjava/java/net/ContentHandler.java b/libjava/java/net/ContentHandler.java
deleted file mode 100644
index 7f63e74..0000000
--- a/libjava/java/net/ContentHandler.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/* ContentHandler.java -- Abstract class for handling content from URL's
- Copyright (C) 1998, 1999, 2000, 2001, 2003 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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;
-
-/**
- * Written using on-line Java Platform 1.2 API Specification, as well
- * as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998).
- * Status: Believed complete and correct.
- */
-
-/**
- * This is an abstract class that is the superclass for classes that read
- * objects from URL's. Calling the <code>getContent()</code> method in the
- * <code>URL</code> class or the <code>URLConnection</code> class will cause
- * an instance of a subclass of <code>ContentHandler</code> to be created for
- * the MIME type of the object being downloaded from the URL. Thus, this
- * class is seldom needed by applications/applets directly, but only
- * indirectly through methods in other classes.
- *
- * @author Aaron M. Renn (arenn@urbanophile.com)
- * @author Warren Levy (warrenl@cygnus.com)
- */
-public abstract class ContentHandler
-{
- /*
- * Constructors
- */
-
- /**
- * Default, no-argument constructor.
- */
- public ContentHandler()
- {
- }
-
- /*
- * Instance Methods
- */
-
- /**
- * This method reads from the <code>InputStream</code> of the passed in URL
- * connection and uses the data downloaded to create an <code>Object</code>
- * represening the content. For example, if the URL is pointing to a GIF
- * file, this method might return an <code>Image</code> object. This method
- * must be implemented by subclasses.
- *
- * @param urlc A <code>URLConnection</code> object to read data from.
- *
- * @return An object representing the data read
- *
- * @exception IOException If an error occurs
- */
- public abstract Object getContent(URLConnection urlc)
- throws IOException;
-
- /**
- * This method reads from the <code>InputStream</code> of the passed in URL
- * connection and uses the data downloaded to create an <code>Object</code>
- * represening the content. For example, if the URL is pointing to a GIF
- * file, this method might return an <code>Image</code> object. This method
- * must be implemented by subclasses. This method uses the list of
- * supplied classes as candidate types. If the data read doesn't match
- * any of the supplied type, <code>null</code> is returned.
- *
- * @param urlc A <code>URLConnection</code> object to read data from.
- * @param classes An array of types of objects that are candidate types
- * for the data to be read.
- *
- * @return An object representing the data read, or <code>null</code>
- * if the data does not match any of the candidate types.
- *
- * @exception IOException If an error occurs
- *
- * @since 1.3
- */
- public Object getContent(URLConnection urlc, Class[] classes)
- throws IOException
- {
- Object obj = getContent(urlc);
-
- for (int i = 0; i < classes.length; i++)
- {
- if (classes[i].isInstance(obj))
- return obj;
- }
-
- return null;
- }
-} // class ContentHandler
diff --git a/libjava/java/net/ContentHandlerFactory.java b/libjava/java/net/ContentHandlerFactory.java
deleted file mode 100644
index 51a92cf..0000000
--- a/libjava/java/net/ContentHandlerFactory.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/* ContentHandlerFactory.java -- Interface for creating content handlers
- Copyright (C) 1998, 1999, 2000, 2001, 2003 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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;
-
-
-/**
- * Written using on-line Java Platform 1.2 API Specification, as well
- * as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998).
- * Status: Believed complete and correct.
- */
-/**
- * This interface maps MIME types to <code>ContentHandler</code> objects.
- * It consists of one method that, when passed a MIME type, returns a
- * handler for that type.
- *
- * @author Aaron M. Renn (arenn@urbanophile.com)
- * @author Warren Levy (warrenl@cygnus.com)
- */
-public interface ContentHandlerFactory
-{
- /**
- * This method is passed a MIME type as a string and is responsible for
- * returning the appropriate <code>ContentHandler</code> object.
- *
- * @param mimeType The MIME type to map to a <code>ContentHandler</code>
- *
- * @return The <code>ContentHandler</code> for the passed in MIME type
- */
- ContentHandler createContentHandler(String mimeType);
-} // interface ContentHandlerFactory
diff --git a/libjava/java/net/DatagramPacket.java b/libjava/java/net/DatagramPacket.java
deleted file mode 100644
index e642f88..0000000
--- a/libjava/java/net/DatagramPacket.java
+++ /dev/null
@@ -1,391 +0,0 @@
-/* DatagramPacket.java -- Class to model a packet to be sent via UDP
- Copyright (C) 1998, 1999, 2000, 2001 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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;
-
-
-/*
- * Written using on-line Java Platform 1.2 API Specification, as well
- * as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998).
- * Status: Believed complete and correct.
- */
-
-/**
- * This class models a packet of data that is to be sent across the network
- * using a connectionless protocol such as UDP. It contains the data
- * to be send, as well as the destination address and port. Note that
- * datagram packets can arrive in any order and are not guaranteed to be
- * delivered at all.
- * <p>
- * This class can also be used for receiving data from the network.
- * <p>
- * Note that for all method below where the buffer length passed by the
- * caller cannot exceed the actually length of the byte array passed as
- * the buffer, if this condition is not true, then the method silently
- * reduces the length value to maximum allowable value.
- *
- * Written using on-line Java Platform 1.2 API Specification, as well
- * as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998).
- * Status: Believed complete and correct.
- *
- * @author Warren Levy (warrenl@cygnus.com)
- * @author Aarom M. Renn (arenn@urbanophile.com) (Documentation comments)
- * @date April 28, 1999.
- */
-public final class DatagramPacket
-{
- /**
- * The data buffer to send
- */
- private byte[] buffer;
-
- /**
- * This is the offset into the buffer to start sending from or receiving to.
- */
- private int offset;
-
- /**
- * The length of the data buffer to send.
- */
- int length;
-
- /**
- * The maximal length of the buffer.
- */
- int maxlen;
-
- /**
- * The address to which the packet should be sent or from which it
- * was received.
- */
- private InetAddress address;
-
- /**
- * The port to which the packet should be sent or from which it was
- * was received.
- */
- private int port;
-
- /**
- * This method initializes a new instance of <code>DatagramPacket</code>
- * which has the specified buffer, offset, and length.
- *
- * @param buf The buffer for holding the incoming datagram.
- * @param offset The offset into the buffer to start writing.
- * @param length The maximum number of bytes to read.
- *
- * @since 1.2
- */
- public DatagramPacket(byte[] buf, int offset, int length)
- {
- setData(buf, offset, length);
- address = null;
- port = -1;
- }
-
- /**
- * Initializes a new instance of <code>DatagramPacket</code> for
- * receiving packets from the network.
- *
- * @param buf A buffer for storing the returned packet data
- * @param length The length of the buffer (must be &lt;= buf.length)
- */
- public DatagramPacket(byte[] buf, int length)
- {
- this(buf, 0, length);
- }
-
- /**
- * Initializes a new instance of <code>DatagramPacket</code> for
- * transmitting packets across the network.
- *
- * @param buf A buffer containing the data to send
- * @param offset The offset into the buffer to start writing from.
- * @param length The length of the buffer (must be &lt;= buf.length)
- * @param address The address to send to
- * @param port The port to send to
- *
- * @since 1.2
- */
- public DatagramPacket(byte[] buf, int offset, int length,
- InetAddress address, int port)
- {
- setData(buf, offset, length);
- setAddress(address);
- setPort(port);
- }
-
- /**
- * Initializes a new instance of <code>DatagramPacket</code> for
- * transmitting packets across the network.
- *
- * @param buf A buffer containing the data to send
- * @param length The length of the buffer (must be &lt;= buf.length)
- * @param address The address to send to
- * @param port The port to send to
- */
- public DatagramPacket(byte[] buf, int length, InetAddress address, int port)
- {
- this(buf, 0, length, address, port);
- }
-
- /**
- * Initializes a new instance of <code>DatagramPacket</code> for
- * transmitting packets across the network.
- *
- * @param buf A buffer containing the data to send
- * @param offset The offset into the buffer to start writing from.
- * @param length The length of the buffer (must be &lt;= buf.length)
- * @param address The socket address to send to
- *
- * @exception SocketException If an error occurs
- * @exception IllegalArgumentException If address type is not supported
- *
- * @since 1.4
- */
- public DatagramPacket(byte[] buf, int offset, int length,
- SocketAddress address) throws SocketException
- {
- if (! (address instanceof InetSocketAddress))
- throw new IllegalArgumentException("unsupported address type");
-
- InetSocketAddress tmp = (InetSocketAddress) address;
- setData(buf, offset, length);
- setAddress(tmp.getAddress());
- setPort(tmp.getPort());
- }
-
- /**
- * Initializes a new instance of <code>DatagramPacket</code> for
- * transmitting packets across the network.
- *
- * @param buf A buffer containing the data to send
- * @param length The length of the buffer (must be &lt;= buf.length)
- * @param address The socket address to send to
- *
- * @exception SocketException If an error occurs
- * @exception IllegalArgumentException If address type is not supported
- *
- * @since 1.4
- */
- public DatagramPacket(byte[] buf, int length, SocketAddress address)
- throws SocketException
- {
- this(buf, 0, length, address);
- }
-
- /**
- * Returns the address that this packet is being sent to or, if it was used
- * to receive a packet, the address that is was received from. If the
- * constructor that doesn not take an address was used to create this object
- * and no packet was actually read into this object, then this method
- * returns <code>null</code>.
- *
- * @return The address for this packet.
- */
- public synchronized InetAddress getAddress()
- {
- return address;
- }
-
- /**
- * Returns the port number this packet is being sent to or, if it was used
- * to receive a packet, the port that it was received from. If the
- * constructor that doesn not take an address was used to create this object
- * and no packet was actually read into this object, then this method
- * will return 0.
- *
- * @return The port number for this packet
- */
- public synchronized int getPort()
- {
- return port;
- }
-
- /**
- * Returns the data buffer for this packet
- *
- * @return This packet's data buffer
- */
- public synchronized byte[] getData()
- {
- return buffer;
- }
-
- /**
- * This method returns the current offset value into the data buffer
- * where data will be sent from.
- *
- * @return The buffer offset.
- *
- * @since 1.2
- */
- public synchronized int getOffset()
- {
- return offset;
- }
-
- /**
- * Returns the length of the data in the buffer
- *
- * @return The length of the data
- */
- public synchronized int getLength()
- {
- return length;
- }
-
- /**
- * This sets the address to which the data packet will be transmitted.
- *
- * @param address The destination address
- *
- * @since 1.1
- */
- public synchronized void setAddress(InetAddress address)
- {
- this.address = address;
- }
-
- /**
- * This sets the port to which the data packet will be transmitted.
- *
- * @param port The destination port
- *
- * @since 1.1
- */
- public synchronized void setPort(int port)
- {
- if (port < 0 || port > 65535)
- throw new IllegalArgumentException("Invalid port: " + port);
-
- this.port = port;
- }
-
- /**
- * Sets the address of the remote host this package will be sent
- *
- * @param address The socket address of the remove host
- *
- * @exception IllegalArgumentException If address type is not supported
- *
- * @since 1.4
- */
- public void setSocketAddress(SocketAddress address)
- throws IllegalArgumentException
- {
- if (address == null)
- throw new IllegalArgumentException("address may not be null");
-
- InetSocketAddress tmp = (InetSocketAddress) address;
- this.address = tmp.getAddress();
- this.port = tmp.getPort();
- }
-
- /**
- * Gets the socket address of the host this packet
- * will be sent to/is coming from
- *
- * @return The socket address of the remote host
- *
- * @since 1.4
- */
- public SocketAddress getSocketAddress()
- {
- return new InetSocketAddress(address, port);
- }
-
- /**
- * Sets the data buffer for this packet.
- *
- * @param buf The new buffer for this packet
- *
- * @exception NullPointerException If the argument is null
- *
- * @since 1.1
- */
- public void setData(byte[] buf)
- {
- setData(buf, 0, buf.length);
- }
-
- /**
- * This method sets the data buffer for the packet.
- *
- * @param buf The byte array containing the data for this packet.
- * @param offset The offset into the buffer to start reading data from.
- * @param length The number of bytes of data in the buffer.
- *
- * @exception NullPointerException If the argument is null
- *
- * @since 1.2
- */
- public synchronized void setData(byte[] buf, int offset, int length)
- {
- // This form of setData must be used if offset is to be changed.
- if (buf == null)
- throw new NullPointerException("Null buffer");
- if (offset < 0)
- throw new IllegalArgumentException("Invalid offset: " + offset);
-
- buffer = buf;
- this.offset = offset;
- setLength(length);
- }
-
- /**
- * Sets the length of the data in the buffer.
- *
- * @param length The new length. (Where len &lt;= buf.length)
- *
- * @exception IllegalArgumentException If the length is negative or
- * if the length is greater than the packet's data buffer length
- *
- * @since 1.1
- */
- public synchronized void setLength(int length)
- {
- if (length < 0)
- throw new IllegalArgumentException("Invalid length: " + length);
- if (offset + length > buffer.length)
- throw new IllegalArgumentException("Potential buffer overflow - offset: "
- + offset + " length: " + length);
-
- this.length = length;
- this.maxlen = length;
- }
-}
diff --git a/libjava/java/net/DatagramSocket.java b/libjava/java/net/DatagramSocket.java
deleted file mode 100644
index d675cb1..0000000
--- a/libjava/java/net/DatagramSocket.java
+++ /dev/null
@@ -1,931 +0,0 @@
-/* DatagramSocket.java -- A class to model UDP sockets
- Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004
- 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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 gnu.java.net.PlainDatagramSocketImpl;
-import gnu.java.nio.DatagramChannelImpl;
-
-import java.io.IOException;
-import java.nio.channels.DatagramChannel;
-import java.nio.channels.IllegalBlockingModeException;
-
-
-/**
- * Written using on-line Java Platform 1.2 API Specification, as well
- * as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998).
- * Status: Believed complete and correct.
- */
-/**
- * This class models a connectionless datagram socket that sends
- * individual packets of data across the network. In the TCP/IP world,
- * this means UDP. Datagram packets do not have guaranteed delivery,
- * or any guarantee about the order the data will be received on the
- * remote host.
- *
- * @author Aaron M. Renn (arenn@urbanophile.com)
- * @author Warren Levy (warrenl@cygnus.com)
- * @date May 3, 1999.
- */
-public class DatagramSocket
-{
- /**
- * This is the user DatagramSocketImplFactory for this class. If this
- * variable is null, a default factory is used.
- */
- private static DatagramSocketImplFactory factory;
-
- /**
- * This is the implementation object used by this socket.
- */
- private DatagramSocketImpl impl;
-
- /**
- * True if socket implementation was created.
- */
- private boolean implCreated;
-
- /**
- * This is the address we are "connected" to
- */
- private InetAddress remoteAddress;
-
- /**
- * This is the port we are "connected" to
- */
- private int remotePort = -1;
-
- /**
- * True if socket is bound.
- */
- private boolean bound;
-
- /**
- * Creates a <code>DatagramSocket</code> from a specified
- * <code>DatagramSocketImpl</code> instance
- *
- * @param impl The <code>DatagramSocketImpl</code> the socket will be
- * created from
- *
- * @since 1.4
- */
- protected DatagramSocket(DatagramSocketImpl impl)
- {
- if (impl == null)
- throw new NullPointerException("impl may not be null");
-
- this.impl = impl;
- this.remoteAddress = null;
- this.remotePort = -1;
- }
-
- /**
- * Initializes a new instance of <code>DatagramSocket</code> that binds to
- * a random port and every address on the local machine.
- *
- * @exception SocketException If an error occurs.
- * @exception SecurityException If a security manager exists and
- * its <code>checkListen</code> method doesn't allow the operation.
- */
- public DatagramSocket() throws SocketException
- {
- this(new InetSocketAddress(0));
- }
-
- /**
- * Initializes a new instance of <code>DatagramSocket</code> that binds to
- * the specified port and every address on the local machine.
- *
- * @param port The local port number to bind to.
- *
- * @exception SecurityException If a security manager exists and its
- * <code>checkListen</code> method doesn't allow the operation.
- * @exception SocketException If an error occurs.
- */
- public DatagramSocket(int port) throws SocketException
- {
- this(new InetSocketAddress(port));
- }
-
- /**
- * Initializes a new instance of <code>DatagramSocket</code> that binds to
- * the specified local port and address.
- *
- * @param port The local port number to bind to.
- * @param addr The local address to bind to.
- *
- * @exception SecurityException If a security manager exists and its
- * checkListen method doesn't allow the operation.
- * @exception SocketException If an error occurs.
- */
- public DatagramSocket(int port, InetAddress addr) throws SocketException
- {
- this(new InetSocketAddress(addr, port));
- }
-
- /**
- * Initializes a new instance of <code>DatagramSocket</code> that binds to
- * the specified local port and address.
- *
- * @param address The local address and port number to bind to.
- *
- * @exception SecurityException If a security manager exists and its
- * <code>checkListen</code> method doesn't allow the operation.
- * @exception SocketException If an error occurs.
- *
- * @since 1.4
- */
- public DatagramSocket(SocketAddress address) throws SocketException
- {
- String propVal = System.getProperty("impl.prefix");
- if (propVal == null || propVal.equals(""))
- impl = new PlainDatagramSocketImpl();
- else
- try
- {
- impl =
- (DatagramSocketImpl) Class.forName("java.net." + propVal
- + "DatagramSocketImpl")
- .newInstance();
- }
- catch (Exception e)
- {
- System.err.println("Could not instantiate class: java.net."
- + propVal + "DatagramSocketImpl");
- impl = new PlainDatagramSocketImpl();
- }
-
- if (address != null)
- bind(address);
- }
-
- // This needs to be accessible from java.net.MulticastSocket
- DatagramSocketImpl getImpl() throws SocketException
- {
- try
- {
- if (! implCreated)
- {
- impl.create();
- implCreated = true;
- }
-
- return impl;
- }
- catch (IOException e)
- {
- throw new SocketException(e.getMessage());
- }
- }
-
- /**
- * Closes this datagram socket.
- */
- public void close()
- {
- if (isClosed())
- return;
-
- try
- {
- getImpl().close();
- }
- catch (SocketException e)
- {
- // Ignore this case, just close the socket in finally clause.
- }
- finally
- {
- remoteAddress = null;
- remotePort = -1;
- impl = null;
- }
-
- try
- {
- if (getChannel() != null)
- getChannel().close();
- }
- catch (IOException e)
- {
- // Do nothing.
- }
- }
-
- /**
- * This method returns the remote address to which this socket is
- * connected. If this socket is not connected, then this method will
- * return <code>null</code>.
- *
- * @return The remote address.
- *
- * @since 1.2
- */
- public InetAddress getInetAddress()
- {
- return remoteAddress;
- }
-
- /**
- * This method returns the remote port to which this socket is
- * connected. If this socket is not connected, then this method will
- * return -1.
- *
- * @return The remote port.
- *
- * @since 1.2
- */
- public int getPort()
- {
- return remotePort;
- }
-
- /**
- * Returns the local address this datagram socket is bound to.
- *
- * @return The local address is the socket is bound or null
- *
- * @since 1.1
- */
- public InetAddress getLocalAddress()
- {
- if (! isBound())
- return null;
-
- InetAddress localAddr;
-
- try
- {
- localAddr =
- (InetAddress) getImpl().getOption(SocketOptions.SO_BINDADDR);
-
- SecurityManager s = System.getSecurityManager();
- if (s != null)
- s.checkConnect(localAddr.getHostName(), -1);
- }
- catch (SecurityException e)
- {
- localAddr = InetAddress.ANY_IF;
- }
- catch (SocketException e)
- {
- // This cannot happen as we are bound.
- return null;
- }
-
- return localAddr;
- }
-
- /**
- * Returns the local port this socket is bound to.
- *
- * @return The local port number.
- */
- public int getLocalPort()
- {
- if (isClosed())
- return -1;
-
- try
- {
- return getImpl().getLocalPort();
- }
- catch (SocketException e)
- {
- // This cannot happen as we are bound.
- return 0;
- }
- }
-
- /**
- * Returns the value of the socket's SO_TIMEOUT setting. If this method
- * returns 0 then SO_TIMEOUT is disabled.
- *
- * @return The current timeout in milliseconds.
- *
- * @exception SocketException If an error occurs.
- *
- * @since 1.1
- */
- public synchronized int getSoTimeout() throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- Object buf = getImpl().getOption(SocketOptions.SO_TIMEOUT);
-
- if (buf instanceof Integer)
- return ((Integer) buf).intValue();
-
- throw new SocketException("unexpected type");
- }
-
- /**
- * Sets the value of the socket's SO_TIMEOUT value. A value of 0 will
- * disable SO_TIMEOUT. Any other value is the number of milliseconds
- * a socket read/write will block before timing out.
- *
- * @param timeout The new SO_TIMEOUT value in milliseconds.
- *
- * @exception SocketException If an error occurs.
- *
- * @since 1.1
- */
- public synchronized void setSoTimeout(int timeout) throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- if (timeout < 0)
- throw new IllegalArgumentException("Invalid timeout: " + timeout);
-
- getImpl().setOption(SocketOptions.SO_TIMEOUT, new Integer(timeout));
- }
-
- /**
- * This method returns the value of the system level socket option
- * SO_SNDBUF, which is used by the operating system to tune buffer
- * sizes for data transfers.
- *
- * @return The send buffer size.
- *
- * @exception SocketException If an error occurs.
- *
- * @since 1.2
- */
- public int getSendBufferSize() throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- Object buf = getImpl().getOption(SocketOptions.SO_SNDBUF);
-
- if (buf instanceof Integer)
- return ((Integer) buf).intValue();
-
- throw new SocketException("unexpected type");
- }
-
- /**
- * This method sets the value for the system level socket option
- * SO_SNDBUF to the specified value. Note that valid values for this
- * option are specific to a given operating system.
- *
- * @param size The new send buffer size.
- *
- * @exception SocketException If an error occurs.
- * @exception IllegalArgumentException If size is 0 or negative.
- *
- * @since 1.2
- */
- public void setSendBufferSize(int size) throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- if (size < 0)
- throw new IllegalArgumentException("Buffer size is less than 0");
-
- getImpl().setOption(SocketOptions.SO_SNDBUF, new Integer(size));
- }
-
- /**
- * This method returns the value of the system level socket option
- * SO_RCVBUF, which is used by the operating system to tune buffer
- * sizes for data transfers.
- *
- * @return The receive buffer size.
- *
- * @exception SocketException If an error occurs.
- *
- * @since 1.2
- */
- public int getReceiveBufferSize() throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- Object buf = getImpl().getOption(SocketOptions.SO_RCVBUF);
-
- if (buf instanceof Integer)
- return ((Integer) buf).intValue();
-
- throw new SocketException("unexpected type");
- }
-
- /**
- * This method sets the value for the system level socket option
- * SO_RCVBUF to the specified value. Note that valid values for this
- * option are specific to a given operating system.
- *
- * @param size The new receive buffer size.
- *
- * @exception SocketException If an error occurs.
- * @exception IllegalArgumentException If size is 0 or negative.
- *
- * @since 1.2
- */
- public void setReceiveBufferSize(int size) throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- if (size < 0)
- throw new IllegalArgumentException("Buffer size is less than 0");
-
- getImpl().setOption(SocketOptions.SO_RCVBUF, new Integer(size));
- }
-
- /**
- * This method connects this socket to the specified address and port.
- * When a datagram socket is connected, it will only send or receive
- * packets to and from the host to which it is connected. A multicast
- * socket that is connected may only send and not receive packets.
- *
- * @param address The address to connect this socket to.
- * @param port The port to connect this socket to.
- *
- * @exception SocketException If an error occurs.
- * @exception IllegalArgumentException If address or port are invalid.
- * @exception SecurityException If the caller is not allowed to send
- * datagrams to or receive from this address and port.
- *
- * @since 1.2
- */
- public void connect(InetAddress address, int port)
- {
- if (address == null)
- throw new IllegalArgumentException("Connect address may not be null");
-
- if ((port < 1) || (port > 65535))
- throw new IllegalArgumentException("Port number is illegal: " + port);
-
- SecurityManager sm = System.getSecurityManager();
- if (sm != null)
- sm.checkConnect(address.getHostName(), port);
-
- try
- {
- getImpl().connect(address, port);
- remoteAddress = address;
- remotePort = port;
- }
- catch (SocketException e)
- {
- // This means simply not connected or connect not implemented.
- }
- }
-
- /**
- * This method disconnects this socket from the address/port it was
- * connected to. If the socket was not connected in the first place,
- * this method does nothing.
- *
- * @since 1.2
- */
- public void disconnect()
- {
- if (! isConnected())
- return;
-
- try
- {
- getImpl().disconnect();
- }
- catch (SocketException e)
- {
- // This cannot happen as we are connected.
- }
- finally
- {
- remoteAddress = null;
- remotePort = -1;
- }
- }
-
- /**
- * Reads a datagram packet from the socket. Note that this method
- * will block until a packet is received from the network. On return,
- * the passed in <code>DatagramPacket</code> is populated with the data
- * received and all the other information about the packet.
- *
- * @param p A <code>DatagramPacket</code> for storing the data
- *
- * @exception IOException If an error occurs.
- * @exception SocketTimeoutException If setSoTimeout was previously called
- * and the timeout has expired.
- * @exception PortUnreachableException If the socket is connected to a
- * currently unreachable destination. Note, there is no guarantee that the
- * exception will be thrown.
- * @exception IllegalBlockingModeException If this socket has an associated
- * channel, and the channel is in non-blocking mode.
- * @exception SecurityException If a security manager exists and its
- * checkAccept method doesn't allow the receive.
- */
- public synchronized void receive(DatagramPacket p) throws IOException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- if (remoteAddress != null && remoteAddress.isMulticastAddress())
- throw new IOException
- ("Socket connected to a multicast address my not receive");
-
- if (getChannel() != null && ! getChannel().isBlocking()
- && ! ((DatagramChannelImpl) getChannel()).isInChannelOperation())
- throw new IllegalBlockingModeException();
-
- getImpl().receive(p);
-
- SecurityManager s = System.getSecurityManager();
- if (s != null && isConnected())
- s.checkAccept(p.getAddress().getHostName(), p.getPort());
- }
-
- /**
- * Sends the specified packet. The host and port to which the packet
- * are to be sent should be set inside the packet.
- *
- * @param p The datagram packet to send.
- *
- * @exception IOException If an error occurs.
- * @exception SecurityException If a security manager exists and its
- * checkMulticast or checkConnect method doesn't allow the send.
- * @exception PortUnreachableException If the socket is connected to a
- * currently unreachable destination. Note, there is no guarantee that the
- * exception will be thrown.
- * @exception IllegalBlockingModeException If this socket has an associated
- * channel, and the channel is in non-blocking mode.
- */
- public void send(DatagramPacket p) throws IOException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- // JDK1.2: Don't do security checks if socket is connected; see jdk1.2 api.
- SecurityManager s = System.getSecurityManager();
- if (s != null && ! isConnected())
- {
- InetAddress addr = p.getAddress();
- if (addr.isMulticastAddress())
- s.checkMulticast(addr);
- else
- s.checkConnect(addr.getHostAddress(), p.getPort());
- }
-
- if (isConnected())
- {
- if (p.getAddress() != null
- && (remoteAddress != p.getAddress() || remotePort != p.getPort()))
- throw new IllegalArgumentException
- ("DatagramPacket address does not match remote address");
- }
-
- // FIXME: if this is a subclass of MulticastSocket,
- // use getTimeToLive for TTL val.
- if (getChannel() != null && ! getChannel().isBlocking()
- && ! ((DatagramChannelImpl) getChannel()).isInChannelOperation())
- throw new IllegalBlockingModeException();
-
- getImpl().send(p);
- }
-
- /**
- * Binds the socket to the given socket address.
- *
- * @param address The socket address to bind to.
- *
- * @exception SocketException If an error occurs.
- * @exception SecurityException If a security manager exists and
- * its checkListen method doesn't allow the operation.
- * @exception IllegalArgumentException If address type is not supported.
- *
- * @since 1.4
- */
- public void bind(SocketAddress address) throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- if (! (address instanceof InetSocketAddress))
- throw new IllegalArgumentException("unsupported address type");
-
- InetAddress addr = ((InetSocketAddress) address).getAddress();
- int port = ((InetSocketAddress) address).getPort();
-
- if (port < 0 || port > 65535)
- throw new IllegalArgumentException("Invalid port: " + port);
-
- SecurityManager s = System.getSecurityManager();
- if (s != null)
- s.checkListen(port);
-
- if (addr == null)
- addr = InetAddress.ANY_IF;
-
- try
- {
- getImpl().bind(port, addr);
- bound = true;
- }
- catch (SocketException exception)
- {
- getImpl().close();
- throw exception;
- }
- catch (RuntimeException exception)
- {
- getImpl().close();
- throw exception;
- }
- catch (Error error)
- {
- getImpl().close();
- throw error;
- }
- }
-
- /**
- * Checks if the datagram socket is closed.
- *
- * @return True if socket is closed, false otherwise.
- *
- * @since 1.4
- */
- public boolean isClosed()
- {
- return impl == null;
- }
-
- /**
- * Returns the datagram channel assoziated with this datagram socket.
- *
- * @return The associated <code>DatagramChannel</code> object or null
- *
- * @since 1.4
- */
- public DatagramChannel getChannel()
- {
- return null;
- }
-
- /**
- * Connects the datagram socket to a specified socket address.
- *
- * @param address The socket address to connect to.
- *
- * @exception SocketException If an error occurs.
- * @exception IllegalArgumentException If address type is not supported.
- *
- * @since 1.4
- */
- public void connect(SocketAddress address) throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- if (! (address instanceof InetSocketAddress))
- throw new IllegalArgumentException("unsupported address type");
-
- InetSocketAddress tmp = (InetSocketAddress) address;
- connect(tmp.getAddress(), tmp.getPort());
- }
-
- /**
- * Returns the binding state of the socket.
- *
- * @return True if socket bound, false otherwise.
- *
- * @since 1.4
- */
- public boolean isBound()
- {
- return bound;
- }
-
- /**
- * Returns the connection state of the socket.
- *
- * @return True if socket is connected, false otherwise.
- *
- * @since 1.4
- */
- public boolean isConnected()
- {
- return remoteAddress != null;
- }
-
- /**
- * Returns the SocketAddress of the host this socket is conneted to
- * or null if this socket is not connected.
- *
- * @return The socket address of the remote host if connected or null
- *
- * @since 1.4
- */
- public SocketAddress getRemoteSocketAddress()
- {
- if (! isConnected())
- return null;
-
- return new InetSocketAddress(remoteAddress, remotePort);
- }
-
- /**
- * Returns the local SocketAddress this socket is bound to.
- *
- * @return The local SocketAddress or null if the socket is not bound.
- *
- * @since 1.4
- */
- public SocketAddress getLocalSocketAddress()
- {
- if (! isBound())
- return null;
-
- return new InetSocketAddress(getLocalAddress(), getLocalPort());
- }
-
- /**
- * Enables/Disables SO_REUSEADDR.
- *
- * @param on Whether or not to have SO_REUSEADDR turned on.
- *
- * @exception SocketException If an error occurs.
- *
- * @since 1.4
- */
- public void setReuseAddress(boolean on) throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- getImpl().setOption(SocketOptions.SO_REUSEADDR, Boolean.valueOf(on));
- }
-
- /**
- * Checks if SO_REUSEADDR is enabled.
- *
- * @return True if SO_REUSEADDR is set on the socket, false otherwise.
- *
- * @exception SocketException If an error occurs.
- *
- * @since 1.4
- */
- public boolean getReuseAddress() throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- Object buf = getImpl().getOption(SocketOptions.SO_REUSEADDR);
-
- if (buf instanceof Boolean)
- return ((Boolean) buf).booleanValue();
-
- throw new SocketException("unexpected type");
- }
-
- /**
- * Enables/Disables SO_BROADCAST
- *
- * @param enable True if SO_BROADCAST should be enabled, false otherwise.
- *
- * @exception SocketException If an error occurs
- *
- * @since 1.4
- */
- public void setBroadcast(boolean enable) throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- getImpl().setOption(SocketOptions.SO_BROADCAST, Boolean.valueOf(enable));
- }
-
- /**
- * Checks if SO_BROADCAST is enabled
- *
- * @return Whether SO_BROADCAST is set
- *
- * @exception SocketException If an error occurs
- *
- * @since 1.4
- */
- public boolean getBroadcast() throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- Object buf = getImpl().getOption(SocketOptions.SO_BROADCAST);
-
- if (buf instanceof Boolean)
- return ((Boolean) buf).booleanValue();
-
- throw new SocketException("unexpected type");
- }
-
- /**
- * Sets the traffic class value
- *
- * @param tc The traffic class
- *
- * @exception SocketException If an error occurs
- * @exception IllegalArgumentException If tc value is illegal
- *
- * @see DatagramSocket#getTrafficClass()
- *
- * @since 1.4
- */
- public void setTrafficClass(int tc) throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- if (tc < 0 || tc > 255)
- throw new IllegalArgumentException();
-
- getImpl().setOption(SocketOptions.IP_TOS, new Integer(tc));
- }
-
- /**
- * Returns the current traffic class
- *
- * @return The current traffic class.
- *
- * @see DatagramSocket#setTrafficClass(int tc)
- *
- * @exception SocketException If an error occurs
- *
- * @since 1.4
- */
- public int getTrafficClass() throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- Object buf = getImpl().getOption(SocketOptions.IP_TOS);
-
- if (buf instanceof Integer)
- return ((Integer) buf).intValue();
-
- throw new SocketException("unexpected type");
- }
-
- /**
- * Sets the datagram socket implementation factory for the application
- *
- * @param fac The factory to set
- *
- * @exception IOException If an error occurs
- * @exception SocketException If the factory is already defined
- * @exception SecurityException If a security manager exists and its
- * checkSetFactory method doesn't allow the operation
- */
- public static void setDatagramSocketImplFactory(DatagramSocketImplFactory fac)
- throws IOException
- {
- if (factory != null)
- throw new SocketException("DatagramSocketImplFactory already defined");
-
- SecurityManager sm = System.getSecurityManager();
- if (sm != null)
- sm.checkSetFactory();
-
- factory = fac;
- }
-}
diff --git a/libjava/java/net/DatagramSocketImpl.java b/libjava/java/net/DatagramSocketImpl.java
deleted file mode 100644
index cfcde92..0000000
--- a/libjava/java/net/DatagramSocketImpl.java
+++ /dev/null
@@ -1,296 +0,0 @@
-/* DatagramSocketImpl.java -- Abstract class for UDP socket implementations
- Copyright (C) 1998, 1999 2000, 2001,
- 2002, 2003 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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.FileDescriptor;
-import java.io.IOException;
-
-
-/**
- * This abstract class models a datagram socket implementation. An
- * actual implementation class would implement these methods, probably
- * via redirecting them to native code.
- * <p>
- * Written using on-line Java Platform 1.2 API Specification, as well
- * as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998).
- * <p>
- * Status: Believed complete and correct.
- *
- * @author Aaron M. Renn (arenn@urbanophile.com)
- * @author Warren Levy (warrenl@cygnus.com)
- * @since 1.1
- */
-public abstract class DatagramSocketImpl implements SocketOptions
-{
- /**
- * The local port to which this socket is bound
- */
- protected int localPort;
-
- /**
- * The FileDescriptor object for this object.
- */
- protected FileDescriptor fd;
-
- /**
- * Default, no-argument constructor for subclasses to call.
- */
- public DatagramSocketImpl()
- {
- }
-
- /**
- * This method binds the socket to the specified local port and address.
- *
- * @param lport The port number to bind to
- * @param laddr The address to bind to
- *
- * @exception SocketException If an error occurs
- */
- protected abstract void bind(int lport, InetAddress laddr)
- throws SocketException;
-
- /**
- * This methods closes the socket
- */
- protected abstract void close();
-
- /**
- * Creates a new datagram socket.
- *
- * @exception SocketException If an error occurs
- */
- protected abstract void create() throws SocketException;
-
- /**
- * Takes a peek at the next packet received in order to retrieve the
- * address of the sender
- *
- * @param i The <code>InetAddress</code> to fill in with the information
- * about the sender if the next packet
- *
- * @return The port number of the sender of the packet
- *
- * @exception IOException If an error occurs
- * @exception PortUnreachableException May be thrown if the socket is
- * connected to a currently unreachable destination. Note, there is no
- * guarantee that the exception will be thrown.
- */
- protected abstract int peek(InetAddress i) throws IOException;
-
- /**
- * Takes a peek at the next packet received. This packet is not consumed.
- * With the next peekData/receive operation this packet will be read again.
- *
- * @param p The <code>DatagramPacket</code> to fill in with the data sent.
- *
- * @return The port number of the sender of the packet.
- *
- * @exception IOException If an error occurs
- * @exception PortUnreachableException May be thrown if the socket is
- * connected to a currently unreachable destination. Note, there is no
- * guarantee that the exception will be thrown.
- *
- * @since 1.4
- */
- protected abstract int peekData(DatagramPacket p) throws IOException;
-
- /**
- * Transmits the specified packet of data to the network. The destination
- * host and port should be encoded in the packet.
- *
- * @param p The packet to send
- *
- * @exception IOException If an error occurs
- * @exception PortUnreachableException May be thrown if the socket is
- * connected to a currently unreachable destination. Note, there is no
- * guarantee that the exception will be thrown.
- */
- protected abstract void send(DatagramPacket p) throws IOException;
-
- /**
- * Receives a packet of data from the network Will block until a packet
- * arrives. The packet info in populated into the passed in
- * <code>DatagramPacket</code> object.
- *
- * @param p A place to store the incoming packet.
- *
- * @exception IOException If an error occurs
- * @exception PortUnreachableException May be thrown if the socket is
- * connected to a currently unreachable destination. Note, there is no
- * guarantee that the exception will be thrown.
- */
- protected abstract void receive(DatagramPacket p) throws IOException;
-
- /**
- * Connects the socket to a host specified by address and port.
- *
- * @param address The <code>InetAddress</code> of the host to connect to
- * @param port The port number of the host to connect to
- *
- * @exception SocketException If an error occurs
- *
- * @since 1.4
- */
- protected void connect(InetAddress address, int port)
- throws SocketException
- {
- // This method has to be overwritten by real implementations
- }
-
- /**
- * Disconnects the socket.
- *
- * @since 1.4
- */
- protected void disconnect()
- {
- // This method has to be overwritten by real implementations
- }
-
- /**
- * Sets the Time to Live (TTL) setting on this socket to the specified
- * value. <b>Use <code>setTimeToLive(int)</code></b> instead.
- *
- * @param ttl The new Time to Live value
- *
- * @exception IOException If an error occurs
- * @deprecated
- */
- protected abstract void setTTL(byte ttl) throws IOException;
-
- /**
- * This method returns the current Time to Live (TTL) setting on this
- * socket. <b>Use <code>getTimeToLive()</code></b> instead.
- *
- * @return the current time-to-live
- *
- * @exception IOException If an error occurs
- *
- * @deprecated // FIXME: when ?
- */
- protected abstract byte getTTL() throws IOException;
-
- /**
- * Sets the Time to Live (TTL) setting on this socket to the specified
- * value.
- *
- * @param ttl The new Time to Live value
- *
- * @exception IOException If an error occurs
- */
- protected abstract void setTimeToLive(int ttl) throws IOException;
-
- /**
- * This method returns the current Time to Live (TTL) setting on this
- * socket.
- *
- * @return the current time-to-live
- *
- * @exception IOException If an error occurs
- */
- protected abstract int getTimeToLive() throws IOException;
-
- /**
- * Causes this socket to join the specified multicast group
- *
- * @param inetaddr The multicast address to join with
- *
- * @exception IOException If an error occurs
- */
- protected abstract void join(InetAddress inetaddr) throws IOException;
-
- /**
- * Causes the socket to leave the specified multicast group.
- *
- * @param inetaddr The multicast address to leave
- *
- * @exception IOException If an error occurs
- */
- protected abstract void leave(InetAddress inetaddr) throws IOException;
-
- /**
- * Causes this socket to join the specified multicast group on a specified
- * device
- *
- * @param mcastaddr The address to leave
- * @param netIf The specified network interface to join the group at
- *
- * @exception IOException If an error occurs
- *
- * @since 1.4
- */
- protected abstract void joinGroup(SocketAddress mcastaddr,
- NetworkInterface netIf)
- throws IOException;
-
- /**
- * Leaves a multicast group
- *
- * @param mcastaddr The address to join
- * @param netIf The specified network interface to leave the group at
- *
- * @exception IOException If an error occurs
- *
- * @since 1.4
- */
- protected abstract void leaveGroup(SocketAddress mcastaddr,
- NetworkInterface netIf)
- throws IOException;
-
- /**
- * Returns the FileDescriptor for this socket
- *
- * @return the file descriptor associated with this socket
- */
- protected FileDescriptor getFileDescriptor()
- {
- return fd;
- }
-
- /**
- * Returns the local port this socket is bound to
- *
- * @return the local port
- */
- protected int getLocalPort()
- {
- return localPort;
- }
-}
diff --git a/libjava/java/net/DatagramSocketImplFactory.java b/libjava/java/net/DatagramSocketImplFactory.java
deleted file mode 100644
index 014651a..0000000
--- a/libjava/java/net/DatagramSocketImplFactory.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/* DatagramSocketImplFactory.java --
- Copyright (C) 2002, 2003 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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;
-
-
-/** Written using on-line Java Platform 1.4 API Specification.
- * Status: Believed complete and correct.
- */
-/**
- * This interface defines one method which returns a
- * <code>DatagramSocketImpl</code> object.
- * This should not be needed by ordinary applications.
- *
- * @author Michael Koch (konqueror@gmx.de)
- * @since 1.3
- */
-public interface DatagramSocketImplFactory
-{
- /**
- * This method returns an instance of the DatagramSocketImpl object
- *
- * @return A DatagramSocketImpl object
- */
- DatagramSocketImpl createDatagramSocketImpl();
-} // interface DatagramSocketImplFactory
diff --git a/libjava/java/net/FileNameMap.java b/libjava/java/net/FileNameMap.java
deleted file mode 100644
index 6f1d25a..0000000
--- a/libjava/java/net/FileNameMap.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/* FileNameMap.java -- Maps filenames to MIME types
- Copyright (C) 1998, 1999, 2000, 2001, 2003 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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;
-
-
-/**
- * Written using on-line Java Platform 1.2 API Specification, as well
- * as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998).
- * Status: Believed complete and correct.
- */
-/**
- * This interface has one method which, when passed a filename, returns
- * the MIME type associated with that filename.
- *
- * @author Aaron M. Renn (arenn@urbanophile.com)
- * @author Warren Levy (warrenl@cygnus.com)
- * @since 1.1
- */
-public interface FileNameMap
-{
- /**
- * This method is passed a filename and is responsible for determining
- * the appropriate MIME type for that file.
- *
- * @param filename The name of the file to generate a MIME type for.
- *
- * @return The MIME type for the filename passed in.
- */
- String getContentTypeFor(String filename);
-} // interface FileNameMap
diff --git a/libjava/java/net/HttpURLConnection.java b/libjava/java/net/HttpURLConnection.java
deleted file mode 100644
index 07eae48..0000000
--- a/libjava/java/net/HttpURLConnection.java
+++ /dev/null
@@ -1,589 +0,0 @@
-/* HttpURLConnection.java -- Subclass of communications links using
- Hypertext Transfer Protocol.
- Copyright (C) 1998, 1999, 2000, 2002, 2003 Free Software Foundation
-
-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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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.InputStream;
-import java.io.PushbackInputStream;
-import java.security.Permission;
-
-
-/*
- * Written using on-line Java Platform 1.2 API Specification, as well
- * as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998).
- * Status: Believed complete and correct.
- */
-
-/**
- * This class provides a common abstract implementation for those
- * URL connection classes that will connect using the HTTP protocol.
- * In addition to the functionality provided by the URLConnection
- * class, it defines constants for HTTP return code values and
- * methods for setting the HTTP request method and determining whether
- * or not to follow redirects.
- *
- * @since 1.1
- *
- * @author Warren Levy (warrenl@cygnus.com)
- * @author Aaron M. Renn (arenn@urbanophile.com)
- */
-public abstract class HttpURLConnection extends URLConnection
-{
- /* HTTP Success Response Codes */
-
- /**
- * Indicates that the client may continue with its request. This value
- * is specified as part of RFC 2068 but was not included in Sun's JDK, so
- * beware of using this value
- */
- static final int HTTP_CONTINUE = 100;
-
- /**
- * Indicates the request succeeded.
- */
- public static final int HTTP_OK = 200;
-
- /**
- * The requested resource has been created.
- */
- public static final int HTTP_CREATED = 201;
-
- /**
- * The request has been accepted for processing but has not completed.
- * There is no guarantee that the requested action will actually ever
- * be completed succesfully, but everything is ok so far.
- */
- public static final int HTTP_ACCEPTED = 202;
-
- /**
- * The meta-information returned in the header is not the actual data
- * from the original server, but may be from a local or other copy.
- * Normally this still indicates a successful completion.
- */
- public static final int HTTP_NOT_AUTHORITATIVE = 203;
-
- /**
- * The server performed the request, but there is no data to send
- * back. This indicates that the user's display should not be changed.
- */
- public static final int HTTP_NO_CONTENT = 204;
-
- /**
- * The server performed the request, but there is no data to sent back,
- * however, the user's display should be "reset" to clear out any form
- * fields entered.
- */
- public static final int HTTP_RESET = 205;
-
- /**
- * The server completed the partial GET request for the resource.
- */
- public static final int HTTP_PARTIAL = 206;
-
- /* HTTP Redirection Response Codes */
-
- /**
- * There is a list of choices available for the requested resource.
- */
- public static final int HTTP_MULT_CHOICE = 300;
-
- /**
- * The resource has been permanently moved to a new location.
- */
- public static final int HTTP_MOVED_PERM = 301;
-
- /**
- * The resource requested has been temporarily moved to a new location.
- */
- public static final int HTTP_MOVED_TEMP = 302;
-
- /**
- * The response to the request issued is available at another location.
- */
- public static final int HTTP_SEE_OTHER = 303;
-
- /**
- * The document has not been modified since the criteria specified in
- * a conditional GET.
- */
- public static final int HTTP_NOT_MODIFIED = 304;
-
- /**
- * The requested resource needs to be accessed through a proxy.
- */
- public static final int HTTP_USE_PROXY = 305;
-
- /* HTTP Client Error Response Codes */
-
- /**
- * The request was misformed or could not be understood.
- */
- public static final int HTTP_BAD_REQUEST = 400;
-
- /**
- * The request made requires user authorization. Try again with
- * a correct authentication header.
- */
- public static final int HTTP_UNAUTHORIZED = 401;
-
- /**
- * Code reserved for future use - I hope way in the future.
- */
- public static final int HTTP_PAYMENT_REQUIRED = 402;
-
- /**
- * There is no permission to access the requested resource.
- */
- public static final int HTTP_FORBIDDEN = 403;
-
- /**
- * The requested resource was not found.
- */
- public static final int HTTP_NOT_FOUND = 404;
-
- /**
- * The specified request method is not allowed for this resource.
- */
- public static final int HTTP_BAD_METHOD = 405;
-
- /**
- * Based on the input headers sent, the resource returned in response
- * to the request would not be acceptable to the client.
- */
- public static final int HTTP_NOT_ACCEPTABLE = 406;
-
- /**
- * The client must authenticate with a proxy prior to attempting this
- * request.
- */
- public static final int HTTP_PROXY_AUTH = 407;
-
- /**
- * The request timed out.
- */
- public static final int HTTP_CLIENT_TIMEOUT = 408;
-
- /**
- * There is a conflict between the current state of the resource and the
- * requested action.
- */
- public static final int HTTP_CONFLICT = 409;
-
- /**
- * The requested resource is no longer available. This ususally indicates
- * a permanent condition.
- */
- public static final int HTTP_GONE = 410;
-
- /**
- * A Content-Length header is required for this request, but was not
- * supplied.
- */
- public static final int HTTP_LENGTH_REQUIRED = 411;
-
- /**
- * A client specified pre-condition was not met on the server.
- */
- public static final int HTTP_PRECON_FAILED = 412;
-
- /**
- * The request sent was too large for the server to handle.
- */
- public static final int HTTP_ENTITY_TOO_LARGE = 413;
-
- /**
- * The name of the resource specified was too long.
- */
- public static final int HTTP_REQ_TOO_LONG = 414;
-
- /**
- * The request is in a format not supported by the requested resource.
- */
- public static final int HTTP_UNSUPPORTED_TYPE = 415;
-
- /* HTTP Server Error Response Codes */
-
- /**
- * This error code indicates that some sort of server error occurred.
- *
- * @deprecated
- */
- public static final int HTTP_SERVER_ERROR = 500;
-
- /**
- * The server encountered an unexpected error (such as a CGI script crash)
- * that prevents the request from being fulfilled.
- */
- public static final int HTTP_INTERNAL_ERROR = 500;
-
- /**
- * The server does not support the requested functionality.
- * @since 1.3
- */
- public static final int HTTP_NOT_IMPLEMENTED = 501;
-
- /**
- * The proxy encountered a bad response from the server it was proxy-ing for
- */
- public static final int HTTP_BAD_GATEWAY = 502;
-
- /**
- * The HTTP service is not availalble, such as because it is overloaded
- * and does not want additional requests.
- */
- public static final int HTTP_UNAVAILABLE = 503;
-
- /**
- * The proxy timed out getting a reply from the remote server it was
- * proxy-ing for.
- */
- public static final int HTTP_GATEWAY_TIMEOUT = 504;
-
- /**
- * This server does not support the protocol version requested.
- */
- public static final int HTTP_VERSION = 505;
-
- // Non-HTTP response static variables
-
- /**
- * Flag to indicate whether or not redirects should be automatically
- * followed by default.
- */
- private static boolean followRedirects = true;
-
- /**
- * This is a list of valid request methods, separated by "|" characters.
- */
- private static final String valid_methods =
- "|GET|POST|HEAD|OPTIONS|PUT|DELETE|TRACE|";
-
- // Instance Variables
-
- /**
- * The requested method in use for this connection. Default is GET.
- */
- protected String method = "GET";
-
- /**
- * The response code received from the server
- */
- protected int responseCode = -1;
-
- /**
- * The response message string received from the server.
- */
- protected String responseMessage;
-
- /**
- * If this instance should follow redirect requests.
- */
- protected boolean instanceFollowRedirects = followRedirects;
-
- /**
- * Whether we already got a valid response code for this connection.
- * Used by <code>getResponseCode()</code> and
- * <code>getResponseMessage()</code>.
- */
- private boolean gotResponseVals;
-
- /**
- * Create an HttpURLConnection for the specified URL
- *
- * @param url The URL to create this connection for.
- */
- protected HttpURLConnection(URL url)
- {
- super(url);
- }
-
- /**
- * Closes the connection to the server.
- */
- public abstract void disconnect();
-
- /**
- * Returns a boolean indicating whether or not this connection is going
- * through a proxy
- *
- * @return true if through a proxy, false otherwise
- */
- public abstract boolean usingProxy();
-
- /**
- * Sets whether HTTP redirects (requests with response code 3xx) should be
- * automatically followed by this class. True by default
- *
- * @param set true if redirects should be followed, false otherwis.
- *
- * @exception SecurityException If a security manager exists and its
- * checkSetFactory method doesn't allow the operation
- */
- public static void setFollowRedirects(boolean set)
- {
- // Throw an exception if an extant security mgr precludes
- // setting the factory.
- SecurityManager s = System.getSecurityManager();
- if (s != null)
- s.checkSetFactory();
-
- followRedirects = set;
- }
-
- /**
- * Returns a boolean indicating whether or not HTTP redirects will
- * automatically be followed or not.
- *
- * @return true if redirects will be followed, false otherwise
- */
- public static boolean getFollowRedirects()
- {
- return followRedirects;
- }
-
- /**
- * Returns the value of this HttpURLConnection's instanceFollowRedirects
- * field
- *
- * @return true if following redirects is enabled, false otherwise
- */
- public boolean getInstanceFollowRedirects()
- {
- return instanceFollowRedirects;
- }
-
- /**
- * Sets the value of this HttpURLConnection's instanceFollowRedirects field
- *
- * @param follow true to enable following redirects, false otherwise
- */
- public void setInstanceFollowRedirects(boolean follow)
- {
- instanceFollowRedirects = follow;
- }
-
- /**
- * Set the method for the URL request, one of:
- * GET POST HEAD OPTIONS PUT DELETE TRACE are legal
- *
- * @param method the method to use
- *
- * @exception ProtocolException If the method cannot be reset or if the
- * requested method isn't valid for HTTP
- */
- public void setRequestMethod(String method) throws ProtocolException
- {
- if (connected)
- throw new ProtocolException("Already connected");
-
- method = method.toUpperCase();
- if (valid_methods.indexOf("|" + method + "|") != -1)
- this.method = method;
- else
- throw new ProtocolException("Invalid HTTP request method: " + method);
- }
-
- /**
- * The request method currently in use for this connection.
- *
- * @return The request method
- */
- public String getRequestMethod()
- {
- return method;
- }
-
- /**
- * Gets the status code from an HTTP response message, or -1 if
- * the response code could not be determined.
- * Note that all valid response codes have class variables
- * defined for them in this class.
- *
- * @return The response code
- *
- * @exception IOException If an error occurs
- */
- public int getResponseCode() throws IOException
- {
- if (! gotResponseVals)
- getResponseVals();
- return responseCode;
- }
-
- /**
- * Gets the HTTP response message, if any, returned along with the
- * response code from a server. Null if no response message was set
- * or an error occured while connecting.
- *
- * @return The response message
- *
- * @exception IOException If an error occurs
- */
- public String getResponseMessage() throws IOException
- {
- if (! gotResponseVals)
- getResponseVals();
- return responseMessage;
- }
-
- private void getResponseVals() throws IOException
- {
- // getHeaderField() will connect for us, but do it here first in
- // order to pick up IOExceptions.
- if (! connected)
- connect();
-
- gotResponseVals = true;
-
- // If responseCode not yet explicitly set by subclass
- if (responseCode == -1)
- {
- // Response is the first header received from the connection.
- String respField = getHeaderField(0);
-
- if (respField == null || ! respField.startsWith("HTTP/"))
- {
- // Set to default values on failure.
- responseCode = -1;
- responseMessage = null;
- return;
- }
-
- int firstSpc;
- int nextSpc;
- firstSpc = respField.indexOf(' ');
- nextSpc = respField.indexOf(' ', firstSpc + 1);
- responseMessage = respField.substring(nextSpc + 1);
- String codeStr = respField.substring(firstSpc + 1, nextSpc);
- try
- {
- responseCode = Integer.parseInt(codeStr);
- }
- catch (NumberFormatException e)
- {
- // Set to default values on failure.
- responseCode = -1;
- responseMessage = null;
- }
- }
- }
-
- /**
- * Returns a permission object representing the permission necessary to make
- * the connection represented by this object
- *
- * @return the permission necessary for this connection
- *
- * @exception IOException If an error occurs
- */
- public Permission getPermission() throws IOException
- {
- URL url = getURL();
- String host = url.getHost();
- int port = url.getPort();
- if (port == -1)
- port = 80;
-
- host = host + ":" + port;
-
- return new SocketPermission(host, "connect");
- }
-
- /**
- * This method allows the caller to retrieve any data that might have
- * been sent despite the fact that an error occurred. For example, the
- * HTML page sent along with a 404 File Not Found error. If the socket
- * is not connected, or if no error occurred or no data was returned,
- * this method returns <code>null</code>.
- *
- * @return An <code>InputStream</code> for reading error data.
- */
- public InputStream getErrorStream()
- {
- if (! connected)
- return null;
-
- int code;
- try
- {
- code = getResponseCode();
- }
- catch (IOException e)
- {
- code = -1;
- }
-
- if (code == -1)
- return null;
-
- if (((code / 100) != 4) || ((code / 100) != 5))
- return null;
-
- try
- {
- PushbackInputStream pbis = new PushbackInputStream(getInputStream());
-
- int i = pbis.read();
- if (i == -1)
- return null;
-
- pbis.unread(i);
- return pbis;
- }
- catch (IOException e)
- {
- return null;
- }
- }
-
- /**
- * Returns the value of the named field parsed as date
- *
- * @param key the key of the header field
- * @param value the default value if the header field is not present
- *
- * @return the value of the header field
- */
- 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);
- }
-}
diff --git a/libjava/java/net/Inet4Address.java b/libjava/java/net/Inet4Address.java
deleted file mode 100644
index 00c6501..0000000
--- a/libjava/java/net/Inet4Address.java
+++ /dev/null
@@ -1,233 +0,0 @@
-/* Inet4Address.java --
- Copyright (C) 2002, 2003, 2004, 2005 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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.ObjectStreamException;
-
-/*
- * 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)
- *
- * @author Michael Koch
- * @status Believed complete and correct.
- */
-public final class Inet4Address extends InetAddress
-{
- /**
- * For compatability with Sun's JDK 1.4.2 rev. 5
- */
- static final long serialVersionUID = 3286316764910316507L;
-
- /**
- * needed for serialization
- */
- private Object writeReplace() throws ObjectStreamException
- {
- return new InetAddress(addr, hostName);
- }
-
- /**
- * Initializes this object's addr instance variable from the passed in
- * byte array. Note that this constructor is protected and is called
- * only by static methods in this class.
- *
- * @param addr The IP number of this address as an array of bytes
- * @param hostname The hostname of this IP address.
- */
- Inet4Address(byte[] addr, String host)
- {
- super(addr, host);
- }
-
- /**
- * Checks if the address is a multicast address
- *
- * @since 1.1
- */
- public boolean isMulticastAddress()
- {
- return super.isMulticastAddress();
- }
-
- /**
- * Checks if this address is a loopback address
- */
- public boolean isLoopbackAddress()
- {
- return super.isLoopbackAddress();
- }
-
- /**
- * Checks if this address is a wildcard address
- *
- * @since 1.4
- */
- public boolean isAnyLocalAddress()
- {
- return super.isAnyLocalAddress();
- }
-
- /**
- * Checks if this address is a link local address
- *
- * @since 1.4
- */
- public boolean isLinkLocalAddress()
- {
- return super.isLinkLocalAddress();
- }
-
- /**
- * Checks if this address is a site local address
- *
- * @since 1.4
- */
- public boolean isSiteLocalAddress()
- {
- return super.isSiteLocalAddress();
- }
-
- /**
- * Checks if this multicast address has global scope
- *
- * @since 1.4
- */
- public boolean isMCGlobal()
- {
- return super.isMCGlobal();
- }
-
- /**
- * Checks if this multicast address has node scope
- *
- * @since 1.4
- */
- public boolean isMCNodeLocal()
- {
- return isMCNodeLocal();
- }
-
- /**
- * Checks if this multicast address has link scope
- *
- * @since 1.4
- */
- public boolean isMCLinkLocal()
- {
- return super.isMCLinkLocal();
- }
-
- /**
- * Checks if this multicast address has site scope
- *
- * @since 1.4
- */
- public boolean isMCSiteLocal()
- {
- return super.isMCSiteLocal();
- }
-
- /**
- * Checks if this multicast address has organization scope
- *
- * @since 1.4
- */
- public boolean isMCOrgLocal()
- {
- return isMCOrgLocal();
- }
-
- /**
- * Returns the address of the current instance
- */
- public byte[] getAddress()
- {
- return (byte[]) addr.clone();
- }
-
- /**
- * Returns the address as string
- *
- * @since 1.0.2
- */
- public String getHostAddress()
- {
- return super.getHostAddress();
- }
-
- /**
- * 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 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;
- }
-}
diff --git a/libjava/java/net/Inet6Address.java b/libjava/java/net/Inet6Address.java
deleted file mode 100644
index 0d62fe9..0000000
--- a/libjava/java/net/Inet6Address.java
+++ /dev/null
@@ -1,261 +0,0 @@
-/* Inet6Address.java --
- Copyright (C) 2002, 2003, 2004 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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.util.Arrays;
-
-/*
- * 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.
- */
-public final class Inet6Address extends InetAddress
-{
- static final long serialVersionUID = 6880410070516793377L;
-
- /**
- * Needed for serialization
- */
- byte[] ipaddress;
-
- /**
- * Create an Inet6Address object
- *
- * @param addr The IP address
- * @param host The hostname
- */
- Inet6Address(byte[] addr, String host)
- {
- super(addr, host);
- // Super constructor clones the addr. Get a reference to the clone.
- this.ipaddress = this.addr;
- }
-
- /**
- * Utility routine to check if the InetAddress is an IP multicast address
- *
- * @since 1.1
- */
- public boolean isMulticastAddress()
- {
- return ipaddress[0] == 0xFF;
- }
-
- /**
- * Utility routine to check if the InetAddress in a wildcard address
- *
- * @since 1.4
- */
- public boolean isAnyLocalAddress()
- {
- byte[] anylocal = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
-
- return Arrays.equals(ipaddress, anylocal);
- }
-
- /**
- * Utility routine to check if the InetAddress is a loopback address
- *
- * @since 1.4
- */
- public boolean isLoopbackAddress()
- {
- byte[] loopback = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 };
-
- return Arrays.equals(ipaddress, loopback);
- }
-
- /**
- * Utility routine to check if the InetAddress is an link local address
- *
- * @since 1.4
- */
- public boolean isLinkLocalAddress()
- {
- return ipaddress[0] == 0xFA;
- }
-
- /**
- * Utility routine to check if the InetAddress is a site local address
- *
- * @since 1.4
- */
- public boolean isSiteLocalAddress()
- {
- return ipaddress[0] == 0xFB;
- }
-
- /**
- * Utility routine to check if the multicast address has global scope
- *
- * @since 1.4
- */
- public boolean isMCGlobal()
- {
- if (! isMulticastAddress())
- return false;
-
- return (ipaddress[1] & 0x0F) == 0xE;
- }
-
- /**
- * Utility routine to check if the multicast address has node scope
- *
- * @since 1.4
- */
- public boolean isMCNodeLocal()
- {
- if (! isMulticastAddress())
- return false;
-
- return (ipaddress[1] & 0x0F) == 0x1;
- }
-
- /**
- * Utility routine to check if the multicast address has link scope
- *
- * @since 1.4
- */
- public boolean isMCLinkLocal()
- {
- if (! isMulticastAddress())
- return false;
-
- return (ipaddress[1] & 0x0F) == 0x2;
- }
-
- /**
- * Utility routine to check if the multicast address has site scope
- *
- * @since 1.4
- */
- public boolean isMCSiteLocal()
- {
- if (! isMulticastAddress())
- return false;
-
- return (ipaddress[1] & 0x0F) == 0x5;
- }
-
- /**
- * Utility routine to check if the multicast address has organization scope
- *
- * @since 1.4
- */
- public boolean isMCOrgLocal()
- {
- if (! isMulticastAddress())
- return false;
-
- return (ipaddress[1] & 0x0F) == 0x8;
- }
-
- /**
- * Returns the raw IP address of this InetAddress object. The result is in
- * network byte order: the highest order byte of the address is i
- * n getAddress()[0]
- */
- public byte[] getAddress()
- {
- return (byte[]) ipaddress.clone();
- }
-
- /**
- * Returns the IP address string in textual presentation
- */
- public String getHostAddress()
- {
- StringBuffer sbuf = new StringBuffer(40);
-
- for (int i = 0; i < 16; i += 2)
- {
- int x = ((ipaddress[i] & 0xFF) << 8) | (ipaddress[i + 1] & 0xFF);
-
- if (i > 0)
- sbuf.append(':');
-
- sbuf.append(Integer.toHexString(x));
- }
-
- return sbuf.toString();
- }
-
- /**
- * Returns a hashcode for this IP address
- */
- public int hashCode()
- {
- return super.hashCode();
- }
-
- /**
- * Compares this object against the specified object
- */
- public boolean equals(Object obj)
- {
- 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);
- }
-
- /**
- * Utility routine to check if the InetAddress is an
- * IPv4 compatible IPv6 address
- *
- * @since 1.4
- */
- public boolean isIPv4CompatibleAddress()
- {
- if (ipaddress[0] != 0x00 || ipaddress[1] != 0x00 || ipaddress[2] != 0x00
- || ipaddress[3] != 0x00 || ipaddress[4] != 0x00
- || ipaddress[5] != 0x00 || ipaddress[6] != 0x00
- || ipaddress[7] != 0x00 || ipaddress[8] != 0x00
- || ipaddress[9] != 0x00 || ipaddress[10] != 0x00
- || ipaddress[11] != 0x00)
- return false;
-
- return true;
- }
-}
diff --git a/libjava/java/net/InetSocketAddress.java b/libjava/java/net/InetSocketAddress.java
deleted file mode 100644
index 30d34e7..0000000
--- a/libjava/java/net/InetSocketAddress.java
+++ /dev/null
@@ -1,221 +0,0 @@
-/* InetSocketAddress.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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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;
-
-
-/**
- * InetSocketAddress instances represent socket addresses
- * in the java.nio package. They encapsulate a InetAddress and
- * a port number.
- *
- * @since 1.4
- */
-public class InetSocketAddress extends SocketAddress
-{
- /**
- * Compatible with JDK 1.4+
- */
- private static final long serialVersionUID = 5076001401234631237L;
-
- /**
- * Name of host.
- */
- private String hostname;
-
- /**
- * Address of host.
- */
- private InetAddress addr;
-
- /**
- * Port of host.
- */
- private int port;
-
- /**
- * Constructs an InetSocketAddress instance.
- *
- * @param addr Address of the socket
- * @param port Port if the socket
- *
- * @exception IllegalArgumentException If the port number is illegel
- */
- public InetSocketAddress(InetAddress addr, int port)
- throws IllegalArgumentException
- {
- if (port < 0 || port > 65535)
- throw new IllegalArgumentException("Bad port number: " + port);
-
- if (addr == null)
- addr = InetAddress.ANY_IF;
-
- this.addr = addr;
- this.port = port;
- this.hostname = addr.getHostName();
- }
-
- /**
- * Constructs an InetSocketAddress instance.
- *
- * @param port Port if the socket
- *
- * @exception IllegalArgumentException If the port number is illegal
- */
- public InetSocketAddress(int port) throws IllegalArgumentException
- {
- this((InetAddress) null, port);
- }
-
- /**
- * Constructs an InetSocketAddress instance.
- *
- * @param hostname The hostname for the socket address
- * @param port The port for the socket address
- *
- * @exception IllegalArgumentException If the port number is illegal
- */
- public InetSocketAddress(String hostname, int port)
- throws IllegalArgumentException
- {
- if (hostname == null)
- throw new IllegalArgumentException("Null host name value");
-
- if (port < 0 || port > 65535)
- throw new IllegalArgumentException("Bad port number: " + port);
-
- this.port = port;
- this.hostname = hostname;
-
- try
- {
- this.addr = InetAddress.getByName(hostname);
- }
- catch (Exception e) // UnknownHostException, SecurityException
- {
- this.addr = null;
- }
- }
-
- /**
- * Test if obj is a <code>InetSocketAddress</code> and
- * has the same address and port
- *
- * @param obj The obj to compare this address with.
- *
- * @return True if obj is equal.
- */
- public final boolean equals(Object obj)
- {
- // InetSocketAddress objects are equal when addr and port are equal.
- // The hostname may differ.
- if (obj instanceof InetSocketAddress)
- {
- InetSocketAddress sa = (InetSocketAddress) obj;
-
- if (addr == null && sa.addr != null)
- return false;
- else if (addr == null && sa.addr == null)
- return hostname.equals(sa.hostname) && sa.port == port;
- else
- return addr.equals(sa.addr) && sa.port == port;
- }
-
- return false;
- }
-
- /**
- * Returns the <code>InetAddress</code> or
- * <code>null</code> if its unresolved
- *
- * @return The IP address of this address.
- */
- public final InetAddress getAddress()
- {
- return addr;
- }
-
- /**
- * Returns <code>hostname</code>
- *
- * @return The hostname of this address.
- */
- public final String getHostName()
- {
- return hostname;
- }
-
- /**
- * Returns the <code>port</code>
- *
- * @return The port of this address.
- */
- public final int getPort()
- {
- return port;
- }
-
- /**
- * Returns the hashcode of the <code>InetSocketAddress</code>
- *
- * @return The hashcode for this address.
- */
- public final int hashCode()
- {
- return port + addr.hashCode();
- }
-
- /**
- * Checks wether the address has been resolved or not
- *
- * @return True if address is unresolved.
- */
- public final boolean isUnresolved()
- {
- return addr == null;
- }
-
- /**
- * Returns the <code>InetSocketAddress</code> as string
- *
- * @return A string represenation of this address.
- */
- public String toString()
- {
- return (addr == null ? hostname : addr.getHostName()) + ":" + port;
- }
-}
diff --git a/libjava/java/net/MalformedURLException.java b/libjava/java/net/MalformedURLException.java
deleted file mode 100644
index 27e2018..0000000
--- a/libjava/java/net/MalformedURLException.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/* MalformedURLException.java -- A URL was not in a valid format
- Copyright (C) 1998, 1999, 2000, 2001, 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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;
-
-
-/**
- * This exception indicates that a URL passed to an object was not in a
- * valid format.
- *
- * @author Aaron M. Renn (arenn@urbanophile.com)
- * @author Warren Levy (warrenl@cygnus.com)
- * @status updated to 1.4
- */
-public class MalformedURLException extends IOException
-{
- /**
- * Compatible with JDK 1.0+.
- */
- private static final long serialVersionUID = -182787522200415866L;
-
- /**
- * Create a new instance without a descriptive error message.
- */
- public MalformedURLException()
- {
- }
-
- /**
- * Create a new instance with a descriptive error message.
- *
- * @param message a message describing the error that occurred
- */
- public MalformedURLException(String message)
- {
- super(message);
- }
-} // class MalformedURLException
diff --git a/libjava/java/net/MulticastSocket.java b/libjava/java/net/MulticastSocket.java
deleted file mode 100644
index 03bdf1e..0000000
--- a/libjava/java/net/MulticastSocket.java
+++ /dev/null
@@ -1,486 +0,0 @@
-/* MulticastSocket.java -- Class for using multicast sockets
- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003
- 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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.util.Enumeration;
-
-
-/**
- * Written using on-line Java Platform 1.2 API Specification, as well
- * as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998).
- * Status: Believed complete and correct.
- */
-/**
- * This class models a multicast UDP socket. A multicast address is a
- * class D internet address (one whose most significant bits are 1110).
- * A multicast group consists of a multicast address and a well known
- * port number. All members of the group listening on that address and
- * port will receive all the broadcasts to the group.
- * <p>
- * Please note that applets are not allowed to use multicast sockets
- *
- * Written using on-line Java Platform 1.2 API Specification, as well
- * as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998).
- * Status: Believed complete and correct.
- *
- * @author Warren Levy (warrenl@cygnus.com)
- * @author Aaron M. Renn (arenn@urbanophile.com) (Documentation comments)
- * @since 1.1
- * @date May 18, 1999.
- */
-public class MulticastSocket extends DatagramSocket
-{
- /**
- * Create a MulticastSocket that this not bound to any address
- *
- * @exception IOException If an error occurs
- * @exception SecurityException If a security manager exists and its
- * checkListen method doesn't allow the operation
- */
- public MulticastSocket() throws IOException
- {
- this(new InetSocketAddress(0));
- }
-
- /**
- * Create a multicast socket bound to the specified port
- *
- * @param port The port to bind to
- *
- * @exception IOException If an error occurs
- * @exception SecurityException If a security manager exists and its
- * checkListen method doesn't allow the operation
- */
- public MulticastSocket(int port) throws IOException
- {
- this(new InetSocketAddress(port));
- }
-
- /**
- * Create a multicast socket bound to the specified SocketAddress.
- *
- * @param address The SocketAddress the multicast socket will be bound to
- *
- * @exception IOException If an error occurs
- * @exception SecurityException If a security manager exists and its
- * checkListen method doesn't allow the operation
- *
- * @since 1.4
- */
- public MulticastSocket(SocketAddress address) throws IOException
- {
- super((SocketAddress) null);
- setReuseAddress(true);
- if (address != null)
- bind(address);
- }
-
- /**
- * Returns the interface being used for multicast packets
- *
- * @return The multicast interface
- *
- * @exception SocketException If an error occurs
- */
- public InetAddress getInterface() throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- return (InetAddress) getImpl().getOption(SocketOptions.IP_MULTICAST_IF);
- }
-
- /**
- * Returns the current value of the "Time to Live" option. This is the
- * number of hops a packet can make before it "expires". This method id
- * deprecated. Use <code>getTimeToLive</code> instead.
- *
- * @return The TTL value
- *
- * @exception IOException If an error occurs
- *
- * @deprecated 1.2 Replaced by getTimeToLive()
- *
- * @see MulticastSocket#getTimeToLive()
- */
- public byte getTTL() throws IOException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- // Use getTTL here rather than getTimeToLive in case we're using an impl
- // other than the default PlainDatagramSocketImpl and it doesn't have
- // getTimeToLive yet.
- return getImpl().getTTL();
- }
-
- /**
- * Returns the current value of the "Time to Live" option. This is the
- * number of hops a packet can make before it "expires".
- *
- * @return The TTL value
- *
- * @exception IOException If an error occurs
- *
- * @since 1.2
- */
- public int getTimeToLive() throws IOException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- return getImpl().getTimeToLive();
- }
-
- /**
- * Sets the interface to use for sending multicast packets.
- *
- * @param addr The new interface to use.
- *
- * @exception SocketException If an error occurs.
- *
- * @since 1.4
- */
- public void setInterface(InetAddress addr) throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- getImpl().setOption(SocketOptions.IP_MULTICAST_IF, addr);
- }
-
- /**
- * 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 (isClosed())
- throw new SocketException("socket is closed");
-
- Enumeration e = netIf.getInetAddresses();
-
- if (! e.hasMoreElements())
- throw new SocketException("no network devices found");
-
- InetAddress address = (InetAddress) e.nextElement();
- getImpl().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(NetworkInterface netIf)
- *
- * @since 1.4
- */
- public NetworkInterface getNetworkInterface() throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- InetAddress address =
- (InetAddress) getImpl().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.
- *
- * Because this option is a hint, applications that want to verify what
- * loopback mode is set to should call #getLoopbackMode
- *
- * @param disable True to disable loopback mode
- *
- * @exception SocketException If an error occurs
- *
- * @since 1.4
- */
- public void setLoopbackMode(boolean disable) throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- getImpl().setOption(SocketOptions.IP_MULTICAST_LOOP,
- Boolean.valueOf(disable));
- }
-
- /**
- * Checks if local loopback mode is enabled
- *
- * @return true if loopback mode is enabled, false otherwise
- *
- * @exception SocketException If an error occurs
- *
- * @since 1.4
- */
- public boolean getLoopbackMode() throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- Object buf = getImpl().getOption(SocketOptions.IP_MULTICAST_LOOP);
-
- if (buf instanceof Boolean)
- return ((Boolean) buf).booleanValue();
-
- throw new SocketException("unexpected type");
- }
-
- /**
- * Sets the "Time to Live" value for a socket. The value must be between
- * 1 and 255.
- *
- * @param ttl The new TTL value
- *
- * @exception IOException If an error occurs
- *
- * @deprecated 1.2 Replaced by <code>setTimeToLive</code>
- *
- * @see MulticastSocket#setTimeToLive(int ttl)
- */
- public void setTTL(byte ttl) throws IOException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- // Use setTTL here rather than setTimeToLive in case we're using an impl
- // other than the default PlainDatagramSocketImpl and it doesn't have
- // setTimeToLive yet.
- getImpl().setTTL(ttl);
- }
-
- /**
- * Sets the "Time to Live" value for a socket. The value must be between
- * 1 and 255.
- *
- * @param ttl The new TTL value
- *
- * @exception IOException If an error occurs
- *
- * @since 1.2
- */
- public void setTimeToLive(int ttl) throws IOException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- if (ttl <= 0 || ttl > 255)
- throw new IllegalArgumentException("Invalid ttl: " + ttl);
-
- getImpl().setTimeToLive(ttl);
- }
-
- /**
- * Joins the specified multicast group.
- *
- * @param mcastaddr The address of the group to join
- *
- * @exception IOException If an error occurs
- * @exception SecurityException If a security manager exists and its
- * checkMulticast method doesn't allow the operation
- */
- public void joinGroup(InetAddress mcastaddr) throws IOException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- if (! mcastaddr.isMulticastAddress())
- throw new IOException("Not a Multicast address");
-
- SecurityManager s = System.getSecurityManager();
- if (s != null)
- s.checkMulticast(mcastaddr);
-
- getImpl().join(mcastaddr);
- }
-
- /**
- * Leaves the specified multicast group
- *
- * @param mcastaddr The address of the group to leave
- *
- * @exception IOException If an error occurs
- * @exception SecurityException If a security manager exists and its
- * checkMulticast method doesn't allow the operation
- */
- public void leaveGroup(InetAddress mcastaddr) throws IOException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- if (! mcastaddr.isMulticastAddress())
- throw new IOException("Not a Multicast address");
-
- SecurityManager s = System.getSecurityManager();
- if (s != null)
- s.checkMulticast(mcastaddr);
-
- getImpl().leave(mcastaddr);
- }
-
- /**
- * Joins the specified mulitcast group on a specified interface.
- *
- * @param mcastaddr The multicast address to join
- * @param netIf The local network interface to receive the multicast
- * messages on or null to defer the interface set by #setInterface or
- * #setNetworkInterface
- *
- * @exception IOException If an error occurs
- * @exception IllegalArgumentException If address type is not supported
- * @exception SecurityException If a security manager exists and its
- * checkMulticast method doesn't allow the operation
- *
- * @see MulticastSocket#setInterface(InetAddress addr)
- * @see MulticastSocket#setNetworkInterface(NetworkInterface netIf)
- *
- * @since 1.4
- */
- public void joinGroup(SocketAddress mcastaddr, NetworkInterface netIf)
- throws IOException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- if (! (mcastaddr instanceof InetSocketAddress))
- throw new IllegalArgumentException("SocketAddress type not supported");
-
- InetSocketAddress tmp = (InetSocketAddress) mcastaddr;
-
- if (! tmp.getAddress().isMulticastAddress())
- throw new IOException("Not a Multicast address");
-
- SecurityManager s = System.getSecurityManager();
- if (s != null)
- s.checkMulticast(tmp.getAddress());
-
- getImpl().joinGroup(mcastaddr, netIf);
- }
-
- /**
- * Leaves the specified mulitcast group on a specified interface.
- *
- * @param mcastaddr The multicast address to leave
- * @param netIf The local networki interface or null to defer to the
- * interface set by setInterface or setNetworkInterface
- *
- * @exception IOException If an error occurs
- * @exception IllegalArgumentException If address type is not supported
- * @exception SecurityException If a security manager exists and its
- * checkMulticast method doesn't allow the operation
- *
- * @see MulticastSocket#setInterface(InetAddress addr)
- * @see MulticastSocket#setNetworkInterface(NetworkInterface netIf)
- *
- * @since 1.4
- */
- public void leaveGroup(SocketAddress mcastaddr, NetworkInterface netIf)
- throws IOException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- InetSocketAddress tmp = (InetSocketAddress) mcastaddr;
-
- if (! tmp.getAddress().isMulticastAddress())
- throw new IOException("Not a Multicast address");
-
- SecurityManager s = System.getSecurityManager();
- if (s != null)
- s.checkMulticast(tmp.getAddress());
-
- getImpl().leaveGroup(mcastaddr, netIf);
- }
-
- /**
- * Sends a packet of data to a multicast address with a TTL that is
- * different from the default TTL on this socket. The default TTL for
- * the socket is not changed.
- *
- * @param packet The packet of data to send
- * @param ttl The TTL for this packet
- *
- * @exception IOException If an error occurs
- * @exception SecurityException If a security manager exists and its
- * checkConnect or checkMulticast method doesn't allow the operation
- *
- * @deprecated
- */
- public synchronized void send(DatagramPacket packet, byte ttl)
- throws IOException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- SecurityManager s = System.getSecurityManager();
- if (s != null)
- {
- InetAddress addr = packet.getAddress();
- if (addr.isMulticastAddress())
- s.checkPermission(new SocketPermission(addr.getHostName()
- + packet.getPort(),
- "accept,connect"));
- else
- s.checkConnect(addr.getHostAddress(), packet.getPort());
- }
-
- int oldttl = getImpl().getTimeToLive();
- getImpl().setTimeToLive(((int) ttl) & 0xFF);
- getImpl().send(packet);
- getImpl().setTimeToLive(oldttl);
- }
-}
diff --git a/libjava/java/net/NetPermission.java b/libjava/java/net/NetPermission.java
deleted file mode 100644
index cabe54e..0000000
--- a/libjava/java/net/NetPermission.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/* NetPermission.java -- A class for basic miscellaneous network permission
- Copyright (C) 1998, 2000, 2003 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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.security.BasicPermission;
-
-
-/**
- * This class is used to model miscellaneous network permissions. It is
- * a subclass of <code>BasicPermission</code>. This means that it models a
- * "boolean" permission. One that you either have or do not have. Thus
- * there is no permitted action list associated with this object.
- *
- * The following permission names are defined for this class:
- *
- * <ul>
- * <li>setDefaultAuthenticator - Grants the ability to install a facility
- * to collect username and password information when requested by a
- * web site or proxy server.</li>
- * <li>requestPasswordAuthentication - Grants the ability to ask the
- * authentication facility for the user's password.</li>
- * <li>specifyStreamHandler - Grants the permission to specify the
- * stream handler class used when loading from a URL.</li>
- * </ul>
- *
- * @author Aaron M. Renn (arenn@urbanophile.com)
- */
-public final class NetPermission extends BasicPermission
-{
- static final long serialVersionUID = -8343910153355041693L;
-
- /**
- * Initializes a new instance of <code>NetPermission</code> with the
- * specified name.
- *
- * @param name The name of this permission.
- */
- public NetPermission(String name)
- {
- super(name);
- }
-
- /**
- * Initializes a new instance of <code>NetPermission</code> with the
- * specified name and perms. Note that the perms field is irrelevant and is
- * ignored. This constructor should never need to be used.
- *
- * @param name The name of this permission
- * @param perms The permitted actions of this permission (ignored)
- */
- public NetPermission(String name, String perms)
- {
- super(name);
- }
-}
diff --git a/libjava/java/net/NetworkInterface.java b/libjava/java/net/NetworkInterface.java
deleted file mode 100644
index eccd2da..0000000
--- a/libjava/java/net/NetworkInterface.java
+++ /dev/null
@@ -1,259 +0,0 @@
-/* NetworkInterface.java --
- Copyright (C) 2002, 2003, 2004, 2005 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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.util.Enumeration;
-import java.util.Vector;
-
-/**
- * This class models a network interface on the host computer. A network
- * interface contains a name (typically associated with a specific
- * hardware adapter) and a list of addresses that are bound to it.
- * For example, an ethernet interface may be named "eth0" and have the
- * address 192.168.1.101 assigned to it.
- *
- * @author Michael Koch (konqueror@gmx.de)
- * @since 1.4
- */
-public final class NetworkInterface
-{
- private String name;
- private Vector inetAddresses;
-
- NetworkInterface(String name, InetAddress address)
- {
- this.name = name;
- this.inetAddresses = new Vector(1, 1);
- this.inetAddresses.add(address);
- }
-
- NetworkInterface(String name, InetAddress[] addresses)
- {
- this.name = name;
- this.inetAddresses = new Vector(addresses.length, 1);
-
- for (int i = 0; i < addresses.length; i++)
- this.inetAddresses.add(addresses[i]);
- }
-
- /**
- * Returns the name of the network interface
- *
- * @return The name of the interface.
- */
- public String getName()
- {
- return name;
- }
-
- /**
- * Returns all available addresses of the network interface
- *
- * If a @see SecurityManager is available all addresses are checked
- * with @see SecurityManager::checkConnect() if they are available.
- * Only <code>InetAddresses</code> are returned where the security manager
- * doesn't throw an exception.
- *
- * @return An enumeration of all addresses.
- */
- public Enumeration getInetAddresses()
- {
- SecurityManager s = System.getSecurityManager();
-
- if (s == null)
- return inetAddresses.elements();
-
- Vector tmpInetAddresses = new Vector(1, 1);
-
- for (Enumeration addresses = inetAddresses.elements();
- addresses.hasMoreElements();)
- {
- InetAddress addr = (InetAddress) addresses.nextElement();
- try
- {
- s.checkConnect(addr.getHostAddress(), 58000);
- tmpInetAddresses.add(addr);
- }
- catch (SecurityException e)
- {
- // Ignore.
- }
- }
-
- return tmpInetAddresses.elements();
- }
-
- /**
- * Returns the display name of the interface
- *
- * @return The display name of the interface
- */
- public String getDisplayName()
- {
- return name;
- }
-
- /**
- * Returns an network interface by name
- *
- * @param name The name of the interface to return
- *
- * @return a <code>NetworkInterface</code> object representing the interface,
- * or null if there is no interface with that name.
- *
- * @exception SocketException If an error occurs
- * @exception NullPointerException If the specified name is null
- */
- public static NetworkInterface getByName(String name)
- throws SocketException
- {
- Vector networkInterfaces = VMNetworkInterface.getInterfaces();
-
- for (Enumeration e = networkInterfaces.elements(); e.hasMoreElements();)
- {
- NetworkInterface tmp = (NetworkInterface) e.nextElement();
-
- if (name.equals(tmp.getName()))
- return tmp;
- }
-
- // No interface with the given name found.
- return null;
- }
-
- /**
- * Return a network interface by its address
- *
- * @param addr The address of the interface to return
- *
- * @return the interface, or <code>null</code> if none found
- *
- * @exception SocketException If an error occurs
- * @exception NullPointerException If the specified addess is null
- */
- public static NetworkInterface getByInetAddress(InetAddress addr)
- throws SocketException
- {
- Vector networkInterfaces = VMNetworkInterface.getInterfaces();
-
- for (Enumeration interfaces = networkInterfaces.elements();
- interfaces.hasMoreElements();)
- {
- NetworkInterface tmp = (NetworkInterface) interfaces.nextElement();
-
- for (Enumeration addresses = tmp.inetAddresses.elements();
- addresses.hasMoreElements();)
- {
- if (addr.equals((InetAddress) addresses.nextElement()))
- return tmp;
- }
- }
-
- throw new SocketException("no network interface is bound to such an IP address");
- }
-
- /**
- * Return an <code>Enumeration</code> of all available network interfaces
- *
- * @return all interfaces
- *
- * @exception SocketException If an error occurs
- */
- public static Enumeration getNetworkInterfaces() throws SocketException
- {
- Vector networkInterfaces = VMNetworkInterface.getInterfaces();
-
- if (networkInterfaces.isEmpty())
- return null;
-
- return networkInterfaces.elements();
- }
-
- /**
- * Checks if the current instance is equal to obj
- *
- * @param obj The object to compare with
- *
- * @return <code>true</code> if equal, <code>false</code> otherwise
- */
- public boolean equals(Object obj)
- {
- if (! (obj instanceof NetworkInterface))
- return false;
-
- NetworkInterface tmp = (NetworkInterface) obj;
-
- return (name.equals(tmp.name) && inetAddresses.equals(tmp.inetAddresses));
- }
-
- /**
- * Returns the hashcode of the current instance
- *
- * @return the hashcode
- */
- public int hashCode()
- {
- // FIXME: hash correctly
- return name.hashCode() + inetAddresses.hashCode();
- }
-
- /**
- * Returns a string representation of the interface
- *
- * @return the string
- */
- public String toString()
- {
- // FIXME: check if this is correct
- String result;
- String separator = System.getProperty("line.separator");
-
- result =
- "name: " + getDisplayName() + " (" + getName() + ") addresses:"
- + separator;
-
- for (Enumeration e = inetAddresses.elements(); e.hasMoreElements();)
- {
- InetAddress address = (InetAddress) e.nextElement();
- result += address.toString() + ";" + separator;
- }
-
- return result;
- }
-}
diff --git a/libjava/java/net/NoRouteToHostException.java b/libjava/java/net/NoRouteToHostException.java
deleted file mode 100644
index 48c3a8e..0000000
--- a/libjava/java/net/NoRouteToHostException.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/* NoRouteToHostException.java -- Cannot connect to a host
- Copyright (C) 1998, 1999, 2000, 2001, 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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;
-
-
-/**
- * This exception indicates that there is no TCP/IP route to the requested
- * host. This is often due to a misconfigured routing table.
- *
- * @author Aaron M. Renn (arenn@urbanophile.com)
- * @author Warren Levy (warrenl@cygnus.com)
- * @since 1.1
- * @status updated to 1.4
- */
-public class NoRouteToHostException extends SocketException
-{
- /**
- * Compatible with JDK 1.1+.
- */
- private static final long serialVersionUID = -1897550894873493790L;
-
- /**
- * Create an instance without a descriptive error message.
- */
- public NoRouteToHostException()
- {
- }
-
- /**
- * Create an instance with a descriptive error message, such as the text
- * from strerror(3).
- *
- * @param message a message describing the error that occurred
- */
- public NoRouteToHostException(String message)
- {
- super(message);
- }
-} // class NoRouteToHostException
diff --git a/libjava/java/net/PasswordAuthentication.java b/libjava/java/net/PasswordAuthentication.java
deleted file mode 100644
index 1d4ec89..0000000
--- a/libjava/java/net/PasswordAuthentication.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/* PasswordAuthentication.java -- Container class for username/password pairs
- Copyright (C) 1998, 2000, 2003 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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;
-
-
-/**
- * This class serves a container for username/password pairs.
- *
- * @author Aaron M. Renn (arenn@urbanophile.com)
- *
- * @since 1.2
- */
-public final class PasswordAuthentication
-{
- /**
- * The username
- */
- private String username;
-
- /**
- * The password
- */
- private char[] password;
-
- /**
- * Creates a new <code>PasswordAuthentication</code> object from the
- * specified username and password.
- *
- * @param username The username for this object
- * @param password The password for this object
- */
- public PasswordAuthentication(String username, char[] password)
- {
- this.username = username;
- this.password = password;
- }
-
- /**
- * Returns the username associated with this object
- *
- * @return The username
- */
- public String getUserName()
- {
- return username;
- }
-
- /**
- * Returns the password associated with this object
- *
- * @return The password
- */
- public char[] getPassword()
- {
- return password;
- }
-}
diff --git a/libjava/java/net/PortUnreachableException.java b/libjava/java/net/PortUnreachableException.java
deleted file mode 100644
index 49a8c9e..0000000
--- a/libjava/java/net/PortUnreachableException.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/* PortUnreachableException.java -- received an ICMP port unreachable datagram
- 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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;
-
-
-/**
- * This exception signals that an ICMP port unreachable datagram has been
- * received.
- *
- * @author Eric Blake (ebb9@email.byu.edu)
- * @since 1.4
- * @status updated to 1.4
- */
-public class PortUnreachableException extends SocketException
-{
- /**
- * Compatible with JDK 1.0+.
- */
- private static final long serialVersionUID = 8462541992376507323L;
-
- /**
- * Create a new instance without a descriptive error message.
- */
- public PortUnreachableException()
- {
- }
-
- /**
- * Create a new instance with a descriptive error message.
- *
- * @param message a message describing the error that occurred
- */
- public PortUnreachableException(String message)
- {
- super(message);
- }
-} // class PortUnreachableException
diff --git a/libjava/java/net/ProtocolException.java b/libjava/java/net/ProtocolException.java
deleted file mode 100644
index 27718a9..0000000
--- a/libjava/java/net/ProtocolException.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/* ProtocolException.java -- a low level protocol error occurred
- Copyright (C) 1998, 1999, 2000, 2001, 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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;
-
-
-/**
- * This exception indicates that some sort of low level protocol
- * exception occurred. Look in the descriptive message (if any) for
- * details on what went wrong.
- *
- * @author Aaron M. Renn (arenn@urbanophile.com)
- * @author Warren Levy (warrenl@cygnus.com)
- * @status updated to 1.4
- */
-public class ProtocolException extends IOException
-{
- /**
- * Compatible with JDK 1.0+.
- */
- private static final long serialVersionUID = -6098449442062388080L;
-
- /**
- * Create a new instance without a descriptive error message.
- */
- public ProtocolException()
- {
- }
-
- /**
- * Create a new instance with a descriptive error message.
- *
- * @param message a message describing the error that occurred
- */
- public ProtocolException(String message)
- {
- super(message);
- }
-} // class ProtocolException
diff --git a/libjava/java/net/Socket.java b/libjava/java/net/Socket.java
deleted file mode 100644
index 9432a6b..0000000
--- a/libjava/java/net/Socket.java
+++ /dev/null
@@ -1,1284 +0,0 @@
-/* Socket.java -- Client socket implementation
- Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004
- 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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 gnu.java.net.PlainSocketImpl;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.channels.IllegalBlockingModeException;
-import java.nio.channels.SocketChannel;
-
-
-/* Written using on-line Java Platform 1.2 API Specification.
- * Status: I believe all methods are implemented.
- */
-
-/**
- * This class models a client site socket. A socket is a TCP/IP endpoint
- * for network communications conceptually similar to a file handle.
- * <p>
- * This class does not actually do any work. Instead, it redirects all of
- * its calls to a socket implementation object which implements the
- * <code>SocketImpl</code> interface. The implementation class is
- * instantiated by factory class that implements the
- * <code>SocketImplFactory interface</code>. A default
- * factory is provided, however the factory may be set by a call to
- * the <code>setSocketImplFactory</code> method. Note that this may only be
- * done once per virtual machine. If a subsequent attempt is made to set the
- * factory, a <code>SocketException</code> will be thrown.
- *
- * @author Aaron M. Renn (arenn@urbanophile.com)
- * @author Per Bothner (bothner@cygnus.com)
- */
-public class Socket
-{
- /**
- * This is the user SocketImplFactory for this class. If this variable is
- * null, a default factory is used.
- */
- static SocketImplFactory factory;
-
- /**
- * The implementation object to which calls are redirected
- */
- // package-private because ServerSocket.implAccept() needs to access it.
- SocketImpl impl;
-
- /**
- * True if socket implementation was created by calling their
- * create() method.
- */
- // package-private because ServerSocket.implAccept() needs to access it.
- boolean implCreated;
-
- /**
- * True if the socket is bound.
- */
- private boolean bound;
-
- /**
- * True if input is shutdown.
- */
- private boolean inputShutdown;
-
- /**
- * True if output is shutdown.
- */
- private boolean outputShutdown;
-
- /**
- * Initializes a new instance of <code>Socket</code> object without
- * connecting to a remote host. This useful for subclasses of socket that
- * might want this behavior.
- *
- * @specnote This constructor is public since JDK 1.4
- * @since 1.1
- */
- public Socket()
- {
- if (factory != null)
- impl = factory.createSocketImpl();
- else
- impl = new PlainSocketImpl();
- }
-
- /**
- * Initializes a new instance of <code>Socket</code> object without
- * connecting to a remote host. This is useful for subclasses of socket
- * that might want this behavior.
- * <p>
- * Additionally, this socket will be created using the supplied
- * implementation class instead the default class or one returned by a
- * factory. If this value is <code>null</code>, the default Socket
- * implementation is used.
- *
- * @param impl The <code>SocketImpl</code> to use for this
- * <code>Socket</code>
- *
- * @exception SocketException If an error occurs
- *
- * @since 1.1
- */
- protected Socket(SocketImpl impl) throws SocketException
- {
- if (impl == null)
- this.impl = new PlainSocketImpl();
- else
- this.impl = impl;
- }
-
- /**
- * Initializes a new instance of <code>Socket</code> and connects to the
- * hostname and port specified as arguments.
- *
- * @param host The name of the host to connect to
- * @param port The port number to connect to
- *
- * @exception UnknownHostException If the hostname cannot be resolved to a
- * network address.
- * @exception IOException If an error occurs
- * @exception SecurityException If a security manager exists and its
- * checkConnect method doesn't allow the operation
- */
- public Socket(String host, int port)
- throws UnknownHostException, IOException
- {
- this(InetAddress.getByName(host), port, null, 0, true);
- }
-
- /**
- * Initializes a new instance of <code>Socket</code> and connects to the
- * address and port number specified as arguments.
- *
- * @param address The address to connect to
- * @param port The port number to connect to
- *
- * @exception IOException If an error occurs
- * @exception SecurityException If a security manager exists and its
- * checkConnect method doesn't allow the operation
- */
- public Socket(InetAddress address, int port) throws IOException
- {
- this(address, port, null, 0, true);
- }
-
- /**
- * Initializes a new instance of <code>Socket</code> that connects to the
- * named host on the specified port and binds to the specified local address
- * and port.
- *
- * @param host The name of the remote host to connect to.
- * @param port The remote port to connect to.
- * @param localAddr The local address to bind to.
- * @param localPort The local port to bind to.
- *
- * @exception SecurityException If the <code>SecurityManager</code>
- * exists and does not allow a connection to the specified host/port or
- * binding to the specified local host/port.
- * @exception IOException If a connection error occurs.
- *
- * @since 1.1
- */
- public Socket(String host, int port, InetAddress localAddr, int localPort)
- throws IOException
- {
- this(InetAddress.getByName(host), port, localAddr, localPort, true);
- }
-
- /**
- * Initializes a new instance of <code>Socket</code> and connects to the
- * address and port number specified as arguments, plus binds to the
- * specified local address and port.
- *
- * @param address The remote address to connect to
- * @param port The remote port to connect to
- * @param localAddr The local address to connect to
- * @param localPort The local port to connect to
- *
- * @exception IOException If an error occurs
- * @exception SecurityException If a security manager exists and its
- * checkConnect method doesn't allow the operation
- *
- * @since 1.1
- */
- public Socket(InetAddress address, int port, InetAddress localAddr,
- int localPort) throws IOException
- {
- this(address, port, localAddr, localPort, true);
- }
-
- /**
- * Initializes a new instance of <code>Socket</code> and connects to the
- * hostname and port specified as arguments. If the stream argument is set
- * to <code>true</code>, then a stream socket is created. If it is
- * <code>false</code>, a datagram socket is created.
- *
- * @param host The name of the host to connect to
- * @param port The port to connect to
- * @param stream <code>true</code> for a stream socket, <code>false</code>
- * for a datagram socket
- *
- * @exception IOException If an error occurs
- * @exception SecurityException If a security manager exists and its
- * checkConnect method doesn't allow the operation
- *
- * @deprecated Use the <code>DatagramSocket</code> class to create
- * datagram oriented sockets.
- */
- public Socket(String host, int port, boolean stream)
- throws IOException
- {
- this(InetAddress.getByName(host), port, null, 0, stream);
- }
-
- /**
- * Initializes a new instance of <code>Socket</code> and connects to the
- * address and port number specified as arguments. If the stream param is
- * <code>true</code>, a stream socket will be created, otherwise a datagram
- * socket is created.
- *
- * @param host The address to connect to
- * @param port The port number to connect to
- * @param stream <code>true</code> to create a stream socket,
- * <code>false</code> to create a datagram socket.
- *
- * @exception IOException If an error occurs
- * @exception SecurityException If a security manager exists and its
- * checkConnect method doesn't allow the operation
- *
- * @deprecated Use the <code>DatagramSocket</code> class to create
- * datagram oriented sockets.
- */
- public Socket(InetAddress host, int port, boolean stream)
- throws IOException
- {
- this(host, port, null, 0, stream);
- }
-
- /**
- * This constructor is where the real work takes place. Connect to the
- * specified address and port. Use default local values if not specified,
- * otherwise use the local host and port passed in. Create as stream or
- * datagram based on "stream" argument.
- * <p>
- *
- * @param raddr The remote address to connect to
- * @param rport The remote port to connect to
- * @param laddr The local address to connect to
- * @param lport The local port to connect to
- * @param stream true for a stream socket, false for a datagram socket
- *
- * @exception IOException If an error occurs
- * @exception SecurityException If a security manager exists and its
- * checkConnect method doesn't allow the operation
- */
- private Socket(InetAddress raddr, int rport, InetAddress laddr, int lport,
- boolean stream) throws IOException
- {
- this();
-
- SecurityManager sm = System.getSecurityManager();
- if (sm != null)
- sm.checkConnect(raddr.getHostName(), rport);
-
- // bind socket
- SocketAddress bindaddr =
- laddr == null ? null : new InetSocketAddress(laddr, lport);
- bind(bindaddr);
-
- // connect socket
- connect(new InetSocketAddress(raddr, rport));
-
- // FIXME: JCL p. 1586 says if localPort is unspecified, bind to any port,
- // i.e. '0' and if localAddr is unspecified, use getLocalAddress() as
- // that default. JDK 1.2 doc infers not to do a bind.
- }
-
- private SocketImpl getImpl() throws SocketException
- {
- try
- {
- if (! implCreated)
- {
- impl.create(true);
- implCreated = true;
- }
- }
- catch (IOException e)
- {
- throw new SocketException(e.getMessage());
- }
-
- return impl;
- }
-
- /**
- * Binds the socket to the givent local address/port
- *
- * @param bindpoint The address/port to bind to
- *
- * @exception IOException If an error occurs
- * @exception SecurityException If a security manager exists and its
- * checkConnect method doesn't allow the operation
- * @exception IllegalArgumentException If the address type is not supported
- *
- * @since 1.4
- */
- public void bind(SocketAddress bindpoint) throws IOException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- // XXX: JDK 1.4.1 API documentation says that if bindpoint is null the
- // socket will be bound to an ephemeral port and a valid local address.
- if (bindpoint == null)
- bindpoint = new InetSocketAddress(InetAddress.ANY_IF, 0);
-
- if (! (bindpoint instanceof InetSocketAddress))
- throw new IllegalArgumentException();
-
- InetSocketAddress tmp = (InetSocketAddress) bindpoint;
-
- // bind to address/port
- try
- {
- getImpl().bind(tmp.getAddress(), tmp.getPort());
- bound = true;
- }
- catch (IOException exception)
- {
- close();
- throw exception;
- }
- catch (RuntimeException exception)
- {
- close();
- throw exception;
- }
- catch (Error error)
- {
- close();
- throw error;
- }
- }
-
- /**
- * Connects the socket with a remote address.
- *
- * @param endpoint The address to connect to
- *
- * @exception IOException If an error occurs
- * @exception IllegalArgumentException If the addess type is not supported
- * @exception IllegalBlockingModeException If this socket has an associated
- * channel, and the channel is in non-blocking mode
- *
- * @since 1.4
- */
- public void connect(SocketAddress endpoint) throws IOException
- {
- connect(endpoint, 0);
- }
-
- /**
- * Connects the socket with a remote address. A timeout of zero is
- * interpreted as an infinite timeout. The connection will then block
- * until established or an error occurs.
- *
- * @param endpoint The address to connect to
- * @param timeout The length of the timeout in milliseconds, or
- * 0 to indicate no timeout.
- *
- * @exception IOException If an error occurs
- * @exception IllegalArgumentException If the address type is not supported
- * @exception IllegalBlockingModeException If this socket has an associated
- * channel, and the channel is in non-blocking mode
- * @exception SocketTimeoutException If the timeout is reached
- *
- * @since 1.4
- */
- public void connect(SocketAddress endpoint, int timeout)
- throws IOException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- if (! (endpoint instanceof InetSocketAddress))
- throw new IllegalArgumentException("unsupported address type");
-
- // The Sun spec says that if we have an associated channel and
- // it is in non-blocking mode, we throw an IllegalBlockingModeException.
- // However, in our implementation if the channel itself initiated this
- // operation, then we must honor it regardless of its blocking mode.
- if (getChannel() != null && ! getChannel().isBlocking()
- && ! ((PlainSocketImpl) getImpl()).isInChannelOperation())
- throw new IllegalBlockingModeException();
-
- if (! isBound())
- bind(null);
-
- try
- {
- getImpl().connect(endpoint, timeout);
- }
- catch (IOException exception)
- {
- close();
- throw exception;
- }
- catch (RuntimeException exception)
- {
- close();
- throw exception;
- }
- catch (Error error)
- {
- close();
- throw error;
- }
- }
-
- /**
- * Returns the address of the remote end of the socket. If this socket
- * is not connected, then <code>null</code> is returned.
- *
- * @return The remote address this socket is connected to
- */
- public InetAddress getInetAddress()
- {
- if (! isConnected())
- return null;
-
- try
- {
- return getImpl().getInetAddress();
- }
- catch (SocketException e)
- {
- // This cannot happen as we are connected.
- }
-
- return null;
- }
-
- /**
- * Returns the local address to which this socket is bound. If this socket
- * is not connected, then a wildcard address, for which
- * @see isAnyLocalAddress() is <code>true</code>, is returned.
- *
- * @return The local address
- *
- * @since 1.1
- */
- public InetAddress getLocalAddress()
- {
- if (! isBound())
- return InetAddress.ANY_IF;
-
- InetAddress addr = null;
-
- try
- {
- addr = (InetAddress) getImpl().getOption(SocketOptions.SO_BINDADDR);
- }
- catch (SocketException e)
- {
- // (hopefully) shouldn't happen
- // throw new java.lang.InternalError
- // ("Error in PlainSocketImpl.getOption");
- return null;
- }
-
- // FIXME: According to libgcj, checkConnect() is supposed to be called
- // before performing this operation. Problems: 1) We don't have the
- // addr until after we do it, so we do a post check. 2). The docs I
- // see don't require this in the Socket case, only DatagramSocket, but
- // we'll assume they mean both.
- SecurityManager sm = System.getSecurityManager();
- if (sm != null)
- sm.checkConnect(addr.getHostName(), getLocalPort());
-
- return addr;
- }
-
- /**
- * Returns the port number of the remote end of the socket connection. If
- * this socket is not connected, then 0 is returned.
- *
- * @return The remote port this socket is connected to
- */
- public int getPort()
- {
- if (! isConnected())
- return 0;
-
- try
- {
- return getImpl().getPort();
- }
- catch (SocketException e)
- {
- // This cannot happen as we are connected.
- }
-
- return 0;
- }
-
- /**
- * Returns the local port number to which this socket is bound. If this
- * socket is not connected, then -1 is returned.
- *
- * @return The local port
- */
- public int getLocalPort()
- {
- if (! isBound())
- return -1;
-
- try
- {
- if (getImpl() != null)
- return getImpl().getLocalPort();
- }
- catch (SocketException e)
- {
- // This cannot happen as we are bound.
- }
-
- return -1;
- }
-
- /**
- * Returns local socket address.
- *
- * @return the local socket address, null if not bound
- *
- * @since 1.4
- */
- public SocketAddress getLocalSocketAddress()
- {
- if (! isBound())
- return null;
-
- InetAddress addr = getLocalAddress();
-
- try
- {
- return new InetSocketAddress(addr, getImpl().getLocalPort());
- }
- catch (SocketException e)
- {
- // This cannot happen as we are bound.
- return null;
- }
- }
-
- /**
- * Returns the remote socket address.
- *
- * @return the remote socket address, null of not connected
- *
- * @since 1.4
- */
- public SocketAddress getRemoteSocketAddress()
- {
- if (! isConnected())
- return null;
-
- try
- {
- return new InetSocketAddress(getImpl().getInetAddress(),
- getImpl().getPort());
- }
- catch (SocketException e)
- {
- // This cannot happen as we are connected.
- return null;
- }
- }
-
- /**
- * Returns an InputStream for reading from this socket.
- *
- * @return The InputStream object
- *
- * @exception IOException If an error occurs or Socket is not connected
- */
- public InputStream getInputStream() throws IOException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- if (! isConnected())
- throw new IOException("not connected");
-
- return getImpl().getInputStream();
- }
-
- /**
- * Returns an OutputStream for writing to this socket.
- *
- * @return The OutputStream object
- *
- * @exception IOException If an error occurs or Socket is not connected
- */
- public OutputStream getOutputStream() throws IOException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- if (! isConnected())
- throw new IOException("not connected");
-
- return getImpl().getOutputStream();
- }
-
- /**
- * Sets the TCP_NODELAY option on the socket.
- *
- * @param on true to enable, false to disable
- *
- * @exception SocketException If an error occurs or Socket is not connected
- *
- * @since 1.1
- */
- public void setTcpNoDelay(boolean on) throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- getImpl().setOption(SocketOptions.TCP_NODELAY, Boolean.valueOf(on));
- }
-
- /**
- * Tests whether or not the TCP_NODELAY option is set on the socket.
- * Returns true if enabled, false if disabled. When on it disables the
- * Nagle algorithm which means that packets are always send immediatly and
- * never merged together to reduce network trafic.
- *
- * @return Whether or not TCP_NODELAY is set
- *
- * @exception SocketException If an error occurs or Socket not connected
- *
- * @since 1.1
- */
- public boolean getTcpNoDelay() throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- Object on = getImpl().getOption(SocketOptions.TCP_NODELAY);
-
- if (on instanceof Boolean)
- return (((Boolean) on).booleanValue());
- else
- throw new SocketException("Internal Error");
- }
-
- /**
- * Sets the value of the SO_LINGER option on the socket. If the
- * SO_LINGER option is set on a socket and there is still data waiting to
- * be sent when the socket is closed, then the close operation will block
- * until either that data is delivered or until the timeout period
- * expires. The linger interval is specified in hundreths of a second
- * (platform specific?)
- *
- * @param on true to enable SO_LINGER, false to disable
- * @param linger The SO_LINGER timeout in hundreths of a second or -1 if
- * SO_LINGER not set.
- *
- * @exception SocketException If an error occurs or Socket not connected
- * @exception IllegalArgumentException If linger is negative
- *
- * @since 1.1
- */
- public void setSoLinger(boolean on, int linger) throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- if (on)
- {
- if (linger < 0)
- throw new IllegalArgumentException("SO_LINGER must be >= 0");
-
- if (linger > 65535)
- linger = 65535;
-
- getImpl().setOption(SocketOptions.SO_LINGER, new Integer(linger));
- }
- else
- getImpl().setOption(SocketOptions.SO_LINGER, Boolean.valueOf(false));
- }
-
- /**
- * Returns the value of the SO_LINGER option on the socket. If the
- * SO_LINGER option is set on a socket and there is still data waiting to
- * be sent when the socket is closed, then the close operation will block
- * until either that data is delivered or until the timeout period
- * expires. This method either returns the timeouts (in hundredths of
- * of a second (platform specific?)) if SO_LINGER is set, or -1 if
- * SO_LINGER is not set.
- *
- * @return The SO_LINGER timeout in hundreths of a second or -1
- * if SO_LINGER not set
- *
- * @exception SocketException If an error occurs or Socket is not connected
- *
- * @since 1.1
- */
- public int getSoLinger() throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- Object linger = getImpl().getOption(SocketOptions.SO_LINGER);
-
- if (linger instanceof Integer)
- return (((Integer) linger).intValue());
- else
- return -1;
- }
-
- /**
- * Sends urgent data through the socket
- *
- * @param data The data to send.
- * Only the lowest eight bits of data are sent
- *
- * @exception IOException If an error occurs
- *
- * @since 1.4
- */
- public void sendUrgentData(int data) throws IOException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- getImpl().sendUrgentData(data);
- }
-
- /**
- * Enables/disables the SO_OOBINLINE option
- *
- * @param on True if SO_OOBLINE should be enabled
- *
- * @exception SocketException If an error occurs
- *
- * @since 1.4
- */
- public void setOOBInline(boolean on) throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- getImpl().setOption(SocketOptions.SO_OOBINLINE, Boolean.valueOf(on));
- }
-
- /**
- * Returns the current setting of the SO_OOBINLINE option for this socket
- *
- * @return True if SO_OOBINLINE is set, false otherwise.
- *
- * @exception SocketException If an error occurs
- *
- * @since 1.4
- */
- public boolean getOOBInline() throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- Object buf = getImpl().getOption(SocketOptions.SO_OOBINLINE);
-
- if (buf instanceof Boolean)
- return (((Boolean) buf).booleanValue());
- else
- throw new SocketException("Internal Error: Unexpected type");
- }
-
- /**
- * Sets the value of the SO_TIMEOUT option on the socket. If this value
- * is set, and an read/write is performed that does not complete within
- * the timeout period, a short count is returned (or an EWOULDBLOCK signal
- * would be sent in Unix if no data had been read). A value of 0 for
- * this option implies that there is no timeout (ie, operations will
- * block forever). On systems that have separate read and write timeout
- * values, this method returns the read timeout. This
- * value is in milliseconds.
- *
- * @param timeout The length of the timeout in milliseconds, or
- * 0 to indicate no timeout.
- *
- * @exception SocketException If an error occurs or Socket not connected
- *
- * @since 1.1
- */
- public synchronized void setSoTimeout(int timeout) throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- if (timeout < 0)
- throw new IllegalArgumentException("SO_TIMEOUT value must be >= 0");
-
- getImpl().setOption(SocketOptions.SO_TIMEOUT, new Integer(timeout));
- }
-
- /**
- * Returns the value of the SO_TIMEOUT option on the socket. If this value
- * is set, and an read/write is performed that does not complete within
- * the timeout period, a short count is returned (or an EWOULDBLOCK signal
- * would be sent in Unix if no data had been read). A value of 0 for
- * this option implies that there is no timeout (ie, operations will
- * block forever). On systems that have separate read and write timeout
- * values, this method returns the read timeout. This
- * value is in thousandths of a second (implementation specific?).
- *
- * @return The length of the timeout in thousandth's of a second or 0
- * if not set
- *
- * @exception SocketException If an error occurs or Socket not connected
- *
- * @since 1.1
- */
- public synchronized int getSoTimeout() throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- Object timeout = getImpl().getOption(SocketOptions.SO_TIMEOUT);
- if (timeout instanceof Integer)
- return (((Integer) timeout).intValue());
- else
- return 0;
- }
-
- /**
- * This method sets the value for the system level socket option
- * SO_SNDBUF to the specified value. Note that valid values for this
- * option are specific to a given operating system.
- *
- * @param size The new send buffer size.
- *
- * @exception SocketException If an error occurs or Socket not connected
- * @exception IllegalArgumentException If size is 0 or negative
- *
- * @since 1.2
- */
- public void setSendBufferSize(int size) throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- if (size <= 0)
- throw new IllegalArgumentException("SO_SNDBUF value must be > 0");
-
- getImpl().setOption(SocketOptions.SO_SNDBUF, new Integer(size));
- }
-
- /**
- * This method returns the value of the system level socket option
- * SO_SNDBUF, which is used by the operating system to tune buffer
- * sizes for data transfers.
- *
- * @return The send buffer size.
- *
- * @exception SocketException If an error occurs or socket not connected
- *
- * @since 1.2
- */
- public int getSendBufferSize() throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- Object buf = getImpl().getOption(SocketOptions.SO_SNDBUF);
-
- if (buf instanceof Integer)
- return (((Integer) buf).intValue());
- else
- throw new SocketException("Internal Error: Unexpected type");
- }
-
- /**
- * This method sets the value for the system level socket option
- * SO_RCVBUF to the specified value. Note that valid values for this
- * option are specific to a given operating system.
- *
- * @param size The new receive buffer size.
- *
- * @exception SocketException If an error occurs or Socket is not connected
- * @exception IllegalArgumentException If size is 0 or negative
- *
- * @since 1.2
- */
- public void setReceiveBufferSize(int size) throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- if (size <= 0)
- throw new IllegalArgumentException("SO_RCVBUF value must be > 0");
-
- getImpl().setOption(SocketOptions.SO_RCVBUF, new Integer(size));
- }
-
- /**
- * This method returns the value of the system level socket option
- * SO_RCVBUF, which is used by the operating system to tune buffer
- * sizes for data transfers.
- *
- * @return The receive buffer size.
- *
- * @exception SocketException If an error occurs or Socket is not connected
- *
- * @since 1.2
- */
- public int getReceiveBufferSize() throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- Object buf = getImpl().getOption(SocketOptions.SO_RCVBUF);
-
- if (buf instanceof Integer)
- return (((Integer) buf).intValue());
- else
- throw new SocketException("Internal Error: Unexpected type");
- }
-
- /**
- * This method sets the value for the socket level socket option
- * SO_KEEPALIVE.
- *
- * @param on True if SO_KEEPALIVE should be enabled
- *
- * @exception SocketException If an error occurs or Socket is not connected
- *
- * @since 1.3
- */
- public void setKeepAlive(boolean on) throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- getImpl().setOption(SocketOptions.SO_KEEPALIVE, Boolean.valueOf(on));
- }
-
- /**
- * This method returns the value of the socket level socket option
- * SO_KEEPALIVE.
- *
- * @return The setting
- *
- * @exception SocketException If an error occurs or Socket is not connected
- *
- * @since 1.3
- */
- public boolean getKeepAlive() throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- Object buf = getImpl().getOption(SocketOptions.SO_KEEPALIVE);
-
- if (buf instanceof Boolean)
- return (((Boolean) buf).booleanValue());
- else
- throw new SocketException("Internal Error: Unexpected type");
- }
-
- /**
- * Closes the socket.
- *
- * @exception IOException If an error occurs
- */
- public synchronized void close() throws IOException
- {
- if (isClosed())
- return;
-
- getImpl().close();
- impl = null;
- bound = false;
-
- if (getChannel() != null)
- getChannel().close();
- }
-
- /**
- * Converts this <code>Socket</code> to a <code>String</code>.
- *
- * @return The <code>String</code> representation of this <code>Socket</code>
- */
- public String toString()
- {
- try
- {
- if (isConnected())
- return ("Socket[addr=" + getImpl().getInetAddress() + ",port="
- + getImpl().getPort() + ",localport="
- + getImpl().getLocalPort() + "]");
- }
- catch (SocketException e)
- {
- // This cannot happen as we are connected.
- }
-
- return "Socket[unconnected]";
- }
-
- /**
- * Sets the <code>SocketImplFactory</code>. This may be done only once per
- * virtual machine. Subsequent attempts will generate a
- * <code>SocketException</code>. Note that a <code>SecurityManager</code>
- * check is made prior to setting the factory. If
- * insufficient privileges exist to set the factory, then an
- * <code>IOException</code> will be thrown.
- *
- * @param fac the factory to set
- *
- * @exception SecurityException If the <code>SecurityManager</code> does
- * not allow this operation.
- * @exception SocketException If the SocketImplFactory is already defined
- * @exception IOException If any other error occurs
- */
- public static synchronized void setSocketImplFactory(SocketImplFactory fac)
- throws IOException
- {
- // See if already set
- if (factory != null)
- throw new SocketException("SocketImplFactory already defined");
-
- // Check permissions
- SecurityManager sm = System.getSecurityManager();
- if (sm != null)
- sm.checkSetFactory();
-
- if (fac == null)
- throw new SocketException("SocketImplFactory cannot be null");
-
- factory = fac;
- }
-
- /**
- * Closes the input side of the socket stream.
- *
- * @exception IOException If an error occurs.
- *
- * @since 1.3
- */
- public void shutdownInput() throws IOException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- getImpl().shutdownInput();
- inputShutdown = true;
- }
-
- /**
- * Closes the output side of the socket stream.
- *
- * @exception IOException If an error occurs.
- *
- * @since 1.3
- */
- public void shutdownOutput() throws IOException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- getImpl().shutdownOutput();
- outputShutdown = true;
- }
-
- /**
- * Returns the socket channel associated with this socket.
- *
- * @return the associated socket channel,
- * null if no associated channel exists
- *
- * @since 1.4
- */
- public SocketChannel getChannel()
- {
- return null;
- }
-
- /**
- * Checks if the SO_REUSEADDR option is enabled
- *
- * @return True if SO_REUSEADDR is set, false otherwise.
- *
- * @exception SocketException If an error occurs
- *
- * @since 1.4
- */
- public boolean getReuseAddress() throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- Object reuseaddr = getImpl().getOption(SocketOptions.SO_REUSEADDR);
-
- if (! (reuseaddr instanceof Boolean))
- throw new SocketException("Internal Error");
-
- return ((Boolean) reuseaddr).booleanValue();
- }
-
- /**
- * Enables/Disables the SO_REUSEADDR option
- *
- * @param reuseAddress true if SO_REUSEADDR should be enabled,
- * false otherwise
- *
- * @exception SocketException If an error occurs
- *
- * @since 1.4
- */
- public void setReuseAddress(boolean reuseAddress) throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- getImpl().setOption(SocketOptions.SO_REUSEADDR,
- Boolean.valueOf(reuseAddress));
- }
-
- /**
- * Returns the current traffic class
- *
- * @return The current traffic class.
- *
- * @exception SocketException If an error occurs
- *
- * @see Socket#setTrafficClass(int tc)
- *
- * @since 1.4
- */
- public int getTrafficClass() throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- Object obj = getImpl().getOption(SocketOptions.IP_TOS);
-
- if (obj instanceof Integer)
- return ((Integer) obj).intValue();
- else
- throw new SocketException("Unexpected type");
- }
-
- /**
- * Sets the traffic class value
- *
- * @param tc The traffic class
- *
- * @exception SocketException If an error occurs
- * @exception IllegalArgumentException If tc value is illegal
- *
- * @see Socket#getTrafficClass()
- *
- * @since 1.4
- */
- public void setTrafficClass(int tc) throws SocketException
- {
- if (isClosed())
- throw new SocketException("socket is closed");
-
- if (tc < 0 || tc > 255)
- throw new IllegalArgumentException();
-
- getImpl().setOption(SocketOptions.IP_TOS, new Integer(tc));
- }
-
- /**
- * Checks if the socket is connected
- *
- * @return True if socket is connected, false otherwise.
- *
- * @since 1.4
- */
- public boolean isConnected()
- {
- try
- {
- if (getImpl() == null)
- return false;
-
- return getImpl().getInetAddress() != null;
- }
- catch (SocketException e)
- {
- return false;
- }
- }
-
- /**
- * Checks if the socket is already bound.
- *
- * @return True if socket is bound, false otherwise.
- *
- * @since 1.4
- */
- public boolean isBound()
- {
- return bound;
- }
-
- /**
- * Checks if the socket is closed.
- *
- * @return True if socket is closed, false otherwise.
- *
- * @since 1.4
- */
- public boolean isClosed()
- {
- return impl == null;
- }
-
- /**
- * Checks if the socket's input stream is shutdown
- *
- * @return True if input is shut down.
- *
- * @since 1.4
- */
- public boolean isInputShutdown()
- {
- return inputShutdown;
- }
-
- /**
- * Checks if the socket's output stream is shutdown
- *
- * @return True if output is shut down.
- *
- * @since 1.4
- */
- public boolean isOutputShutdown()
- {
- return outputShutdown;
- }
-}
diff --git a/libjava/java/net/SocketAddress.java b/libjava/java/net/SocketAddress.java
deleted file mode 100644
index 48ab010..0000000
--- a/libjava/java/net/SocketAddress.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/* SocketAddress.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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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.Serializable;
-
-
-/**
- * Abstract base class for InetSocketAddress.
- * InetSocketAddress is to my knowledge the only derived
- * class. [Ronald]
- *
- * @since 1.4
- */
-public abstract class SocketAddress implements Serializable
-{
- /**
- * Compatible with JDK 1.4+
- */
- static final long serialVersionUID = 5215720748342549866L;
-
- /**
- * Initializes the socket address.
- */
- public SocketAddress()
- {
- }
-}
diff --git a/libjava/java/net/SocketException.java b/libjava/java/net/SocketException.java
deleted file mode 100644
index 37b2f6f..0000000
--- a/libjava/java/net/SocketException.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/* SocketException.java -- An exception occurred while performing a socket op
- Copyright (C) 1998, 1999, 2001, 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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;
-
-
-/**
- * This exception indicates that a generic error occurred related to an
- * operation on a socket. Check the descriptive message (if any) for
- * details on the nature of this error
- *
- * @author Aaron M. Renn (arenn@urbanophile.com)
- * @author Per Bothner
- * @status updated to 1.4
- */
-public class SocketException extends IOException
-{
- /**
- * Compatible with JDK 1.0+.
- */
- private static final long serialVersionUID = -5935874303556886934L;
-
- /**
- * Create a new instance without a descriptive error message.
- */
- public SocketException()
- {
- }
-
- /**
- * Create a new instance with a descriptive error message.
- *
- * @param message a message describing the error that occurred
- */
- public SocketException(String message)
- {
- super(message);
- }
-} // class SocketException
diff --git a/libjava/java/net/SocketImpl.java b/libjava/java/net/SocketImpl.java
deleted file mode 100644
index 77f470b..0000000
--- a/libjava/java/net/SocketImpl.java
+++ /dev/null
@@ -1,321 +0,0 @@
-/* SocketImpl.java -- Abstract socket implementation class
- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003
- 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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.FileDescriptor;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-
-/* Written using on-line Java Platform 1.2 API Specification.
- * Believed complete and correct.
- */
-
-/**
- * This abstract class serves as the parent class for socket implementations.
- * The implementation class serves an intermediary to native routines that
- * perform system specific socket operations.
- * <p>
- * A default implementation is provided by the system, but this can be
- * changed via installing a <code>SocketImplFactory</code> (through a call
- * to the static method <code>Socket.setSocketImplFactory</code>). A
- * subclass of <code>Socket</code> can also pass in a <code>SocketImpl</code>
- * to the <code>Socket(SocketImpl)</code> constructor to use an
- * implementation different from the system default without installing
- * a factory.
- *
- * @author Aaron M. Renn (arenn@urbanophile.com)
- * @author Per Bothner (bothner@cygnus.com)
- */
-public abstract class SocketImpl implements SocketOptions
-{
- /**
- * The address of the remote end of the socket connection
- */
- protected InetAddress address;
-
- /**
- * A FileDescriptor object representing this socket connection.
- */
- protected FileDescriptor fd;
-
- /**
- * The port number the socket is bound to locally
- */
- protected int localport = -1;
-
- /**
- * The port number of the remote end of the socket connection
- */
- protected int port;
-
- /**
- * Default, no-argument constructor for use by subclasses.
- */
- public SocketImpl()
- {
- }
-
- /**
- * Creates a new socket that is not bound to any local address/port and
- * is not connected to any remote address/port. This will be created as
- * a stream socket if the stream parameter is true, or a datagram socket
- * if the stream parameter is false.
- *
- * @param stream true for a stream socket, false for a datagram socket
- *
- * @exception IOException If an error occurs
- */
- protected abstract void create(boolean stream) throws IOException;
-
- /**
- * Connects to the remote hostname and port specified as arguments.
- *
- * @param host The remote hostname to connect to
- * @param port The remote port to connect to
- *
- * @exception IOException If an error occurs
- */
- protected abstract void connect(String host, int port)
- throws IOException;
-
- /**
- * Connects to the remote address and port specified as arguments.
- *
- * @param host The remote address to connect to
- * @param port The remote port to connect to
- *
- * @exception IOException If an error occurs
- */
- protected abstract void connect(InetAddress host, int port)
- throws IOException;
-
- /**
- * Connects to the socket to the host specified in address. This
- * method blocks until successful connected or the timeout occurs.
- * A timeout of zero means no timout.
- *
- * @param address Data of remote host
- * @param timeout time to wait to stop connecting
- *
- * @exception IOException If an error occurs
- *
- * @since 1.4
- */
- protected abstract void connect(SocketAddress address, int timeout)
- throws IOException;
-
- /**
- * Binds to the specified port on the specified addr. Note that this addr
- * must represent a local IP address.
- * <p>
- * Note that it is unspecified how to bind to all interfaces on the localhost
- * (INADDR_ANY).
- *
- * @param host The address to bind to
- * @param port The port number to bind to
- *
- * @exception IOException If an error occurs
- */
- protected abstract void bind(InetAddress host, int port)
- throws IOException;
-
- /**
- * Starts listening for connections on a socket. The backlog parameter
- * is how many pending connections will queue up waiting to be serviced
- * before being accept'ed. If the queue of pending requests exceeds this
- * number, additional connections will be refused.
- *
- * @param backlog The length of the pending connection queue
- *
- * @exception IOException If an error occurs
- */
- protected abstract void listen(int backlog) throws IOException;
-
- /**
- * Accepts a connection on this socket.
- *
- * @param s The implementation object for the accepted connection.
- *
- * @exception IOException If an error occurs
- */
- protected abstract void accept(SocketImpl s) throws IOException;
-
- /**
- * Returns an <code>InputStream</code> object for reading from this socket.
- *
- * @return An <code>InputStream</code> for reading from this socket.
- *
- * @exception IOException If an error occurs
- */
- protected abstract InputStream getInputStream() throws IOException;
-
- /**
- * Returns an <code>OutputStream</code> object for writing to this socket
- *
- * @return An <code>OutputStream</code> for writing to this socket.
- *
- * @exception IOException If an error occurs.
- */
- protected abstract OutputStream getOutputStream() throws IOException;
-
- /**
- * Returns the number of bytes that the caller can read from this socket
- * without blocking.
- *
- * @return The number of readable bytes before blocking
- *
- * @exception IOException If an error occurs
- */
- protected abstract int available() throws IOException;
-
- /**
- * Closes the socket. This will normally cause any resources, such as the
- * InputStream, OutputStream and associated file descriptors to be freed.
- * <p>
- * Note that if the SO_LINGER option is set on this socket, then the
- * operation could block.
- *
- * @exception IOException If an error occurs
- */
- protected abstract void close() throws IOException;
-
- /**
- * Returns the FileDescriptor objects for this socket.
- *
- * @return A FileDescriptor for this socket.
- */
- protected FileDescriptor getFileDescriptor()
- {
- return fd;
- }
-
- /**
- * Returns the remote address this socket is connected to
- *
- * @return The remote address
- */
- protected InetAddress getInetAddress()
- {
- return address;
- }
-
- /**
- * Returns the remote port this socket is connected to
- *
- * @return The remote port
- */
- protected int getPort()
- {
- return port;
- }
-
- /**
- * Returns true or false when this socket supports sending urgent data
- * or not.
- *
- * @return true if the socket implementation supports sending urgent data,
- * false otherwise
- *
- * @since 1.4
- */
- protected boolean supportsUrgentData()
- {
- // This method has to be overwritten by socket classes that support
- // sending urgend data.
- return false;
- }
-
- /**
- * Sends one byte of urgent data to the socket.
- *
- * @param data The byte to send, the low eight bits of it
- *
- * @exception IOException If an error occurs
- *
- * @since 1.4
- */
- protected abstract void sendUrgentData(int data) throws IOException;
-
- /**
- * Returns the local port this socket is bound to
- *
- * @return The local port
- */
- protected int getLocalPort()
- {
- return localport;
- }
-
- /**
- * Returns a <code>String</code> representing the remote host and port of
- * this socket.
- *
- * @return A <code>String</code> for this socket.
- */
- public String toString()
- {
- return "[addr="
- + ((address == null) ? "0.0.0.0/0.0.0.0" : address.toString())
- + ",port=" + port + ",localport=" + localport + "]";
- }
-
- /**
- * Shut down the input side of this socket. Subsequent reads will
- * return end-of-file.
- *
- * @exception IOException if an error occurs
- */
- protected void shutdownInput() throws IOException
- {
- throw new IOException("Not implemented in this socket class");
- }
-
- /**
- * Shut down the output side of this socket. Subsequent writes will
- * fail with an IOException.
- *
- * @exception IOException if an error occurs
- */
- protected void shutdownOutput() throws IOException
- {
- throw new IOException("Not implemented in this socket class");
- }
-}
diff --git a/libjava/java/net/SocketImplFactory.java b/libjava/java/net/SocketImplFactory.java
deleted file mode 100644
index b7cb10c..0000000
--- a/libjava/java/net/SocketImplFactory.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/* SocketImplFactory.java -- Interface to create a SocketImpl object
- Copyright (C) 1998, 1999, 2000, 2001, 2003 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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;
-
-
-/** Written using on-line Java Platform 1.2 API Specification.
- * Status: Believed complete and correct.
- */
-/**
- * This interface defines one method which returns a <code>SocketImpl</code>
- * object. This should not be needed by ordinary applications.
- *
- * @author Aaron M. Renn (arenn@urbanophile.com)
- * @author Per Bothner (bothner@cygnus.com)
- */
-public interface SocketImplFactory
-{
- /**
- * This method returns an instance of the <code>SocketImpl</code> object
- *
- * @return A <code>SocketImpl</code> object
- */
- SocketImpl createSocketImpl();
-} // interface SocketImplFactory
diff --git a/libjava/java/net/SocketOptions.java b/libjava/java/net/SocketOptions.java
deleted file mode 100644
index 659bf75..0000000
--- a/libjava/java/net/SocketOptions.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/* SocketOptions.java -- Implements options for sockets (duh!)
- Copyright (C) 1998, 1999, 2000, 2001,
- 2002, 2003 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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;
-
-
-/**
- * Written using on-line Java Platform 1.2 API Specification.
- * Status: Believed complete and correct.
- */
-/**
- * This interface is used by <code>SocketImpl</code> and
- * <code>DatagramSocketImpl</code> to implement options
- * on sockets.
- *
- * @since 1.2
- *
- * @author Aaron M. Renn (arenn@urbanophile.com)
- * @author Warren Levy (warrenl@cygnus.com)
- * @status should be completely JDK 1.4 compatible
- */
-public interface SocketOptions
-{
- /**
- * Option id for the SO_KEEPALIVE value
- * @since 1.3
- */
- int SO_KEEPALIVE = 0x8;
-
- /**
- * Option id for the SO_LINGER value
- */
- int SO_LINGER = 0x80; // 128
-
- /**
- * Option id for the SO_TIMEOUT value
- */
- int SO_TIMEOUT = 0x1006; // 4102
-
- /**
- * Retrieve the local address to which the socket is bound.
- */
- int SO_BINDADDR = 0x0F; // 15
-
- /**
- * Option id for the send buffer size
- * @since 1.2
- */
- int SO_SNDBUF = 0x1001; // 4097
-
- /**
- * Option id for the receive buffer size
- * @since 1.2
- */
- int SO_RCVBUF = 0x1002; // 4098
-
- /**
- * Sets the SO_REUSEADDR parameter on a socket
- */
- int SO_REUSEADDR = 0x04; // 4
-
- /**
- * Sets SO_BROADCAST for a socket
- * @since 1.4
- */
- int SO_BROADCAST = 0x20; // 32
-
- /**
- * Sets SO_OOBINLINE for a socket
- * @since 1.4
- */
- int SO_OOBINLINE = 0x1003; // 4099
-
- /**
- * Option id for the TCP_NODELAY value
- */
- int TCP_NODELAY = 0x01; // 1
-
- /**
- * Options id for the IP_MULTICAST_IF value
- */
- int IP_MULTICAST_IF = 0x10; // 16
-
- /**
- * same as above
- * @since 1.4
- */
- int IP_MULTICAST_IF2 = 0x1F; // 31
-
- /**
- * This option enables or disables local loopback of multicast datagrams.
- * @since 1.4
- */
- int IP_MULTICAST_LOOP = 0x12; // 18
-
- /**
- * This option sets the type-of-service or traffic class field in the
- * IP header for a TCP or UDP socket.
- * @since 1.4
- */
- int IP_TOS = 0x03; // 3
-
- /**
- * Sets the specified option on a socket to the passed in object. For
- * options that take an integer argument, the passed in object is an
- * <code>Integer</code>. For options that are set to on or off, the
- * value passed will be a <code>Boolean</code>. The <code>optionId</code>
- * parameter is one of the defined constants in this interface.
- *
- * @param optionId The identifier of the option
- * @param val The value to set the option to
- *
- * @exception SocketException If an error occurs
- */
- void setOption(int optionId, Object val) throws SocketException;
-
- /**
- * Returns the current setting of the specified option. The
- * <code>Object</code> returned will be an <code>Integer</code> for options
- * that have integer values. For options that are set to on or off, a
- * <code>Boolean</code> will be returned. The <code>optionId</code>
- * parameter is one of the defined constants in this interface.
- *
- * @param optionId The option identifier
- *
- * @return The current value of the option
- *
- * @exception SocketException If an error occurs
- */
- Object getOption(int optionId) throws SocketException;
-} // interface SocketOptions
diff --git a/libjava/java/net/SocketPermission.java b/libjava/java/net/SocketPermission.java
deleted file mode 100644
index 8ccd01b..0000000
--- a/libjava/java/net/SocketPermission.java
+++ /dev/null
@@ -1,408 +0,0 @@
-/* SocketPermission.java -- Class modeling permissions for socket operations
- Copyright (C) 1998, 2000, 2001, 2002, 2004 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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.Serializable;
-import java.security.Permission;
-import java.security.PermissionCollection;
-
-
-/**
- * This class models a specific set of permssions for connecting to a
- * host. There are two elements to this, the host/port combination and
- * the permission list.
- * <p>
- * The host/port combination is specified as followed
- * <p>
- * <pre>
- * hostname[:[-]port[-[port]]]
- * </pre>
- * <p>
- * The hostname portion can be either a hostname or IP address. If it is
- * a hostname, a wildcard is allowed in hostnames. This wildcard is a "*"
- * and matches one or more characters. Only one "*" may appear in the
- * host and it must be the leftmost character. For example,
- * "*.urbanophile.com" matches all hosts in the "urbanophile.com" domain.
- * <p>
- * The port portion can be either a single value, or a range of values
- * treated as inclusive. The first or the last port value in the range
- * can be omitted in which case either the minimum or maximum legal
- * value for a port (respectively) is used by default. Here are some
- * examples:
- * <p><ul>
- * <li>8080 - Represents port 8080 only</li>
- * <li>2000-3000 - Represents ports 2000 through 3000 inclusive</li>
- * <li>-4000 - Represents ports 0 through 4000 inclusive</li>
- * <li>1024- - Represents ports 1024 through 65535 inclusive</li>
- * </ul><p>
- * The permission list is a comma separated list of individual permissions.
- * These individual permissions are:
- * <p>
- * <pre>
- * accept
- * connect
- * listen
- * resolve
- * </pre>
- * <p>
- * The "listen" permission is only relevant if the host is localhost. If
- * any permission at all is specified, then resolve permission is implied to
- * exist.
- * <p>
- * Here are a variety of examples of how to create SocketPermission's
- * <p><pre>
- * SocketPermission("www.urbanophile.com", "connect");
- * Can connect to any port on www.urbanophile.com
- * SocketPermission("www.urbanophile.com:80", "connect,accept");
- * Can connect to or accept connections from www.urbanophile.com on port 80
- * SocketPermission("localhost:1024-", "listen,accept,connect");
- * Can connect to, accept from, an listen on any local port number 1024
- * and up.
- * SocketPermission("*.edu", "connect");
- * Can connect to any host in the edu domain
- * SocketPermission("197.197.20.1", "accept");
- * Can accept connections from 197.197.20.1
- * </pre><p>
- *
- * This class also supports IPv6 addresses. These should be specified
- * in either RFC 2732 format or in full uncompressed form.
- *
- * @since 1.2
- *
- * @author Aaron M. Renn (arenn@urbanophile.com)
- */
-public final class SocketPermission extends Permission implements Serializable
-{
- static final long serialVersionUID = -7204263841984476862L;
-
-// FIXME: Needs serialization work, including readObject/writeObject methods.
-
- /**
- * A hostname/port combination as described above
- */
- private transient String hostport;
-
- /**
- * A comma separated list of actions for which we have permission
- */
- private String actions;
-
- /**
- * Initializes a new instance of <code>SocketPermission</code> with the
- * specified host/port combination and actions string.
- *
- * @param hostport The hostname/port number combination
- * @param actions The actions string
- */
- public SocketPermission(String hostport, String actions)
- {
- super(hostport);
-
- this.hostport = hostport;
- this.actions = actions;
- }
-
- /**
- * Tests this object for equality against another. This will be true if
- * and only if the passed object is an instance of
- * <code>SocketPermission</code> and both its hostname/port combination
- * and permissions string are identical.
- *
- * @param obj The object to test against for equality
- *
- * @return <code>true</code> if object is equal to this object,
- * <code>false</code> otherwise.
- */
- public boolean equals(Object obj)
- {
- if (! (obj instanceof SocketPermission))
- return false;
-
- if (((SocketPermission) obj).hostport.equals(hostport))
- if (((SocketPermission) obj).actions.equals(actions))
- return true;
-
- return false;
- }
-
- /**
- * Returns a hash code value for this object. Overrides the
- * <code>Permission.hashCode()</code>.
- *
- * @return A hash code
- */
- public int hashCode()
- {
- int hash = 100;
- if (hostport != null)
- hash += hostport.hashCode();
- if (actions != null)
- hash += actions.hashCode();
- return hash;
- }
-
- /**
- * Returns the list of permission actions in this object in canonical
- * order. The canonical order is "connect,listen,accept,resolve"
- *
- * @return The permitted action string.
- */
- public String getActions()
- {
- boolean found = false;
- StringBuffer sb = new StringBuffer("");
-
- if (actions.indexOf("connect") != -1)
- {
- sb.append("connect");
- found = true;
- }
-
- if (actions.indexOf("listen") != -1)
- if (found)
- sb.append(",listen");
- else
- {
- sb.append("listen");
- found = true;
- }
-
- if (actions.indexOf("accept") != -1)
- if (found)
- sb.append(",accept");
- else
- {
- sb.append("accept");
- found = true;
- }
-
- if (found)
- sb.append(",resolve");
- else if (actions.indexOf("resolve") != -1)
- sb.append("resolve");
-
- return sb.toString();
- }
-
- /**
- * Returns a new <code>PermissionCollection</code> object that can hold
- * <code>SocketPermission</code>'s.
- *
- * @return A new <code>PermissionCollection</code>.
- */
- public PermissionCollection newPermissionCollection()
- {
- // FIXME: Implement
-
- return null;
- }
-
- /**
- * Returns true if the permission object passed it is implied by the
- * this permission. This will be true if:
- *
- * <ul>
- * <li>The argument is of type <code>SocketPermission</code></li>
- * <li>The actions list of the argument are in this object's actions</li>
- * <li>The port range of the argument is within this objects port range</li>
- * <li>The hostname is equal to or a subset of this objects hostname</li>
- * </ul>
- *
- * <p>The argument's hostname will be a subset of this object's hostname if:</p>
- *
- * <ul>
- * <li>The argument's hostname or IP address is equal to this object's.</li>
- * <li>The argument's canonical hostname is equal to this object's.</li>
- * <li>The argument's canonical name matches this domains hostname with
- * wildcards</li>
- * </ul>
- *
- * @param perm The <code>Permission</code> to check against
- *
- * @return <code>true</code> if the <code>Permission</code> is implied by
- * this object, <code>false</code> otherwise.
- */
- public boolean implies(Permission perm)
- {
- SocketPermission p;
-
- // First make sure we are the right object type
- if (perm instanceof SocketPermission)
- p = (SocketPermission) perm;
- else
- return false;
-
- // Next check the actions
- String ourlist = getActions();
- String theirlist = p.getActions();
-
- if (! ourlist.startsWith(theirlist))
- return false;
-
- // Now check ports
- int ourfirstport = 0;
-
- // Now check ports
- int ourlastport = 0;
-
- // Now check ports
- int theirfirstport = 0;
-
- // Now check ports
- int theirlastport = 0;
-
- // Get ours
- if (hostport.indexOf(":") == -1)
- {
- ourfirstport = 0;
- ourlastport = 65535;
- }
- else
- {
- // FIXME: Needs bulletproofing.
- // This will dump if hostport if all sorts of bad data was passed to
- // the constructor
- String range = hostport.substring(hostport.indexOf(":") + 1);
- if (range.startsWith("-"))
- ourfirstport = 0;
- else if (range.indexOf("-") == -1)
- ourfirstport = Integer.parseInt(range);
- else
- ourfirstport =
- Integer.parseInt(range.substring(0, range.indexOf("-")));
-
- if (range.endsWith("-"))
- ourlastport = 65535;
- else if (range.indexOf("-") == -1)
- ourlastport = Integer.parseInt(range);
- else
- ourlastport =
- Integer.parseInt(range.substring(range.indexOf("-") + 1,
- range.length()));
- }
-
- // Get theirs
- if (p.hostport.indexOf(":") == -1)
- {
- theirfirstport = 0;
- ourlastport = 65535;
- }
- else
- {
- // This will dump if hostport if all sorts of bad data was passed to
- // the constructor
- String range = p.hostport.substring(hostport.indexOf(":") + 1);
- if (range.startsWith("-"))
- theirfirstport = 0;
- else if (range.indexOf("-") == -1)
- theirfirstport = Integer.parseInt(range);
- else
- theirfirstport =
- Integer.parseInt(range.substring(0, range.indexOf("-")));
-
- if (range.endsWith("-"))
- theirlastport = 65535;
- else if (range.indexOf("-") == -1)
- theirlastport = Integer.parseInt(range);
- else
- theirlastport =
- Integer.parseInt(range.substring(range.indexOf("-") + 1,
- range.length()));
- }
-
- // Now check them
- if ((theirfirstport < ourfirstport) || (theirlastport > ourlastport))
- return false;
-
- // Finally we can check the hosts
- String ourhost;
-
- // Finally we can check the hosts
- String theirhost;
-
- // Get ours
- if (hostport.indexOf(":") == -1)
- ourhost = hostport;
- else
- ourhost = hostport.substring(0, hostport.indexOf(":"));
-
- // Get theirs
- if (p.hostport.indexOf(":") == -1)
- theirhost = p.hostport;
- else
- theirhost = p.hostport.substring(0, p.hostport.indexOf(":"));
-
- // Are they equal?
- if (ourhost.equals(theirhost))
- return true;
-
- // Try the canonical names
- String ourcanonical = null;
-
- // Try the canonical names
- String theircanonical = null;
- try
- {
- ourcanonical = InetAddress.getByName(ourhost).getHostName();
- theircanonical = InetAddress.getByName(theirhost).getHostName();
- }
- catch (UnknownHostException e)
- {
- // Who didn't resolve? Just assume current address is canonical enough
- // Is this ok to do?
- if (ourcanonical == null)
- ourcanonical = ourhost;
- if (theircanonical == null)
- theircanonical = theirhost;
- }
-
- if (ourcanonical.equals(theircanonical))
- return true;
-
- // Well, last chance. Try for a wildcard
- if (ourhost.indexOf("*.") != -1)
- {
- String wild_domain = ourhost.substring(ourhost.indexOf("*" + 1));
- if (theircanonical.endsWith(wild_domain))
- return true;
- }
-
- // Didn't make it
- return false;
- }
-}
diff --git a/libjava/java/net/SocketTimeoutException.java b/libjava/java/net/SocketTimeoutException.java
deleted file mode 100644
index 21b0dcd..0000000
--- a/libjava/java/net/SocketTimeoutException.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/* SocketTimeoutException.java -- the socket timed out
- 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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.InterruptedIOException;
-
-
-/**
- * This exception signals that a socket read or accept timed out.
- *
- * @author Eric Blake (ebb9@email.byu.edu)
- * @since 1.4
- * @status updated to 1.4
- */
-public class SocketTimeoutException extends InterruptedIOException
-{
- /**
- * Compatible with JDK 1.4+.
- */
- private static final long serialVersionUID = -8846654841826352300L;
-
- /**
- * Create a new instance without a descriptive error message.
- */
- public SocketTimeoutException()
- {
- }
-
- /**
- * Create a new instance with a descriptive error message.
- *
- * @param message a message describing the error that occurred
- */
- public SocketTimeoutException(String message)
- {
- super(message);
- }
-} // class SocketTimeoutException
diff --git a/libjava/java/net/URI.java b/libjava/java/net/URI.java
deleted file mode 100644
index 75c2ec9..0000000
--- a/libjava/java/net/URI.java
+++ /dev/null
@@ -1,893 +0,0 @@
-/* URI.java -- An URI class
- Copyright (C) 2002, 2004, 2005 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * <p>
- * A URI instance represents that defined by
- * <a href="http://www.ietf.org/rfc/rfc3986.txt">RFC2396</a>,
- * with some deviations.
- * </p>
- * <p>
- * At its highest level, a URI consists of:
- * </p>
- * <code>[<em>scheme</em><strong>:</strong>]<em>scheme-specific-part</em>
- * [<strong>#</strong><em>fragment</em>]</code>
- * </p>
- * <p>
- * where <strong>#</strong> and <strong>:</strong> are literal characters,
- * and those parts enclosed in square brackets are optional.
- * </p>
- * <p>
- * There are two main types of URI. An <em>opaque</em> URI is one
- * which just consists of the above three parts, and is not further
- * defined. An example of such a URI would be <em>mailto:</em> URI.
- * In contrast, <em>hierarchical</em> URIs give further definition
- * to the scheme-specific part, so as represent some part of a hierarchical
- * structure.
- * </p>
- * <p>
- * <code>[<strong>//</strong><em>authority</em>][<em>path</em>]
- * [<strong>?</strong><em>query</em>]</code>
- * </p>
- * <p>
- * with <strong>/</strong> and <strong>?</strong> being literal characters.
- * When server-based, the authority section is further subdivided into:
- * </p>
- * <p>
- * <code>[<em>user-info</em><strong>@</strong>]<em>host</em>
- * [<strong>:</strong><em>port</em>]</code>
- * </p>
- * <p>
- * with <strong>@</strong> and <strong>:</strong> as literal characters.
- * Authority sections that are not server-based are said to be registry-based.
- * </p>
- * <p>
- * Hierarchical URIs can be either relative or absolute. Absolute URIs
- * always start with a `<strong>/</strong>', while relative URIs don't
- * specify a scheme. Opaque URIs are always absolute.
- * </p>
- * <p>
- * Each part of the URI may have one of three states: undefined, empty
- * or containing some content. The former two of these are represented
- * by <code>null</code> and the empty string in Java, respectively.
- * The scheme-specific part may never be undefined. It also follows from
- * this that the path sub-part may also not be undefined, so as to ensure
- * the former.
- * </p>
- *
- * @author Ito Kazumitsu (ito.kazumitsu@hitachi-cable.co.jp)
- * @author Dalibor Topic (robilad@kaffe.org)
- * @author Michael Koch (konqueror@gmx.de)
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.4
- */
-public final class URI
- implements Comparable, Serializable
-{
- static final long serialVersionUID = -6052424284110960213L;
-
- /**
- * Regular expression for parsing URIs.
- *
- * Taken from RFC 2396, Appendix B.
- * This expression doesn't parse IPv6 addresses.
- */
- private static final String URI_REGEXP =
- "^(([^:/?#]+):)?((//([^/?#]*))?([^?#]*)(\\?([^#]*))?)?(#(.*))?";
-
- private static final String AUTHORITY_REGEXP =
- "(([^?#]*)@)?([^?#:]*)(:([^?#]*))?";
-
- /**
- * Valid characters (taken from rfc2396)
- */
- private static final String RFC2396_DIGIT = "0123456789";
- private static final String RFC2396_LOWALPHA = "abcdefghijklmnopqrstuvwxyz";
- private static final String RFC2396_UPALPHA = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
- private static final String RFC2396_ALPHA =
- RFC2396_LOWALPHA + RFC2396_UPALPHA;
- private static final String RFC2396_ALPHANUM = RFC2396_DIGIT + RFC2396_ALPHA;
- private static final String RFC2396_MARK = "-_.!~*'()";
- private static final String RFC2396_UNRESERVED =
- RFC2396_ALPHANUM + RFC2396_MARK;
- private static final String RFC2396_REG_NAME =
- RFC2396_UNRESERVED + "$,;:@&=+";
- private static final String RFC2396_PCHAR = RFC2396_UNRESERVED + ":@&=+$,";
- private static final String RFC2396_SEGMENT = RFC2396_PCHAR + ";";
- private static final String RFC2396_PATH_SEGMENTS = RFC2396_SEGMENT + "/";
-
- /**
- * Index of scheme component in parsed URI.
- */
- private static final int SCHEME_GROUP = 2;
-
- /**
- * Index of scheme-specific-part in parsed URI.
- */
- private static final int SCHEME_SPEC_PART_GROUP = 3;
-
- /**
- * Index of authority component in parsed URI.
- */
- private static final int AUTHORITY_GROUP = 5;
-
- /**
- * Index of path component in parsed URI.
- */
- private static final int PATH_GROUP = 6;
-
- /**
- * Index of query component in parsed URI.
- */
- private static final int QUERY_GROUP = 8;
-
- /**
- * Index of fragment component in parsed URI.
- */
- private static final int FRAGMENT_GROUP = 10;
-
- private static final int AUTHORITY_USERINFO_GROUP = 2;
- private static final int AUTHORITY_HOST_GROUP = 3;
- private static final int AUTHORITY_PORT_GROUP = 5;
-
- private transient String scheme;
- private transient String rawSchemeSpecificPart;
- private transient String schemeSpecificPart;
- private transient String rawAuthority;
- private transient String authority;
- private transient String rawUserInfo;
- private transient String userInfo;
- private transient String rawHost;
- private transient String host;
- private transient int port = -1;
- private transient String rawPath;
- private transient String path;
- private transient String rawQuery;
- private transient String query;
- private transient String rawFragment;
- private transient String fragment;
- private String string;
-
- private void readObject(ObjectInputStream is)
- throws ClassNotFoundException, IOException
- {
- this.string = (String) is.readObject();
- try
- {
- parseURI(this.string);
- }
- catch (URISyntaxException x)
- {
- // Should not happen.
- throw new RuntimeException(x);
- }
- }
-
- private void writeObject(ObjectOutputStream os) throws IOException
- {
- if (string == null)
- string = toString();
- os.writeObject(string);
- }
-
- private static String getURIGroup(Matcher match, int group)
- {
- String matched = match.group(group);
- return matched.length() == 0 ? null : matched;
- }
-
- /**
- * Sets fields of this URI by parsing the given string.
- *
- * @param str The string to parse
- *
- * @exception URISyntaxException If the given string violates RFC 2396
- */
- private void parseURI(String str) throws URISyntaxException
- {
- Pattern pattern = Pattern.compile(URI_REGEXP);
- Matcher matcher = pattern.matcher(str);
-
- if (matcher.matches())
- {
- scheme = getURIGroup(matcher, SCHEME_GROUP);
- rawSchemeSpecificPart = matcher.group(SCHEME_SPEC_PART_GROUP);
- schemeSpecificPart = unquote(rawSchemeSpecificPart);
- if (!isOpaque())
- {
- rawAuthority = getURIGroup(matcher, AUTHORITY_GROUP);
- rawPath = matcher.group(PATH_GROUP);
- rawQuery = getURIGroup(matcher, QUERY_GROUP);
- }
- rawFragment = getURIGroup(matcher, FRAGMENT_GROUP);
- }
- else
- throw new URISyntaxException(str, "doesn't match URI regular expression");
-
- if (rawAuthority != null)
- {
- pattern = Pattern.compile(AUTHORITY_REGEXP);
- matcher = pattern.matcher(rawAuthority);
-
- if (matcher.matches())
- {
- rawUserInfo = getURIGroup(matcher, AUTHORITY_USERINFO_GROUP);
- rawHost = getURIGroup(matcher, AUTHORITY_HOST_GROUP);
-
- String portStr = getURIGroup(matcher, AUTHORITY_PORT_GROUP);
-
- if (portStr != null)
- try
- {
- port = Integer.parseInt(portStr);
- }
- catch (NumberFormatException e)
- {
- URISyntaxException use =
- new URISyntaxException
- (str, "doesn't match URI regular expression");
- use.initCause(e);
- throw use;
- }
- }
- else
- throw new URISyntaxException(str, "doesn't match URI regular expression");
- }
-
- // We must eagerly unquote the parts, because this is the only time
- // we may throw an exception.
- authority = unquote(rawAuthority);
- userInfo = unquote(rawUserInfo);
- host = unquote(rawHost);
- path = unquote(rawPath);
- query = unquote(rawQuery);
- fragment = unquote(rawFragment);
- }
-
- /**
- * Unquote "%" + hex quotes characters
- *
- * @param str The string to unquote or null.
- *
- * @return The unquoted string or null if str was null.
- *
- * @exception URISyntaxException If the given string contains invalid
- * escape sequences.
- */
- private static String unquote(String str) throws URISyntaxException
- {
- if (str == null)
- return null;
- byte[] buf = new byte[str.length()];
- int pos = 0;
- for (int i = 0; i < str.length(); i++)
- {
- char c = str.charAt(i);
- if (c > 127)
- throw new URISyntaxException(str, "Invalid character");
- if (c == '%')
- {
- if (i + 2 >= str.length())
- throw new URISyntaxException(str, "Invalid quoted character");
- int hi = Character.digit(str.charAt(++i), 16);
- int lo = Character.digit(str.charAt(++i), 16);
- if (lo < 0 || hi < 0)
- throw new URISyntaxException(str, "Invalid quoted character");
- buf[pos++] = (byte) (hi * 16 + lo);
- }
- else
- buf[pos++] = (byte) c;
- }
- try
- {
- return new String(buf, 0, pos, "utf-8");
- }
- catch (java.io.UnsupportedEncodingException x2)
- {
- throw (Error) new InternalError().initCause(x2);
- }
- }
-
- /**
- * Quote characters illegal in URIs in given string.
- *
- * Replace illegal characters by encoding their UTF-8
- * representation as "%" + hex code for each resulting
- * UTF-8 character.
- *
- * @param str The string to quote
- *
- * @return The quoted string.
- */
- private static String quote(String str)
- {
- // FIXME: unimplemented.
- return str;
- }
-
- /**
- * Quote characters illegal in URI authorities in given string.
- *
- * Replace illegal characters by encoding their UTF-8
- * representation as "%" + hex code for each resulting
- * UTF-8 character.
- *
- * @param str The string to quote
- *
- * @return The quoted string.
- */
- private static String quoteAuthority(String str)
- {
- // Technically, we should be using RFC2396_AUTHORITY, but
- // it contains no additional characters.
- return quote(str, RFC2396_REG_NAME);
- }
-
- /**
- * Quote characters in str that are not part of legalCharacters.
- *
- * Replace illegal characters by encoding their UTF-8
- * representation as "%" + hex code for each resulting
- * UTF-8 character.
- *
- * @param str The string to quote
- * @param legalCharacters The set of legal characters
- *
- * @return The quoted string.
- */
- private static String quote(String str, String legalCharacters)
- {
- StringBuffer sb = new StringBuffer(str.length());
- for (int i = 0; i < str.length(); i++)
- {
- char c = str.charAt(i);
- if (legalCharacters.indexOf(c) == -1)
- {
- String hex = "0123456789ABCDEF";
- if (c <= 127)
- sb.append('%').append(hex.charAt(c / 16)).append(hex.charAt(c % 16));
- else
- {
- try
- {
- // this is far from optimal, but it works
- byte[] utf8 = str.substring(i, i + 1).getBytes("utf-8");
- for (int j = 0; j < utf8.length; j++)
- sb.append('%').append(hex.charAt((utf8[j] & 0xff) / 16))
- .append(hex.charAt((utf8[j] & 0xff) % 16));
- }
- catch (java.io.UnsupportedEncodingException x)
- {
- throw (Error) new InternalError().initCause(x);
- }
- }
- }
- else
- sb.append(c);
- }
- return sb.toString();
- }
-
- /**
- * Quote characters illegal in URI hosts in given string.
- *
- * Replace illegal characters by encoding their UTF-8
- * representation as "%" + hex code for each resulting
- * UTF-8 character.
- *
- * @param str The string to quote
- *
- * @return The quoted string.
- */
- private static String quoteHost(String str)
- {
- // FIXME: unimplemented.
- return str;
- }
-
- /**
- * Quote characters illegal in URI paths in given string.
- *
- * Replace illegal characters by encoding their UTF-8
- * representation as "%" + hex code for each resulting
- * UTF-8 character.
- *
- * @param str The string to quote
- *
- * @return The quoted string.
- */
- private static String quotePath(String str)
- {
- // Technically, we should be using RFC2396_PATH, but
- // it contains no additional characters.
- return quote(str, RFC2396_PATH_SEGMENTS);
- }
-
- /**
- * Quote characters illegal in URI user infos in given string.
- *
- * Replace illegal characters by encoding their UTF-8
- * representation as "%" + hex code for each resulting
- * UTF-8 character.
- *
- * @param str The string to quote
- *
- * @return The quoted string.
- */
- private static String quoteUserInfo(String str)
- {
- // FIXME: unimplemented.
- return str;
- }
-
- /**
- * 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
- {
- this.string = str;
- parseURI(str);
- }
-
- /**
- * 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
- {
- this((scheme == null ? "" : scheme + ":")
- + (userInfo == null && host == null && port == -1 ? "" : "//")
- + (userInfo == null ? "" : quoteUserInfo(userInfo) + "@")
- + (host == null ? "" : quoteHost(host))
- + (port == -1 ? "" : ":" + String.valueOf(port))
- + (path == null ? "" : quotePath(path))
- + (query == null ? "" : "?" + quote(query))
- + (fragment == null ? "" : "#" + quote(fragment)));
-
- parseServerAuthority();
- }
-
- /**
- * 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 fragment
- *
- * @exception URISyntaxException If the given string violates RFC 2396
- */
- public URI(String scheme, String authority, String path, String query,
- String fragment) throws URISyntaxException
- {
- this((scheme == null ? "" : scheme + ":")
- + (authority == null ? "" : "//" + quoteAuthority(authority))
- + (path == null ? "" : quotePath(path))
- + (query == null ? "" : "?" + quote(query))
- + (fragment == null ? "" : "#" + quote(fragment)));
- }
-
- /**
- * 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
- {
- this(scheme, null, host, -1, path, null, fragment);
- }
-
- /**
- * 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
- {
- this((scheme == null ? "" : scheme + ":")
- + (ssp == null ? "" : quote(ssp))
- + (fragment == null ? "" : "#" + quote(fragment)));
- }
-
- /**
- * 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)
- {
- try
- {
- return new URI(str);
- }
- catch (URISyntaxException e)
- {
- throw (IllegalArgumentException) new IllegalArgumentException()
- .initCause(e);
- }
- }
-
- /**
- * 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, or null when it couldn't be resolved
- * for some reason.
- *
- * @exception NullPointerException If uri is null
- */
- public URI resolve(URI uri)
- {
- if (uri.isAbsolute())
- return uri;
- if (uri.isOpaque())
- return uri;
-
- String scheme = uri.getScheme();
- String schemeSpecificPart = uri.getSchemeSpecificPart();
- String authority = uri.getAuthority();
- String path = uri.getPath();
- String query = uri.getQuery();
- String fragment = uri.getFragment();
-
- try
- {
- if (fragment != null && path != null && path.equals("")
- && scheme == null && authority == null && query == null)
- return new URI(this.scheme, this.schemeSpecificPart, fragment);
-
- if (authority == null)
- {
- authority = this.authority;
- if (path == null)
- path = "";
- if (! (path.startsWith("/")))
- {
- StringBuffer basepath = new StringBuffer(this.path);
- int i = this.path.lastIndexOf('/');
-
- if (i >= 0)
- basepath.delete(i + 1, basepath.length());
-
- basepath.append(path);
- path = basepath.toString();
- // FIXME We must normalize the path here.
- // Normalization process omitted.
- }
- }
- return new URI(this.scheme, authority, path, query, fragment);
- }
- catch (URISyntaxException e)
- {
- 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 resolve(create(str));
- }
-
- /**
- * 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
- {
- if (isAbsolute())
- return new URL(this.toString());
-
- throw new IllegalArgumentException("not absolute");
- }
-
- /**
- * Returns the scheme of the URI
- */
- public String getScheme()
- {
- return scheme;
- }
-
- /**
- * Tells whether this URI is absolute or not
- */
- public boolean isAbsolute()
- {
- return scheme != null;
- }
-
- /**
- * Tell whether this URI is opaque or not
- */
- public boolean isOpaque()
- {
- return ((scheme != null) && ! (schemeSpecificPart.startsWith("/")));
- }
-
- /**
- * 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 rawSchemeSpecificPart;
- }
-
- /**
- * Returns the decoded scheme specific part of this URI.
- */
- public String getSchemeSpecificPart()
- {
- return schemeSpecificPart;
- }
-
- /**
- * Returns the rae authority part of this URI
- */
- public String getRawAuthority()
- {
- return rawAuthority;
- }
-
- /**
- * Returns the decoded authority part of this URI
- */
- public String getAuthority()
- {
- return authority;
- }
-
- /**
- * Returns the raw user info part of this URI
- */
- public String getRawUserInfo()
- {
- return rawUserInfo;
- }
-
- /**
- * Returns the decoded user info part of this URI
- */
- public String getUserInfo()
- {
- return userInfo;
- }
-
- /**
- * 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 rawPath;
- }
-
- /**
- * Returns the path of the URI
- */
- public String getPath()
- {
- return path;
- }
-
- /**
- * Returns the raw query part of this URI
- */
- public String getRawQuery()
- {
- return rawQuery;
- }
-
- /**
- * Returns the query of the URI
- */
- public String getQuery()
- {
- return query;
- }
-
- /**
- * Return the raw fragment part of this URI
- */
- public String getRawFragment()
- {
- return rawFragment;
- }
-
- /**
- * Returns the fragment of the URI
- */
- public String getFragment()
- {
- return fragment;
- }
-
- /**
- * 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 a String. If the URI was created using a constructor,
- * then this will be the same as the original input string.
- *
- * @return a string representation of the URI.
- */
- public String toString()
- {
- return (getScheme() == null ? "" : getScheme() + ":")
- + getRawSchemeSpecificPart()
- + (getRawFragment() == null ? "" : "#" + getRawFragment());
- }
-
- /**
- * Returns the URI as US-ASCII string
- */
- public String toASCIIString()
- {
- return "";
- }
-}
diff --git a/libjava/java/net/URISyntaxException.java b/libjava/java/net/URISyntaxException.java
deleted file mode 100644
index 27a70bd..0000000
--- a/libjava/java/net/URISyntaxException.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/* URISyntaxException.java -- a string could not be parsed as a URI
- 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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;
-
-
-/**
- * This exception is thrown when a String cannot be parsed as a URI.
- *
- * @author Eric Blake (ebb9@email.byu.edu)
- * @see URI
- * @since 1.4
- * @status updated to 1.4
- */
-public class URISyntaxException extends Exception
-{
- /**
- * Compatible with JDK 1.4+.
- */
- private static final long serialVersionUID = 2137979680897488891L;
-
- /**
- * The failed input.
- *
- * @serial the bad URI
- */
- private final String input;
-
- /**
- * The index of failure.
- *
- * @serial the location of the problem
- */
- private final int index;
-
- /**
- * Create an exception from the invalid string, with the index set to -1.
- *
- * @param input the bad URI
- * @param msg the descriptive error message
- * @throws NullPointerException if input or msg are null
- */
- public URISyntaxException(String input, String msg)
- {
- this(input, msg, -1);
- }
-
- /**
- * Create an exception from the invalid string, with the index of the
- * point of failure.
- *
- * @param input the bad URI
- * @param msg the descriptive error message
- * @param index the index of the parse error, or -1
- * @throws NullPointerException if input or msg are null
- * @throws IllegalArgumentException if index &lt; -1
- */
- public URISyntaxException(String input, String msg, int index)
- {
- // The toString() hack checks for null.
- super(msg.toString());
- this.input = input.toString();
- this.index = index;
- if (index < -1)
- throw new IllegalArgumentException();
- }
-
- /**
- * Returns the bad input string.
- *
- * @return the bad URI, guaranteed non-null
- */
- public String getInput()
- {
- return input;
- }
-
- /**
- * Returns the reason for the failure.
- *
- * @return the message, guaranteed non-null
- */
- public String getReason()
- {
- return super.getMessage();
- }
-
- /**
- * Returns the index of the failure, or -1.
- *
- * @return the index of failure
- */
- public int getIndex()
- {
- return index;
- }
-
- /**
- * Returns a message describing the parse error, as if by
- * <code>getReason() + (getIndex() &gt;= 0 ? " at index " + getIndex() : "")
- * + ": " + getInput()</code>.
- *
- * @return the message string
- */
- public String getMessage()
- {
- return (super.getMessage() + (index >= 0 ? " at index " + index : "")
- + ": " + input);
- }
-}
diff --git a/libjava/java/net/URLDecoder.java b/libjava/java/net/URLDecoder.java
deleted file mode 100644
index ca40c38..0000000
--- a/libjava/java/net/URLDecoder.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/* URLDecoder.java -- Class to decode URL's from encoded form.
- Copyright (C) 1998, 1999, 2000, 2001 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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.UnsupportedEncodingException;
-
-
-/**
- * This utility class contains static methods that converts a
- * string encoded in the x-www-form-urlencoded format to the original
- * text. The x-www-form-urlencoded format replaces certain disallowed
- * characters with encoded equivalents. All upper case and lower case
- * letters in the US alphabet remain as is, the space character (' ')
- * is replaced with '+' sign, and all other characters are converted to a
- * "%XX" format where XX is the hexadecimal representation of that character
- * in a given character encoding (default is "UTF-8").
- * <p>
- * This method is very useful for decoding strings sent to CGI scripts
- *
- * Written using on-line Java Platform 1.2/1.4 API Specification.
- * Status: Believed complete and correct.
- *
- * @since 1.2
- *
- * @author Warren Levy (warrenl@cygnus.com)
- * @author Aaron M. Renn (arenn@urbanophile.com) (documentation comments)
- * @author Mark Wielaard (mark@klomp.org)
- */
-public class URLDecoder
-{
- /**
- * Public contructor. Note that this class has only static methods.
- */
- public URLDecoder()
- {
- }
-
- /**
- * This method translates the passed in string from x-www-form-urlencoded
- * format using the default encoding "UTF-8" to decode the hex encoded
- * unsafe characters.
- *
- * @param s the String to convert
- *
- * @return the converted String
- *
- * @deprecated
- */
- public static String decode(String s)
- {
- try
- {
- return decode(s, "UTF-8");
- }
- catch (UnsupportedEncodingException uee)
- {
- // Should never happen since UTF-8 encoding should always be supported
- return s;
- }
- }
-
- /**
- * This method translates the passed in string from x-www-form-urlencoded
- * format using the given character encoding to decode the hex encoded
- * unsafe characters.
- *
- * This implementation will decode the string even if it contains
- * unsafe characters (characters that should have been encoded) or if the
- * two characters following a % do not represent a hex encoded byte.
- * In those cases the unsafe character or the % character will be added
- * verbatim to the decoded result.
- *
- * @param s the String to convert
- * @param encoding the character encoding to use the decode the hex encoded
- * unsafe characters
- *
- * @return the converted String
- *
- * @exception UnsupportedEncodingException If the named encoding is not
- * supported
- *
- * @since 1.4
- */
- public static String decode(String s, String encoding)
- throws UnsupportedEncodingException
- {
- // First convert all '+' characters to spaces.
- String str = s.replace('+', ' ');
-
- // Then go through the whole string looking for byte encoded characters
- int i;
- int start = 0;
- byte[] bytes = null;
- int length = str.length();
- StringBuffer result = new StringBuffer(length);
- while ((i = str.indexOf('%', start)) >= 0)
- {
- // Add all non-encoded characters to the result buffer
- result.append(str.substring(start, i));
- start = i;
-
- // Get all consecutive encoded bytes
- while ((i + 2 < length) && (str.charAt(i) == '%'))
- i += 3;
-
- // Decode all these bytes
- if ((bytes == null) || (bytes.length < ((i - start) / 3)))
- bytes = new byte[((i - start) / 3)];
-
- int index = 0;
- try
- {
- while (start < i)
- {
- String sub = str.substring(start + 1, start + 3);
- bytes[index] = (byte) Integer.parseInt(sub, 16);
- index++;
- start += 3;
- }
- }
- catch (NumberFormatException nfe)
- {
- // One of the hex encoded strings was bad
- }
-
- // Add the bytes as characters according to the given encoding
- result.append(new String(bytes, 0, index, encoding));
-
- // Make sure we skip to just after a % sign
- // There might not have been enough encoded characters after the %
- // or the hex chars were not actually hex chars (NumberFormatException)
- if (start < length && s.charAt(start) == '%')
- {
- result.append('%');
- start++;
- }
- }
-
- // Add any characters left
- if (start < str.length())
- result.append(str.substring(start));
-
- return result.toString();
- }
-} // class URLDecoder
diff --git a/libjava/java/net/URLEncoder.java b/libjava/java/net/URLEncoder.java
deleted file mode 100644
index dacc384..0000000
--- a/libjava/java/net/URLEncoder.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/* URLEncoder.java -- Class to convert strings to a properly encoded URL
- Copyright (C) 1998, 1999, 2001, 2002, 2003 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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.UnsupportedEncodingException;
-
-
-/*
- * Written using on-line Java Platform 1.2/1.4 API Specification, as well
- * as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998).
- * Status: Believed complete and correct.
- */
-
-/**
- * This utility class contains static methods that converts a
- * string into a fully encoded URL string in x-www-form-urlencoded
- * format. This format replaces certain disallowed characters with
- * encoded equivalents. All upper case and lower case letters in the
- * US alphabet remain as is, the space character (' ') is replaced with
- * '+' sign, and all other characters are converted to a "%XX" format
- * where XX is the hexadecimal representation of that character in a
- * certain encoding (by default, the platform encoding, though the
- * standard is "UTF-8").
- * <p>
- * This method is very useful for encoding strings to be sent to CGI scripts
- *
- * @author Aaron M. Renn (arenn@urbanophile.com)
- * @author Warren Levy (warrenl@cygnus.com)
- * @author Mark Wielaard (mark@klomp.org)
- */
-public class URLEncoder
-{
- /**
- * This method translates the passed in string into x-www-form-urlencoded
- * format using the default encoding. The standard encoding is
- * "UTF-8", and the two-argument form of this method should be used
- * instead.
- *
- * @param s The String to convert
- *
- * @return The converted String
- *
- * @deprecated
- */
- public static String encode(String s)
- {
- try
- {
- // We default to 8859_1 for compatibility with the same
- // default elsewhere in the library.
- return encode(s, System.getProperty("file.encoding", "8859_1"));
- }
- catch (UnsupportedEncodingException uee)
- {
- // Should never happen since default should always be supported
- return s;
- }
- }
-
- /**
- * This method translates the passed in string into x-www-form-urlencoded
- * format using the character encoding to hex-encode the unsafe characters.
- *
- * @param s The String to convert
- * @param encoding The encoding to use for unsafe characters
- *
- * @return The converted String
- *
- * @exception UnsupportedEncodingException If the named encoding is not
- * supported
- *
- * @since 1.4
- */
- public static String encode(String s, String encoding)
- throws UnsupportedEncodingException
- {
- int length = s.length();
- int start = 0;
- int i = 0;
-
- StringBuffer result = new StringBuffer(length);
- while (true)
- {
- while (i < length && isSafe(s.charAt(i)))
- i++;
-
- // Safe character can just be added
- result.append(s.substring(start, i));
-
- // Are we done?
- if (i >= length)
- return result.toString();
- else if (s.charAt(i) == ' ')
- {
- result.append('+'); // Replace space char with plus symbol.
- i++;
- }
- else
- {
- // Get all unsafe characters
- start = i;
- char c;
- while (i < length && (c = s.charAt(i)) != ' ' && ! isSafe(c))
- i++;
-
- // Convert them to %XY encoded strings
- String unsafe = s.substring(start, i);
- byte[] bytes = unsafe.getBytes(encoding);
- for (int j = 0; j < bytes.length; j++)
- {
- result.append('%');
- int val = bytes[j];
- result.append(hex.charAt((val & 0xf0) >> 4));
- result.append(hex.charAt(val & 0x0f));
- }
- }
- start = i;
- }
- }
-
- /**
- * Private static method that returns true if the given char is either
- * a uppercase or lowercase letter from 'a' till 'z', or a digit froim
- * '0' till '9', or one of the characters '-', '_', '.' or '*'. Such
- * 'safe' character don't have to be url encoded.
- */
- private static boolean isSafe(char c)
- {
- return ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')
- || (c >= '0' && c <= '9') || c == '-' || c == '_' || c == '.'
- || c == '*');
- }
-
- /**
- * Private constructor that does nothing. Included to avoid a default
- * public constructor being created by the compiler.
- */
- private URLEncoder()
- {
- }
-
- /**
- * Used to convert to hex. We don't use Integer.toHexString, since
- * it converts to lower case (and the Sun docs pretty clearly
- * specify upper case here), and because it doesn't provide a
- * leading 0.
- */
- private static final String hex = "0123456789ABCDEF";
-}
diff --git a/libjava/java/net/URLStreamHandler.java b/libjava/java/net/URLStreamHandler.java
deleted file mode 100644
index 57ce2df..0000000
--- a/libjava/java/net/URLStreamHandler.java
+++ /dev/null
@@ -1,532 +0,0 @@
-/* URLStreamHandler.java -- Abstract superclass for all protocol handlers
- Copyright (C) 1998, 1999, 2002, 2003, 2004 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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.File;
-import java.io.IOException;
-
-
-/*
- * Written using on-line Java Platform 1.2 API Specification, as well
- * as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998).
- * Status: Believed complete and correct.
- */
-
-/**
- * This class is the superclass of all URL protocol handlers. The URL
- * class loads the appropriate protocol handler to establish a connection
- * to a (possibly) remote service (eg, "http", "ftp") and to do protocol
- * specific parsing of URL's. Refer to the URL class documentation for
- * details on how that class locates and loads protocol handlers.
- * <p>
- * A protocol handler implementation should override the openConnection()
- * method, and optionally override the parseURL() and toExternalForm()
- * methods if necessary. (The default implementations will parse/write all
- * URL's in the same form as http URL's). A protocol specific subclass
- * of URLConnection will most likely need to be created as well.
- * <p>
- * Note that the instance methods in this class are called as if they
- * were static methods. That is, a URL object to act on is passed with
- * every call rather than the caller assuming the URL is stored in an
- * instance variable of the "this" object.
- * <p>
- * The methods in this class are protected and accessible only to subclasses.
- * URLStreamConnection objects are intended for use by the URL class only,
- * not by other classes (unless those classes are implementing protocols).
- *
- * @author Aaron M. Renn (arenn@urbanophile.com)
- * @author Warren Levy (warrenl@cygnus.com)
- *
- * @see URL
- */
-public abstract class URLStreamHandler
-{
- /**
- * Creates a URLStreamHander
- */
- public URLStreamHandler()
- {
- }
-
- /**
- * Returns a URLConnection for the passed in URL. Note that this should
- * not actually create the connection to the (possibly) remote host, but
- * rather simply return a URLConnection object. The connect() method of
- * URL connection is used to establish the actual connection, possibly
- * after the caller sets up various connection options.
- *
- * @param url The URL to get a connection object for
- *
- * @return A URLConnection object for the given URL
- *
- * @exception IOException If an error occurs
- */
- protected abstract URLConnection openConnection(URL url)
- throws IOException;
-
- /**
- * This method parses the string passed in as a URL and set's the
- * instance data fields in the URL object passed in to the various values
- * parsed out of the string. The start parameter is the position to start
- * scanning the string. This is usually the position after the ":" which
- * terminates the protocol name. The end parameter is the position to
- * stop scanning. This will be either the end of the String, or the
- * position of the "#" character, which separates the "file" portion of
- * the URL from the "anchor" portion.
- * <p>
- * This method assumes URL's are formatted like http protocol URL's, so
- * subclasses that implement protocols with URL's the follow a different
- * syntax should override this method. The lone exception is that if
- * the protocol name set in the URL is "file", this method will accept
- * an empty hostname (i.e., "file:///"), which is legal for that protocol
- *
- * @param url The URL object in which to store the results
- * @param spec The String-ized URL to parse
- * @param start The position in the string to start scanning from
- * @param end The position in the string to stop scanning
- */
- protected void parseURL(URL url, String spec, int start, int end)
- {
- String host = url.getHost();
- int port = url.getPort();
- String file = url.getFile();
- String ref = url.getRef();
- String userInfo = url.getUserInfo();
- String authority = url.getAuthority();
- String query = null;
-
- // On Windows we need to change \ to / for file URLs
- char separator = File.separatorChar;
- if (url.getProtocol().equals("file") && separator != '/')
- {
- file = file.replace(separator, '/');
- spec = spec.replace(separator, '/');
- }
-
- if (spec.regionMatches(start, "//", 0, 2))
- {
- String genuineHost;
- int hostEnd;
- int colon;
- int at_host;
-
- start += 2;
- int slash = spec.indexOf('/', start);
- if (slash >= 0)
- hostEnd = slash;
- else
- hostEnd = end;
-
- authority = host = spec.substring(start, hostEnd);
-
- // We first need a genuine host name (with userinfo).
- // So we check for '@': if it's present check the port in the
- // section after '@' in the other case check it in the full string.
- // P.S.: We don't care having '@' at the beginning of the string.
- if ((at_host = host.indexOf('@')) >= 0)
- {
- genuineHost = host.substring(at_host);
- userInfo = host.substring(0, at_host);
- }
- else
- genuineHost = host;
-
- // Look for optional port number. It is valid for the non-port
- // part of the host name to be null (e.g. a URL "http://:80").
- // TBD: JDK 1.2 in this case sets host to null rather than "";
- // this is undocumented and likely an unintended side effect in 1.2
- // so we'll be simple here and stick with "". Note that
- // "http://" or "http:///" produce a "" host in JDK 1.2.
- if ((colon = genuineHost.indexOf(':')) >= 0)
- {
- try
- {
- port = Integer.parseInt(genuineHost.substring(colon + 1));
- }
- catch (NumberFormatException e)
- {
- // Ignore invalid port values; port is already set to u's
- // port.
- }
-
- // Now we must cut the port number in the original string.
- if (at_host >= 0)
- host = host.substring(0, at_host + colon);
- else
- host = host.substring(0, colon);
- }
- file = null;
- start = hostEnd;
- }
- else if (host == null)
- host = "";
-
- if (file == null || file.length() == 0
- || (start < end && spec.charAt(start) == '/'))
- {
- // No file context available; just spec for file.
- // Or this is an absolute path name; ignore any file context.
- file = spec.substring(start, end);
- ref = null;
- }
- else if (start < end)
- {
- // Context is available, but only override it if there is a new file.
- int lastSlash = file.lastIndexOf('/');
- if (lastSlash < 0)
- file = spec.substring(start, end);
- else
- file = (file.substring(0, lastSlash)
- + '/' + spec.substring(start, end));
-
- // For URLs constructed relative to a context, we
- // need to canonicalise the file path.
- file = canonicalizeFilename(file);
-
- ref = null;
- }
-
- if (ref == null)
- {
- // Normally there should be no '#' in the file part,
- // but we are nice.
- int hash = file.indexOf('#');
- if (hash != -1)
- {
- ref = file.substring(hash + 1, file.length());
- file = file.substring(0, hash);
- }
- }
-
- // We care about the query tag only if there is no reference at all.
- if (ref == null)
- {
- int queryTag = file.indexOf('?');
- if (queryTag != -1)
- {
- query = file.substring(queryTag + 1);
- file = file.substring(0, queryTag);
- }
- }
-
- // XXX - Classpath used to call PlatformHelper.toCanonicalForm() on
- // the file part. It seems like overhead, but supposedly there is some
- // benefit in windows based systems (it also lowercased the string).
- setURL(url, url.getProtocol(), host, port, authority, userInfo, file, query, ref);
- }
-
- /*
- * Canonicalize a filename.
- */
- private static String canonicalizeFilename(String file)
- {
- // XXX - GNU Classpath has an implementation that might be more appropriate
- // for Windows based systems (gnu.java.io.PlatformHelper.toCanonicalForm)
- int index;
-
- // Replace "/./" with "/". This probably isn't very efficient in
- // the general case, but it's probably not bad most of the time.
- while ((index = file.indexOf("/./")) >= 0)
- file = file.substring(0, index) + file.substring(index + 2);
-
- // Process "/../" correctly. This probably isn't very efficient in
- // the general case, but it's probably not bad most of the time.
- while ((index = file.indexOf("/../")) >= 0)
- {
- // Strip of the previous directory - if it exists.
- int previous = file.lastIndexOf('/', index - 1);
- if (previous >= 0)
- file = file.substring(0, previous) + file.substring(index + 3);
- else
- break;
- }
- return file;
- }
-
- /**
- * Compares two URLs, excluding the fragment component
- *
- * @param url1 The first url
- * @param url2 The second url to compare with the first
- *
- * @return True if both URLs point to the same file, false otherwise.
- *
- * @specnote Now protected
- */
- protected boolean sameFile(URL url1, URL url2)
- {
- if (url1 == url2)
- return true;
-
- // This comparison is very conservative. It assumes that any
- // field can be null.
- if (url1 == null || url2 == null)
- return false;
- int p1 = url1.getPort();
- if (p1 == -1)
- p1 = url1.ph.getDefaultPort();
- int p2 = url2.getPort();
- if (p2 == -1)
- p2 = url2.ph.getDefaultPort();
- if (p1 != p2)
- return false;
- String s1;
- String s2;
- s1 = url1.getProtocol();
- s2 = url2.getProtocol();
- if (s1 != s2 && (s1 == null || ! s1.equals(s2)))
- return false;
- s1 = url1.getHost();
- s2 = url2.getHost();
- if (s1 != s2 && (s1 == null || ! s1.equals(s2)))
- return false;
- s1 = canonicalizeFilename(url1.getFile());
- s2 = canonicalizeFilename(url2.getFile());
- if (s1 != s2 && (s1 == null || ! s1.equals(s2)))
- return false;
- return true;
- }
-
- /**
- * This methods sets the instance variables representing the various fields
- * of the URL to the values passed in.
- *
- * @param u The URL to modify
- * @param protocol The protocol to set
- * @param host The host name to et
- * @param port The port number to set
- * @param file The filename to set
- * @param ref The reference
- *
- * @exception SecurityException If the protocol handler of the URL is
- * different from this one
- *
- * @deprecated 1.2 Please use
- * #setURL(URL,String,String,int,String,String,String,String);
- */
- protected void setURL(URL u, String protocol, String host, int port,
- String file, String ref)
- {
- u.set(protocol, host, port, file, ref);
- }
-
- /**
- * Sets the fields of the URL argument to the indicated values
- *
- * @param u The URL to modify
- * @param protocol The protocol to set
- * @param host The host name to set
- * @param port The port number to set
- * @param authority The authority to set
- * @param userInfo The user information to set
- * @param path The path/filename to set
- * @param query The query part to set
- * @param ref The reference
- *
- * @exception SecurityException If the protocol handler of the URL is
- * different from this one
- */
- protected void setURL(URL u, String protocol, String host, int port,
- String authority, String userInfo, String path,
- String query, String ref)
- {
- 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
- *
- * @return True if both given URLs are equal, false otherwise.
- */
- protected boolean equals(URL url1, URL url2)
- {
- // This comparison is very conservative. It assumes that any
- // field can be null.
- return (url1.getPort() == url2.getPort()
- && ((url1.getProtocol() == null && url2.getProtocol() == null)
- || (url1.getProtocol() != null
- && url1.getProtocol().equals(url2.getProtocol())))
- && ((url1.getUserInfo() == null && url2.getUserInfo() == null)
- || (url1.getUserInfo() != null
- && url1.getUserInfo().equals(url2.getUserInfo())))
- && ((url1.getAuthority() == null && url2.getAuthority() == null)
- || (url1.getAuthority() != null
- && url1.getAuthority().equals(url2.getAuthority())))
- && ((url1.getHost() == null && url2.getHost() == null)
- || (url1.getHost() != null && url1.getHost().equals(url2.getHost())))
- && ((url1.getPath() == null && url2.getPath() == null)
- || (url1.getPath() != null && url1.getPath().equals(url2.getPath())))
- && ((url1.getQuery() == null && url2.getQuery() == null)
- || (url1.getQuery() != null
- && url1.getQuery().equals(url2.getQuery())))
- && ((url1.getRef() == null && url2.getRef() == null)
- || (url1.getRef() != null && url1.getRef().equals(url2.getRef()))));
- }
-
- /**
- * Compares the host components of two URLs.
- *
- * @param url1 The first URL.
- * @param url2 The second URL.
- *
- * @return True if both URLs contain the same host.
- *
- * @exception UnknownHostException If an unknown host is found
- */
- protected boolean hostsEqual(URL url1, URL url2)
- {
- InetAddress addr1 = getHostAddress(url1);
- InetAddress addr2 = getHostAddress(url2);
-
- if (addr1 != null && addr2 != null)
- return addr1.equals(addr2);
-
- String host1 = url1.getHost();
- String host2 = url2.getHost();
-
- if (host1 != null && host2 != null)
- return host1.equalsIgnoreCase(host2);
-
- return host1 == null && host2 == null;
- }
-
- /**
- * Get the IP address of our host. An empty host field or a DNS failure will
- * result in a null return.
- *
- * @param url The URL to return the host address for.
- *
- * @return The address of the hostname in url.
- */
- protected InetAddress getHostAddress(URL url)
- {
- String hostname = url.getHost();
-
- if (hostname.equals(""))
- return null;
-
- try
- {
- return InetAddress.getByName(hostname);
- }
- catch (UnknownHostException e)
- {
- return null;
- }
- }
-
- /**
- * Returns the default port for a URL parsed by this handler. This method is
- * meant to be overidden by handlers with default port numbers.
- *
- * @return The default port number.
- */
- protected int getDefaultPort()
- {
- return -1;
- }
-
- /**
- * Provides the default hash calculation. May be overidden by handlers for
- * other protocols that have different requirements for hashCode calculation.
- *
- * @param url The URL to calc the hashcode for.
- *
- * @return The hashcode for the given URL.
- */
- protected int hashCode(URL url)
- {
- return url.getProtocol().hashCode()
- + ((url.getHost() == null) ? 0 : url.getHost().hashCode())
- + url.getFile().hashCode() + url.getPort();
- }
-
- /**
- * This method converts a URL object into a String. This method creates
- * Strings in the mold of http URL's, so protocol handlers which use URL's
- * that have a different syntax should override this method
- *
- * @param url The URL object to convert
- *
- * @return A string representation of the url
- */
- protected String toExternalForm(URL url)
- {
- String protocol;
- String file;
- String ref;
- String authority;
-
- protocol = url.getProtocol();
- authority = url.getAuthority();
- if (authority == null)
- authority = "";
-
- file = url.getFile();
- ref = url.getRef();
-
- // Guess a reasonable size for the string buffer so we have to resize
- // at most once.
- int size = protocol.length() + authority.length() + file.length() + 24;
- StringBuffer sb = new StringBuffer(size);
-
- if (protocol != null && protocol.length() > 0)
- {
- sb.append(protocol);
- sb.append(":");
- }
-
- if (authority.length() != 0)
- {
- sb.append("//").append(authority);
- }
-
- sb.append(file);
-
- if (ref != null)
- sb.append('#').append(ref);
-
- return sb.toString();
- }
-}
diff --git a/libjava/java/net/URLStreamHandlerFactory.java b/libjava/java/net/URLStreamHandlerFactory.java
deleted file mode 100644
index c92c71f..0000000
--- a/libjava/java/net/URLStreamHandlerFactory.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/* URLStreamHandlerFactory.java -- Maps protocols to URLStreamHandlers
- Copyright (C) 1998, 1999, 2000, 2001, 2003 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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;
-
-
-/**
- * Written using on-line Java Platform 1.2 API Specification, as well
- * as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998).
- * Status: Believed complete and correct.
- */
-/**
- * This interface contains one method which maps the protocol portion of
- * a URL (eg, "http" in "http://www.urbanophile.com/arenn/") to a
- * <code>URLStreamHandler</code> object.
- *
- * @author Aaron M. Renn (arenn@urbanophile.com)
- * @author Warren Levy (warrenl@cygnus.com)
- */
-public interface URLStreamHandlerFactory
-{
- /**
- * This method maps the protocol portion of a URL to a
- * <code>URLStreamHandler</code> object.
- *
- * @param protocol The protocol name to map ("http", "ftp", etc).
- *
- * @return The <code>URLStreamHandler</code> for the specified protocol
- */
- URLStreamHandler createURLStreamHandler(String protocol);
-} // interface URLStreamHandlerFactory
diff --git a/libjava/java/net/UnknownHostException.java b/libjava/java/net/UnknownHostException.java
deleted file mode 100644
index c5ba183..0000000
--- a/libjava/java/net/UnknownHostException.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/* UnknownHostException.java -- The hostname is unknown
- Copyright (C) 1998, 1999, 2000, 2001, 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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;
-
-
-/**
- * This exception indicates that an attempt was made to reference a hostname
- * or IP address that is not valid. This could possibly indicate that a
- * DNS problem has occurred, but most often means that the host was not
- * correctly specified.
- *
- * @author Aaron M. Renn (arenn@urbanophile.com)
- * @author Per Bothner
- * @status updated to 1.4
- */
-public class UnknownHostException extends IOException
-{
- /**
- * Compatible with JDK 1.0+.
- */
- private static final long serialVersionUID = -4639126076052875403L;
-
- /**
- * Create a new instance without a descriptive error message.
- */
- public UnknownHostException()
- {
- }
-
- /**
- * Create a new instance with a descriptive error message, such as the
- * name of the host that could not be resolved.
- *
- * @param message a message describing the error that occurred
- */
- public UnknownHostException(String message)
- {
- super(message);
- }
-} // class UnknownHostException
diff --git a/libjava/java/net/UnknownServiceException.java b/libjava/java/net/UnknownServiceException.java
deleted file mode 100644
index 65cc8f5..0000000
--- a/libjava/java/net/UnknownServiceException.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/* UnknownServiceException.java -- A service error occurred
- Copyright (C) 1998, 1999, 2000, 2001, 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., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 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;
-
-
-/**
- * Contrary to what you might think, this does not indicate that the
- * TCP/IP service name specified was invalid. Instead it indicates that
- * the MIME type returned from a URL could not be determined or that an
- * attempt was made to write to a read-only URL.
- *
- * @author Aaron M. Renn (arenn@urbanophile.com)
- * @author Warren Levy (warrenl@cygnus.com)
- * @status updated to 1.4
- */
-public class UnknownServiceException extends IOException
-{
- /**
- * Compatible with JDK 1.0+.
- */
- private static final long serialVersionUID = -4169033248853639508L;
-
- /**
- * Create a new instance without a descriptive error message.
- */
- public UnknownServiceException()
- {
- }
-
- /**
- * Create a new instance with a descriptive error message.
- *
- * @param message a message describing the error that occurred
- */
- public UnknownServiceException(String message)
- {
- super(message);
- }
-} // class UnknownServiceException