diff --git a/libjava/ChangeLog b/libjava/ChangeLog index e98a20874c94..8c1ce8707616 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,19 @@ +2001-10-01 Mark Wielaard + + * Makefile.am: Add new classes + (core_java_source_files): CharSequence + (ordinary_java_source_files): Authenticator, PasswordAuthentication + * Makefile.in: regenerate + * gcj/javaprims.h: ditto + * java/lang/CharSequence: new class from Classpath + * java/lang/String.java: implements CharSequence + (subSequence (int,int)): new method + * java/lang/SubString.java: implements CharSequence + (subSequence (int,int)): new method + remerge comments with Classpath + * java/net/Authenticator.java: new class from Classpath + * java/net/PasswordAuthentication.java: ditto + 2001-10-01 Tom Tromey * gcj/javaprims.h: Rebuilt class list. diff --git a/libjava/Makefile.am b/libjava/Makefile.am index d99334be5e16..7eeb6d299f69 100644 --- a/libjava/Makefile.am +++ b/libjava/Makefile.am @@ -914,6 +914,7 @@ java/lang/ArrayStoreException.java \ java/lang/Boolean.java \ java/lang/Byte.java \ java/lang/Character.java \ +java/lang/CharSequence.java \ java/lang/ClassCastException.java \ java/lang/ClassCircularityError.java \ java/lang/ClassFormatError.java \ @@ -1179,6 +1180,7 @@ java/lang/reflect/Modifier.java \ java/lang/reflect/ReflectPermission.java \ java/math/BigDecimal.java \ java/math/BigInteger.java \ +java/net/Authenticator.java \ java/net/BindException.java \ java/net/ConnectException.java \ java/net/ContentHandler.java \ @@ -1194,6 +1196,7 @@ java/net/MalformedURLException.java \ java/net/MulticastSocket.java \ java/net/NetPermission.java \ java/net/NoRouteToHostException.java \ +java/net/PasswordAuthentication.java \ java/net/PlainDatagramSocketImpl.java \ java/net/PlainSocketImpl.java \ java/net/ProtocolException.java \ diff --git a/libjava/Makefile.in b/libjava/Makefile.in index 53599026c50f..1b8b9b32e466 100644 --- a/libjava/Makefile.in +++ b/libjava/Makefile.in @@ -123,38 +123,26 @@ libgcj_basedir = @libgcj_basedir@ mkinstalldirs = @mkinstalldirs@ AUTOMAKE_OPTIONS = foreign -@TESTSUBDIR_TRUE@SUBDIRS = \ -@TESTSUBDIR_TRUE@$(DIRLTDL) testsuite gcj include -@TESTSUBDIR_FALSE@SUBDIRS = \ -@TESTSUBDIR_FALSE@$(DIRLTDL) gcj include -@USE_LIBDIR_TRUE@toolexeclibdir = \ -@USE_LIBDIR_TRUE@$(libdir)$(MULTISUBDIR) -@USE_LIBDIR_FALSE@toolexeclibdir = \ -@USE_LIBDIR_FALSE@$(toolexecdir)/lib$(MULTISUBDIR) -@USE_LIBDIR_FALSE@toolexecdir = \ -@USE_LIBDIR_FALSE@$(exec_prefix)/$(target_alias) -@XLIB_AWT_TRUE@cond_x_ltlibrary = \ -@XLIB_AWT_TRUE@libgcjx.la -@XLIB_AWT_FALSE@cond_x_ltlibrary = \ +@TESTSUBDIR_TRUE@SUBDIRS = @TESTSUBDIR_TRUE@$(DIRLTDL) testsuite gcj include +@TESTSUBDIR_FALSE@SUBDIRS = @TESTSUBDIR_FALSE@$(DIRLTDL) gcj include +@USE_LIBDIR_TRUE@toolexeclibdir = @USE_LIBDIR_TRUE@$(libdir)$(MULTISUBDIR) +@USE_LIBDIR_FALSE@toolexeclibdir = @USE_LIBDIR_FALSE@$(toolexecdir)/lib$(MULTISUBDIR) +@USE_LIBDIR_FALSE@toolexecdir = @USE_LIBDIR_FALSE@$(exec_prefix)/$(target_alias) +@XLIB_AWT_TRUE@cond_x_ltlibrary = @XLIB_AWT_TRUE@libgcjx.la +@XLIB_AWT_FALSE@cond_x_ltlibrary = toolexeclib_LTLIBRARIES = libgcj.la $(cond_x_ltlibrary) toolexeclib_DATA = libgcj.spec data_DATA = libgcj.jar -@NATIVE_TRUE@bin_PROGRAMS = \ -@NATIVE_TRUE@jv-convert gij rmic rmiregistry +@NATIVE_TRUE@bin_PROGRAMS = @NATIVE_TRUE@jv-convert gij rmic rmiregistry bin_SCRIPTS = addr2name.awk -@CANADIAN_TRUE@@NULL_TARGET_TRUE@ZIP = \ -@CANADIAN_TRUE@@NULL_TARGET_TRUE@$(MULTIBUILDTOP)../$(COMPPATH)/fastjar/jar$(EXEEXT) -@CANADIAN_TRUE@@NULL_TARGET_FALSE@ZIP = \ -@CANADIAN_TRUE@@NULL_TARGET_FALSE@jar -@CANADIAN_FALSE@ZIP = \ -@CANADIAN_FALSE@$(MULTIBUILDTOP)../$(COMPPATH)/fastjar/jar$(EXEEXT) -@CANADIAN_TRUE@GCJH = \ -@CANADIAN_TRUE@gcjh -@CANADIAN_FALSE@GCJH = \ -@CANADIAN_FALSE@$(MULTIBUILDTOP)../$(COMPPATH)/gcc/gcjh$(EXEEXT) +@CANADIAN_TRUE@@NULL_TARGET_TRUE@ZIP = @CANADIAN_TRUE@@NULL_TARGET_TRUE@$(MULTIBUILDTOP)../$(COMPPATH)/fastjar/jar$(EXEEXT) +@CANADIAN_TRUE@@NULL_TARGET_FALSE@ZIP = @CANADIAN_TRUE@@NULL_TARGET_FALSE@jar +@CANADIAN_FALSE@ZIP = @CANADIAN_FALSE@$(MULTIBUILDTOP)../$(COMPPATH)/fastjar/jar$(EXEEXT) +@CANADIAN_TRUE@GCJH = @CANADIAN_TRUE@gcjh +@CANADIAN_FALSE@GCJH = @CANADIAN_FALSE@$(MULTIBUILDTOP)../$(COMPPATH)/gcc/gcjh$(EXEEXT) GCJ_WITH_FLAGS = $(GCJ) --encoding=UTF-8 @@ -174,10 +162,8 @@ AM_CXXFLAGS = -fno-rtti -fnon-call-exceptions \ @LIBGCJ_CXXFLAGS@ @X_CFLAGS@ $(WARNINGS) -D_GNU_SOURCE \ -DPREFIX="\"$(prefix)\"" -@USING_GCC_TRUE@AM_CFLAGS = \ -@USING_GCC_TRUE@@LIBGCJ_CFLAGS@ $(WARNINGS) -@USING_GCC_FALSE@AM_CFLAGS = \ -@USING_GCC_FALSE@@LIBGCJ_CFLAGS@ +@USING_GCC_TRUE@AM_CFLAGS = @USING_GCC_TRUE@@LIBGCJ_CFLAGS@ $(WARNINGS) +@USING_GCC_FALSE@AM_CFLAGS = @USING_GCC_FALSE@@LIBGCJ_CFLAGS@ JCFLAGS = -g JC1FLAGS = @LIBGCJ_JAVAFLAGS@ $(GCJFLAGS) @@ -246,8 +232,7 @@ extra_headers = java/lang/Object.h java/lang/Class.h NM = nm -@NATIVE_TRUE@@MAINTAINER_MODE_TRUE@noinst_PROGRAMS = \ -@NATIVE_TRUE@@MAINTAINER_MODE_TRUE@gen-from-JIS +@NATIVE_TRUE@@MAINTAINER_MODE_TRUE@noinst_PROGRAMS = @NATIVE_TRUE@@MAINTAINER_MODE_TRUE@gen-from-JIS CONVERT_DIR = gnu/gcj/convert @@ -660,6 +645,7 @@ java/lang/ArrayStoreException.java \ java/lang/Boolean.java \ java/lang/Byte.java \ java/lang/Character.java \ +java/lang/CharSequence.java \ java/lang/ClassCastException.java \ java/lang/ClassCircularityError.java \ java/lang/ClassFormatError.java \ @@ -920,6 +906,7 @@ java/lang/reflect/Modifier.java \ java/lang/reflect/ReflectPermission.java \ java/math/BigDecimal.java \ java/math/BigInteger.java \ +java/net/Authenticator.java \ java/net/BindException.java \ java/net/ConnectException.java \ java/net/ContentHandler.java \ @@ -935,6 +922,7 @@ java/net/MalformedURLException.java \ java/net/MulticastSocket.java \ java/net/NetPermission.java \ java/net/NoRouteToHostException.java \ +java/net/PasswordAuthentication.java \ java/net/PlainDatagramSocketImpl.java \ java/net/PlainSocketImpl.java \ java/net/ProtocolException.java \ @@ -1785,8 +1773,9 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \ .deps/java/lang/ArithmeticException.P \ .deps/java/lang/ArrayIndexOutOfBoundsException.P \ .deps/java/lang/ArrayStoreException.P .deps/java/lang/Boolean.P \ -.deps/java/lang/Byte.P .deps/java/lang/Character.P \ -.deps/java/lang/Class.P .deps/java/lang/ClassCastException.P \ +.deps/java/lang/Byte.P .deps/java/lang/CharSequence.P \ +.deps/java/lang/Character.P .deps/java/lang/Class.P \ +.deps/java/lang/ClassCastException.P \ .deps/java/lang/ClassCircularityError.P \ .deps/java/lang/ClassFormatError.P .deps/java/lang/ClassLoader.P \ .deps/java/lang/ClassNotFoundException.P \ @@ -1873,14 +1862,15 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \ .deps/java/lang/w_log.P .deps/java/lang/w_pow.P \ .deps/java/lang/w_remainder.P .deps/java/lang/w_sqrt.P \ .deps/java/math/BigDecimal.P .deps/java/math/BigInteger.P \ -.deps/java/net/BindException.P .deps/java/net/ConnectException.P \ -.deps/java/net/ContentHandler.P .deps/java/net/ContentHandlerFactory.P \ -.deps/java/net/DatagramPacket.P .deps/java/net/DatagramSocket.P \ -.deps/java/net/DatagramSocketImpl.P .deps/java/net/FileNameMap.P \ -.deps/java/net/HttpURLConnection.P .deps/java/net/InetAddress.P \ -.deps/java/net/JarURLConnection.P \ +.deps/java/net/Authenticator.P .deps/java/net/BindException.P \ +.deps/java/net/ConnectException.P .deps/java/net/ContentHandler.P \ +.deps/java/net/ContentHandlerFactory.P .deps/java/net/DatagramPacket.P \ +.deps/java/net/DatagramSocket.P .deps/java/net/DatagramSocketImpl.P \ +.deps/java/net/FileNameMap.P .deps/java/net/HttpURLConnection.P \ +.deps/java/net/InetAddress.P .deps/java/net/JarURLConnection.P \ .deps/java/net/MalformedURLException.P .deps/java/net/MulticastSocket.P \ .deps/java/net/NetPermission.P .deps/java/net/NoRouteToHostException.P \ +.deps/java/net/PasswordAuthentication.P \ .deps/java/net/PlainDatagramSocketImpl.P \ .deps/java/net/PlainSocketImpl.P .deps/java/net/ProtocolException.P \ .deps/java/net/ServerSocket.P .deps/java/net/Socket.P \ @@ -2493,7 +2483,7 @@ distdir: $(DISTFILES) @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ - cp -pr $$/$$file $(distdir)/$$file; \ + cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ diff --git a/libjava/gcj/javaprims.h b/libjava/gcj/javaprims.h index d32731558e0f..aa7c51e8e024 100644 --- a/libjava/gcj/javaprims.h +++ b/libjava/gcj/javaprims.h @@ -134,6 +134,7 @@ extern "Java" class Boolean; class Byte; class CPlusPlusDemangler; + class CharSequence; class Character; class Character$Subset; class Character$UnicodeBlock; diff --git a/libjava/java/lang/CharSequence.java b/libjava/java/lang/CharSequence.java new file mode 100644 index 000000000000..8ba677e063a4 --- /dev/null +++ b/libjava/java/lang/CharSequence.java @@ -0,0 +1,80 @@ +/* java.lang.CharSequence -- Anything that has an indexed sequence of chars + Copyright (C) 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., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +As a special exception, if you link this library with other files to +produce an executable, this library does not by itself cause the +resulting executable to be covered by the GNU General Public License. +This exception does not however invalidate any other reasons why the +executable file might be covered by the GNU General Public License. */ + + +package java.lang; + +/** + * General functions on a sequence of chars. This interface is implemented + * by String, StringBuffer and + * CharBuffer to give a uniform way to get chars at a certain + * index, the number of characters in the sequence and a subrange of the + * chars. Indexes start at 0 and the last index is length()-1. + *

+ * Even when classes implement this interface they are not always + * exchangeble because they might implement their compare, equals or hash + * function differently. This means that in general one should not use a + * CharSequence as keys in collections since two sequences + * with the same chars at the same indexes with the same length might not + * have the same hash code, be equal or be comparable since the are + * represented by different classes. + * + * @author Mark Wielaard (mark@klomp.org) + * + * @since 1.4 + */ + +public interface CharSequence { + + /** + * Returns the character at the given index. + * + * @exception IndexOutOfBoundsException when i < 0 or + * i > length()-1. + */ + char charAt(int i); + + /** + * Returns the length of the sequence. + */ + int length(); + + /** + * Returns a new CharSequence of the indicated range. + * + * @exception IndexOutOfBoundsException when begin < 0, + * end < 0, end > length() or + * begin > end + */ + CharSequence subSequence(int begin, int end); + + /** + * Returns the complete CharSequence as a String. + * Classes that implement this interface should return a String + * which contains only the characters in the sequence in the correct order. + */ + String toString(); +} diff --git a/libjava/java/lang/String.java b/libjava/java/lang/String.java index bed3171fb22d..8dadfb59cc0d 100644 --- a/libjava/java/lang/String.java +++ b/libjava/java/lang/String.java @@ -22,7 +22,7 @@ import java.util.Locale; * Status: Complete to 1.3. */ -public final class String implements Serializable, Comparable +public final class String implements Serializable, Comparable, CharSequence { private Object data; private int boffset; // Note this is a byte offset - don't use in Java code! @@ -297,6 +297,28 @@ public final class String implements Serializable, Comparable } } + /** + * Creates a substring of this String, starting at a specified index + * and ending at one character before a specified index. + *

+ * To implement CharSequence. + * Calls substring(beginIndex, endIndex). + * + * @param beginIndex index to start substring (base 0) + * @param endIndex index after the last character to be + * copied into the substring + * + * @return new String which is a substring of this String + * + * @exception StringIndexOutOfBoundsException + * if (beginIndex < 0 || endIndex > this.length() || beginIndex > endIndex) + */ + public CharSequence subSequence(int beginIndex, int endIndex) + throws IndexOutOfBoundsException + { + return substring(beginIndex, endIndex); + } + public String substring (int beginIndex) { return substring (beginIndex, count); diff --git a/libjava/java/lang/StringBuffer.java b/libjava/java/lang/StringBuffer.java index 211574a5b7eb..38978b1d9bd0 100644 --- a/libjava/java/lang/StringBuffer.java +++ b/libjava/java/lang/StringBuffer.java @@ -1,21 +1,32 @@ -// StringBuffer.java - Growable strings. +/* StringBuffer.java -- Growable strings + Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. -/* Copyright (C) 1998, 1999, 2000 Free Software Foundation +This file is part of GNU Classpath. - This file is part of libgcj. +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. -This software is copyrighted work licensed under the terms of the -Libgcj License. Please consult the file "LIBGCJ_LICENSE" for -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., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +As a special exception, if you link this library with other files to +produce an executable, this library does not by itself cause the +resulting executable to be covered by the GNU General Public License. +This exception does not however invalidate any other reasons why the +executable file might be covered by the GNU General Public License. */ package java.lang; import java.io.Serializable; -/** - * @author Tom Tromey - * @date October 23, 1998. - */ - /* Written using "Java Class Libraries", 2nd edition, ISBN 0-201-31002-3 * Updated using online JDK 1.2 docs. * Believed complete and correct to JDK 1.2. @@ -57,7 +68,7 @@ import java.io.Serializable; * @author Tom Tromey * @see java.lang.String */ -public final class StringBuffer implements Serializable +public final class StringBuffer implements Serializable, CharSequence { /** Append the String value of the argument to this StringBuffer. * Uses String.valueOf() to convert to @@ -198,7 +209,7 @@ public final class StringBuffer implements Serializable * @param index the index of the character to get, starting at 0. * @return the character at the specified index. * @exception IndexOutOfBoundsException if the desired character index - * is not between 0 and length() - 1 (inclusive). + * is negative or greater then length() - 1. */ public synchronized char charAt (int index) { @@ -653,6 +664,28 @@ public final class StringBuffer implements Serializable return new String (value, beginIndex, endIndex - beginIndex); } + /** + * Creates a substring of this StringBuffer, starting at a specified index + * and ending at one character before a specified index. + *

+ * To implement CharSequence. + * Calls substring(beginIndex, endIndex). + * + * @param beginIndex index to start substring (base 0) + * @param endIndex index after the last character to be + * copied into the substring + * + * @return new String which is a substring of this StringBuffer + * + * @exception StringIndexOutOfBoundsException + * if (beginIndex < 0 || endIndex > this.length() || beginIndex > endIndex) + */ + public CharSequence subSequence (int beginIndex, int endIndex) + { + return substring(beginIndex, endIndex); + } + + /** Convert this StringBuffer to a String. * @return the characters in this StringBuffer */ diff --git a/libjava/java/net/Authenticator.java b/libjava/java/net/Authenticator.java new file mode 100644 index 000000000000..315bfb039815 --- /dev/null +++ b/libjava/java/net/Authenticator.java @@ -0,0 +1,269 @@ +/* Authenticator.java -- Abstract class for obtaining authentication info + Copyright (C) 1998,2000 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., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +As a special exception, if you link this library with other files to +produce an executable, this library does not by itself cause the +resulting executable to be covered by the GNU General Public License. +This exception does not however invalidate any other reasons why the +executable file might be covered by the GNU General Public License. */ + +package java.net; + +/** + * Sometimes a network operation (such as hitting a password protected + * web site) will require authentication information in the form of a + * username and password. This abstract class provides a model for + * obtaining that information. + *

+ * To make use of this feature, a programmer must create a subclass of + * Authenticator 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 setDefault + * 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) + */ +public abstract class Authenticator +{ + +/*************************************************************************/ + +/* + * Class Variables + */ + +/** + * This is the default Authenticator object to use for password requests + */ +private static Authenticator default_authenticator; + +/*************************************************************************/ + +/* + * Instance Variables + */ + +/** + * 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 Authenticator object (an + * instance of a + * subclass of Authenticator) 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 SecurityException if it is not. + * + * @param def_auth The new default Authenticator object to use + * + * @exception SecurityException If the caller does not have permission + * to perform this operation + */ +public static void +setDefault(Authenticator def_auth) +{ + SecurityManager sm = System.getSecurityManager(); + if (sm != null) + sm.checkPermission(new NetPermission("setDefaultAuthenticator")); + + default_authenticator = def_auth; +} + +/*************************************************************************/ + +/** + * 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 Authenticator object, the method then returns + * null. Otherwise, the default authenticators's instance + * variables are initialized and it's getPasswordAuthentication + * 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 PasswordAuthentication 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) +{ + SecurityManager sm = System.getSecurityManager(); + if (sm != null) + sm.checkPermission(new NetPermission("requestPasswordAuthentication")); + + if (default_authenticator == null) + return(null); + + default_authenticator.addr = addr; + default_authenticator.port = port; + default_authenticator.protocol = protocol; + default_authenticator.prompt = prompt; + default_authenticator.scheme = scheme; + + return(default_authenticator.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 + */ +protected final InetAddress +getRequestingSite() +{ + return(addr); +} + +/*************************************************************************/ + +/** + * 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 + * null by default. + * + * @return The PasswordAuthentication information + */ +protected PasswordAuthentication +getPasswordAuthentication() +{ + return(null); +} + +} // class Authenticator + diff --git a/libjava/java/net/PasswordAuthentication.java b/libjava/java/net/PasswordAuthentication.java new file mode 100644 index 000000000000..08ef6fad1ed9 --- /dev/null +++ b/libjava/java/net/PasswordAuthentication.java @@ -0,0 +1,104 @@ +/* PasswordAuthentication.java -- Container class for username/password pairs + Copyright (C) 1998,2000 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., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +As a special exception, if you link this library with other files to +produce an executable, this library does not by itself cause the +resulting executable to be covered by the GNU General Public License. +This exception does not however invalidate any other reasons why the +executable file might be covered by the GNU General Public License. */ + +package java.net; + +/** + * This class serves a container for username/password pairs. + * + * @author Aaron M. Renn (arenn@urbanophile.com) + */ +public final class PasswordAuthentication +{ + +/*************************************************************************/ + +/* + * Instance Variables + */ + +/** + * The username + */ +private String username; + +/** + * The password + */ +private char[] password; + +/*************************************************************************/ + +/* + * Constructors + */ + +/** + * Creates a new PasswordAuthentication 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; +} + +/*************************************************************************/ + +/* + * Instance Methods + */ + +/** + * 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); +} + +} // class PasswordAuthentication +