diff options
Diffstat (limited to 'libjava/java/net')
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 <= 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 <= 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 <= 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 <= 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 <= 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 <= 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 < -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() >= 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 |