[kaffe] PATCH: implement AccessController.getContext

Casey Marshall csm@gnu.org
Sun May 30 07:10:03 2004


--=-=-=

Hi.

Attached is a patch that attempts to implement AccessController, and
fixes a few inconsistencies in other classes along the way.

The relevant details of this patch include:

  * The stack inspection is implemented in VMAccessController, which
    simply has to provide three methods: pushing a privileged action
    context, popping it off, and getting an AccessControlContext.
    Fetching the actual stack is done in native code that works nearly
    identically to ThreadStack.getClassStack, but returns the method
    names alongside the classes. I couldn't find any existing code
    that did what I wanted (and believe this class needs), so I had to
    end up with some code duplication.

    This VM* split seems somewhat superfluous to me, but maybe it is
    worth it. A similar implementation for libgcj should be trivial to
    write, and maybe for other VMs too.

  * PrimordialClassLoader will set the default ProtectionDomain to one
    that contains a single AllPermission object. I think this is the
    right behavior, to allow "system" classes full permissions.

  * Permission checking (with a PolicyFile enabled) will work for some
    permission types, but other Permission objects have some clear
    bugs that prevent proper checks. So far PropertyPermission and
    RuntimePermission seem to work ok.

  * There are some bugs in Classpath's security classes, some of which
    are fixed here. I will propagate these back to Classpath.

  * I wasn't entirely sure how to update the build system properly, so
    the Makefile diffs may be wrong.

Comments welcome. Clearly this isn't a complete implementation of the
security architecture, but hopefully this is a start.

-- 
Casey Marshall || csm@gnu.org

--=-=-=
Content-Disposition: attachment; filename=ChangeLog.ac

2004-05-29  Casey Marshall <csm@gnu.org>

	* include/Makefile.am: added java_security_VMAccessController.h.
	* include/Makefile.in: updated.
	* libraries/clib/native/AccessController.c: new file.
	* libraries/clib/native/Makefile.am: add AccessController.c.
	* libraries/clib/native/Makefile.in: updated.
	* libraries/javalib/bootstrap.classlist: add java.security
	classes.
	* libraries/javalib/essential.files: add java.security classes.
	* libraries/javalib/gnu/java/security/PolicyFile.java
	(debug): don't check `DEBUG' here. Changed all calls to check
	`DEBUG' before calling `debug'.
	* libraries/javalib/java/lang/SecurityManager.java
	(getSecurityContext): return AccessController.getContext().
	(checkPermission): call AccessController.checkPermission().
	(checkPermission(Permission,Object)): call checkPermission of
	`context' if it is an AccessControlContext.
	(checkRead): likewise.
	(checkConnect): likewise.
	* libraries/javalib/java/net/SocketPermission.java
	(implies): check `actions' list properly.
	* libraries/javalib/java/security/AccessControlContext.java:
	Use Classpath's version as base.
	(<init>): copy ProtectionDomains properly.
	(checkPermission): only succeed if the permission is implied by
	every domain in the list.
	* libraries/javalib/java/security/AccessController.java:
	Use Classpath's version as base.
	(doPrivileged): call VMAccessController.pushContext and
	VMAccessController.popContext if a context is supplied.
	(getContext): implemented.
	* libraries/javalib/java/security/IntersectingDomainCombiner.java:
	new file.
	* libraries/javalib/java/security/ProtectionDomain.java
	(<init>): set statically bound to `true' in the two-argument
	version.
	* libraries/javalib/java/security/SecureClassLoader.java
	Use Classpath's version as base.
	(getPermissions): call `Policy.getCurrentPolicy' to bypass
	security check.
	* libraries/javalib/java/security/VMAccessController.java: new
	file.
	* libraries/javalib/java/util/PropertyPermissionCollection.java
	(implies): avoid infinite loop.
	* libraries/javalib/kaffe/lang/PrimordialClassLoader.java
	(DEFAULT_PROTECTION_DOMAIN): set permissions to `AllPermissions'.
--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=access.patch

Index: include/Makefile.am
===================================================================
RCS file: /cvs/kaffe/kaffe/include/Makefile.am,v
retrieving revision 1.60
diff -u -r1.60 Makefile.am
--- include/Makefile.am	19 May 2004 17:27:44 -0000	1.60
+++ include/Makefile.am	30 May 2004 01:10:05 -0000
@@ -83,6 +83,7 @@
 	java_net_SocketAddress.h \
 	java_net_SocketImpl.h \
 	java_net_SocketOptions.h \
+	java_security_VMAccessController.h \
 	java_text_DateFormat.h \
 	java_util_Arrays.h \
 	java_util_Comparator.h \
Index: include/Makefile.in
===================================================================
RCS file: /cvs/kaffe/kaffe/include/Makefile.in,v
retrieving revision 1.158
diff -u -r1.158 Makefile.in
--- include/Makefile.in	25 May 2004 08:33:22 -0000	1.158
+++ include/Makefile.in	30 May 2004 01:10:05 -0000
@@ -395,6 +395,7 @@
 	java_net_SocketAddress.h \
 	java_net_SocketImpl.h \
 	java_net_SocketOptions.h \
+	java_security_VMAccessController.h \
 	java_text_DateFormat.h \
 	java_util_Arrays.h \
 	java_util_Comparator.h \
Index: libraries/clib/native/AccessController.c
===================================================================
RCS file: libraries/clib/native/AccessController.c
diff -N libraries/clib/native/AccessController.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ libraries/clib/native/AccessController.c	30 May 2004 01:10:32 -0000
@@ -0,0 +1,88 @@
+/* AccessController.c -- native VMAccessController methods.
+   Copyright (C) 2004  Casey Marshall <csm@gnu.org>
+   Original Copyright (C) 1996, 1997 Transvirtual Technologies, Inc.
+
+This program 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.
+
+This program 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 this program; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.  */
+
+
+#include "config.h"
+#include "config-std.h"
+#include "config-mem.h"
+#include "gtypes.h"
+#include "access.h"
+#include "constants.h"
+#include "object.h"
+#include "classMethod.h"
+#include "itypes.h"
+#include <native.h>
+#include "defs.h"
+#include <stdlib.h>
+#include "java_security_VMAccessController.h"
+#include "stackTrace.h"
+#include "support.h"
+
+
+/*
+ * Returns the call stack of the current thread as a pair of arrays: the
+ * class in the stack, and the name of the method on the stack.
+ *
+ * This method is based on kaffe_lang_ThreadStack, but returns the
+ * method names along with the classes.
+ */
+HArrayOfArray *
+java_security_VMAccessController_getStack (void)
+{
+  stackTraceInfo *info;
+  errorInfo einfo;
+  int cnt;
+  int i;
+  HArrayOfArray *classes;
+  HArrayOfObject *meths;
+  HArrayOfObject *array;
+
+  info = (stackTraceInfo *) buildStackTrace(0);
+  if (info == NULL)
+    {
+      postOutOfMemory (&einfo);
+      throwError (&einfo);
+    }
+
+  cnt = 0;
+  for (i = 0; info[i].meth != ENDOFSTACK; i++)
+    {
+      if (info[i].meth != NULL && info[i].meth->class != NULL)
+	cnt++;
+    }
+
+  array = (HArrayOfObject *) AllocObjectArray (2, "[Ljava/lang/Object;", 0);
+  classes = (HArrayOfObject *) AllocObjectArray (cnt, "Ljava/lang/Class;", 0);
+  meths = (HArrayOfObject *) AllocObjectArray (cnt, "Ljava/lang/String;", 0);
+
+  cnt = 0;
+  for (i = 0; info[i].meth != ENDOFSTACK; i++)
+    {
+      if (info[i].meth != NULL && info[i].meth->class != NULL)
+	{
+	  unhand_array(classes)->body[cnt] = (Hjava_lang_Object *) info[i].meth->class;
+	  unhand_array(meths)->body[cnt] = (Hjava_lang_Object *) utf8Const2Java (info[i].meth->name);
+	  cnt++;
+	}      
+    }
+
+  unhand_array(array)->body[0] = (Hjava_lang_Object *) classes;
+  unhand_array(array)->body[1] = (Hjava_lang_Object *) meths;
+  return array;
+}
Index: libraries/clib/native/Makefile.am
===================================================================
RCS file: /cvs/kaffe/kaffe/libraries/clib/native/Makefile.am,v
retrieving revision 1.32
diff -u -r1.32 Makefile.am
--- libraries/clib/native/Makefile.am	22 Apr 2004 09:22:38 -0000	1.32
+++ libraries/clib/native/Makefile.am	30 May 2004 01:10:32 -0000
@@ -44,6 +44,9 @@
 		Field.c \
 		Method.c
 
+SECURITY_SRCS = \
+		AccessController.c
+
 TEXT_SRCS = \
 		DateFormat.c
 
@@ -62,6 +65,6 @@
 
 libnative_la_LIBADD = $(M_LIBS) $(LTLIBICONV)
 
-libnative_la_SOURCES = $(IO_SRCS) $(LANG_SRCS) $(REFLECT_SRCS) $(TEXT_SRCS) $(TEST_SRCS) $(UTIL_SRCS)
+libnative_la_SOURCES = $(IO_SRCS) $(LANG_SRCS) $(REFLECT_SRCS) $(SECURITY_SRCS) $(TEXT_SRCS) $(TEST_SRCS) $(UTIL_SRCS)
 
 CLEANFILES = so_locations
Index: libraries/clib/native/Makefile.in
===================================================================
RCS file: /cvs/kaffe/kaffe/libraries/clib/native/Makefile.in,v
retrieving revision 1.135
diff -u -r1.135 Makefile.in
--- libraries/clib/native/Makefile.in	25 May 2004 08:33:43 -0000	1.135
+++ libraries/clib/native/Makefile.in	30 May 2004 01:10:32 -0000
@@ -84,17 +84,19 @@
 	Thread.lo ThreadStack.lo Throwable.lo UNIXProcess.lo \
 	ZipFile.lo
 am__objects_3 = Array.lo Constructor.lo Field.lo Method.lo
-am__objects_4 = DateFormat.lo
-am__objects_5 = TestNative.lo
-am__objects_6 = Arrays.lo TimeZone.lo
+am__objects_4 = AccessController.lo
+am__objects_5 = DateFormat.lo
+am__objects_6 = TestNative.lo
+am__objects_7 = Arrays.lo TimeZone.lo
 am_libnative_la_OBJECTS = $(am__objects_1) $(am__objects_2) \
 	$(am__objects_3) $(am__objects_4) $(am__objects_5) \
-	$(am__objects_6)
+	$(am__objects_6) $(am__objects_7)
 libnative_la_OBJECTS = $(am_libnative_la_OBJECTS)
 DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/config -I$(top_builddir)/include/kaffe
 depcomp = $(SHELL) $(top_srcdir)/scripts/depcomp
 am__depfiles_maybe = depfiles
-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/Array.Plo ./$(DEPDIR)/Arrays.Plo \
+@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/AccessController.Plo \
+@AMDEP_TRUE@	./$(DEPDIR)/Array.Plo ./$(DEPDIR)/Arrays.Plo \
 @AMDEP_TRUE@	./$(DEPDIR)/ByteToCharDefault.Plo \
 @AMDEP_TRUE@	./$(DEPDIR)/ByteToCharIconv.Plo \
 @AMDEP_TRUE@	./$(DEPDIR)/CharToByteDefault.Plo \
@@ -398,6 +400,9 @@
 		Field.c \
 		Method.c
 
+SECURITY_SRCS = \
+		AccessController.c
+
 TEXT_SRCS = \
 		DateFormat.c
 
@@ -415,7 +420,7 @@
 	-export-symbols-regex "^([Jj]ava|kaffe)_"
 
 libnative_la_LIBADD = $(M_LIBS) $(LTLIBICONV)
-libnative_la_SOURCES = $(IO_SRCS) $(LANG_SRCS) $(REFLECT_SRCS) $(TEXT_SRCS) $(TEST_SRCS) $(UTIL_SRCS)
+libnative_la_SOURCES = $(IO_SRCS) $(LANG_SRCS) $(REFLECT_SRCS) $(SECURITY_SRCS) $(TEXT_SRCS) $(TEST_SRCS) $(UTIL_SRCS)
 CLEANFILES = so_locations
 all: all-am
 
@@ -486,6 +491,7 @@
 distclean-compile:
 	-rm -f *.tab.c
 
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/AccessController.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Array.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Arrays.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ByteToCharDefault.Plo@am__quote@
Index: libraries/javalib/Makefile.am
===================================================================
RCS file: /cvs/kaffe/kaffe/libraries/javalib/Makefile.am,v
retrieving revision 1.192
diff -u -r1.192 Makefile.am
--- libraries/javalib/Makefile.am	21 May 2004 12:29:07 -0000	1.192
+++ libraries/javalib/Makefile.am	30 May 2004 01:11:06 -0000
@@ -224,8 +224,8 @@
 	gnu/inet/ftp/BlockOutputStream.java \
 	gnu/inet/ftp/CompressedInputStream.java \
 	gnu/inet/ftp/CompressedOutputStream.java \
-	gnu/inet/ftp/DTPInputStream.java \
 	gnu/inet/ftp/DTP.java \
+	gnu/inet/ftp/DTPInputStream.java \
 	gnu/inet/ftp/DTPOutputStream.java \
 	gnu/inet/ftp/FTPConnection.java \
 	gnu/inet/ftp/FTPException.java \
@@ -279,10 +279,11 @@
 gnu_java_lang_reflect_SRCS = \
 	gnu/java/lang/reflect/TypeSignature.java
 gnu_java_locale_SRCS = \
+	gnu/java/locale/Calendar.java \
 	gnu/java/locale/Calendar_de.java \
 	gnu/java/locale/Calendar_en.java \
-	gnu/java/locale/Calendar.java \
 	gnu/java/locale/Calendar_nl.java \
+	gnu/java/locale/LocaleInformation.java \
 	gnu/java/locale/LocaleInformation_af_ZA.java \
 	gnu/java/locale/LocaleInformation_ar_AE.java \
 	gnu/java/locale/LocaleInformation_ar_BH.java \
@@ -309,13 +310,14 @@
 	gnu/java/locale/LocaleInformation_cs_CZ.java \
 	gnu/java/locale/LocaleInformation_cy_GB.java \
 	gnu/java/locale/LocaleInformation_da_DK.java \
+	gnu/java/locale/LocaleInformation_de.java \
 	gnu/java/locale/LocaleInformation_de_AT.java \
 	gnu/java/locale/LocaleInformation_de_BE.java \
 	gnu/java/locale/LocaleInformation_de_CH.java \
 	gnu/java/locale/LocaleInformation_de_DE.java \
-	gnu/java/locale/LocaleInformation_de.java \
 	gnu/java/locale/LocaleInformation_de_LU.java \
 	gnu/java/locale/LocaleInformation_el_GR.java \
+	gnu/java/locale/LocaleInformation_en.java \
 	gnu/java/locale/LocaleInformation_en_AU.java \
 	gnu/java/locale/LocaleInformation_en_BW.java \
 	gnu/java/locale/LocaleInformation_en_CA.java \
@@ -324,7 +326,6 @@
 	gnu/java/locale/LocaleInformation_en_HK.java \
 	gnu/java/locale/LocaleInformation_en_IE.java \
 	gnu/java/locale/LocaleInformation_en_IN.java \
-	gnu/java/locale/LocaleInformation_en.java \
 	gnu/java/locale/LocaleInformation_en_NZ.java \
 	gnu/java/locale/LocaleInformation_en_PH.java \
 	gnu/java/locale/LocaleInformation_en_SG.java \
@@ -374,7 +375,6 @@
 	gnu/java/locale/LocaleInformation_it_IT.java \
 	gnu/java/locale/LocaleInformation_iw_IL.java \
 	gnu/java/locale/LocaleInformation_ja_JP.java \
-	gnu/java/locale/LocaleInformation.java \
 	gnu/java/locale/LocaleInformation_ka_GE.java \
 	gnu/java/locale/LocaleInformation_kl_GL.java \
 	gnu/java/locale/LocaleInformation_ko_KR.java \
@@ -385,8 +385,8 @@
 	gnu/java/locale/LocaleInformation_mk_MK.java \
 	gnu/java/locale/LocaleInformation_mr_IN.java \
 	gnu/java/locale/LocaleInformation_mt_MT.java \
-	gnu/java/locale/LocaleInformation_nl_BE.java \
 	gnu/java/locale/LocaleInformation_nl.java \
+	gnu/java/locale/LocaleInformation_nl_BE.java \
 	gnu/java/locale/LocaleInformation_nl_NL.java \
 	gnu/java/locale/LocaleInformation_nn_NO.java \
 	gnu/java/locale/LocaleInformation_no_NO.java \
@@ -463,10 +463,10 @@
 	gnu/java/nio/charset/ISO_8859_1.java \
 	gnu/java/nio/charset/Provider.java \
 	gnu/java/nio/charset/US_ASCII.java \
+	gnu/java/nio/charset/UTF_16.java \
 	gnu/java/nio/charset/UTF_16BE.java \
 	gnu/java/nio/charset/UTF_16Decoder.java \
 	gnu/java/nio/charset/UTF_16Encoder.java \
-	gnu/java/nio/charset/UTF_16.java \
 	gnu/java/nio/charset/UTF_16LE.java \
 	gnu/java/nio/charset/UTF_8.java
 gnu_java_rmi_SRCS = \
@@ -486,8 +486,8 @@
 	gnu/java/rmi/rmic/Compile_kjc.java \
 	gnu/java/rmi/rmic/Compiler.java \
 	gnu/java/rmi/rmic/CompilerProcess.java \
-	gnu/java/rmi/rmic/RMICException.java \
 	gnu/java/rmi/rmic/RMIC.java \
+	gnu/java/rmi/rmic/RMICException.java \
 	gnu/java/rmi/rmic/TabbedWriter.java
 gnu_java_rmi_server_SRCS = \
 	gnu/java/rmi/server/ConnectionRunnerPool.java \
@@ -511,8 +511,8 @@
 	gnu/java/security/PolicyFile.java
 gnu_java_security_der_SRCS = \
 	gnu/java/security/der/BitString.java \
-	gnu/java/security/der/DEREncodingException.java \
 	gnu/java/security/der/DER.java \
+	gnu/java/security/der/DEREncodingException.java \
 	gnu/java/security/der/DERReader.java \
 	gnu/java/security/der/DERValue.java \
 	gnu/java/security/der/DERWriter.java
@@ -548,25 +548,25 @@
 	gnu/javax/rmi/CORBA/UtilDelegateImpl.java \
 	gnu/javax/rmi/CORBA/ValueHandlerImpl.java
 gnu_regexp_SRCS = \
+	gnu/regexp/CharIndexed.java \
 	gnu/regexp/CharIndexedCharArray.java \
 	gnu/regexp/CharIndexedInputStream.java \
-	gnu/regexp/CharIndexed.java \
 	gnu/regexp/CharIndexedReader.java \
-	gnu/regexp/CharIndexedStringBuffer.java \
 	gnu/regexp/CharIndexedString.java \
+	gnu/regexp/CharIndexedStringBuffer.java \
+	gnu/regexp/RE.java \
 	gnu/regexp/REException.java \
 	gnu/regexp/REFilterInputStream.java \
 	gnu/regexp/REFilterReader.java \
-	gnu/regexp/RE.java \
-	gnu/regexp/REMatchEnumeration.java \
 	gnu/regexp/REMatch.java \
+	gnu/regexp/REMatchEnumeration.java \
 	gnu/regexp/RESyntax.java \
+	gnu/regexp/REToken.java \
 	gnu/regexp/RETokenAny.java \
 	gnu/regexp/RETokenBackRef.java \
 	gnu/regexp/RETokenChar.java \
 	gnu/regexp/RETokenEnd.java \
 	gnu/regexp/RETokenEndSub.java \
-	gnu/regexp/REToken.java \
 	gnu/regexp/RETokenLookAhead.java \
 	gnu/regexp/RETokenOneOf.java \
 	gnu/regexp/RETokenPOSIX.java \
@@ -609,10 +609,10 @@
 	gnu/xml/libxmlj/dom/GnomeCDATASection.java \
 	gnu/xml/libxmlj/dom/GnomeCharacterData.java \
 	gnu/xml/libxmlj/dom/GnomeComment.java \
-	gnu/xml/libxmlj/dom/GnomeDocumentBuilderFactory.java \
+	gnu/xml/libxmlj/dom/GnomeDocument.java \
 	gnu/xml/libxmlj/dom/GnomeDocumentBuilder.java \
+	gnu/xml/libxmlj/dom/GnomeDocumentBuilderFactory.java \
 	gnu/xml/libxmlj/dom/GnomeDocumentFragment.java \
-	gnu/xml/libxmlj/dom/GnomeDocument.java \
 	gnu/xml/libxmlj/dom/GnomeDocumentType.java \
 	gnu/xml/libxmlj/dom/GnomeElement.java \
 	gnu/xml/libxmlj/dom/GnomeEntity.java \
@@ -626,8 +626,8 @@
 	gnu/xml/libxmlj/dom/MatchingNodeList.java
 gnu_xml_libxmlj_sax_SRCS = \
 	gnu/xml/libxmlj/sax/GnomeLocator.java \
-	gnu/xml/libxmlj/sax/GnomeSAXParserFactory.java \
 	gnu/xml/libxmlj/sax/GnomeSAXParser.java \
+	gnu/xml/libxmlj/sax/GnomeSAXParserFactory.java \
 	gnu/xml/libxmlj/sax/GnomeXMLReader.java \
 	gnu/xml/libxmlj/sax/Namespaces.java \
 	gnu/xml/libxmlj/sax/StringArrayAttributes.java \
@@ -643,9 +643,9 @@
 	gnu/xml/libxmlj/transform/SourceLocatorImpl.java \
 	gnu/xml/libxmlj/transform/SourceWrapper.java \
 	gnu/xml/libxmlj/transform/TemplatesImpl.java \
+	gnu/xml/libxmlj/transform/TransformTest.java \
 	gnu/xml/libxmlj/transform/TransformerFactoryImpl.java \
 	gnu/xml/libxmlj/transform/TransformerImpl.java \
-	gnu/xml/libxmlj/transform/TransformTest.java \
 	gnu/xml/libxmlj/transform/URIResolverProxy.java
 gnu_xml_libxmlj_util_SRCS = \
 	gnu/xml/libxmlj/util/EmptyNodeList.java \
@@ -666,30 +666,30 @@
 	gnu/xml/pipeline/XIncludeFilter.java \
 	gnu/xml/pipeline/XsltFilter.java
 gnu_xml_util_SRCS = \
-	gnu/xml/util/DomParser.java \
 	gnu/xml/util/DoParse.java \
+	gnu/xml/util/DomParser.java \
 	gnu/xml/util/Resolver.java \
 	gnu/xml/util/SAXNullTransformerFactory.java \
 	gnu/xml/util/XCat.java \
 	gnu/xml/util/XHTMLWriter.java \
 	gnu/xml/util/XMLWriter.java
 java_applet_SRCS = \
-	java/applet/AppletContext.java \
 	java/applet/Applet.java \
+	java/applet/AppletContext.java \
 	java/applet/AppletStub.java \
 	java/applet/AudioClip.java
 java_awt_SRCS = \
+	java/awt/AWTError.java \
+	java/awt/AWTEvent.java \
+	java/awt/AWTEventMulticaster.java \
+	java/awt/AWTException.java \
+	java/awt/AWTPermission.java \
 	java/awt/ActionEvt.java \
 	java/awt/ActiveEvent.java \
 	java/awt/Adjustable.java \
 	java/awt/AdjustmentEvt.java \
 	java/awt/AlphaComposite.java \
 	java/awt/AttributeValue.java \
-	java/awt/AWTError.java \
-	java/awt/AWTEvent.java \
-	java/awt/AWTEventMulticaster.java \
-	java/awt/AWTException.java \
-	java/awt/AWTPermission.java \
 	java/awt/BarMenu.java \
 	java/awt/BasicStroke.java \
 	java/awt/BorderLayout.java \
@@ -697,55 +697,55 @@
 	java/awt/Button.java \
 	java/awt/Canvas.java \
 	java/awt/CardLayout.java \
-	java/awt/CheckboxGroup.java \
 	java/awt/Checkbox.java \
+	java/awt/CheckboxGroup.java \
 	java/awt/CheckboxMenuItem.java \
 	java/awt/Choice.java \
 	java/awt/ClassAnalyzer.java \
 	java/awt/ClassProperties.java \
 	java/awt/Color.java \
 	java/awt/ColorPaintContext.java \
-	java/awt/ComponentEvt.java \
 	java/awt/Component.java \
+	java/awt/ComponentEvt.java \
 	java/awt/ComponentOrientation.java \
-	java/awt/CompositeContext.java \
 	java/awt/Composite.java \
-	java/awt/ContainerEvt.java \
+	java/awt/CompositeContext.java \
 	java/awt/Container.java \
+	java/awt/ContainerEvt.java \
 	java/awt/Cursor.java \
-	java/awt/Defaults.java \
 	java/awt/DefKeyFilter.java \
+	java/awt/Defaults.java \
 	java/awt/Dialog.java \
 	java/awt/Dimension.java \
 	java/awt/DisplayMode.java \
-	java/awt/EventDispatchThread.java \
 	java/awt/Event.java \
+	java/awt/EventDispatchThread.java \
 	java/awt/EventQueue.java \
 	java/awt/FileDialog.java \
 	java/awt/FlowLayout.java \
 	java/awt/FocusEvt.java \
 	java/awt/FocusTraversalPolicy.java \
-	java/awt/FontFormatException.java \
 	java/awt/Font.java \
+	java/awt/FontFormatException.java \
 	java/awt/FontMetrics.java \
 	java/awt/Frame.java \
 	java/awt/GradientPaint.java \
+	java/awt/Graphics.java \
 	java/awt/Graphics2D.java \
 	java/awt/GraphicsConfigTemplate.java \
 	java/awt/GraphicsConfiguration.java \
 	java/awt/GraphicsDevice.java \
 	java/awt/GraphicsEnvironment.java \
-	java/awt/Graphics.java \
 	java/awt/GraphicsLink.java \
 	java/awt/GridBagConstraints.java \
-	java/awt/GridBagLayoutInfo.java \
 	java/awt/GridBagLayout.java \
+	java/awt/GridBagLayoutInfo.java \
 	java/awt/GridLayout.java \
 	java/awt/HeadlessException.java \
 	java/awt/IllegalComponentStateException.java \
+	java/awt/Image.java \
 	java/awt/ImageCapabilities.java \
 	java/awt/ImageFrameLoader.java \
-	java/awt/Image.java \
 	java/awt/ImageLoader.java \
 	java/awt/ImageNativeProducer.java \
 	java/awt/Insets.java \
@@ -756,25 +756,27 @@
 	java/awt/KeyEventPostProcessor.java \
 	java/awt/KeyEvt.java \
 	java/awt/Label.java \
-	java/awt/LayoutManager2.java \
 	java/awt/LayoutManager.java \
+	java/awt/LayoutManager2.java \
 	java/awt/List.java \
 	java/awt/MediaTracker.java \
+	java/awt/Menu.java \
 	java/awt/MenuBar.java \
 	java/awt/MenuComponent.java \
 	java/awt/MenuContainer.java \
 	java/awt/MenuItem.java \
-	java/awt/Menu.java \
 	java/awt/MenuShortcut.java \
 	java/awt/MouseEvt.java \
 	java/awt/NativeClipboard.java \
 	java/awt/NativeGraphics.java \
 	java/awt/NativeSelection.java \
 	java/awt/OpaqueComponent.java \
+	java/awt/PSGraphics.java \
+	java/awt/PSPrintJob.java \
 	java/awt/PageAttributes.java \
+	java/awt/Paint.java \
 	java/awt/PaintContext.java \
 	java/awt/PaintEvt.java \
-	java/awt/Paint.java \
 	java/awt/Panel.java \
 	java/awt/Point.java \
 	java/awt/Polygon.java \
@@ -782,16 +784,14 @@
 	java/awt/PopupWindow.java \
 	java/awt/PrintGraphics.java \
 	java/awt/PrintJob.java \
-	java/awt/PSGraphics.java \
-	java/awt/PSPrintJob.java \
 	java/awt/Rectangle.java \
 	java/awt/RenderingHints.java \
 	java/awt/Robot.java \
 	java/awt/RootWindow.java \
 	java/awt/RowCanvas.java \
-	java/awt/Scrollbar.java \
-	java/awt/ScrollPaneAdjustable.java \
 	java/awt/ScrollPane.java \
+	java/awt/ScrollPaneAdjustable.java \
+	java/awt/Scrollbar.java \
 	java/awt/Shape.java \
 	java/awt/ShortcutConsumer.java \
 	java/awt/ShortcutHandler.java \
@@ -806,15 +806,15 @@
 	java/awt/TexturePaint.java \
 	java/awt/Toolkit.java \
 	java/awt/Transparency.java \
-	java/awt/WindowEvt.java \
+	java/awt/WMEvent.java \
 	java/awt/Window.java \
-	java/awt/WMEvent.java
+	java/awt/WindowEvt.java
 java_awt_color_SRCS = \
 	java/awt/color/CMMException.java \
 	java/awt/color/ColorSpace.java \
 	java/awt/color/ICC_ColorSpace.java \
-	java/awt/color/ICC_ProfileGray.java \
 	java/awt/color/ICC_Profile.java \
+	java/awt/color/ICC_ProfileGray.java \
 	java/awt/color/ICC_ProfileRGB.java \
 	java/awt/color/ProfileDataException.java
 java_awt_datatransfer_SRCS = \
@@ -835,20 +835,20 @@
 	java/awt/dnd/DragGestureEvent.java \
 	java/awt/dnd/DragGestureListener.java \
 	java/awt/dnd/DragGestureRecognizer.java \
+	java/awt/dnd/DragSource.java \
 	java/awt/dnd/DragSourceAdapter.java \
 	java/awt/dnd/DragSourceContext.java \
 	java/awt/dnd/DragSourceDragEvent.java \
 	java/awt/dnd/DragSourceDropEvent.java \
 	java/awt/dnd/DragSourceEvent.java \
-	java/awt/dnd/DragSource.java \
 	java/awt/dnd/DragSourceListener.java \
 	java/awt/dnd/DragSourceMotionListener.java \
+	java/awt/dnd/DropTarget.java \
 	java/awt/dnd/DropTargetAdapter.java \
 	java/awt/dnd/DropTargetContext.java \
 	java/awt/dnd/DropTargetDragEvent.java \
 	java/awt/dnd/DropTargetDropEvent.java \
 	java/awt/dnd/DropTargetEvent.java \
-	java/awt/dnd/DropTarget.java \
 	java/awt/dnd/DropTargetListener.java \
 	java/awt/dnd/InvalidDnDOperationException.java \
 	java/awt/dnd/MouseDragGestureRecognizer.java
@@ -857,11 +857,11 @@
 	java/awt/dnd/peer/DropTargetContextPeer.java \
 	java/awt/dnd/peer/DropTargetPeer.java
 java_awt_event_SRCS = \
+	java/awt/event/AWTEventListener.java \
 	java/awt/event/ActionEvent.java \
 	java/awt/event/ActionListener.java \
 	java/awt/event/AdjustmentEvent.java \
 	java/awt/event/AdjustmentListener.java \
-	java/awt/event/AWTEventListener.java \
 	java/awt/event/ComponentAdapter.java \
 	java/awt/event/ComponentEvent.java \
 	java/awt/event/ComponentListener.java \
@@ -941,18 +941,18 @@
 	java/awt/im/InputSubset.java
 java_awt_image_SRCS = \
 	java/awt/image/AreaAveragingScaleFilter.java \
+	java/awt/image/BufferStrategy.java \
 	java/awt/image/BufferedImage.java \
 	java/awt/image/BufferedImageOp.java \
-	java/awt/image/BufferStrategy.java \
 	java/awt/image/ColorModel.java \
 	java/awt/image/ComponentColorModel.java \
 	java/awt/image/ComponentSampleModel.java \
 	java/awt/image/CropImageFilter.java \
+	java/awt/image/DataBuffer.java \
 	java/awt/image/DataBufferByte.java \
 	java/awt/image/DataBufferDouble.java \
 	java/awt/image/DataBufferFloat.java \
 	java/awt/image/DataBufferInt.java \
-	java/awt/image/DataBuffer.java \
 	java/awt/image/DataBufferShort.java \
 	java/awt/image/DataBufferUShort.java \
 	java/awt/image/DirectColorModel.java \
@@ -967,12 +967,12 @@
 	java/awt/image/PackedColorModel.java \
 	java/awt/image/PixelGrabber.java \
 	java/awt/image/PixelInterleavedSampleModel.java \
-	java/awt/image/RasterFormatException.java \
+	java/awt/image/RGBImageFilter.java \
 	java/awt/image/Raster.java \
+	java/awt/image/RasterFormatException.java \
 	java/awt/image/RasterOp.java \
 	java/awt/image/RenderedImage.java \
 	java/awt/image/ReplicateScaleFilter.java \
-	java/awt/image/RGBImageFilter.java \
 	java/awt/image/SampleModel.java \
 	java/awt/image/SinglePixelPackedSampleModel.java \
 	java/awt/image/TileObserver.java \
@@ -982,10 +982,10 @@
 java_awt_image_renderable_SRCS = \
 	java/awt/image/renderable/ContextualRenderedImageFactory.java \
 	java/awt/image/renderable/ParameterBlock.java \
+	java/awt/image/renderable/RenderContext.java \
 	java/awt/image/renderable/RenderableImage.java \
 	java/awt/image/renderable/RenderableImageOp.java \
 	java/awt/image/renderable/RenderableImageProducer.java \
-	java/awt/image/renderable/RenderContext.java \
 	java/awt/image/renderable/RenderedImageFactory.java
 java_awt_peer_SRCS = \
 	java/awt/peer/ButtonPeer.java \
@@ -1009,16 +1009,16 @@
 	java/awt/peer/PanelPeer.java \
 	java/awt/peer/PopupMenuPeer.java \
 	java/awt/peer/RobotPeer.java \
-	java/awt/peer/ScrollbarPeer.java \
 	java/awt/peer/ScrollPanePeer.java \
+	java/awt/peer/ScrollbarPeer.java \
 	java/awt/peer/TextAreaPeer.java \
 	java/awt/peer/TextComponentPeer.java \
 	java/awt/peer/TextFieldPeer.java \
 	java/awt/peer/WindowPeer.java
 java_awt_print_SRCS = \
 	java/awt/print/Book.java \
-	java/awt/print/Pageable.java \
 	java/awt/print/PageFormat.java \
+	java/awt/print/Pageable.java \
 	java/awt/print/Paper.java \
 	java/awt/print/Printable.java \
 	java/awt/print/PrinterAbortException.java \
@@ -1057,18 +1057,18 @@
 	java/beans/VetoableChangeSupport.java \
 	java/beans/Visibility.java
 java_beans_beancontext_SRCS = \
-	java/beans/beancontext/BeanContextChildComponentProxy.java \
+	java/beans/beancontext/BeanContext.java \
 	java/beans/beancontext/BeanContextChild.java \
+	java/beans/beancontext/BeanContextChildComponentProxy.java \
 	java/beans/beancontext/BeanContextChildSupport.java \
 	java/beans/beancontext/BeanContextContainerProxy.java \
 	java/beans/beancontext/BeanContextEvent.java \
-	java/beans/beancontext/BeanContext.java \
 	java/beans/beancontext/BeanContextMembershipEvent.java \
 	java/beans/beancontext/BeanContextMembershipListener.java \
 	java/beans/beancontext/BeanContextProxy.java \
 	java/beans/beancontext/BeanContextServiceAvailableEvent.java \
-	java/beans/beancontext/BeanContextServiceProviderBeanInfo.java \
 	java/beans/beancontext/BeanContextServiceProvider.java \
+	java/beans/beancontext/BeanContextServiceProviderBeanInfo.java \
 	java/beans/beancontext/BeanContextServiceRevokedEvent.java \
 	java/beans/beancontext/BeanContextServiceRevokedListener.java \
 	java/beans/beancontext/BeanContextServices.java \
@@ -1092,26 +1092,26 @@
 	java/io/DeleteFileHelper.java \
 	java/io/EOFException.java \
 	java/io/Externalizable.java \
+	java/io/File.java \
 	java/io/FileDescriptor.java \
 	java/io/FileFilter.java \
 	java/io/FileInputStream.java \
-	java/io/File.java \
-	java/io/FilenameFilter.java \
 	java/io/FileNotFoundException.java \
 	java/io/FileOutputStream.java \
 	java/io/FilePermission.java \
 	java/io/FileReader.java \
 	java/io/FileWriter.java \
+	java/io/FilenameFilter.java \
 	java/io/FilterInputStream.java \
 	java/io/FilterOutputStream.java \
 	java/io/FilterReader.java \
 	java/io/FilterWriter.java \
+	java/io/IOException.java \
 	java/io/InputStream.java \
 	java/io/InputStreamReader.java \
 	java/io/InterruptedIOException.java \
 	java/io/InvalidClassException.java \
 	java/io/InvalidObjectException.java \
-	java/io/IOException.java \
 	java/io/LineNumberInputStream.java \
 	java/io/LineNumberReader.java \
 	java/io/NotActiveException.java \
@@ -1147,8 +1147,8 @@
 	java/io/StringReader.java \
 	java/io/StringWriter.java \
 	java/io/SyncFailedException.java \
-	java/io/UnsupportedEncodingException.java \
 	java/io/UTFDataFormatException.java \
+	java/io/UnsupportedEncodingException.java \
 	java/io/VMFile.java \
 	java/io/VMObjectStreamClass.java \
 	java/io/WriteAbortedException.java \
@@ -1161,22 +1161,22 @@
 	java/lang/AssertionError.java \
 	java/lang/Boolean.java \
 	java/lang/Byte.java \
-	java/lang/Character.java \
 	java/lang/CharSequence.java \
+	java/lang/Character.java \
+	java/lang/Class.java \
 	java/lang/ClassCastException.java \
 	java/lang/ClassCircularityError.java \
 	java/lang/ClassFormatError.java \
-	java/lang/Class.java \
 	java/lang/ClassLoader.java \
 	java/lang/ClassNotFoundException.java \
-	java/lang/Cloneable.java \
 	java/lang/CloneNotSupportedException.java \
+	java/lang/Cloneable.java \
 	java/lang/Comparable.java \
 	java/lang/Compiler.java \
 	java/lang/Double.java \
 	java/lang/Error.java \
-	java/lang/ExceptionInInitializerError.java \
 	java/lang/Exception.java \
+	java/lang/ExceptionInInitializerError.java \
 	java/lang/Float.java \
 	java/lang/IllegalAccessError.java \
 	java/lang/IllegalAccessException.java \
@@ -1203,16 +1203,16 @@
 	java/lang/NoSuchMethodError.java \
 	java/lang/NoSuchMethodException.java \
 	java/lang/NullPointerException.java \
-	java/lang/NumberFormatException.java \
 	java/lang/Number.java \
+	java/lang/NumberFormatException.java \
 	java/lang/Object.java \
 	java/lang/OutOfMemoryError.java \
 	java/lang/Package.java \
-	java/lang/ProcessInputStream.java \
 	java/lang/Process.java \
+	java/lang/ProcessInputStream.java \
 	java/lang/Runnable.java \
-	java/lang/RuntimeException.java \
 	java/lang/Runtime.java \
+	java/lang/RuntimeException.java \
 	java/lang/RuntimePermission.java \
 	java/lang/SecurityException.java \
 	java/lang/SecurityManager.java \
@@ -1220,23 +1220,23 @@
 	java/lang/StackOverflowError.java \
 	java/lang/StackTraceElement.java \
 	java/lang/StrictMath.java \
+	java/lang/String.java \
 	java/lang/StringBuffer.java \
 	java/lang/StringIndexOutOfBoundsException.java \
-	java/lang/String.java \
 	java/lang/System.java \
+	java/lang/Thread.java \
 	java/lang/ThreadDeath.java \
 	java/lang/ThreadGroup.java \
-	java/lang/Thread.java \
 	java/lang/ThreadLocal.java \
 	java/lang/Throwable.java \
 	java/lang/UnknownError.java \
 	java/lang/UnsatisfiedLinkError.java \
 	java/lang/UnsupportedClassVersionError.java \
 	java/lang/UnsupportedOperationException.java \
-	java/lang/VerifyError.java \
-	java/lang/VirtualMachineError.java \
 	java/lang/VMSecurityManager.java \
 	java/lang/VMThrowable.java \
+	java/lang/VerifyError.java \
+	java/lang/VirtualMachineError.java \
 	java/lang/Void.java
 java_lang_ref_SRCS = \
 	java/lang/ref/PhantomReference.java \
@@ -1264,12 +1264,12 @@
 	java/net/Authenticator.java \
 	java/net/BindException.java \
 	java/net/ConnectException.java \
-	java/net/ContentHandlerFactory.java \
 	java/net/ContentHandler.java \
+	java/net/ContentHandlerFactory.java \
 	java/net/DatagramPacket.java \
-	java/net/DatagramSocketImplFactory.java \
-	java/net/DatagramSocketImpl.java \
 	java/net/DatagramSocket.java \
+	java/net/DatagramSocketImpl.java \
+	java/net/DatagramSocketImplFactory.java \
 	java/net/FileNameMap.java \
 	java/net/HttpURLConnection.java \
 	java/net/Inet4Address.java \
@@ -1287,55 +1287,55 @@
 	java/net/PortUnreachableException.java \
 	java/net/ProtocolException.java \
 	java/net/ServerSocket.java \
+	java/net/Socket.java \
 	java/net/SocketAddress.java \
 	java/net/SocketException.java \
-	java/net/SocketImplFactory.java \
 	java/net/SocketImpl.java \
-	java/net/Socket.java \
+	java/net/SocketImplFactory.java \
 	java/net/SocketOptions.java \
 	java/net/SocketPermission.java \
 	java/net/SocketTimeoutException.java \
-	java/net/UnknownHostException.java \
-	java/net/UnknownServiceException.java \
 	java/net/URI.java \
 	java/net/URISyntaxException.java \
+	java/net/URL.java \
 	java/net/URLClassLoader.java \
 	java/net/URLConnection.java \
 	java/net/URLDecoder.java \
 	java/net/URLEncoder.java \
-	java/net/URL.java \
+	java/net/URLStreamHandler.java \
 	java/net/URLStreamHandlerFactory.java \
-	java/net/URLStreamHandler.java
+	java/net/UnknownHostException.java \
+	java/net/UnknownServiceException.java
 java_nio_SRCS = \
 	java/nio/Buffer.java \
 	java/nio/BufferOverflowException.java \
 	java/nio/BufferUnderflowException.java \
+	java/nio/ByteBuffer.java \
 	java/nio/ByteBufferHelper.java \
 	java/nio/ByteBufferImpl.java \
-	java/nio/ByteBuffer.java \
 	java/nio/ByteOrder.java \
-	java/nio/CharBufferImpl.java \
 	java/nio/CharBuffer.java \
+	java/nio/CharBufferImpl.java \
 	java/nio/CharViewBufferImpl.java \
 	java/nio/DirectByteBufferImpl.java \
-	java/nio/DoubleBufferImpl.java \
 	java/nio/DoubleBuffer.java \
+	java/nio/DoubleBufferImpl.java \
 	java/nio/DoubleViewBufferImpl.java \
-	java/nio/FloatBufferImpl.java \
 	java/nio/FloatBuffer.java \
+	java/nio/FloatBufferImpl.java \
 	java/nio/FloatViewBufferImpl.java \
-	java/nio/IntBufferImpl.java \
 	java/nio/IntBuffer.java \
+	java/nio/IntBufferImpl.java \
 	java/nio/IntViewBufferImpl.java \
 	java/nio/InvalidMarkException.java \
-	java/nio/LongBufferImpl.java \
 	java/nio/LongBuffer.java \
+	java/nio/LongBufferImpl.java \
 	java/nio/LongViewBufferImpl.java \
-	java/nio/MappedByteBufferImpl.java \
 	java/nio/MappedByteBuffer.java \
+	java/nio/MappedByteBufferImpl.java \
 	java/nio/ReadOnlyBufferException.java \
-	java/nio/ShortBufferImpl.java \
 	java/nio/ShortBuffer.java \
+	java/nio/ShortBufferImpl.java \
 	java/nio/ShortViewBufferImpl.java
 java_nio_channels_SRCS = \
 	java/nio/channels/AlreadyConnectedException.java \
@@ -1350,8 +1350,8 @@
 	java/nio/channels/ConnectionPendingException.java \
 	java/nio/channels/DatagramChannel.java \
 	java/nio/channels/FileChannel.java \
-	java/nio/channels/FileLockInterruptionException.java \
 	java/nio/channels/FileLock.java \
+	java/nio/channels/FileLockInterruptionException.java \
 	java/nio/channels/GatheringByteChannel.java \
 	java/nio/channels/IllegalBlockingModeException.java \
 	java/nio/channels/IllegalSelectorException.java \
@@ -1381,9 +1381,9 @@
 	java/nio/channels/spi/SelectorProvider.java
 java_nio_charset_SRCS = \
 	java/nio/charset/CharacterCodingException.java \
+	java/nio/charset/Charset.java \
 	java/nio/charset/CharsetDecoder.java \
 	java/nio/charset/CharsetEncoder.java \
-	java/nio/charset/Charset.java \
 	java/nio/charset/CoderMalfunctionError.java \
 	java/nio/charset/CoderResult.java \
 	java/nio/charset/CodingErrorAction.java \
@@ -1403,10 +1403,10 @@
 	java/rmi/Naming.java \
 	java/rmi/NoSuchObjectException.java \
 	java/rmi/NotBoundException.java \
-	java/rmi/RemoteException.java \
-	java/rmi/Remote.java \
 	java/rmi/RMISecurityException.java \
 	java/rmi/RMISecurityManager.java \
+	java/rmi/Remote.java \
+	java/rmi/RemoteException.java \
 	java/rmi/ServerError.java \
 	java/rmi/ServerException.java \
 	java/rmi/ServerRuntimeException.java \
@@ -1419,9 +1419,9 @@
 	java/rmi/activation/ActivateFailedException.java \
 	java/rmi/activation/ActivationDesc.java \
 	java/rmi/activation/ActivationException.java \
+	java/rmi/activation/ActivationGroup.java \
 	java/rmi/activation/ActivationGroupDesc.java \
 	java/rmi/activation/ActivationGroupID.java \
-	java/rmi/activation/ActivationGroup.java \
 	java/rmi/activation/ActivationID.java \
 	java/rmi/activation/ActivationInstantiator.java \
 	java/rmi/activation/ActivationMonitor.java \
@@ -1435,25 +1435,25 @@
 	java/rmi/dgc/VMID.java
 java_rmi_registry_SRCS = \
 	java/rmi/registry/LocateRegistry.java \
-	java/rmi/registry/RegistryHandler.java \
-	java/rmi/registry/Registry.java
+	java/rmi/registry/Registry.java \
+	java/rmi/registry/RegistryHandler.java
 java_rmi_server_SRCS = \
 	java/rmi/server/ExportException.java \
 	java/rmi/server/LoaderHandler.java \
 	java/rmi/server/LogStream.java \
 	java/rmi/server/ObjID.java \
 	java/rmi/server/Operation.java \
-	java/rmi/server/RemoteCall.java \
-	java/rmi/server/RemoteObject.java \
-	java/rmi/server/RemoteRef.java \
-	java/rmi/server/RemoteServer.java \
-	java/rmi/server/RemoteStub.java \
 	java/rmi/server/RMIClassLoader.java \
 	java/rmi/server/RMIClassLoaderSpi.java \
 	java/rmi/server/RMIClientSocketFactory.java \
 	java/rmi/server/RMIFailureHandler.java \
 	java/rmi/server/RMIServerSocketFactory.java \
 	java/rmi/server/RMISocketFactory.java \
+	java/rmi/server/RemoteCall.java \
+	java/rmi/server/RemoteObject.java \
+	java/rmi/server/RemoteRef.java \
+	java/rmi/server/RemoteServer.java \
+	java/rmi/server/RemoteStub.java \
 	java/rmi/server/ServerCloneException.java \
 	java/rmi/server/ServerNotActiveException.java \
 	java/rmi/server/ServerRef.java \
@@ -1481,56 +1481,58 @@
 	java/security/DigestOutputStream.java \
 	java/security/DomainCombiner.java \
 	java/security/GeneralSecurityException.java \
-	java/security/GuardedObject.java \
 	java/security/Guard.java \
+	java/security/GuardedObject.java \
 	java/security/Identity.java \
 	java/security/IdentityScope.java \
+	java/security/IntersectingDomainCombiner.java \
 	java/security/InvalidAlgorithmParameterException.java \
 	java/security/InvalidKeyException.java \
 	java/security/InvalidParameterException.java \
+	java/security/Key.java \
 	java/security/KeyException.java \
 	java/security/KeyFactory.java \
 	java/security/KeyFactorySpi.java \
-	java/security/Key.java \
 	java/security/KeyManagementException.java \
+	java/security/KeyPair.java \
 	java/security/KeyPairGenerator.java \
 	java/security/KeyPairGeneratorSpi.java \
-	java/security/KeyPair.java \
-	java/security/KeyStoreException.java \
 	java/security/KeyStore.java \
+	java/security/KeyStoreException.java \
 	java/security/KeyStoreSpi.java \
 	java/security/MessageDigest.java \
 	java/security/MessageDigestSpi.java \
 	java/security/NoSuchAlgorithmException.java \
 	java/security/NoSuchProviderException.java \
-	java/security/PermissionCollection.java \
 	java/security/Permission.java \
+	java/security/PermissionCollection.java \
 	java/security/Permissions.java \
 	java/security/Policy.java \
 	java/security/Principal.java \
 	java/security/PrivateKey.java \
-	java/security/PrivilegedActionException.java \
 	java/security/PrivilegedAction.java \
+	java/security/PrivilegedActionException.java \
 	java/security/PrivilegedExceptionAction.java \
 	java/security/ProtectionDomain.java \
-	java/security/ProviderException.java \
 	java/security/Provider.java \
+	java/security/ProviderException.java \
 	java/security/PublicKey.java \
 	java/security/SecureClassLoader.java \
 	java/security/SecureRandom.java \
 	java/security/SecureRandomSpi.java \
 	java/security/Security.java \
 	java/security/SecurityPermission.java \
-	java/security/SignatureException.java \
 	java/security/Signature.java \
+	java/security/SignatureException.java \
 	java/security/SignatureSpi.java \
 	java/security/SignedObject.java \
 	java/security/Signer.java \
 	java/security/UnrecoverableKeyException.java \
-	java/security/UnresolvedPermission.java
+	java/security/UnresolvedPermission.java \
+	java/security/VMAccessController.java
 java_security_acl_SRCS = \
-	java/security/acl/AclEntry.java \
 	java/security/acl/Acl.java \
+	java/security/acl/AclEntry.java \
 	java/security/acl/AclNotFoundException.java \
 	java/security/acl/Group.java \
 	java/security/acl/LastOwnerException.java \
@@ -1538,33 +1540,33 @@
 	java/security/acl/Owner.java \
 	java/security/acl/Permission.java
 java_security_cert_SRCS = \
-	java/security/cert/CertificateEncodingException.java \
-	java/security/cert/CertificateException.java \
-	java/security/cert/CertificateExpiredException.java \
-	java/security/cert/CertificateFactory.java \
-	java/security/cert/CertificateFactorySpi.java \
-	java/security/cert/Certificate.java \
-	java/security/cert/CertificateNotYetValidException.java \
-	java/security/cert/CertificateParsingException.java \
-	java/security/cert/CertPathBuilderException.java \
+	java/security/cert/CRL.java \
+	java/security/cert/CRLException.java \
+	java/security/cert/CRLSelector.java \
+	java/security/cert/CertPath.java \
 	java/security/cert/CertPathBuilder.java \
+	java/security/cert/CertPathBuilderException.java \
 	java/security/cert/CertPathBuilderResult.java \
 	java/security/cert/CertPathBuilderSpi.java \
-	java/security/cert/CertPath.java \
 	java/security/cert/CertPathParameters.java \
-	java/security/cert/CertPathValidatorException.java \
 	java/security/cert/CertPathValidator.java \
+	java/security/cert/CertPathValidatorException.java \
 	java/security/cert/CertPathValidatorResult.java \
 	java/security/cert/CertPathValidatorSpi.java \
 	java/security/cert/CertSelector.java \
-	java/security/cert/CertStoreException.java \
 	java/security/cert/CertStore.java \
+	java/security/cert/CertStoreException.java \
 	java/security/cert/CertStoreParameters.java \
 	java/security/cert/CertStoreSpi.java \
+	java/security/cert/Certificate.java \
+	java/security/cert/CertificateEncodingException.java \
+	java/security/cert/CertificateException.java \
+	java/security/cert/CertificateExpiredException.java \
+	java/security/cert/CertificateFactory.java \
+	java/security/cert/CertificateFactorySpi.java \
+	java/security/cert/CertificateNotYetValidException.java \
+	java/security/cert/CertificateParsingException.java \
 	java/security/cert/CollectionCertStoreParameters.java \
-	java/security/cert/CRLException.java \
-	java/security/cert/CRL.java \
-	java/security/cert/CRLSelector.java \
 	java/security/cert/LDAPCertStoreParameters.java \
 	java/security/cert/PKIXBuilderParameters.java \
 	java/security/cert/PKIXCertPathBuilderResult.java \
@@ -1574,9 +1576,9 @@
 	java/security/cert/PolicyNode.java \
 	java/security/cert/PolicyQualifierInfo.java \
 	java/security/cert/TrustAnchor.java \
-	java/security/cert/X509Certificate.java \
-	java/security/cert/X509CRLEntry.java \
 	java/security/cert/X509CRL.java \
+	java/security/cert/X509CRLEntry.java \
+	java/security/cert/X509Certificate.java \
 	java/security/cert/X509Extension.java
 java_security_interfaces_SRCS = \
 	java/security/interfaces/DSAKey.java \
@@ -1614,8 +1616,8 @@
 	java/sql/CallableStatement.java \
 	java/sql/Clob.java \
 	java/sql/Connection.java \
-	java/sql/DatabaseMetaData.java \
 	java/sql/DataTruncation.java \
+	java/sql/DatabaseMetaData.java \
 	java/sql/Date.java \
 	java/sql/Driver.java \
 	java/sql/DriverManager.java \
@@ -1625,13 +1627,13 @@
 	java/sql/Ref.java \
 	java/sql/ResultSet.java \
 	java/sql/ResultSetMetaData.java \
-	java/sql/Savepoint.java \
 	java/sql/SQLData.java \
 	java/sql/SQLException.java \
 	java/sql/SQLInput.java \
 	java/sql/SQLOutput.java \
 	java/sql/SQLPermission.java \
 	java/sql/SQLWarning.java \
+	java/sql/Savepoint.java \
 	java/sql/Statement.java \
 	java/sql/Struct.java \
 	java/sql/Time.java \
@@ -1640,8 +1642,8 @@
 java_text_SRCS = \
 	java/text/Annotation.java \
 	java/text/AttributedCharacterIterator.java \
-	java/text/AttributedStringIterator.java \
 	java/text/AttributedString.java \
+	java/text/AttributedStringIterator.java \
 	java/text/BreakIterator.java \
 	java/text/CharacterIterator.java \
 	java/text/ChoiceFormat.java \
@@ -1692,8 +1694,8 @@
 	java/util/LinkedHashMap.java \
 	java/util/LinkedHashSet.java \
 	java/util/LinkedList.java \
-	java/util/ListIterator.java \
 	java/util/List.java \
+	java/util/ListIterator.java \
 	java/util/ListResourceBundle.java \
 	java/util/Locale.java \
 	java/util/Map.java \
@@ -1702,11 +1704,11 @@
 	java/util/Observable.java \
 	java/util/Observer.java \
 	java/util/Properties.java \
-	java/util/PropertyPermissionCollection.java \
 	java/util/PropertyPermission.java \
+	java/util/PropertyPermissionCollection.java \
 	java/util/PropertyResourceBundle.java \
-	java/util/RandomAccess.java \
 	java/util/Random.java \
+	java/util/RandomAccess.java \
 	java/util/ResourceBundle.java \
 	java/util/Set.java \
 	java/util/SimpleTimeZone.java \
@@ -1714,9 +1716,9 @@
 	java/util/SortedSet.java \
 	java/util/Stack.java \
 	java/util/StringTokenizer.java \
+	java/util/TimeZone.java \
 	java/util/Timer.java \
 	java/util/TimerTask.java \
-	java/util/TimeZone.java \
 	java/util/TooManyListenersException.java \
 	java/util/TreeMap.java \
 	java/util/TreeSet.java \
@@ -1738,10 +1740,10 @@
 	java/util/logging/Formatter.java \
 	java/util/logging/Handler.java \
 	java/util/logging/Level.java \
-	java/util/logging/Logger.java \
-	java/util/logging/LoggingPermission.java \
 	java/util/logging/LogManager.java \
 	java/util/logging/LogRecord.java \
+	java/util/logging/Logger.java \
+	java/util/logging/LoggingPermission.java \
 	java/util/logging/MemoryHandler.java \
 	java/util/logging/SimpleFormatter.java \
 	java/util/logging/SocketHandler.java \
@@ -1759,25 +1761,25 @@
 	java/util/prefs/NodeChangeListener.java \
 	java/util/prefs/PreferenceChangeEvent.java \
 	java/util/prefs/PreferenceChangeListener.java \
-	java/util/prefs/PreferencesFactory.java \
-	java/util/prefs/Preferences.java
+	java/util/prefs/Preferences.java \
+	java/util/prefs/PreferencesFactory.java
 java_util_regex_SRCS = \
 	java/util/regex/Matcher.java \
 	java/util/regex/Pattern.java \
 	java/util/regex/PatternSyntaxException.java
 java_util_zip_SRCS = \
 	java/util/zip/Adler32.java \
+	java/util/zip/CRC32.java \
 	java/util/zip/CheckedInputStream.java \
 	java/util/zip/CheckedOutputStream.java \
 	java/util/zip/Checksum.java \
-	java/util/zip/CRC32.java \
 	java/util/zip/DataFormatException.java \
 	java/util/zip/Deflater.java \
 	java/util/zip/DeflaterOutputStream.java \
 	java/util/zip/GZIPInputStream.java \
 	java/util/zip/GZIPOutputStream.java \
-	java/util/zip/InflaterInputStream.java \
 	java/util/zip/Inflater.java \
+	java/util/zip/InflaterInputStream.java \
 	java/util/zip/ZipConstants.java \
 	java/util/zip/ZipEntry.java \
 	java/util/zip/ZipException.java \
@@ -1785,6 +1787,7 @@
 	java/util/zip/ZipInputStream.java \
 	java/util/zip/ZipOutputStream.java
 javax_accessibility_SRCS = \
+	javax/accessibility/Accessible.java \
 	javax/accessibility/AccessibleAction.java \
 	javax/accessibility/AccessibleBundle.java \
 	javax/accessibility/AccessibleComponent.java \
@@ -1795,7 +1798,6 @@
 	javax/accessibility/AccessibleHyperlink.java \
 	javax/accessibility/AccessibleHypertext.java \
 	javax/accessibility/AccessibleIcon.java \
-	javax/accessibility/Accessible.java \
 	javax/accessibility/AccessibleKeyBinding.java \
 	javax/accessibility/AccessibleRelation.java \
 	javax/accessibility/AccessibleRelationSet.java \
@@ -1852,9 +1854,9 @@
 	javax/naming/LinkLoopException.java \
 	javax/naming/LinkRef.java \
 	javax/naming/MalformedLinkException.java \
+	javax/naming/Name.java \
 	javax/naming/NameAlreadyBoundException.java \
 	javax/naming/NameClassPair.java \
-	javax/naming/Name.java \
 	javax/naming/NameNotFoundException.java \
 	javax/naming/NameParser.java \
 	javax/naming/NamingEnumeration.java \
@@ -1866,16 +1868,16 @@
 	javax/naming/OperationNotSupportedException.java \
 	javax/naming/PartialResultException.java \
 	javax/naming/RefAddr.java \
-	javax/naming/Referenceable.java \
 	javax/naming/Reference.java \
+	javax/naming/Referenceable.java \
 	javax/naming/ReferralException.java \
 	javax/naming/ServiceUnavailableException.java \
 	javax/naming/SizeLimitExceededException.java \
 	javax/naming/StringRefAddr.java \
 	javax/naming/TimeLimitExceededException.java
 javax_naming_directory_SRCS = \
-	javax/naming/directory/AttributeInUseException.java \
 	javax/naming/directory/Attribute.java \
+	javax/naming/directory/AttributeInUseException.java \
 	javax/naming/directory/AttributeModificationException.java \
 	javax/naming/directory/Attributes.java \
 	javax/naming/directory/BasicAttribute.java \
@@ -1883,8 +1885,8 @@
 	javax/naming/directory/DirContext.java \
 	javax/naming/directory/InitialDirContext.java \
 	javax/naming/directory/InvalidAttributeIdentifierException.java \
-	javax/naming/directory/InvalidAttributesException.java \
 	javax/naming/directory/InvalidAttributeValueException.java \
+	javax/naming/directory/InvalidAttributesException.java \
 	javax/naming/directory/InvalidSearchControlsException.java \
 	javax/naming/directory/InvalidSearchFilterException.java \
 	javax/naming/directory/ModificationItem.java \
@@ -1901,26 +1903,26 @@
 	javax/naming/event/NamingListener.java \
 	javax/naming/event/ObjectChangeListener.java
 javax_naming_ldap_SRCS = \
-	javax/naming/ldap/ControlFactory.java \
 	javax/naming/ldap/Control.java \
+	javax/naming/ldap/ControlFactory.java \
 	javax/naming/ldap/ExtendedRequest.java \
 	javax/naming/ldap/ExtendedResponse.java \
 	javax/naming/ldap/HasControls.java \
 	javax/naming/ldap/InitialLdapContext.java \
 	javax/naming/ldap/LdapContext.java \
 	javax/naming/ldap/LdapReferralException.java \
-	javax/naming/ldap/UnsolicitedNotificationEvent.java \
 	javax/naming/ldap/UnsolicitedNotification.java \
+	javax/naming/ldap/UnsolicitedNotificationEvent.java \
 	javax/naming/ldap/UnsolicitedNotificationListener.java
 javax_naming_spi_SRCS = \
-	javax/naming/spi/DirectoryManager.java \
 	javax/naming/spi/DirObjectFactory.java \
 	javax/naming/spi/DirStateFactory.java \
-	javax/naming/spi/InitialContextFactoryBuilder.java \
+	javax/naming/spi/DirectoryManager.java \
 	javax/naming/spi/InitialContextFactory.java \
+	javax/naming/spi/InitialContextFactoryBuilder.java \
 	javax/naming/spi/NamingManager.java \
-	javax/naming/spi/ObjectFactoryBuilder.java \
 	javax/naming/spi/ObjectFactory.java \
+	javax/naming/spi/ObjectFactoryBuilder.java \
 	javax/naming/spi/ResolveResult.java \
 	javax/naming/spi/Resolver.java \
 	javax/naming/spi/StateFactory.java
@@ -1935,9 +1937,9 @@
 	javax/net/ssl/HandshakeCompletedListener.java \
 	javax/net/ssl/HostnameVerifier.java \
 	javax/net/ssl/HttpsURLConnection.java \
+	javax/net/ssl/KeyManager.java \
 	javax/net/ssl/KeyManagerFactory.java \
 	javax/net/ssl/KeyManagerFactorySpi.java \
-	javax/net/ssl/KeyManager.java \
 	javax/net/ssl/ManagerFactoryParameters.java \
 	javax/net/ssl/SSLContext.java \
 	javax/net/ssl/SSLContextSpi.java \
@@ -1947,25 +1949,25 @@
 	javax/net/ssl/SSLPeerUnverifiedException.java \
 	javax/net/ssl/SSLPermission.java \
 	javax/net/ssl/SSLProtocolException.java \
-	javax/net/ssl/SSLServerSocketFactory.java \
 	javax/net/ssl/SSLServerSocket.java \
+	javax/net/ssl/SSLServerSocketFactory.java \
+	javax/net/ssl/SSLSession.java \
 	javax/net/ssl/SSLSessionBindingEvent.java \
 	javax/net/ssl/SSLSessionBindingListener.java \
 	javax/net/ssl/SSLSessionContext.java \
-	javax/net/ssl/SSLSession.java \
-	javax/net/ssl/SSLSocketFactory.java \
 	javax/net/ssl/SSLSocket.java \
+	javax/net/ssl/SSLSocketFactory.java \
 	javax/net/ssl/TrivialHostnameVerifier.java \
+	javax/net/ssl/TrustManager.java \
 	javax/net/ssl/TrustManagerFactory.java \
 	javax/net/ssl/TrustManagerFactorySpi.java \
-	javax/net/ssl/TrustManager.java \
 	javax/net/ssl/X509KeyManager.java \
 	javax/net/ssl/X509TrustManager.java
 javax_print_SRCS = \
 	javax/print/AttributeException.java \
 	javax/print/CancelablePrintJob.java \
-	javax/print/DocFlavor.java \
 	javax/print/Doc.java \
+	javax/print/DocFlavor.java \
 	javax/print/DocPrintJob.java \
 	javax/print/FlavorException.java \
 	javax/print/MultiDoc.java \
@@ -2002,8 +2004,8 @@
 	javax/print/attribute/Size2DSyntax.java \
 	javax/print/attribute/SupportedValuesAttribute.java \
 	javax/print/attribute/TextSyntax.java \
-	javax/print/attribute/UnmodifiableSetException.java \
-	javax/print/attribute/URISyntax.java
+	javax/print/attribute/URISyntax.java \
+	javax/print/attribute/UnmodifiableSetException.java
 javax_print_attribute_standard_SRCS = \
 	javax/print/attribute/standard/ColorSupported.java \
 	javax/print/attribute/standard/Compression.java \
@@ -2016,14 +2018,14 @@
 	javax/print/attribute/standard/Fidelity.java \
 	javax/print/attribute/standard/Finishings.java \
 	javax/print/attribute/standard/JobHoldUntil.java \
-	javax/print/attribute/standard/JobImpressionsCompleted.java \
 	javax/print/attribute/standard/JobImpressions.java \
+	javax/print/attribute/standard/JobImpressionsCompleted.java \
 	javax/print/attribute/standard/JobImpressionsSupported.java \
 	javax/print/attribute/standard/JobKOctets.java \
 	javax/print/attribute/standard/JobKOctetsProcessed.java \
 	javax/print/attribute/standard/JobKOctetsSupported.java \
-	javax/print/attribute/standard/JobMediaSheetsCompleted.java \
 	javax/print/attribute/standard/JobMediaSheets.java \
+	javax/print/attribute/standard/JobMediaSheetsCompleted.java \
 	javax/print/attribute/standard/JobMediaSheetsSupported.java \
 	javax/print/attribute/standard/JobMessageFromOperator.java \
 	javax/print/attribute/standard/JobName.java \
@@ -2043,11 +2045,12 @@
 	javax/print/attribute/standard/NumberUpSupported.java \
 	javax/print/attribute/standard/OrientationRequested.java \
 	javax/print/attribute/standard/OutputDeviceAssigned.java \
+	javax/print/attribute/standard/PDLOverrideSupported.java \
 	javax/print/attribute/standard/PageRanges.java \
-	javax/print/attribute/standard/PagesPerMinuteColor.java \
 	javax/print/attribute/standard/PagesPerMinute.java \
-	javax/print/attribute/standard/PDLOverrideSupported.java \
+	javax/print/attribute/standard/PagesPerMinuteColor.java \
 	javax/print/attribute/standard/PresentationDirection.java \
+	javax/print/attribute/standard/PrintQuality.java \
 	javax/print/attribute/standard/PrinterInfo.java \
 	javax/print/attribute/standard/PrinterIsAcceptingJobs.java \
 	javax/print/attribute/standard/PrinterLocation.java \
@@ -2061,7 +2064,6 @@
 	javax/print/attribute/standard/PrinterStateReason.java \
 	javax/print/attribute/standard/PrinterStateReasons.java \
 	javax/print/attribute/standard/PrinterURI.java \
-	javax/print/attribute/standard/PrintQuality.java \
 	javax/print/attribute/standard/QueuedJobCount.java \
 	javax/print/attribute/standard/ReferenceUriSchemesSupported.java \
 	javax/print/attribute/standard/RequestingUserName.java \
@@ -2085,20 +2087,20 @@
 	javax/rmi/CORBA/ClassDesc.java \
 	javax/rmi/CORBA/ObjectImpl.java \
 	javax/rmi/CORBA/PortableRemoteObjectDelegate.java \
-	javax/rmi/CORBA/StubDelegate.java \
 	javax/rmi/CORBA/Stub.java \
+	javax/rmi/CORBA/StubDelegate.java \
 	javax/rmi/CORBA/SystemException.java \
 	javax/rmi/CORBA/Tie.java \
-	javax/rmi/CORBA/UtilDelegate.java \
 	javax/rmi/CORBA/Util.java \
+	javax/rmi/CORBA/UtilDelegate.java \
 	javax/rmi/CORBA/ValueHandler.java
 javax_security_auth_x500_SRCS = \
 	javax/security/auth/x500/X500Principal.java
 javax_security_cert_SRCS = \
+	javax/security/cert/Certificate.java \
 	javax/security/cert/CertificateEncodingException.java \
 	javax/security/cert/CertificateException.java \
 	javax/security/cert/CertificateExpiredException.java \
-	javax/security/cert/Certificate.java \
 	javax/security/cert/CertificateNotYetValidException.java \
 	javax/security/cert/CertificateParsingException.java \
 	javax/security/cert/X509CertBridge.java \
@@ -2146,8 +2148,8 @@
 	javax/sound/sampled/DataLine.java \
 	javax/sound/sampled/EnumControl.java \
 	javax/sound/sampled/FloatControl.java \
-	javax/sound/sampled/LineEvent.java \
 	javax/sound/sampled/Line.java \
+	javax/sound/sampled/LineEvent.java \
 	javax/sound/sampled/LineListener.java \
 	javax/sound/sampled/LineUnavailableException.java \
 	javax/sound/sampled/Mixer.java \
@@ -2167,9 +2169,9 @@
 	javax/sql/ConnectionPoolDataSource.java \
 	javax/sql/DataSource.java \
 	javax/sql/PooledConnection.java \
+	javax/sql/RowSet.java \
 	javax/sql/RowSetEvent.java \
 	javax/sql/RowSetInternal.java \
-	javax/sql/RowSet.java \
 	javax/sql/RowSetListener.java \
 	javax/sql/RowSetMetaData.java \
 	javax/sql/RowSetReader.java \
@@ -2202,12 +2204,12 @@
 	javax/transaction/xa/Xid.java
 javax_xml_parsers_SRCS = \
 	javax/xml/parsers/ClassStuff.java \
-	javax/xml/parsers/DocumentBuilderFactory.java \
 	javax/xml/parsers/DocumentBuilder.java \
+	javax/xml/parsers/DocumentBuilderFactory.java \
 	javax/xml/parsers/FactoryConfigurationError.java \
 	javax/xml/parsers/ParserConfigurationException.java \
-	javax/xml/parsers/SAXParserFactory.java \
-	javax/xml/parsers/SAXParser.java
+	javax/xml/parsers/SAXParser.java \
+	javax/xml/parsers/SAXParserFactory.java
 javax_xml_transform_SRCS = \
 	javax/xml/transform/ClassStuff.java \
 	javax/xml/transform/ErrorListener.java \
@@ -2216,11 +2218,11 @@
 	javax/xml/transform/Source.java \
 	javax/xml/transform/SourceLocator.java \
 	javax/xml/transform/Templates.java \
+	javax/xml/transform/Transformer.java \
 	javax/xml/transform/TransformerConfigurationException.java \
 	javax/xml/transform/TransformerException.java \
-	javax/xml/transform/TransformerFactoryConfigurationError.java \
 	javax/xml/transform/TransformerFactory.java \
-	javax/xml/transform/Transformer.java \
+	javax/xml/transform/TransformerFactoryConfigurationError.java \
 	javax/xml/transform/URIResolver.java
 javax_xml_transform_dom_SRCS = \
 	javax/xml/transform/dom/DOMLocator.java \
@@ -2294,8 +2296,8 @@
 kaffe_lang_SRCS = \
 	kaffe/lang/AppClassLoader.java \
 	kaffe/lang/ClassPathReader.java \
-	kaffe/lang/MemoryAdviceCallback.java \
 	kaffe/lang/MemoryAdvice.java \
+	kaffe/lang/MemoryAdviceCallback.java \
 	kaffe/lang/PackageHelper.java \
 	kaffe/lang/PrimordialClassLoader.java \
 	kaffe/lang/ResourceReader.java \
@@ -2315,13 +2317,13 @@
 	kaffe/security/provider/MD2.java \
 	kaffe/security/provider/MD4.java \
 	kaffe/security/provider/MD5.java \
-	kaffe/security/provider/SHA1PRNG.java \
 	kaffe/security/provider/SHA.java \
+	kaffe/security/provider/SHA1PRNG.java \
 	kaffe/security/provider/UpdateDigest.java
 kaffe_tools_jar_SRCS = \
 	kaffe/tools/jar/Jar.java \
-	kaffe/tools/jar/XPFileInputStream.java \
 	kaffe/tools/jar/XPFile.java \
+	kaffe/tools/jar/XPFileInputStream.java \
 	kaffe/tools/jar/XPFileOutputStream.java \
 	kaffe/tools/jar/XPFileReader.java \
 	kaffe/tools/jar/XPFileWriter.java
@@ -2344,28 +2346,28 @@
 	kaffe/util/NotImplementedReport.java \
 	kaffe/util/Ptr.java \
 	kaffe/util/SupportDisabled.java \
-	kaffe/util/TimerClient.java \
 	kaffe/util/Timer.java \
+	kaffe/util/TimerClient.java \
 	kaffe/util/UNIXTimeZone.java \
 	kaffe/util/UTF8.java \
 	kaffe/util/VectorSnapshot.java
 kaffe_util_locale_SRCS = \
+	kaffe/util/locale/Country.java \
 	kaffe/util/locale/CountryCodes.java \
 	kaffe/util/locale/Country_de.java \
 	kaffe/util/locale/Country_en.java \
 	kaffe/util/locale/Country_fr.java \
 	kaffe/util/locale/Country_it.java \
 	kaffe/util/locale/Country_ja.java \
-	kaffe/util/locale/Country.java \
 	kaffe/util/locale/Country_ko.java \
 	kaffe/util/locale/Country_zh.java \
+	kaffe/util/locale/Language.java \
 	kaffe/util/locale/LanguageCodes.java \
 	kaffe/util/locale/Language_de.java \
 	kaffe/util/locale/Language_en.java \
 	kaffe/util/locale/Language_fr.java \
 	kaffe/util/locale/Language_it.java \
 	kaffe/util/locale/Language_ja.java \
-	kaffe/util/locale/Language.java \
 	kaffe/util/locale/Language_ko.java \
 	kaffe/util/locale/Language_zh.java
 kaffe_util_log_SRCS = \
@@ -2380,18 +2382,18 @@
 	org/tritonus/core/TInit.java \
 	org/tritonus/core/TMidiConfig.java
 org_tritonus_lowlevel_alsa_SRCS = \
-	org/tritonus/lowlevel/alsa/AlsaCtlCardInfo.java \
-	org/tritonus/lowlevel/alsa/AlsaCtl.java \
 	org/tritonus/lowlevel/alsa/Alsa.java \
-	org/tritonus/lowlevel/alsa/AlsaMixerElement.java \
+	org/tritonus/lowlevel/alsa/AlsaCtl.java \
+	org/tritonus/lowlevel/alsa/AlsaCtlCardInfo.java \
 	org/tritonus/lowlevel/alsa/AlsaMixer.java \
-	org/tritonus/lowlevel/alsa/AlsaPcmHWParamsFormatMask.java \
-	org/tritonus/lowlevel/alsa/AlsaPcmHWParams.java \
+	org/tritonus/lowlevel/alsa/AlsaMixerElement.java \
 	org/tritonus/lowlevel/alsa/AlsaPcm.java \
+	org/tritonus/lowlevel/alsa/AlsaPcmHWParams.java \
+	org/tritonus/lowlevel/alsa/AlsaPcmHWParamsFormatMask.java \
 	org/tritonus/lowlevel/alsa/AlsaPcmSWParams.java \
+	org/tritonus/lowlevel/alsa/AlsaSeq.java \
 	org/tritonus/lowlevel/alsa/AlsaSeqClientInfo.java \
 	org/tritonus/lowlevel/alsa/AlsaSeqEvent.java \
-	org/tritonus/lowlevel/alsa/AlsaSeq.java \
 	org/tritonus/lowlevel/alsa/AlsaSeqPortInfo.java \
 	org/tritonus/lowlevel/alsa/AlsaSeqPortSubscribe.java \
 	org/tritonus/lowlevel/alsa/AlsaSeqQueueInfo.java \
@@ -2510,8 +2512,8 @@
 	org/tritonus/share/sampled/mixer/TEnumControl.java \
 	org/tritonus/share/sampled/mixer/TFloatControl.java \
 	org/tritonus/share/sampled/mixer/TLine.java \
-	org/tritonus/share/sampled/mixer/TMixerInfo.java \
 	org/tritonus/share/sampled/mixer/TMixer.java \
+	org/tritonus/share/sampled/mixer/TMixerInfo.java \
 	org/tritonus/share/sampled/mixer/TMixerProvider.java \
 	org/tritonus/share/sampled/mixer/TPort.java \
 	org/tritonus/share/sampled/mixer/TSoftClip.java
@@ -2520,23 +2522,23 @@
 	org/w3c/dom/CDATASection.java \
 	org/w3c/dom/CharacterData.java \
 	org/w3c/dom/Comment.java \
-	org/w3c/dom/DocumentFragment.java \
-	org/w3c/dom/Document.java \
-	org/w3c/dom/DocumentType.java \
 	org/w3c/dom/DOMConfiguration.java \
-	org/w3c/dom/DOMErrorHandler.java \
 	org/w3c/dom/DOMError.java \
+	org/w3c/dom/DOMErrorHandler.java \
 	org/w3c/dom/DOMException.java \
 	org/w3c/dom/DOMImplementation.java \
 	org/w3c/dom/DOMImplementationList.java \
 	org/w3c/dom/DOMImplementationSource.java \
 	org/w3c/dom/DOMLocator.java \
 	org/w3c/dom/DOMStringList.java \
+	org/w3c/dom/Document.java \
+	org/w3c/dom/DocumentFragment.java \
+	org/w3c/dom/DocumentType.java \
 	org/w3c/dom/Element.java \
 	org/w3c/dom/Entity.java \
 	org/w3c/dom/EntityReference.java \
-	org/w3c/dom/NamedNodeMap.java \
 	org/w3c/dom/NameList.java \
+	org/w3c/dom/NamedNodeMap.java \
 	org/w3c/dom/Node.java \
 	org/w3c/dom/NodeList.java \
 	org/w3c/dom/Notation.java \
@@ -2547,7 +2549,6 @@
 org_w3c_dom_bootstrap_SRCS = \
 	org/w3c/dom/bootstrap/DOMImplementationRegistry.java
 org_w3c_dom_css_SRCS = \
-	org/w3c/dom/css/Counter.java \
 	org/w3c/dom/css/CSS2Azimuth.java \
 	org/w3c/dom/css/CSS2BackgroundPosition.java \
 	org/w3c/dom/css/CSS2BorderSpacing.java \
@@ -2574,16 +2575,17 @@
 	org/w3c/dom/css/CSSUnknownRule.java \
 	org/w3c/dom/css/CSSValue.java \
 	org/w3c/dom/css/CSSValueList.java \
-	org/w3c/dom/css/DocumentCSS.java \
+	org/w3c/dom/css/Counter.java \
 	org/w3c/dom/css/DOMImplementationCSS.java \
+	org/w3c/dom/css/DocumentCSS.java \
 	org/w3c/dom/css/ElementCSSInlineStyle.java \
-	org/w3c/dom/css/Rect.java \
 	org/w3c/dom/css/RGBColor.java \
+	org/w3c/dom/css/Rect.java \
 	org/w3c/dom/css/ViewCSS.java
 org_w3c_dom_events_SRCS = \
 	org/w3c/dom/events/DocumentEvent.java \
-	org/w3c/dom/events/EventException.java \
 	org/w3c/dom/events/Event.java \
+	org/w3c/dom/events/EventException.java \
 	org/w3c/dom/events/EventListener.java \
 	org/w3c/dom/events/EventTarget.java \
 	org/w3c/dom/events/MouseEvent.java \
@@ -2593,41 +2595,41 @@
 	org/w3c/dom/html/HTMLAnchorElement.java \
 	org/w3c/dom/html/HTMLAppletElement.java \
 	org/w3c/dom/html/HTMLAreaElement.java \
+	org/w3c/dom/html/HTMLBRElement.java \
 	org/w3c/dom/html/HTMLBaseElement.java \
 	org/w3c/dom/html/HTMLBaseFontElement.java \
 	org/w3c/dom/html/HTMLBodyElement.java \
-	org/w3c/dom/html/HTMLBRElement.java \
 	org/w3c/dom/html/HTMLButtonElement.java \
 	org/w3c/dom/html/HTMLCollection.java \
+	org/w3c/dom/html/HTMLDListElement.java \
+	org/w3c/dom/html/HTMLDOMImplementation.java \
 	org/w3c/dom/html/HTMLDirectoryElement.java \
 	org/w3c/dom/html/HTMLDivElement.java \
-	org/w3c/dom/html/HTMLDListElement.java \
 	org/w3c/dom/html/HTMLDocument.java \
-	org/w3c/dom/html/HTMLDOMImplementation.java \
 	org/w3c/dom/html/HTMLElement.java \
 	org/w3c/dom/html/HTMLFieldSetElement.java \
 	org/w3c/dom/html/HTMLFontElement.java \
 	org/w3c/dom/html/HTMLFormElement.java \
 	org/w3c/dom/html/HTMLFrameElement.java \
 	org/w3c/dom/html/HTMLFrameSetElement.java \
+	org/w3c/dom/html/HTMLHRElement.java \
 	org/w3c/dom/html/HTMLHeadElement.java \
 	org/w3c/dom/html/HTMLHeadingElement.java \
-	org/w3c/dom/html/HTMLHRElement.java \
 	org/w3c/dom/html/HTMLHtmlElement.java \
 	org/w3c/dom/html/HTMLIFrameElement.java \
 	org/w3c/dom/html/HTMLImageElement.java \
 	org/w3c/dom/html/HTMLInputElement.java \
 	org/w3c/dom/html/HTMLIsIndexElement.java \
+	org/w3c/dom/html/HTMLLIElement.java \
 	org/w3c/dom/html/HTMLLabelElement.java \
 	org/w3c/dom/html/HTMLLegendElement.java \
-	org/w3c/dom/html/HTMLLIElement.java \
 	org/w3c/dom/html/HTMLLinkElement.java \
 	org/w3c/dom/html/HTMLMapElement.java \
 	org/w3c/dom/html/HTMLMenuElement.java \
 	org/w3c/dom/html/HTMLMetaElement.java \
 	org/w3c/dom/html/HTMLModElement.java \
-	org/w3c/dom/html/HTMLObjectElement.java \
 	org/w3c/dom/html/HTMLOListElement.java \
+	org/w3c/dom/html/HTMLObjectElement.java \
 	org/w3c/dom/html/HTMLOptGroupElement.java \
 	org/w3c/dom/html/HTMLOptionElement.java \
 	org/w3c/dom/html/HTMLParagraphElement.java \
@@ -2652,16 +2654,16 @@
 	org/w3c/dom/ls/LSInput.java \
 	org/w3c/dom/ls/LSLoadEvent.java \
 	org/w3c/dom/ls/LSOutput.java \
-	org/w3c/dom/ls/LSParserFilter.java \
 	org/w3c/dom/ls/LSParser.java \
+	org/w3c/dom/ls/LSParserFilter.java \
 	org/w3c/dom/ls/LSProgressEvent.java \
 	org/w3c/dom/ls/LSResourceResolver.java \
-	org/w3c/dom/ls/LSSerializerFilter.java \
-	org/w3c/dom/ls/LSSerializer.java
+	org/w3c/dom/ls/LSSerializer.java \
+	org/w3c/dom/ls/LSSerializerFilter.java
 org_w3c_dom_ranges_SRCS = \
 	org/w3c/dom/ranges/DocumentRange.java \
-	org/w3c/dom/ranges/RangeException.java \
-	org/w3c/dom/ranges/Range.java
+	org/w3c/dom/ranges/Range.java \
+	org/w3c/dom/ranges/RangeException.java
 org_w3c_dom_stylesheets_SRCS = \
 	org/w3c/dom/stylesheets/DocumentStyle.java \
 	org/w3c/dom/stylesheets/LinkStyle.java \
@@ -2680,8 +2682,8 @@
 	org/xml/sax/AttributeList.java \
 	org/xml/sax/Attributes.java \
 	org/xml/sax/ContentHandler.java \
-	org/xml/sax/DocumentHandler.java \
 	org/xml/sax/DTDHandler.java \
+	org/xml/sax/DocumentHandler.java \
 	org/xml/sax/EntityResolver.java \
 	org/xml/sax/ErrorHandler.java \
 	org/xml/sax/HandlerBase.java \
@@ -2695,14 +2697,14 @@
 	org/xml/sax/XMLFilter.java \
 	org/xml/sax/XMLReader.java
 org_xml_sax_ext_SRCS = \
-	org/xml/sax/ext/Attributes2Impl.java \
 	org/xml/sax/ext/Attributes2.java \
+	org/xml/sax/ext/Attributes2Impl.java \
 	org/xml/sax/ext/DeclHandler.java \
 	org/xml/sax/ext/DefaultHandler2.java \
 	org/xml/sax/ext/EntityResolver2.java \
 	org/xml/sax/ext/LexicalHandler.java \
-	org/xml/sax/ext/Locator2Impl.java \
-	org/xml/sax/ext/Locator2.java
+	org/xml/sax/ext/Locator2.java \
+	org/xml/sax/ext/Locator2Impl.java
 org_xml_sax_helpers_SRCS = \
 	org/xml/sax/helpers/AttributeListImpl.java \
 	org/xml/sax/helpers/AttributesImpl.java \
@@ -2729,23 +2731,23 @@
 	java/awt/win32/Frame.java \
 	java/awt/win32/Label.java \
 	java/awt/win32/List.java \
+	java/awt/win32/Menu.java \
 	java/awt/win32/MenuBar.java \
 	java/awt/win32/MenuItem.java \
-	java/awt/win32/Menu.java \
 	java/awt/win32/NativeComponent.java \
 	java/awt/win32/NativeContainer.java \
 	java/awt/win32/NativeGraphics.java \
 	java/awt/win32/Panel.java \
 	java/awt/win32/PopupMenu.java \
-	java/awt/win32/Scrollbar.java \
 	java/awt/win32/ScrollPane.java \
+	java/awt/win32/Scrollbar.java \
 	java/awt/win32/SystemColor.java \
 	java/awt/win32/TextArea.java \
 	java/awt/win32/TextComponent.java \
 	java/awt/win32/TextField.java \
 	java/awt/win32/Toolkit.java \
-	java/awt/win32/Window.java \
-	java/awt/win32/WMEvent.java
+	java/awt/win32/WMEvent.java \
+	java/awt/win32/Window.java
 
 
 ## Do not delete the previous blank line; update-class-list depends on it
Index: libraries/javalib/Makefile.in
===================================================================
RCS file: /cvs/kaffe/kaffe/libraries/javalib/Makefile.in,v
retrieving revision 1.256
diff -u -r1.256 Makefile.in
--- libraries/javalib/Makefile.in	25 May 2004 08:33:52 -0000	1.256
+++ libraries/javalib/Makefile.in	30 May 2004 01:11:08 -0000
@@ -519,8 +519,8 @@
 	gnu/inet/ftp/BlockOutputStream.java \
 	gnu/inet/ftp/CompressedInputStream.java \
 	gnu/inet/ftp/CompressedOutputStream.java \
-	gnu/inet/ftp/DTPInputStream.java \
 	gnu/inet/ftp/DTP.java \
+	gnu/inet/ftp/DTPInputStream.java \
 	gnu/inet/ftp/DTPOutputStream.java \
 	gnu/inet/ftp/FTPConnection.java \
 	gnu/inet/ftp/FTPException.java \
@@ -584,10 +584,11 @@
 	gnu/java/lang/reflect/TypeSignature.java
 
 gnu_java_locale_SRCS = \
+	gnu/java/locale/Calendar.java \
 	gnu/java/locale/Calendar_de.java \
 	gnu/java/locale/Calendar_en.java \
-	gnu/java/locale/Calendar.java \
 	gnu/java/locale/Calendar_nl.java \
+	gnu/java/locale/LocaleInformation.java \
 	gnu/java/locale/LocaleInformation_af_ZA.java \
 	gnu/java/locale/LocaleInformation_ar_AE.java \
 	gnu/java/locale/LocaleInformation_ar_BH.java \
@@ -614,13 +615,14 @@
 	gnu/java/locale/LocaleInformation_cs_CZ.java \
 	gnu/java/locale/LocaleInformation_cy_GB.java \
 	gnu/java/locale/LocaleInformation_da_DK.java \
+	gnu/java/locale/LocaleInformation_de.java \
 	gnu/java/locale/LocaleInformation_de_AT.java \
 	gnu/java/locale/LocaleInformation_de_BE.java \
 	gnu/java/locale/LocaleInformation_de_CH.java \
 	gnu/java/locale/LocaleInformation_de_DE.java \
-	gnu/java/locale/LocaleInformation_de.java \
 	gnu/java/locale/LocaleInformation_de_LU.java \
 	gnu/java/locale/LocaleInformation_el_GR.java \
+	gnu/java/locale/LocaleInformation_en.java \
 	gnu/java/locale/LocaleInformation_en_AU.java \
 	gnu/java/locale/LocaleInformation_en_BW.java \
 	gnu/java/locale/LocaleInformation_en_CA.java \
@@ -629,7 +631,6 @@
 	gnu/java/locale/LocaleInformation_en_HK.java \
 	gnu/java/locale/LocaleInformation_en_IE.java \
 	gnu/java/locale/LocaleInformation_en_IN.java \
-	gnu/java/locale/LocaleInformation_en.java \
 	gnu/java/locale/LocaleInformation_en_NZ.java \
 	gnu/java/locale/LocaleInformation_en_PH.java \
 	gnu/java/locale/LocaleInformation_en_SG.java \
@@ -679,7 +680,6 @@
 	gnu/java/locale/LocaleInformation_it_IT.java \
 	gnu/java/locale/LocaleInformation_iw_IL.java \
 	gnu/java/locale/LocaleInformation_ja_JP.java \
-	gnu/java/locale/LocaleInformation.java \
 	gnu/java/locale/LocaleInformation_ka_GE.java \
 	gnu/java/locale/LocaleInformation_kl_GL.java \
 	gnu/java/locale/LocaleInformation_ko_KR.java \
@@ -690,8 +690,8 @@
 	gnu/java/locale/LocaleInformation_mk_MK.java \
 	gnu/java/locale/LocaleInformation_mr_IN.java \
 	gnu/java/locale/LocaleInformation_mt_MT.java \
-	gnu/java/locale/LocaleInformation_nl_BE.java \
 	gnu/java/locale/LocaleInformation_nl.java \
+	gnu/java/locale/LocaleInformation_nl_BE.java \
 	gnu/java/locale/LocaleInformation_nl_NL.java \
 	gnu/java/locale/LocaleInformation_nn_NO.java \
 	gnu/java/locale/LocaleInformation_no_NO.java \
@@ -776,10 +776,10 @@
 	gnu/java/nio/charset/ISO_8859_1.java \
 	gnu/java/nio/charset/Provider.java \
 	gnu/java/nio/charset/US_ASCII.java \
+	gnu/java/nio/charset/UTF_16.java \
 	gnu/java/nio/charset/UTF_16BE.java \
 	gnu/java/nio/charset/UTF_16Decoder.java \
 	gnu/java/nio/charset/UTF_16Encoder.java \
-	gnu/java/nio/charset/UTF_16.java \
 	gnu/java/nio/charset/UTF_16LE.java \
 	gnu/java/nio/charset/UTF_8.java
 
@@ -803,8 +803,8 @@
 	gnu/java/rmi/rmic/Compile_kjc.java \
 	gnu/java/rmi/rmic/Compiler.java \
 	gnu/java/rmi/rmic/CompilerProcess.java \
-	gnu/java/rmi/rmic/RMICException.java \
 	gnu/java/rmi/rmic/RMIC.java \
+	gnu/java/rmi/rmic/RMICException.java \
 	gnu/java/rmi/rmic/TabbedWriter.java
 
 gnu_java_rmi_server_SRCS = \
@@ -831,8 +831,8 @@
 
 gnu_java_security_der_SRCS = \
 	gnu/java/security/der/BitString.java \
-	gnu/java/security/der/DEREncodingException.java \
 	gnu/java/security/der/DER.java \
+	gnu/java/security/der/DEREncodingException.java \
 	gnu/java/security/der/DERReader.java \
 	gnu/java/security/der/DERValue.java \
 	gnu/java/security/der/DERWriter.java
@@ -876,25 +876,25 @@
 	gnu/javax/rmi/CORBA/ValueHandlerImpl.java
 
 gnu_regexp_SRCS = \
+	gnu/regexp/CharIndexed.java \
 	gnu/regexp/CharIndexedCharArray.java \
 	gnu/regexp/CharIndexedInputStream.java \
-	gnu/regexp/CharIndexed.java \
 	gnu/regexp/CharIndexedReader.java \
-	gnu/regexp/CharIndexedStringBuffer.java \
 	gnu/regexp/CharIndexedString.java \
+	gnu/regexp/CharIndexedStringBuffer.java \
+	gnu/regexp/RE.java \
 	gnu/regexp/REException.java \
 	gnu/regexp/REFilterInputStream.java \
 	gnu/regexp/REFilterReader.java \
-	gnu/regexp/RE.java \
-	gnu/regexp/REMatchEnumeration.java \
 	gnu/regexp/REMatch.java \
+	gnu/regexp/REMatchEnumeration.java \
 	gnu/regexp/RESyntax.java \
+	gnu/regexp/REToken.java \
 	gnu/regexp/RETokenAny.java \
 	gnu/regexp/RETokenBackRef.java \
 	gnu/regexp/RETokenChar.java \
 	gnu/regexp/RETokenEnd.java \
 	gnu/regexp/RETokenEndSub.java \
-	gnu/regexp/REToken.java \
 	gnu/regexp/RETokenLookAhead.java \
 	gnu/regexp/RETokenOneOf.java \
 	gnu/regexp/RETokenPOSIX.java \
@@ -940,10 +940,10 @@
 	gnu/xml/libxmlj/dom/GnomeCDATASection.java \
 	gnu/xml/libxmlj/dom/GnomeCharacterData.java \
 	gnu/xml/libxmlj/dom/GnomeComment.java \
-	gnu/xml/libxmlj/dom/GnomeDocumentBuilderFactory.java \
+	gnu/xml/libxmlj/dom/GnomeDocument.java \
 	gnu/xml/libxmlj/dom/GnomeDocumentBuilder.java \
+	gnu/xml/libxmlj/dom/GnomeDocumentBuilderFactory.java \
 	gnu/xml/libxmlj/dom/GnomeDocumentFragment.java \
-	gnu/xml/libxmlj/dom/GnomeDocument.java \
 	gnu/xml/libxmlj/dom/GnomeDocumentType.java \
 	gnu/xml/libxmlj/dom/GnomeElement.java \
 	gnu/xml/libxmlj/dom/GnomeEntity.java \
@@ -958,8 +958,8 @@
 
 gnu_xml_libxmlj_sax_SRCS = \
 	gnu/xml/libxmlj/sax/GnomeLocator.java \
-	gnu/xml/libxmlj/sax/GnomeSAXParserFactory.java \
 	gnu/xml/libxmlj/sax/GnomeSAXParser.java \
+	gnu/xml/libxmlj/sax/GnomeSAXParserFactory.java \
 	gnu/xml/libxmlj/sax/GnomeXMLReader.java \
 	gnu/xml/libxmlj/sax/Namespaces.java \
 	gnu/xml/libxmlj/sax/StringArrayAttributes.java \
@@ -976,9 +976,9 @@
 	gnu/xml/libxmlj/transform/SourceLocatorImpl.java \
 	gnu/xml/libxmlj/transform/SourceWrapper.java \
 	gnu/xml/libxmlj/transform/TemplatesImpl.java \
+	gnu/xml/libxmlj/transform/TransformTest.java \
 	gnu/xml/libxmlj/transform/TransformerFactoryImpl.java \
 	gnu/xml/libxmlj/transform/TransformerImpl.java \
-	gnu/xml/libxmlj/transform/TransformTest.java \
 	gnu/xml/libxmlj/transform/URIResolverProxy.java
 
 gnu_xml_libxmlj_util_SRCS = \
@@ -1002,8 +1002,8 @@
 	gnu/xml/pipeline/XsltFilter.java
 
 gnu_xml_util_SRCS = \
-	gnu/xml/util/DomParser.java \
 	gnu/xml/util/DoParse.java \
+	gnu/xml/util/DomParser.java \
 	gnu/xml/util/Resolver.java \
 	gnu/xml/util/SAXNullTransformerFactory.java \
 	gnu/xml/util/XCat.java \
@@ -1011,23 +1011,23 @@
 	gnu/xml/util/XMLWriter.java
 
 java_applet_SRCS = \
-	java/applet/AppletContext.java \
 	java/applet/Applet.java \
+	java/applet/AppletContext.java \
 	java/applet/AppletStub.java \
 	java/applet/AudioClip.java
 
 java_awt_SRCS = \
+	java/awt/AWTError.java \
+	java/awt/AWTEvent.java \
+	java/awt/AWTEventMulticaster.java \
+	java/awt/AWTException.java \
+	java/awt/AWTPermission.java \
 	java/awt/ActionEvt.java \
 	java/awt/ActiveEvent.java \
 	java/awt/Adjustable.java \
 	java/awt/AdjustmentEvt.java \
 	java/awt/AlphaComposite.java \
 	java/awt/AttributeValue.java \
-	java/awt/AWTError.java \
-	java/awt/AWTEvent.java \
-	java/awt/AWTEventMulticaster.java \
-	java/awt/AWTException.java \
-	java/awt/AWTPermission.java \
 	java/awt/BarMenu.java \
 	java/awt/BasicStroke.java \
 	java/awt/BorderLayout.java \
@@ -1035,55 +1035,55 @@
 	java/awt/Button.java \
 	java/awt/Canvas.java \
 	java/awt/CardLayout.java \
-	java/awt/CheckboxGroup.java \
 	java/awt/Checkbox.java \
+	java/awt/CheckboxGroup.java \
 	java/awt/CheckboxMenuItem.java \
 	java/awt/Choice.java \
 	java/awt/ClassAnalyzer.java \
 	java/awt/ClassProperties.java \
 	java/awt/Color.java \
 	java/awt/ColorPaintContext.java \
-	java/awt/ComponentEvt.java \
 	java/awt/Component.java \
+	java/awt/ComponentEvt.java \
 	java/awt/ComponentOrientation.java \
-	java/awt/CompositeContext.java \
 	java/awt/Composite.java \
-	java/awt/ContainerEvt.java \
+	java/awt/CompositeContext.java \
 	java/awt/Container.java \
+	java/awt/ContainerEvt.java \
 	java/awt/Cursor.java \
-	java/awt/Defaults.java \
 	java/awt/DefKeyFilter.java \
+	java/awt/Defaults.java \
 	java/awt/Dialog.java \
 	java/awt/Dimension.java \
 	java/awt/DisplayMode.java \
-	java/awt/EventDispatchThread.java \
 	java/awt/Event.java \
+	java/awt/EventDispatchThread.java \
 	java/awt/EventQueue.java \
 	java/awt/FileDialog.java \
 	java/awt/FlowLayout.java \
 	java/awt/FocusEvt.java \
 	java/awt/FocusTraversalPolicy.java \
-	java/awt/FontFormatException.java \
 	java/awt/Font.java \
+	java/awt/FontFormatException.java \
 	java/awt/FontMetrics.java \
 	java/awt/Frame.java \
 	java/awt/GradientPaint.java \
+	java/awt/Graphics.java \
 	java/awt/Graphics2D.java \
 	java/awt/GraphicsConfigTemplate.java \
 	java/awt/GraphicsConfiguration.java \
 	java/awt/GraphicsDevice.java \
 	java/awt/GraphicsEnvironment.java \
-	java/awt/Graphics.java \
 	java/awt/GraphicsLink.java \
 	java/awt/GridBagConstraints.java \
-	java/awt/GridBagLayoutInfo.java \
 	java/awt/GridBagLayout.java \
+	java/awt/GridBagLayoutInfo.java \
 	java/awt/GridLayout.java \
 	java/awt/HeadlessException.java \
 	java/awt/IllegalComponentStateException.java \
+	java/awt/Image.java \
 	java/awt/ImageCapabilities.java \
 	java/awt/ImageFrameLoader.java \
-	java/awt/Image.java \
 	java/awt/ImageLoader.java \
 	java/awt/ImageNativeProducer.java \
 	java/awt/Insets.java \
@@ -1094,25 +1094,27 @@
 	java/awt/KeyEventPostProcessor.java \
 	java/awt/KeyEvt.java \
 	java/awt/Label.java \
-	java/awt/LayoutManager2.java \
 	java/awt/LayoutManager.java \
+	java/awt/LayoutManager2.java \
 	java/awt/List.java \
 	java/awt/MediaTracker.java \
+	java/awt/Menu.java \
 	java/awt/MenuBar.java \
 	java/awt/MenuComponent.java \
 	java/awt/MenuContainer.java \
 	java/awt/MenuItem.java \
-	java/awt/Menu.java \
 	java/awt/MenuShortcut.java \
 	java/awt/MouseEvt.java \
 	java/awt/NativeClipboard.java \
 	java/awt/NativeGraphics.java \
 	java/awt/NativeSelection.java \
 	java/awt/OpaqueComponent.java \
+	java/awt/PSGraphics.java \
+	java/awt/PSPrintJob.java \
 	java/awt/PageAttributes.java \
+	java/awt/Paint.java \
 	java/awt/PaintContext.java \
 	java/awt/PaintEvt.java \
-	java/awt/Paint.java \
 	java/awt/Panel.java \
 	java/awt/Point.java \
 	java/awt/Polygon.java \
@@ -1120,16 +1122,14 @@
 	java/awt/PopupWindow.java \
 	java/awt/PrintGraphics.java \
 	java/awt/PrintJob.java \
-	java/awt/PSGraphics.java \
-	java/awt/PSPrintJob.java \
 	java/awt/Rectangle.java \
 	java/awt/RenderingHints.java \
 	java/awt/Robot.java \
 	java/awt/RootWindow.java \
 	java/awt/RowCanvas.java \
-	java/awt/Scrollbar.java \
-	java/awt/ScrollPaneAdjustable.java \
 	java/awt/ScrollPane.java \
+	java/awt/ScrollPaneAdjustable.java \
+	java/awt/Scrollbar.java \
 	java/awt/Shape.java \
 	java/awt/ShortcutConsumer.java \
 	java/awt/ShortcutHandler.java \
@@ -1144,16 +1144,16 @@
 	java/awt/TexturePaint.java \
 	java/awt/Toolkit.java \
 	java/awt/Transparency.java \
-	java/awt/WindowEvt.java \
+	java/awt/WMEvent.java \
 	java/awt/Window.java \
-	java/awt/WMEvent.java
+	java/awt/WindowEvt.java
 
 java_awt_color_SRCS = \
 	java/awt/color/CMMException.java \
 	java/awt/color/ColorSpace.java \
 	java/awt/color/ICC_ColorSpace.java \
-	java/awt/color/ICC_ProfileGray.java \
 	java/awt/color/ICC_Profile.java \
+	java/awt/color/ICC_ProfileGray.java \
 	java/awt/color/ICC_ProfileRGB.java \
 	java/awt/color/ProfileDataException.java
 
@@ -1176,20 +1176,20 @@
 	java/awt/dnd/DragGestureEvent.java \
 	java/awt/dnd/DragGestureListener.java \
 	java/awt/dnd/DragGestureRecognizer.java \
+	java/awt/dnd/DragSource.java \
 	java/awt/dnd/DragSourceAdapter.java \
 	java/awt/dnd/DragSourceContext.java \
 	java/awt/dnd/DragSourceDragEvent.java \
 	java/awt/dnd/DragSourceDropEvent.java \
 	java/awt/dnd/DragSourceEvent.java \
-	java/awt/dnd/DragSource.java \
 	java/awt/dnd/DragSourceListener.java \
 	java/awt/dnd/DragSourceMotionListener.java \
+	java/awt/dnd/DropTarget.java \
 	java/awt/dnd/DropTargetAdapter.java \
 	java/awt/dnd/DropTargetContext.java \
 	java/awt/dnd/DropTargetDragEvent.java \
 	java/awt/dnd/DropTargetDropEvent.java \
 	java/awt/dnd/DropTargetEvent.java \
-	java/awt/dnd/DropTarget.java \
 	java/awt/dnd/DropTargetListener.java \
 	java/awt/dnd/InvalidDnDOperationException.java \
 	java/awt/dnd/MouseDragGestureRecognizer.java
@@ -1200,11 +1200,11 @@
 	java/awt/dnd/peer/DropTargetPeer.java
 
 java_awt_event_SRCS = \
+	java/awt/event/AWTEventListener.java \
 	java/awt/event/ActionEvent.java \
 	java/awt/event/ActionListener.java \
 	java/awt/event/AdjustmentEvent.java \
 	java/awt/event/AdjustmentListener.java \
-	java/awt/event/AWTEventListener.java \
 	java/awt/event/ComponentAdapter.java \
 	java/awt/event/ComponentEvent.java \
 	java/awt/event/ComponentListener.java \
@@ -1288,18 +1288,18 @@
 
 java_awt_image_SRCS = \
 	java/awt/image/AreaAveragingScaleFilter.java \
+	java/awt/image/BufferStrategy.java \
 	java/awt/image/BufferedImage.java \
 	java/awt/image/BufferedImageOp.java \
-	java/awt/image/BufferStrategy.java \
 	java/awt/image/ColorModel.java \
 	java/awt/image/ComponentColorModel.java \
 	java/awt/image/ComponentSampleModel.java \
 	java/awt/image/CropImageFilter.java \
+	java/awt/image/DataBuffer.java \
 	java/awt/image/DataBufferByte.java \
 	java/awt/image/DataBufferDouble.java \
 	java/awt/image/DataBufferFloat.java \
 	java/awt/image/DataBufferInt.java \
-	java/awt/image/DataBuffer.java \
 	java/awt/image/DataBufferShort.java \
 	java/awt/image/DataBufferUShort.java \
 	java/awt/image/DirectColorModel.java \
@@ -1314,12 +1314,12 @@
 	java/awt/image/PackedColorModel.java \
 	java/awt/image/PixelGrabber.java \
 	java/awt/image/PixelInterleavedSampleModel.java \
-	java/awt/image/RasterFormatException.java \
+	java/awt/image/RGBImageFilter.java \
 	java/awt/image/Raster.java \
+	java/awt/image/RasterFormatException.java \
 	java/awt/image/RasterOp.java \
 	java/awt/image/RenderedImage.java \
 	java/awt/image/ReplicateScaleFilter.java \
-	java/awt/image/RGBImageFilter.java \
 	java/awt/image/SampleModel.java \
 	java/awt/image/SinglePixelPackedSampleModel.java \
 	java/awt/image/TileObserver.java \
@@ -1330,10 +1330,10 @@
 java_awt_image_renderable_SRCS = \
 	java/awt/image/renderable/ContextualRenderedImageFactory.java \
 	java/awt/image/renderable/ParameterBlock.java \
+	java/awt/image/renderable/RenderContext.java \
 	java/awt/image/renderable/RenderableImage.java \
 	java/awt/image/renderable/RenderableImageOp.java \
 	java/awt/image/renderable/RenderableImageProducer.java \
-	java/awt/image/renderable/RenderContext.java \
 	java/awt/image/renderable/RenderedImageFactory.java
 
 java_awt_peer_SRCS = \
@@ -1358,8 +1358,8 @@
 	java/awt/peer/PanelPeer.java \
 	java/awt/peer/PopupMenuPeer.java \
 	java/awt/peer/RobotPeer.java \
-	java/awt/peer/ScrollbarPeer.java \
 	java/awt/peer/ScrollPanePeer.java \
+	java/awt/peer/ScrollbarPeer.java \
 	java/awt/peer/TextAreaPeer.java \
 	java/awt/peer/TextComponentPeer.java \
 	java/awt/peer/TextFieldPeer.java \
@@ -1367,8 +1367,8 @@
 
 java_awt_print_SRCS = \
 	java/awt/print/Book.java \
-	java/awt/print/Pageable.java \
 	java/awt/print/PageFormat.java \
+	java/awt/print/Pageable.java \
 	java/awt/print/Paper.java \
 	java/awt/print/Printable.java \
 	java/awt/print/PrinterAbortException.java \
@@ -1409,18 +1409,18 @@
 	java/beans/Visibility.java
 
 java_beans_beancontext_SRCS = \
-	java/beans/beancontext/BeanContextChildComponentProxy.java \
+	java/beans/beancontext/BeanContext.java \
 	java/beans/beancontext/BeanContextChild.java \
+	java/beans/beancontext/BeanContextChildComponentProxy.java \
 	java/beans/beancontext/BeanContextChildSupport.java \
 	java/beans/beancontext/BeanContextContainerProxy.java \
 	java/beans/beancontext/BeanContextEvent.java \
-	java/beans/beancontext/BeanContext.java \
 	java/beans/beancontext/BeanContextMembershipEvent.java \
 	java/beans/beancontext/BeanContextMembershipListener.java \
 	java/beans/beancontext/BeanContextProxy.java \
 	java/beans/beancontext/BeanContextServiceAvailableEvent.java \
-	java/beans/beancontext/BeanContextServiceProviderBeanInfo.java \
 	java/beans/beancontext/BeanContextServiceProvider.java \
+	java/beans/beancontext/BeanContextServiceProviderBeanInfo.java \
 	java/beans/beancontext/BeanContextServiceRevokedEvent.java \
 	java/beans/beancontext/BeanContextServiceRevokedListener.java \
 	java/beans/beancontext/BeanContextServices.java \
@@ -1445,26 +1445,26 @@
 	java/io/DeleteFileHelper.java \
 	java/io/EOFException.java \
 	java/io/Externalizable.java \
+	java/io/File.java \
 	java/io/FileDescriptor.java \
 	java/io/FileFilter.java \
 	java/io/FileInputStream.java \
-	java/io/File.java \
-	java/io/FilenameFilter.java \
 	java/io/FileNotFoundException.java \
 	java/io/FileOutputStream.java \
 	java/io/FilePermission.java \
 	java/io/FileReader.java \
 	java/io/FileWriter.java \
+	java/io/FilenameFilter.java \
 	java/io/FilterInputStream.java \
 	java/io/FilterOutputStream.java \
 	java/io/FilterReader.java \
 	java/io/FilterWriter.java \
+	java/io/IOException.java \
 	java/io/InputStream.java \
 	java/io/InputStreamReader.java \
 	java/io/InterruptedIOException.java \
 	java/io/InvalidClassException.java \
 	java/io/InvalidObjectException.java \
-	java/io/IOException.java \
 	java/io/LineNumberInputStream.java \
 	java/io/LineNumberReader.java \
 	java/io/NotActiveException.java \
@@ -1500,8 +1500,8 @@
 	java/io/StringReader.java \
 	java/io/StringWriter.java \
 	java/io/SyncFailedException.java \
-	java/io/UnsupportedEncodingException.java \
 	java/io/UTFDataFormatException.java \
+	java/io/UnsupportedEncodingException.java \
 	java/io/VMFile.java \
 	java/io/VMObjectStreamClass.java \
 	java/io/WriteAbortedException.java \
@@ -1515,22 +1515,22 @@
 	java/lang/AssertionError.java \
 	java/lang/Boolean.java \
 	java/lang/Byte.java \
-	java/lang/Character.java \
 	java/lang/CharSequence.java \
+	java/lang/Character.java \
+	java/lang/Class.java \
 	java/lang/ClassCastException.java \
 	java/lang/ClassCircularityError.java \
 	java/lang/ClassFormatError.java \
-	java/lang/Class.java \
 	java/lang/ClassLoader.java \
 	java/lang/ClassNotFoundException.java \
-	java/lang/Cloneable.java \
 	java/lang/CloneNotSupportedException.java \
+	java/lang/Cloneable.java \
 	java/lang/Comparable.java \
 	java/lang/Compiler.java \
 	java/lang/Double.java \
 	java/lang/Error.java \
-	java/lang/ExceptionInInitializerError.java \
 	java/lang/Exception.java \
+	java/lang/ExceptionInInitializerError.java \
 	java/lang/Float.java \
 	java/lang/IllegalAccessError.java \
 	java/lang/IllegalAccessException.java \
@@ -1557,16 +1557,16 @@
 	java/lang/NoSuchMethodError.java \
 	java/lang/NoSuchMethodException.java \
 	java/lang/NullPointerException.java \
-	java/lang/NumberFormatException.java \
 	java/lang/Number.java \
+	java/lang/NumberFormatException.java \
 	java/lang/Object.java \
 	java/lang/OutOfMemoryError.java \
 	java/lang/Package.java \
-	java/lang/ProcessInputStream.java \
 	java/lang/Process.java \
+	java/lang/ProcessInputStream.java \
 	java/lang/Runnable.java \
-	java/lang/RuntimeException.java \
 	java/lang/Runtime.java \
+	java/lang/RuntimeException.java \
 	java/lang/RuntimePermission.java \
 	java/lang/SecurityException.java \
 	java/lang/SecurityManager.java \
@@ -1574,23 +1574,23 @@
 	java/lang/StackOverflowError.java \
 	java/lang/StackTraceElement.java \
 	java/lang/StrictMath.java \
+	java/lang/String.java \
 	java/lang/StringBuffer.java \
 	java/lang/StringIndexOutOfBoundsException.java \
-	java/lang/String.java \
 	java/lang/System.java \
+	java/lang/Thread.java \
 	java/lang/ThreadDeath.java \
 	java/lang/ThreadGroup.java \
-	java/lang/Thread.java \
 	java/lang/ThreadLocal.java \
 	java/lang/Throwable.java \
 	java/lang/UnknownError.java \
 	java/lang/UnsatisfiedLinkError.java \
 	java/lang/UnsupportedClassVersionError.java \
 	java/lang/UnsupportedOperationException.java \
-	java/lang/VerifyError.java \
-	java/lang/VirtualMachineError.java \
 	java/lang/VMSecurityManager.java \
 	java/lang/VMThrowable.java \
+	java/lang/VerifyError.java \
+	java/lang/VirtualMachineError.java \
 	java/lang/Void.java
 
 java_lang_ref_SRCS = \
@@ -1622,12 +1622,12 @@
 	java/net/Authenticator.java \
 	java/net/BindException.java \
 	java/net/ConnectException.java \
-	java/net/ContentHandlerFactory.java \
 	java/net/ContentHandler.java \
+	java/net/ContentHandlerFactory.java \
 	java/net/DatagramPacket.java \
-	java/net/DatagramSocketImplFactory.java \
-	java/net/DatagramSocketImpl.java \
 	java/net/DatagramSocket.java \
+	java/net/DatagramSocketImpl.java \
+	java/net/DatagramSocketImplFactory.java \
 	java/net/FileNameMap.java \
 	java/net/HttpURLConnection.java \
 	java/net/Inet4Address.java \
@@ -1645,56 +1645,56 @@
 	java/net/PortUnreachableException.java \
 	java/net/ProtocolException.java \
 	java/net/ServerSocket.java \
+	java/net/Socket.java \
 	java/net/SocketAddress.java \
 	java/net/SocketException.java \
-	java/net/SocketImplFactory.java \
 	java/net/SocketImpl.java \
-	java/net/Socket.java \
+	java/net/SocketImplFactory.java \
 	java/net/SocketOptions.java \
 	java/net/SocketPermission.java \
 	java/net/SocketTimeoutException.java \
-	java/net/UnknownHostException.java \
-	java/net/UnknownServiceException.java \
 	java/net/URI.java \
 	java/net/URISyntaxException.java \
+	java/net/URL.java \
 	java/net/URLClassLoader.java \
 	java/net/URLConnection.java \
 	java/net/URLDecoder.java \
 	java/net/URLEncoder.java \
-	java/net/URL.java \
+	java/net/URLStreamHandler.java \
 	java/net/URLStreamHandlerFactory.java \
-	java/net/URLStreamHandler.java
+	java/net/UnknownHostException.java \
+	java/net/UnknownServiceException.java
 
 java_nio_SRCS = \
 	java/nio/Buffer.java \
 	java/nio/BufferOverflowException.java \
 	java/nio/BufferUnderflowException.java \
+	java/nio/ByteBuffer.java \
 	java/nio/ByteBufferHelper.java \
 	java/nio/ByteBufferImpl.java \
-	java/nio/ByteBuffer.java \
 	java/nio/ByteOrder.java \
-	java/nio/CharBufferImpl.java \
 	java/nio/CharBuffer.java \
+	java/nio/CharBufferImpl.java \
 	java/nio/CharViewBufferImpl.java \
 	java/nio/DirectByteBufferImpl.java \
-	java/nio/DoubleBufferImpl.java \
 	java/nio/DoubleBuffer.java \
+	java/nio/DoubleBufferImpl.java \
 	java/nio/DoubleViewBufferImpl.java \
-	java/nio/FloatBufferImpl.java \
 	java/nio/FloatBuffer.java \
+	java/nio/FloatBufferImpl.java \
 	java/nio/FloatViewBufferImpl.java \
-	java/nio/IntBufferImpl.java \
 	java/nio/IntBuffer.java \
+	java/nio/IntBufferImpl.java \
 	java/nio/IntViewBufferImpl.java \
 	java/nio/InvalidMarkException.java \
-	java/nio/LongBufferImpl.java \
 	java/nio/LongBuffer.java \
+	java/nio/LongBufferImpl.java \
 	java/nio/LongViewBufferImpl.java \
-	java/nio/MappedByteBufferImpl.java \
 	java/nio/MappedByteBuffer.java \
+	java/nio/MappedByteBufferImpl.java \
 	java/nio/ReadOnlyBufferException.java \
-	java/nio/ShortBufferImpl.java \
 	java/nio/ShortBuffer.java \
+	java/nio/ShortBufferImpl.java \
 	java/nio/ShortViewBufferImpl.java
 
 java_nio_channels_SRCS = \
@@ -1710,8 +1710,8 @@
 	java/nio/channels/ConnectionPendingException.java \
 	java/nio/channels/DatagramChannel.java \
 	java/nio/channels/FileChannel.java \
-	java/nio/channels/FileLockInterruptionException.java \
 	java/nio/channels/FileLock.java \
+	java/nio/channels/FileLockInterruptionException.java \
 	java/nio/channels/GatheringByteChannel.java \
 	java/nio/channels/IllegalBlockingModeException.java \
 	java/nio/channels/IllegalSelectorException.java \
@@ -1743,9 +1743,9 @@
 
 java_nio_charset_SRCS = \
 	java/nio/charset/CharacterCodingException.java \
+	java/nio/charset/Charset.java \
 	java/nio/charset/CharsetDecoder.java \
 	java/nio/charset/CharsetEncoder.java \
-	java/nio/charset/Charset.java \
 	java/nio/charset/CoderMalfunctionError.java \
 	java/nio/charset/CoderResult.java \
 	java/nio/charset/CodingErrorAction.java \
@@ -1767,10 +1767,10 @@
 	java/rmi/Naming.java \
 	java/rmi/NoSuchObjectException.java \
 	java/rmi/NotBoundException.java \
-	java/rmi/RemoteException.java \
-	java/rmi/Remote.java \
 	java/rmi/RMISecurityException.java \
 	java/rmi/RMISecurityManager.java \
+	java/rmi/Remote.java \
+	java/rmi/RemoteException.java \
 	java/rmi/ServerError.java \
 	java/rmi/ServerException.java \
 	java/rmi/ServerRuntimeException.java \
@@ -1784,9 +1784,9 @@
 	java/rmi/activation/ActivateFailedException.java \
 	java/rmi/activation/ActivationDesc.java \
 	java/rmi/activation/ActivationException.java \
+	java/rmi/activation/ActivationGroup.java \
 	java/rmi/activation/ActivationGroupDesc.java \
 	java/rmi/activation/ActivationGroupID.java \
-	java/rmi/activation/ActivationGroup.java \
 	java/rmi/activation/ActivationID.java \
 	java/rmi/activation/ActivationInstantiator.java \
 	java/rmi/activation/ActivationMonitor.java \
@@ -1802,8 +1802,8 @@
 
 java_rmi_registry_SRCS = \
 	java/rmi/registry/LocateRegistry.java \
-	java/rmi/registry/RegistryHandler.java \
-	java/rmi/registry/Registry.java
+	java/rmi/registry/Registry.java \
+	java/rmi/registry/RegistryHandler.java
 
 java_rmi_server_SRCS = \
 	java/rmi/server/ExportException.java \
@@ -1811,17 +1811,17 @@
 	java/rmi/server/LogStream.java \
 	java/rmi/server/ObjID.java \
 	java/rmi/server/Operation.java \
-	java/rmi/server/RemoteCall.java \
-	java/rmi/server/RemoteObject.java \
-	java/rmi/server/RemoteRef.java \
-	java/rmi/server/RemoteServer.java \
-	java/rmi/server/RemoteStub.java \
 	java/rmi/server/RMIClassLoader.java \
 	java/rmi/server/RMIClassLoaderSpi.java \
 	java/rmi/server/RMIClientSocketFactory.java \
 	java/rmi/server/RMIFailureHandler.java \
 	java/rmi/server/RMIServerSocketFactory.java \
 	java/rmi/server/RMISocketFactory.java \
+	java/rmi/server/RemoteCall.java \
+	java/rmi/server/RemoteObject.java \
+	java/rmi/server/RemoteRef.java \
+	java/rmi/server/RemoteServer.java \
+	java/rmi/server/RemoteStub.java \
 	java/rmi/server/ServerCloneException.java \
 	java/rmi/server/ServerNotActiveException.java \
 	java/rmi/server/ServerRef.java \
@@ -1850,57 +1850,59 @@
 	java/security/DigestOutputStream.java \
 	java/security/DomainCombiner.java \
 	java/security/GeneralSecurityException.java \
-	java/security/GuardedObject.java \
 	java/security/Guard.java \
+	java/security/GuardedObject.java \
 	java/security/Identity.java \
 	java/security/IdentityScope.java \
+	java/security/IntersectingDomainCombiner.java \
 	java/security/InvalidAlgorithmParameterException.java \
 	java/security/InvalidKeyException.java \
 	java/security/InvalidParameterException.java \
+	java/security/Key.java \
 	java/security/KeyException.java \
 	java/security/KeyFactory.java \
 	java/security/KeyFactorySpi.java \
-	java/security/Key.java \
 	java/security/KeyManagementException.java \
+	java/security/KeyPair.java \
 	java/security/KeyPairGenerator.java \
 	java/security/KeyPairGeneratorSpi.java \
-	java/security/KeyPair.java \
-	java/security/KeyStoreException.java \
 	java/security/KeyStore.java \
+	java/security/KeyStoreException.java \
 	java/security/KeyStoreSpi.java \
 	java/security/MessageDigest.java \
 	java/security/MessageDigestSpi.java \
 	java/security/NoSuchAlgorithmException.java \
 	java/security/NoSuchProviderException.java \
-	java/security/PermissionCollection.java \
 	java/security/Permission.java \
+	java/security/PermissionCollection.java \
 	java/security/Permissions.java \
 	java/security/Policy.java \
 	java/security/Principal.java \
 	java/security/PrivateKey.java \
-	java/security/PrivilegedActionException.java \
 	java/security/PrivilegedAction.java \
+	java/security/PrivilegedActionException.java \
 	java/security/PrivilegedExceptionAction.java \
 	java/security/ProtectionDomain.java \
-	java/security/ProviderException.java \
 	java/security/Provider.java \
+	java/security/ProviderException.java \
 	java/security/PublicKey.java \
 	java/security/SecureClassLoader.java \
 	java/security/SecureRandom.java \
 	java/security/SecureRandomSpi.java \
 	java/security/Security.java \
 	java/security/SecurityPermission.java \
-	java/security/SignatureException.java \
 	java/security/Signature.java \
+	java/security/SignatureException.java \
 	java/security/SignatureSpi.java \
 	java/security/SignedObject.java \
 	java/security/Signer.java \
 	java/security/UnrecoverableKeyException.java \
-	java/security/UnresolvedPermission.java
+	java/security/UnresolvedPermission.java \
+	java/security/VMAccessController.java
 
 java_security_acl_SRCS = \
-	java/security/acl/AclEntry.java \
 	java/security/acl/Acl.java \
+	java/security/acl/AclEntry.java \
 	java/security/acl/AclNotFoundException.java \
 	java/security/acl/Group.java \
 	java/security/acl/LastOwnerException.java \
@@ -1909,33 +1911,33 @@
 	java/security/acl/Permission.java
 
 java_security_cert_SRCS = \
-	java/security/cert/CertificateEncodingException.java \
-	java/security/cert/CertificateException.java \
-	java/security/cert/CertificateExpiredException.java \
-	java/security/cert/CertificateFactory.java \
-	java/security/cert/CertificateFactorySpi.java \
-	java/security/cert/Certificate.java \
-	java/security/cert/CertificateNotYetValidException.java \
-	java/security/cert/CertificateParsingException.java \
-	java/security/cert/CertPathBuilderException.java \
+	java/security/cert/CRL.java \
+	java/security/cert/CRLException.java \
+	java/security/cert/CRLSelector.java \
+	java/security/cert/CertPath.java \
 	java/security/cert/CertPathBuilder.java \
+	java/security/cert/CertPathBuilderException.java \
 	java/security/cert/CertPathBuilderResult.java \
 	java/security/cert/CertPathBuilderSpi.java \
-	java/security/cert/CertPath.java \
 	java/security/cert/CertPathParameters.java \
-	java/security/cert/CertPathValidatorException.java \
 	java/security/cert/CertPathValidator.java \
+	java/security/cert/CertPathValidatorException.java \
 	java/security/cert/CertPathValidatorResult.java \
 	java/security/cert/CertPathValidatorSpi.java \
 	java/security/cert/CertSelector.java \
-	java/security/cert/CertStoreException.java \
 	java/security/cert/CertStore.java \
+	java/security/cert/CertStoreException.java \
 	java/security/cert/CertStoreParameters.java \
 	java/security/cert/CertStoreSpi.java \
+	java/security/cert/Certificate.java \
+	java/security/cert/CertificateEncodingException.java \
+	java/security/cert/CertificateException.java \
+	java/security/cert/CertificateExpiredException.java \
+	java/security/cert/CertificateFactory.java \
+	java/security/cert/CertificateFactorySpi.java \
+	java/security/cert/CertificateNotYetValidException.java \
+	java/security/cert/CertificateParsingException.java \
 	java/security/cert/CollectionCertStoreParameters.java \
-	java/security/cert/CRLException.java \
-	java/security/cert/CRL.java \
-	java/security/cert/CRLSelector.java \
 	java/security/cert/LDAPCertStoreParameters.java \
 	java/security/cert/PKIXBuilderParameters.java \
 	java/security/cert/PKIXCertPathBuilderResult.java \
@@ -1945,9 +1947,9 @@
 	java/security/cert/PolicyNode.java \
 	java/security/cert/PolicyQualifierInfo.java \
 	java/security/cert/TrustAnchor.java \
-	java/security/cert/X509Certificate.java \
-	java/security/cert/X509CRLEntry.java \
 	java/security/cert/X509CRL.java \
+	java/security/cert/X509CRLEntry.java \
+	java/security/cert/X509Certificate.java \
 	java/security/cert/X509Extension.java
 
 java_security_interfaces_SRCS = \
@@ -1988,8 +1990,8 @@
 	java/sql/CallableStatement.java \
 	java/sql/Clob.java \
 	java/sql/Connection.java \
-	java/sql/DatabaseMetaData.java \
 	java/sql/DataTruncation.java \
+	java/sql/DatabaseMetaData.java \
 	java/sql/Date.java \
 	java/sql/Driver.java \
 	java/sql/DriverManager.java \
@@ -1999,13 +2001,13 @@
 	java/sql/Ref.java \
 	java/sql/ResultSet.java \
 	java/sql/ResultSetMetaData.java \
-	java/sql/Savepoint.java \
 	java/sql/SQLData.java \
 	java/sql/SQLException.java \
 	java/sql/SQLInput.java \
 	java/sql/SQLOutput.java \
 	java/sql/SQLPermission.java \
 	java/sql/SQLWarning.java \
+	java/sql/Savepoint.java \
 	java/sql/Statement.java \
 	java/sql/Struct.java \
 	java/sql/Time.java \
@@ -2015,8 +2017,8 @@
 java_text_SRCS = \
 	java/text/Annotation.java \
 	java/text/AttributedCharacterIterator.java \
-	java/text/AttributedStringIterator.java \
 	java/text/AttributedString.java \
+	java/text/AttributedStringIterator.java \
 	java/text/BreakIterator.java \
 	java/text/CharacterIterator.java \
 	java/text/ChoiceFormat.java \
@@ -2068,8 +2070,8 @@
 	java/util/LinkedHashMap.java \
 	java/util/LinkedHashSet.java \
 	java/util/LinkedList.java \
-	java/util/ListIterator.java \
 	java/util/List.java \
+	java/util/ListIterator.java \
 	java/util/ListResourceBundle.java \
 	java/util/Locale.java \
 	java/util/Map.java \
@@ -2078,11 +2080,11 @@
 	java/util/Observable.java \
 	java/util/Observer.java \
 	java/util/Properties.java \
-	java/util/PropertyPermissionCollection.java \
 	java/util/PropertyPermission.java \
+	java/util/PropertyPermissionCollection.java \
 	java/util/PropertyResourceBundle.java \
-	java/util/RandomAccess.java \
 	java/util/Random.java \
+	java/util/RandomAccess.java \
 	java/util/ResourceBundle.java \
 	java/util/Set.java \
 	java/util/SimpleTimeZone.java \
@@ -2090,9 +2092,9 @@
 	java/util/SortedSet.java \
 	java/util/Stack.java \
 	java/util/StringTokenizer.java \
+	java/util/TimeZone.java \
 	java/util/Timer.java \
 	java/util/TimerTask.java \
-	java/util/TimeZone.java \
 	java/util/TooManyListenersException.java \
 	java/util/TreeMap.java \
 	java/util/TreeSet.java \
@@ -2116,10 +2118,10 @@
 	java/util/logging/Formatter.java \
 	java/util/logging/Handler.java \
 	java/util/logging/Level.java \
-	java/util/logging/Logger.java \
-	java/util/logging/LoggingPermission.java \
 	java/util/logging/LogManager.java \
 	java/util/logging/LogRecord.java \
+	java/util/logging/Logger.java \
+	java/util/logging/LoggingPermission.java \
 	java/util/logging/MemoryHandler.java \
 	java/util/logging/SimpleFormatter.java \
 	java/util/logging/SocketHandler.java \
@@ -2139,8 +2141,8 @@
 	java/util/prefs/NodeChangeListener.java \
 	java/util/prefs/PreferenceChangeEvent.java \
 	java/util/prefs/PreferenceChangeListener.java \
-	java/util/prefs/PreferencesFactory.java \
-	java/util/prefs/Preferences.java
+	java/util/prefs/Preferences.java \
+	java/util/prefs/PreferencesFactory.java
 
 java_util_regex_SRCS = \
 	java/util/regex/Matcher.java \
@@ -2149,17 +2151,17 @@
 
 java_util_zip_SRCS = \
 	java/util/zip/Adler32.java \
+	java/util/zip/CRC32.java \
 	java/util/zip/CheckedInputStream.java \
 	java/util/zip/CheckedOutputStream.java \
 	java/util/zip/Checksum.java \
-	java/util/zip/CRC32.java \
 	java/util/zip/DataFormatException.java \
 	java/util/zip/Deflater.java \
 	java/util/zip/DeflaterOutputStream.java \
 	java/util/zip/GZIPInputStream.java \
 	java/util/zip/GZIPOutputStream.java \
-	java/util/zip/InflaterInputStream.java \
 	java/util/zip/Inflater.java \
+	java/util/zip/InflaterInputStream.java \
 	java/util/zip/ZipConstants.java \
 	java/util/zip/ZipEntry.java \
 	java/util/zip/ZipException.java \
@@ -2168,6 +2170,7 @@
 	java/util/zip/ZipOutputStream.java
 
 javax_accessibility_SRCS = \
+	javax/accessibility/Accessible.java \
 	javax/accessibility/AccessibleAction.java \
 	javax/accessibility/AccessibleBundle.java \
 	javax/accessibility/AccessibleComponent.java \
@@ -2178,7 +2181,6 @@
 	javax/accessibility/AccessibleHyperlink.java \
 	javax/accessibility/AccessibleHypertext.java \
 	javax/accessibility/AccessibleIcon.java \
-	javax/accessibility/Accessible.java \
 	javax/accessibility/AccessibleKeyBinding.java \
 	javax/accessibility/AccessibleRelation.java \
 	javax/accessibility/AccessibleRelationSet.java \
@@ -2240,9 +2242,9 @@
 	javax/naming/LinkLoopException.java \
 	javax/naming/LinkRef.java \
 	javax/naming/MalformedLinkException.java \
+	javax/naming/Name.java \
 	javax/naming/NameAlreadyBoundException.java \
 	javax/naming/NameClassPair.java \
-	javax/naming/Name.java \
 	javax/naming/NameNotFoundException.java \
 	javax/naming/NameParser.java \
 	javax/naming/NamingEnumeration.java \
@@ -2254,8 +2256,8 @@
 	javax/naming/OperationNotSupportedException.java \
 	javax/naming/PartialResultException.java \
 	javax/naming/RefAddr.java \
-	javax/naming/Referenceable.java \
 	javax/naming/Reference.java \
+	javax/naming/Referenceable.java \
 	javax/naming/ReferralException.java \
 	javax/naming/ServiceUnavailableException.java \
 	javax/naming/SizeLimitExceededException.java \
@@ -2263,8 +2265,8 @@
 	javax/naming/TimeLimitExceededException.java
 
 javax_naming_directory_SRCS = \
-	javax/naming/directory/AttributeInUseException.java \
 	javax/naming/directory/Attribute.java \
+	javax/naming/directory/AttributeInUseException.java \
 	javax/naming/directory/AttributeModificationException.java \
 	javax/naming/directory/Attributes.java \
 	javax/naming/directory/BasicAttribute.java \
@@ -2272,8 +2274,8 @@
 	javax/naming/directory/DirContext.java \
 	javax/naming/directory/InitialDirContext.java \
 	javax/naming/directory/InvalidAttributeIdentifierException.java \
-	javax/naming/directory/InvalidAttributesException.java \
 	javax/naming/directory/InvalidAttributeValueException.java \
+	javax/naming/directory/InvalidAttributesException.java \
 	javax/naming/directory/InvalidSearchControlsException.java \
 	javax/naming/directory/InvalidSearchFilterException.java \
 	javax/naming/directory/ModificationItem.java \
@@ -2292,27 +2294,27 @@
 	javax/naming/event/ObjectChangeListener.java
 
 javax_naming_ldap_SRCS = \
-	javax/naming/ldap/ControlFactory.java \
 	javax/naming/ldap/Control.java \
+	javax/naming/ldap/ControlFactory.java \
 	javax/naming/ldap/ExtendedRequest.java \
 	javax/naming/ldap/ExtendedResponse.java \
 	javax/naming/ldap/HasControls.java \
 	javax/naming/ldap/InitialLdapContext.java \
 	javax/naming/ldap/LdapContext.java \
 	javax/naming/ldap/LdapReferralException.java \
-	javax/naming/ldap/UnsolicitedNotificationEvent.java \
 	javax/naming/ldap/UnsolicitedNotification.java \
+	javax/naming/ldap/UnsolicitedNotificationEvent.java \
 	javax/naming/ldap/UnsolicitedNotificationListener.java
 
 javax_naming_spi_SRCS = \
-	javax/naming/spi/DirectoryManager.java \
 	javax/naming/spi/DirObjectFactory.java \
 	javax/naming/spi/DirStateFactory.java \
-	javax/naming/spi/InitialContextFactoryBuilder.java \
+	javax/naming/spi/DirectoryManager.java \
 	javax/naming/spi/InitialContextFactory.java \
+	javax/naming/spi/InitialContextFactoryBuilder.java \
 	javax/naming/spi/NamingManager.java \
-	javax/naming/spi/ObjectFactoryBuilder.java \
 	javax/naming/spi/ObjectFactory.java \
+	javax/naming/spi/ObjectFactoryBuilder.java \
 	javax/naming/spi/ResolveResult.java \
 	javax/naming/spi/Resolver.java \
 	javax/naming/spi/StateFactory.java
@@ -2329,9 +2331,9 @@
 	javax/net/ssl/HandshakeCompletedListener.java \
 	javax/net/ssl/HostnameVerifier.java \
 	javax/net/ssl/HttpsURLConnection.java \
+	javax/net/ssl/KeyManager.java \
 	javax/net/ssl/KeyManagerFactory.java \
 	javax/net/ssl/KeyManagerFactorySpi.java \
-	javax/net/ssl/KeyManager.java \
 	javax/net/ssl/ManagerFactoryParameters.java \
 	javax/net/ssl/SSLContext.java \
 	javax/net/ssl/SSLContextSpi.java \
@@ -2341,26 +2343,26 @@
 	javax/net/ssl/SSLPeerUnverifiedException.java \
 	javax/net/ssl/SSLPermission.java \
 	javax/net/ssl/SSLProtocolException.java \
-	javax/net/ssl/SSLServerSocketFactory.java \
 	javax/net/ssl/SSLServerSocket.java \
+	javax/net/ssl/SSLServerSocketFactory.java \
+	javax/net/ssl/SSLSession.java \
 	javax/net/ssl/SSLSessionBindingEvent.java \
 	javax/net/ssl/SSLSessionBindingListener.java \
 	javax/net/ssl/SSLSessionContext.java \
-	javax/net/ssl/SSLSession.java \
-	javax/net/ssl/SSLSocketFactory.java \
 	javax/net/ssl/SSLSocket.java \
+	javax/net/ssl/SSLSocketFactory.java \
 	javax/net/ssl/TrivialHostnameVerifier.java \
+	javax/net/ssl/TrustManager.java \
 	javax/net/ssl/TrustManagerFactory.java \
 	javax/net/ssl/TrustManagerFactorySpi.java \
-	javax/net/ssl/TrustManager.java \
 	javax/net/ssl/X509KeyManager.java \
 	javax/net/ssl/X509TrustManager.java
 
 javax_print_SRCS = \
 	javax/print/AttributeException.java \
 	javax/print/CancelablePrintJob.java \
-	javax/print/DocFlavor.java \
 	javax/print/Doc.java \
+	javax/print/DocFlavor.java \
 	javax/print/DocPrintJob.java \
 	javax/print/FlavorException.java \
 	javax/print/MultiDoc.java \
@@ -2398,8 +2400,8 @@
 	javax/print/attribute/Size2DSyntax.java \
 	javax/print/attribute/SupportedValuesAttribute.java \
 	javax/print/attribute/TextSyntax.java \
-	javax/print/attribute/UnmodifiableSetException.java \
-	javax/print/attribute/URISyntax.java
+	javax/print/attribute/URISyntax.java \
+	javax/print/attribute/UnmodifiableSetException.java
 
 javax_print_attribute_standard_SRCS = \
 	javax/print/attribute/standard/ColorSupported.java \
@@ -2413,14 +2415,14 @@
 	javax/print/attribute/standard/Fidelity.java \
 	javax/print/attribute/standard/Finishings.java \
 	javax/print/attribute/standard/JobHoldUntil.java \
-	javax/print/attribute/standard/JobImpressionsCompleted.java \
 	javax/print/attribute/standard/JobImpressions.java \
+	javax/print/attribute/standard/JobImpressionsCompleted.java \
 	javax/print/attribute/standard/JobImpressionsSupported.java \
 	javax/print/attribute/standard/JobKOctets.java \
 	javax/print/attribute/standard/JobKOctetsProcessed.java \
 	javax/print/attribute/standard/JobKOctetsSupported.java \
-	javax/print/attribute/standard/JobMediaSheetsCompleted.java \
 	javax/print/attribute/standard/JobMediaSheets.java \
+	javax/print/attribute/standard/JobMediaSheetsCompleted.java \
 	javax/print/attribute/standard/JobMediaSheetsSupported.java \
 	javax/print/attribute/standard/JobMessageFromOperator.java \
 	javax/print/attribute/standard/JobName.java \
@@ -2440,11 +2442,12 @@
 	javax/print/attribute/standard/NumberUpSupported.java \
 	javax/print/attribute/standard/OrientationRequested.java \
 	javax/print/attribute/standard/OutputDeviceAssigned.java \
+	javax/print/attribute/standard/PDLOverrideSupported.java \
 	javax/print/attribute/standard/PageRanges.java \
-	javax/print/attribute/standard/PagesPerMinuteColor.java \
 	javax/print/attribute/standard/PagesPerMinute.java \
-	javax/print/attribute/standard/PDLOverrideSupported.java \
+	javax/print/attribute/standard/PagesPerMinuteColor.java \
 	javax/print/attribute/standard/PresentationDirection.java \
+	javax/print/attribute/standard/PrintQuality.java \
 	javax/print/attribute/standard/PrinterInfo.java \
 	javax/print/attribute/standard/PrinterIsAcceptingJobs.java \
 	javax/print/attribute/standard/PrinterLocation.java \
@@ -2458,7 +2461,6 @@
 	javax/print/attribute/standard/PrinterStateReason.java \
 	javax/print/attribute/standard/PrinterStateReasons.java \
 	javax/print/attribute/standard/PrinterURI.java \
-	javax/print/attribute/standard/PrintQuality.java \
 	javax/print/attribute/standard/QueuedJobCount.java \
 	javax/print/attribute/standard/ReferenceUriSchemesSupported.java \
 	javax/print/attribute/standard/RequestingUserName.java \
@@ -2485,22 +2487,22 @@
 	javax/rmi/CORBA/ClassDesc.java \
 	javax/rmi/CORBA/ObjectImpl.java \
 	javax/rmi/CORBA/PortableRemoteObjectDelegate.java \
-	javax/rmi/CORBA/StubDelegate.java \
 	javax/rmi/CORBA/Stub.java \
+	javax/rmi/CORBA/StubDelegate.java \
 	javax/rmi/CORBA/SystemException.java \
 	javax/rmi/CORBA/Tie.java \
-	javax/rmi/CORBA/UtilDelegate.java \
 	javax/rmi/CORBA/Util.java \
+	javax/rmi/CORBA/UtilDelegate.java \
 	javax/rmi/CORBA/ValueHandler.java
 
 javax_security_auth_x500_SRCS = \
 	javax/security/auth/x500/X500Principal.java
 
 javax_security_cert_SRCS = \
+	javax/security/cert/Certificate.java \
 	javax/security/cert/CertificateEncodingException.java \
 	javax/security/cert/CertificateException.java \
 	javax/security/cert/CertificateExpiredException.java \
-	javax/security/cert/Certificate.java \
 	javax/security/cert/CertificateNotYetValidException.java \
 	javax/security/cert/CertificateParsingException.java \
 	javax/security/cert/X509CertBridge.java \
@@ -2551,8 +2553,8 @@
 	javax/sound/sampled/DataLine.java \
 	javax/sound/sampled/EnumControl.java \
 	javax/sound/sampled/FloatControl.java \
-	javax/sound/sampled/LineEvent.java \
 	javax/sound/sampled/Line.java \
+	javax/sound/sampled/LineEvent.java \
 	javax/sound/sampled/LineListener.java \
 	javax/sound/sampled/LineUnavailableException.java \
 	javax/sound/sampled/Mixer.java \
@@ -2574,9 +2576,9 @@
 	javax/sql/ConnectionPoolDataSource.java \
 	javax/sql/DataSource.java \
 	javax/sql/PooledConnection.java \
+	javax/sql/RowSet.java \
 	javax/sql/RowSetEvent.java \
 	javax/sql/RowSetInternal.java \
-	javax/sql/RowSet.java \
 	javax/sql/RowSetListener.java \
 	javax/sql/RowSetMetaData.java \
 	javax/sql/RowSetReader.java \
@@ -2614,12 +2616,12 @@
 
 javax_xml_parsers_SRCS = \
 	javax/xml/parsers/ClassStuff.java \
-	javax/xml/parsers/DocumentBuilderFactory.java \
 	javax/xml/parsers/DocumentBuilder.java \
+	javax/xml/parsers/DocumentBuilderFactory.java \
 	javax/xml/parsers/FactoryConfigurationError.java \
 	javax/xml/parsers/ParserConfigurationException.java \
-	javax/xml/parsers/SAXParserFactory.java \
-	javax/xml/parsers/SAXParser.java
+	javax/xml/parsers/SAXParser.java \
+	javax/xml/parsers/SAXParserFactory.java
 
 javax_xml_transform_SRCS = \
 	javax/xml/transform/ClassStuff.java \
@@ -2629,11 +2631,11 @@
 	javax/xml/transform/Source.java \
 	javax/xml/transform/SourceLocator.java \
 	javax/xml/transform/Templates.java \
+	javax/xml/transform/Transformer.java \
 	javax/xml/transform/TransformerConfigurationException.java \
 	javax/xml/transform/TransformerException.java \
-	javax/xml/transform/TransformerFactoryConfigurationError.java \
 	javax/xml/transform/TransformerFactory.java \
-	javax/xml/transform/Transformer.java \
+	javax/xml/transform/TransformerFactoryConfigurationError.java \
 	javax/xml/transform/URIResolver.java
 
 javax_xml_transform_dom_SRCS = \
@@ -2716,8 +2718,8 @@
 kaffe_lang_SRCS = \
 	kaffe/lang/AppClassLoader.java \
 	kaffe/lang/ClassPathReader.java \
-	kaffe/lang/MemoryAdviceCallback.java \
 	kaffe/lang/MemoryAdvice.java \
+	kaffe/lang/MemoryAdviceCallback.java \
 	kaffe/lang/PackageHelper.java \
 	kaffe/lang/PrimordialClassLoader.java \
 	kaffe/lang/ResourceReader.java \
@@ -2740,14 +2742,14 @@
 	kaffe/security/provider/MD2.java \
 	kaffe/security/provider/MD4.java \
 	kaffe/security/provider/MD5.java \
-	kaffe/security/provider/SHA1PRNG.java \
 	kaffe/security/provider/SHA.java \
+	kaffe/security/provider/SHA1PRNG.java \
 	kaffe/security/provider/UpdateDigest.java
 
 kaffe_tools_jar_SRCS = \
 	kaffe/tools/jar/Jar.java \
-	kaffe/tools/jar/XPFileInputStream.java \
 	kaffe/tools/jar/XPFile.java \
+	kaffe/tools/jar/XPFileInputStream.java \
 	kaffe/tools/jar/XPFileOutputStream.java \
 	kaffe/tools/jar/XPFileReader.java \
 	kaffe/tools/jar/XPFileWriter.java
@@ -2773,29 +2775,29 @@
 	kaffe/util/NotImplementedReport.java \
 	kaffe/util/Ptr.java \
 	kaffe/util/SupportDisabled.java \
-	kaffe/util/TimerClient.java \
 	kaffe/util/Timer.java \
+	kaffe/util/TimerClient.java \
 	kaffe/util/UNIXTimeZone.java \
 	kaffe/util/UTF8.java \
 	kaffe/util/VectorSnapshot.java
 
 kaffe_util_locale_SRCS = \
+	kaffe/util/locale/Country.java \
 	kaffe/util/locale/CountryCodes.java \
 	kaffe/util/locale/Country_de.java \
 	kaffe/util/locale/Country_en.java \
 	kaffe/util/locale/Country_fr.java \
 	kaffe/util/locale/Country_it.java \
 	kaffe/util/locale/Country_ja.java \
-	kaffe/util/locale/Country.java \
 	kaffe/util/locale/Country_ko.java \
 	kaffe/util/locale/Country_zh.java \
+	kaffe/util/locale/Language.java \
 	kaffe/util/locale/LanguageCodes.java \
 	kaffe/util/locale/Language_de.java \
 	kaffe/util/locale/Language_en.java \
 	kaffe/util/locale/Language_fr.java \
 	kaffe/util/locale/Language_it.java \
 	kaffe/util/locale/Language_ja.java \
-	kaffe/util/locale/Language.java \
 	kaffe/util/locale/Language_ko.java \
 	kaffe/util/locale/Language_zh.java
 
@@ -2814,18 +2816,18 @@
 	org/tritonus/core/TMidiConfig.java
 
 org_tritonus_lowlevel_alsa_SRCS = \
-	org/tritonus/lowlevel/alsa/AlsaCtlCardInfo.java \
-	org/tritonus/lowlevel/alsa/AlsaCtl.java \
 	org/tritonus/lowlevel/alsa/Alsa.java \
-	org/tritonus/lowlevel/alsa/AlsaMixerElement.java \
+	org/tritonus/lowlevel/alsa/AlsaCtl.java \
+	org/tritonus/lowlevel/alsa/AlsaCtlCardInfo.java \
 	org/tritonus/lowlevel/alsa/AlsaMixer.java \
-	org/tritonus/lowlevel/alsa/AlsaPcmHWParamsFormatMask.java \
-	org/tritonus/lowlevel/alsa/AlsaPcmHWParams.java \
+	org/tritonus/lowlevel/alsa/AlsaMixerElement.java \
 	org/tritonus/lowlevel/alsa/AlsaPcm.java \
+	org/tritonus/lowlevel/alsa/AlsaPcmHWParams.java \
+	org/tritonus/lowlevel/alsa/AlsaPcmHWParamsFormatMask.java \
 	org/tritonus/lowlevel/alsa/AlsaPcmSWParams.java \
+	org/tritonus/lowlevel/alsa/AlsaSeq.java \
 	org/tritonus/lowlevel/alsa/AlsaSeqClientInfo.java \
 	org/tritonus/lowlevel/alsa/AlsaSeqEvent.java \
-	org/tritonus/lowlevel/alsa/AlsaSeq.java \
 	org/tritonus/lowlevel/alsa/AlsaSeqPortInfo.java \
 	org/tritonus/lowlevel/alsa/AlsaSeqPortSubscribe.java \
 	org/tritonus/lowlevel/alsa/AlsaSeqQueueInfo.java \
@@ -2957,8 +2959,8 @@
 	org/tritonus/share/sampled/mixer/TEnumControl.java \
 	org/tritonus/share/sampled/mixer/TFloatControl.java \
 	org/tritonus/share/sampled/mixer/TLine.java \
-	org/tritonus/share/sampled/mixer/TMixerInfo.java \
 	org/tritonus/share/sampled/mixer/TMixer.java \
+	org/tritonus/share/sampled/mixer/TMixerInfo.java \
 	org/tritonus/share/sampled/mixer/TMixerProvider.java \
 	org/tritonus/share/sampled/mixer/TPort.java \
 	org/tritonus/share/sampled/mixer/TSoftClip.java
@@ -2968,23 +2970,23 @@
 	org/w3c/dom/CDATASection.java \
 	org/w3c/dom/CharacterData.java \
 	org/w3c/dom/Comment.java \
-	org/w3c/dom/DocumentFragment.java \
-	org/w3c/dom/Document.java \
-	org/w3c/dom/DocumentType.java \
 	org/w3c/dom/DOMConfiguration.java \
-	org/w3c/dom/DOMErrorHandler.java \
 	org/w3c/dom/DOMError.java \
+	org/w3c/dom/DOMErrorHandler.java \
 	org/w3c/dom/DOMException.java \
 	org/w3c/dom/DOMImplementation.java \
 	org/w3c/dom/DOMImplementationList.java \
 	org/w3c/dom/DOMImplementationSource.java \
 	org/w3c/dom/DOMLocator.java \
 	org/w3c/dom/DOMStringList.java \
+	org/w3c/dom/Document.java \
+	org/w3c/dom/DocumentFragment.java \
+	org/w3c/dom/DocumentType.java \
 	org/w3c/dom/Element.java \
 	org/w3c/dom/Entity.java \
 	org/w3c/dom/EntityReference.java \
-	org/w3c/dom/NamedNodeMap.java \
 	org/w3c/dom/NameList.java \
+	org/w3c/dom/NamedNodeMap.java \
 	org/w3c/dom/Node.java \
 	org/w3c/dom/NodeList.java \
 	org/w3c/dom/Notation.java \
@@ -2997,7 +2999,6 @@
 	org/w3c/dom/bootstrap/DOMImplementationRegistry.java
 
 org_w3c_dom_css_SRCS = \
-	org/w3c/dom/css/Counter.java \
 	org/w3c/dom/css/CSS2Azimuth.java \
 	org/w3c/dom/css/CSS2BackgroundPosition.java \
 	org/w3c/dom/css/CSS2BorderSpacing.java \
@@ -3024,17 +3025,18 @@
 	org/w3c/dom/css/CSSUnknownRule.java \
 	org/w3c/dom/css/CSSValue.java \
 	org/w3c/dom/css/CSSValueList.java \
-	org/w3c/dom/css/DocumentCSS.java \
+	org/w3c/dom/css/Counter.java \
 	org/w3c/dom/css/DOMImplementationCSS.java \
+	org/w3c/dom/css/DocumentCSS.java \
 	org/w3c/dom/css/ElementCSSInlineStyle.java \
-	org/w3c/dom/css/Rect.java \
 	org/w3c/dom/css/RGBColor.java \
+	org/w3c/dom/css/Rect.java \
 	org/w3c/dom/css/ViewCSS.java
 
 org_w3c_dom_events_SRCS = \
 	org/w3c/dom/events/DocumentEvent.java \
-	org/w3c/dom/events/EventException.java \
 	org/w3c/dom/events/Event.java \
+	org/w3c/dom/events/EventException.java \
 	org/w3c/dom/events/EventListener.java \
 	org/w3c/dom/events/EventTarget.java \
 	org/w3c/dom/events/MouseEvent.java \
@@ -3045,41 +3047,41 @@
 	org/w3c/dom/html/HTMLAnchorElement.java \
 	org/w3c/dom/html/HTMLAppletElement.java \
 	org/w3c/dom/html/HTMLAreaElement.java \
+	org/w3c/dom/html/HTMLBRElement.java \
 	org/w3c/dom/html/HTMLBaseElement.java \
 	org/w3c/dom/html/HTMLBaseFontElement.java \
 	org/w3c/dom/html/HTMLBodyElement.java \
-	org/w3c/dom/html/HTMLBRElement.java \
 	org/w3c/dom/html/HTMLButtonElement.java \
 	org/w3c/dom/html/HTMLCollection.java \
+	org/w3c/dom/html/HTMLDListElement.java \
+	org/w3c/dom/html/HTMLDOMImplementation.java \
 	org/w3c/dom/html/HTMLDirectoryElement.java \
 	org/w3c/dom/html/HTMLDivElement.java \
-	org/w3c/dom/html/HTMLDListElement.java \
 	org/w3c/dom/html/HTMLDocument.java \
-	org/w3c/dom/html/HTMLDOMImplementation.java \
 	org/w3c/dom/html/HTMLElement.java \
 	org/w3c/dom/html/HTMLFieldSetElement.java \
 	org/w3c/dom/html/HTMLFontElement.java \
 	org/w3c/dom/html/HTMLFormElement.java \
 	org/w3c/dom/html/HTMLFrameElement.java \
 	org/w3c/dom/html/HTMLFrameSetElement.java \
+	org/w3c/dom/html/HTMLHRElement.java \
 	org/w3c/dom/html/HTMLHeadElement.java \
 	org/w3c/dom/html/HTMLHeadingElement.java \
-	org/w3c/dom/html/HTMLHRElement.java \
 	org/w3c/dom/html/HTMLHtmlElement.java \
 	org/w3c/dom/html/HTMLIFrameElement.java \
 	org/w3c/dom/html/HTMLImageElement.java \
 	org/w3c/dom/html/HTMLInputElement.java \
 	org/w3c/dom/html/HTMLIsIndexElement.java \
+	org/w3c/dom/html/HTMLLIElement.java \
 	org/w3c/dom/html/HTMLLabelElement.java \
 	org/w3c/dom/html/HTMLLegendElement.java \
-	org/w3c/dom/html/HTMLLIElement.java \
 	org/w3c/dom/html/HTMLLinkElement.java \
 	org/w3c/dom/html/HTMLMapElement.java \
 	org/w3c/dom/html/HTMLMenuElement.java \
 	org/w3c/dom/html/HTMLMetaElement.java \
 	org/w3c/dom/html/HTMLModElement.java \
-	org/w3c/dom/html/HTMLObjectElement.java \
 	org/w3c/dom/html/HTMLOListElement.java \
+	org/w3c/dom/html/HTMLObjectElement.java \
 	org/w3c/dom/html/HTMLOptGroupElement.java \
 	org/w3c/dom/html/HTMLOptionElement.java \
 	org/w3c/dom/html/HTMLParagraphElement.java \
@@ -3105,17 +3107,17 @@
 	org/w3c/dom/ls/LSInput.java \
 	org/w3c/dom/ls/LSLoadEvent.java \
 	org/w3c/dom/ls/LSOutput.java \
-	org/w3c/dom/ls/LSParserFilter.java \
 	org/w3c/dom/ls/LSParser.java \
+	org/w3c/dom/ls/LSParserFilter.java \
 	org/w3c/dom/ls/LSProgressEvent.java \
 	org/w3c/dom/ls/LSResourceResolver.java \
-	org/w3c/dom/ls/LSSerializerFilter.java \
-	org/w3c/dom/ls/LSSerializer.java
+	org/w3c/dom/ls/LSSerializer.java \
+	org/w3c/dom/ls/LSSerializerFilter.java
 
 org_w3c_dom_ranges_SRCS = \
 	org/w3c/dom/ranges/DocumentRange.java \
-	org/w3c/dom/ranges/RangeException.java \
-	org/w3c/dom/ranges/Range.java
+	org/w3c/dom/ranges/Range.java \
+	org/w3c/dom/ranges/RangeException.java
 
 org_w3c_dom_stylesheets_SRCS = \
 	org/w3c/dom/stylesheets/DocumentStyle.java \
@@ -3138,8 +3140,8 @@
 	org/xml/sax/AttributeList.java \
 	org/xml/sax/Attributes.java \
 	org/xml/sax/ContentHandler.java \
-	org/xml/sax/DocumentHandler.java \
 	org/xml/sax/DTDHandler.java \
+	org/xml/sax/DocumentHandler.java \
 	org/xml/sax/EntityResolver.java \
 	org/xml/sax/ErrorHandler.java \
 	org/xml/sax/HandlerBase.java \
@@ -3154,14 +3156,14 @@
 	org/xml/sax/XMLReader.java
 
 org_xml_sax_ext_SRCS = \
-	org/xml/sax/ext/Attributes2Impl.java \
 	org/xml/sax/ext/Attributes2.java \
+	org/xml/sax/ext/Attributes2Impl.java \
 	org/xml/sax/ext/DeclHandler.java \
 	org/xml/sax/ext/DefaultHandler2.java \
 	org/xml/sax/ext/EntityResolver2.java \
 	org/xml/sax/ext/LexicalHandler.java \
-	org/xml/sax/ext/Locator2Impl.java \
-	org/xml/sax/ext/Locator2.java
+	org/xml/sax/ext/Locator2.java \
+	org/xml/sax/ext/Locator2Impl.java
 
 org_xml_sax_helpers_SRCS = \
 	org/xml/sax/helpers/AttributeListImpl.java \
@@ -3191,23 +3193,23 @@
 	java/awt/win32/Frame.java \
 	java/awt/win32/Label.java \
 	java/awt/win32/List.java \
+	java/awt/win32/Menu.java \
 	java/awt/win32/MenuBar.java \
 	java/awt/win32/MenuItem.java \
-	java/awt/win32/Menu.java \
 	java/awt/win32/NativeComponent.java \
 	java/awt/win32/NativeContainer.java \
 	java/awt/win32/NativeGraphics.java \
 	java/awt/win32/Panel.java \
 	java/awt/win32/PopupMenu.java \
-	java/awt/win32/Scrollbar.java \
 	java/awt/win32/ScrollPane.java \
+	java/awt/win32/Scrollbar.java \
 	java/awt/win32/SystemColor.java \
 	java/awt/win32/TextArea.java \
 	java/awt/win32/TextComponent.java \
 	java/awt/win32/TextField.java \
 	java/awt/win32/Toolkit.java \
-	java/awt/win32/Window.java \
-	java/awt/win32/WMEvent.java
+	java/awt/win32/WMEvent.java \
+	java/awt/win32/Window.java
 
 serialized_converters = \
 	kaffe/io/ByteToChar8859_2.ser \
Index: libraries/javalib/bootstrap.classlist
===================================================================
RCS file: /cvs/kaffe/kaffe/libraries/javalib/bootstrap.classlist,v
retrieving revision 1.50
diff -u -r1.50 bootstrap.classlist
--- libraries/javalib/bootstrap.classlist	23 May 2004 18:53:19 -0000	1.50
+++ libraries/javalib/bootstrap.classlist	30 May 2004 01:11:08 -0000
@@ -151,6 +151,9 @@
 java/security/Principal.class
 java/security/ProtectionDomain.class
 java/security/SecureClassLoader.class
+java/security/DomainCombiner.class
+java/security/IntersectingDomainCombiner.class
+java/security/VMAccessController.class
 java/text/AttributedCharacterIterator.class
 java/text/AttributedCharacterIterator$Attribute.class
 java/text/CharacterIterator.class
Index: libraries/javalib/essential.files
===================================================================
RCS file: /cvs/kaffe/kaffe/libraries/javalib/essential.files,v
retrieving revision 1.45
diff -u -r1.45 essential.files
--- libraries/javalib/essential.files	20 May 2004 18:13:51 -0000	1.45
+++ libraries/javalib/essential.files	30 May 2004 01:11:08 -0000
@@ -346,8 +346,10 @@
 java/security/CodeSource.java
 java/security/DigestException.java
 java/security/DigestOutputStream.java
+java/security/DomainCombiner.java
 java/security/GeneralSecurityException.java
 java/security/Guard.java
+java/security/IntersectingDomainCombiner.java
 java/security/Key.java
 java/security/KeyException.java
 java/security/MessageDigest.java
@@ -370,6 +372,7 @@
 java/security/InvalidKeyException.java
 java/security/NoSuchProviderException.java
 java/security/NoSuchAlgorithmException.java
+java/security/VMAccessController.java
 java/security/cert/Certificate.java
 java/security/cert/CertificateException.java
 java/security/cert/CertificateFactory.java
Index: libraries/javalib/gnu/java/security/PolicyFile.java
===================================================================
RCS file: /cvs/kaffe/kaffe/libraries/javalib/gnu/java/security/PolicyFile.java,v
retrieving revision 1.2
diff -u -r1.2 PolicyFile.java
--- libraries/javalib/gnu/java/security/PolicyFile.java	22 Mar 2004 11:24:24 -0000	1.2
+++ libraries/javalib/gnu/java/security/PolicyFile.java	30 May 2004 01:11:08 -0000
@@ -145,20 +145,14 @@
   private static final boolean DEBUG = true;
   private static void debug(String msg)
   {
-    if (DEBUG)
-      {
-        System.err.print(">> PolicyFile: ");
-        System.err.println(msg);
-      }
+    System.err.print(">> PolicyFile: ");
+    System.err.println(msg);
   }
 
   private static void debug(Throwable t)
   {
-    if (DEBUG)
-      {
-        System.err.println(">> PolicyFile");
-        t.printStackTrace(System.err);
-      }
+    System.err.println(">> PolicyFile");
+    t.printStackTrace(System.err);
   }
 
   private static final String DEFAULT_POLICY = System.getProperty("java.home")
@@ -189,7 +183,7 @@
         CodeSource cs = (CodeSource) e.getKey();
         if (cs.implies(codeSource))
           {
-            debug(cs+" -> "+codeSource);
+            if (DEBUG) debug(cs+" -> "+codeSource);
             PermissionCollection pc = (PermissionCollection) e.getValue();
             for (Enumeration ee = pc.elements(); ee.hasMoreElements(); )
               {
@@ -197,9 +191,9 @@
               }
           }
         else
-          debug(cs+" !-> "+codeSource);
+          if (DEBUG) debug(cs+" !-> "+codeSource);
       }
-    perms.setReadOnly();
+    if (DEBUG) debug ("returning permissions " + perms + " for " + codeSource);
     return perms;
   }
 
@@ -210,6 +204,7 @@
     try
       {
         policyFiles.add(new File(DEFAULT_POLICY).toURL());
+        if (DEBUG) debug ("defualt policy is " + DEFAULT_POLICY);
         policyFiles.addAll((List) AccessController.doPrivileged(
           new PrivilegedExceptionAction()
           {
@@ -219,13 +214,13 @@
               for (int i = 1; ; i++)
                 {
                   String s = Security.getProperty("policy.file."+i);
-                  debug("policy.file."+i+"="+s);
+                  if (DEBUG) debug("policy.file."+i+"="+s);
                   if (s == null)
                     break;
                   l.add(new URL(s));
                 }
               String s = System.getProperty("java.security.policy");
-              debug("java.security.policy="+s);
+              if (DEBUG) debug("java.security.policy="+s);
               if (s != null)
                 l.add(new URL(s));
               return l;
@@ -234,11 +229,11 @@
       }
     catch (PrivilegedActionException pae)
       {
-        debug(pae);
+        if (DEBUG) debug(pae);
       }
     catch (MalformedURLException mue)
       {
-        debug(mue);
+        if (DEBUG) debug(mue);
       }
     for (Iterator it = policyFiles.iterator(); it.hasNext(); )
       {
@@ -249,7 +244,7 @@
           }
         catch (IOException ioe)
           {
-            debug(ioe);
+            if (DEBUG) debug(ioe);
           }
       }
   }
@@ -276,6 +271,7 @@
    */
   private void parse(final URL url) throws IOException
   {
+    if (DEBUG) debug ("reading policy file from " + url);
     final StreamTokenizer in = new StreamTokenizer(new InputStreamReader(url.openStream()));
     in.resetSyntax();
     in.slashSlashComments(true);
Index: libraries/javalib/java/lang/SecurityManager.java
===================================================================
RCS file: /cvs/kaffe/kaffe/libraries/javalib/java/lang/SecurityManager.java,v
retrieving revision 1.19
diff -u -r1.19 SecurityManager.java
--- libraries/javalib/java/lang/SecurityManager.java	18 May 2004 01:10:27 -0000	1.19
+++ libraries/javalib/java/lang/SecurityManager.java	30 May 2004 01:11:09 -0000
@@ -45,6 +45,8 @@
 import java.lang.reflect.Member;
 import java.net.InetAddress;
 import java.net.SocketPermission;
+import java.security.AccessControlContext;
+import java.security.AccessController;
 import java.security.AllPermission;
 import java.security.Permission;
 import java.security.Security;
@@ -183,7 +185,7 @@
    *  are from system classes</li>
    * <li>A check of <code>java.security.AllPermission</code> succeeds.</li>
    * </ul>
-   * 
+   *
    * @return the most recent non-system ClassLoader on the execution stack
    * @deprecated use {@link #checkPermission(Permission)} instead
    */
@@ -205,7 +207,7 @@
    *  are from system classes</li>
    * <li>A check of <code>java.security.AllPermission</code> succeeds.</li>
    * </ul>
-   * 
+   *
    * @return the most recent non-system Class on the execution stack
    * @deprecated use {@link #checkPermission(Permission)} instead
    */
@@ -244,7 +246,7 @@
    *  are from system classes</li>
    * <li>A check of <code>java.security.AllPermission</code> succeeds.</li>
    * </ul>
-   * 
+   *
    * @return the index of the most recent non-system Class on the stack
    * @deprecated use {@link #checkPermission(Permission)} instead
    */
@@ -307,8 +309,7 @@
    */
   public Object getSecurityContext()
   {
-    // XXX Should be: return AccessController.getContext();
-    return new SecurityContext(getClassContext());
+    return AccessController.getContext();
   }
 
   /**
@@ -323,8 +324,7 @@
    */
   public void checkPermission(Permission perm)
   {
-    // XXX Should be: AccessController.checkPermission(perm);
-    throw new SecurityException("Operation not allowed");
+    AccessController.checkPermission(perm);
   }
 
   /**
@@ -345,11 +345,9 @@
    */
   public void checkPermission(Permission perm, Object context)
   {
-    // XXX Should be:
-    // if (! (context instanceof AccessControlContext))
-    //   throw new SecurityException("Missing context");
-    // ((AccessControlContext) context).checkPermission(perm);
-    throw new SecurityException("Operation not allowed");
+    if (! (context instanceof AccessControlContext))
+      throw new SecurityException("Missing context");
+    ((AccessControlContext) context).checkPermission(perm);
   }
 
   /**
@@ -393,8 +391,8 @@
    */
   public void checkAccess(Thread thread)
   {
-    if (thread.getThreadGroup() != null 
-	&& thread.getThreadGroup().getParent() != null)
+    if (thread.getThreadGroup() != null
+        && thread.getThreadGroup().getParent() != null)
       checkPermission(new RuntimePermission("modifyThread"));
   }
 
@@ -548,12 +546,10 @@
    */
   public void checkRead(String filename, Object context)
   {
-    // XXX Should be:
-    // if (! (context instanceof AccessControlContext))
-    //   throw new SecurityException("Missing context");
-    // AccessControlContext ac = (AccessControlContext) context;
-    // ac.checkPermission(new FilePermission(filename, "read"));
-    throw new SecurityException("Cannot read files via file names.");
+    if (! (context instanceof AccessControlContext))
+      throw new SecurityException("Missing context");
+    AccessControlContext ac = (AccessControlContext) context;
+    ac.checkPermission(new FilePermission(filename, "read"));
   }
 
   /**
@@ -667,17 +663,15 @@
    */
   public void checkConnect(String host, int port, Object context)
   {
-    // XXX Should be:
-    // if (! (context instanceof AccessControlContext))
-    //   throw new SecurityException("Missing context");
-    // AccessControlContext ac = (AccessControlContext) context;
-    // if (port == -1)
-    //   ac.checkPermission(new SocketPermission(host, "resolve"));
-    // else
-    //   // Use the toString() hack to do the null check.
-    //   ac.checkPermission(new SocketPermission(host.toString + ":" +port,
-    //                                           "connect"));
-    throw new SecurityException("Cannot make network connections.");
+    if (! (context instanceof AccessControlContext))
+      throw new SecurityException("Missing context");
+    AccessControlContext ac = (AccessControlContext) context;
+    if (port == -1)
+      ac.checkPermission(new SocketPermission(host, "resolve"));
+    else
+      // Use the toString() hack to do the null check.
+      ac.checkPermission(new SocketPermission(host.toString() + ":" + port,
+                                              "connect"));
   }
 
   /**
@@ -1033,7 +1027,7 @@
              index != -1; index = list.indexOf(packageName, index + 1))
           {
             // Exploit package visibility for speed.
-	    int packageNameCount = packageName.length();
+            int packageNameCount = packageName.length();
             if (index + packageNameCount == list.length()
                 || list.charAt(index + packageNameCount) == ',')
               {
@@ -1049,8 +1043,8 @@
 
 // XXX This class is unnecessary.
 class SecurityContext {
-	Class[] classes;
-	SecurityContext(Class[] classes) {
-		this.classes = classes;
-	}
+        Class[] classes;
+        SecurityContext(Class[] classes) {
+                this.classes = classes;
+        }
 }
Index: libraries/javalib/java/net/SocketPermission.java
===================================================================
RCS file: /cvs/kaffe/kaffe/libraries/javalib/java/net/SocketPermission.java,v
retrieving revision 1.4
diff -u -r1.4 SocketPermission.java
--- libraries/javalib/java/net/SocketPermission.java	17 May 2004 22:25:07 -0000	1.4
+++ libraries/javalib/java/net/SocketPermission.java	30 May 2004 01:11:10 -0000
@@ -40,6 +40,7 @@
 import java.io.Serializable;
 import java.security.Permission;
 import java.security.PermissionCollection;
+import java.util.StringTokenizer;
 
 
 /**
@@ -155,7 +156,7 @@
 
     if (((SocketPermission) obj).hostport.equals(hostport))
       if (((SocketPermission) obj).actions.equals(actions))
-	return (true);
+        return (true);
 
     return (false);
   }
@@ -189,26 +190,26 @@
 
     if (actions.indexOf("connect") != -1)
       {
-	sb.append("connect");
-	found = true;
+        sb.append("connect");
+        found = true;
       }
 
     if (actions.indexOf("listen") != -1)
       if (found)
-	sb.append(",listen");
+        sb.append(",listen");
       else
         {
-	  sb.append("listen");
-	  found = true;
+          sb.append("listen");
+          found = true;
         }
 
     if (actions.indexOf("accept") != -1)
       if (found)
-	sb.append(",accept");
+        sb.append(",accept");
       else
         {
-	  sb.append("accept");
-	  found = true;
+          sb.append("accept");
+          found = true;
         }
 
     if (found)
@@ -235,7 +236,7 @@
   /**
    * 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>
@@ -244,7 +245,7 @@
    * </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>
@@ -271,8 +272,12 @@
     String ourlist = getActions();
     String theirlist = p.getActions();
 
-    if (! ourlist.startsWith(theirlist))
-      return (false);
+    StringTokenizer tok = new StringTokenizer (theirlist, ",");
+    while (tok.hasMoreTokens())
+      {
+        if (ourlist.indexOf (tok.nextToken()) < 0)
+          return false;
+      }
 
     // Now check ports
     int ourfirstport = 0;
@@ -289,60 +294,60 @@
     // Get ours
     if (hostport.indexOf(":") == -1)
       {
-	ourfirstport = 0;
-	ourlastport = 65535;
+        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()));
+        // 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;
+        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()));
+        // 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
@@ -378,17 +383,17 @@
     String theircanonical = null;
     try
       {
-	ourcanonical = InetAddress.getByName(ourhost).getHostName();
-	theircanonical = InetAddress.getByName(theirhost).getHostName();
+        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;
+        // 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))
@@ -397,9 +402,9 @@
     // 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);
+        String wild_domain = ourhost.substring(ourhost.indexOf("*" + 1));
+        if (theircanonical.endsWith(wild_domain))
+          return (true);
       }
 
     // Didn't make it
Index: libraries/javalib/java/security/AccessControlContext.java
===================================================================
RCS file: /cvs/kaffe/kaffe/libraries/javalib/java/security/AccessControlContext.java,v
retrieving revision 1.2
diff -u -r1.2 AccessControlContext.java
--- libraries/javalib/java/security/AccessControlContext.java	22 Nov 2001 06:21:15 -0000	1.2
+++ libraries/javalib/java/security/AccessControlContext.java	30 May 2004 01:11:10 -0000
@@ -1,37 +1,174 @@
+/* AccessControlContext.java --- Access Control Context Class
+   Copyright (C) 1999, 2004 Free Software Foundation, Inc.
 
-/*
- * Java core library component.
+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.
+
+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.security;
+
+import java.util.HashSet;
+
+/**
+ * <p>AccessControlContext makes system resource access decsion
+ * based on permission rights.</p>
  *
- * Copyright (c) 1999
- *	Archie L. Cobbs.  All rights reserved.
- * Copyright (c) 1999
- *	Transvirtual Technologies, Inc.  All rights reserved.
+ * <p>It is used for a specific context and has only one method
+ * checkPermission. It is similar to AccessController except that it
+ * makes decsions based on the current context instead of the the current
+ * thread.</p>
  *
- * See the file "license.terms" for information on usage and redistribution
- * of this file.
+ * <p>It is created by call AccessController.getContext method.</p>
  *
- * Author: Archie L. Cobbs <archie@whistle.com>
+ * @author Mark Benvenuto
+ * @since JDK 1.2
  */
+public final class AccessControlContext
+{
+  private final ProtectionDomain[] protectionDomains;
+  private final DomainCombiner combiner;
+
+  /**
+   * Construct a new AccessControlContext with the specified
+   * ProtectionDomains. <code>context</code> must not be null and
+   * duplicates will be removed.
+   *
+   * @param context The ProtectionDomains to use
+   */
+  public AccessControlContext (ProtectionDomain[] context)
+  {
+    HashSet domains = new HashSet (context.length);
+    for (int i = 0; i < context.length; i++)
+      domains.add (context[i]);
+    protectionDomains = (ProtectionDomain[])
+      domains.toArray (new ProtectionDomain[domains.size()]);
+    combiner = null;
+  }
+
+  /**
+   * Construct a new AccessControlContext with the specified
+   * ProtectionDomains and DomainCombiner
+   *
+   * @param acc The ProtectionDomains to use
+   * @param combiner The domain combiner.
+   * @since JDK 1.3
+   */
+  public AccessControlContext(AccessControlContext acc,
+                              DomainCombiner combiner)
+  {
+    // XXX check permission to call this.
+    AccessControlContext acc2 = AccessController.getContext();
+    protectionDomains = combiner.combine (acc2.protectionDomains,
+                                          acc.protectionDomains);
+    this.combiner = combiner;
+  }
+
+  AccessControlContext (ProtectionDomain[] domains, AccessControlContext acc,
+                        DomainCombiner combiner)
+  {
+    protectionDomains = combiner.combine (domains, acc.protectionDomains);
+    this.combiner = combiner;
+  }
+
+  /**
+   * Returns the Domain Combiner associated with the AccessControlContext
+   *
+   * @return the DomainCombiner
+   */
+  public DomainCombiner getDomainCombiner()
+  {
+    return combiner;
+  }
+
+  /**
+   * Determines whether or not the specific permission is granted
+   * depending on the context it is within.
+   *
+   * @param perm a permission to check
+   * @throws AccessControlException if the permssion is not permitted
+   */
+  public void checkPermission(Permission perm) throws AccessControlException
+  {
+    for (int i = 0; i < protectionDomains.length; i++)
+      if (!protectionDomains[i].implies(perm))
+        throw new AccessControlException ("permission not granted");
+  }
+
+  /**
+   * <p>Checks if two AccessControlContexts are equal.</p>
+   *
+   * <p>It first checks if obj is an AccessControlContext class, and then
+   * checks if each ProtectionDomain matches.</p>
+   *
+   * @param obj The object to compare this class to.
+   * @return true if equal, false otherwise
+   */
+  public boolean equals(Object obj)
+  {
+    if (obj instanceof AccessControlContext)
+      {
+        AccessControlContext acc = (AccessControlContext) obj;
+
+        if (acc.protectionDomains.length != protectionDomains.length)
+          return false;
+
+        int i, j;
+        for (i = 0; i < protectionDomains.length; i++)
+          {
+            for (j = 0; j < acc.protectionDomains.length; j++)
+              {
+                if (acc.protectionDomains[j].equals (protectionDomains[i]))
+                  break;
+              }
+            if (j == acc.protectionDomains.length)
+              return false;
+          }
+        return true;
+      }
+    return false;
+  }
+
+  /**
+   * Computes a hash code of this class.
+   *
+   * @return a hash code representing this class
+   */
+  public int hashCode()
+  {
+    int h = 0;
+    for (int i = 0; i < protectionDomains.length; i++)
+      h ^= protectionDomains[i].hashCode();
 
-package java.security;
-
-public final class  AccessControlContext {
-
-/************* XXX implement me
-	public AccessControlContext(ProtectionDomain[] context) {
-	}
-*************/
-
-	public void checkPermission(Permission perm)
-			throws AccessControlException {
-	}
-
-	public boolean equals(Object obj) {
-		return obj == this;
-	}
-
-	public int hashCode() {
-		return (super.hashCode());
-	}
+    return h;
+  }
 }
-
Index: libraries/javalib/java/security/AccessController.java
===================================================================
RCS file: /cvs/kaffe/kaffe/libraries/javalib/java/security/AccessController.java,v
retrieving revision 1.1
diff -u -r1.1 AccessController.java
--- libraries/javalib/java/security/AccessController.java	22 Jul 1999 02:12:05 -0000	1.1
+++ libraries/javalib/java/security/AccessController.java	30 May 2004 01:11:10 -0000
@@ -1,62 +1,212 @@
+/* AccessController.java --- Access control context and permission checker
+   Copyright (C) 2001, 2004  Free Software Foundation, Inc.
 
-/*
- * Java core library component.
- *
- * Copyright (c) 1999
- *	Archie L. Cobbs.  All rights reserved.
- * Copyright (c) 1999
- *	Transvirtual Technologies, Inc.  All rights reserved.
- *
- * See the file "license.terms" for information on usage and redistribution
- * of this file.
- *
- * Author: Archie L. Cobbs <archie@whistle.com>
- */
+This file is part of GNU Classpath.
 
-package java.security;
+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.
+
+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. */
 
-// This class is not fully implemented yet
-public final class AccessController {
+package java.security;
 
-	// This class is not instantiable
-	private AccessController() {
-	}
-
-	public static Object doPrivileged(PrivilegedAction action) {
-		return action.run();
-	}
-
-	public static Object doPrivileged(PrivilegedAction action,
-					AccessControlContext context) {
-		return action.run();
-	}
-
-	public static Object doPrivileged(PrivilegedExceptionAction action)
-				throws PrivilegedActionException {
-		try {
-			return action.run();
-		} catch (Exception e) {
-			throw new PrivilegedActionException(e);
-		}
-	}
-
-	public static Object doPrivileged(PrivilegedExceptionAction action,
-					AccessControlContext context)
-				throws PrivilegedActionException {
-		try {
-			return action.run();
-		} catch (Exception e) {
-			throw new PrivilegedActionException(e);
-		}
-	}
-
-	public static AccessControlContext getContext() {
-		return null;
-	}
-
-	public static void checkPermission(Permission perm)
-				throws AccessControlException {
-		return;
-	}
+/**
+ * Access control context and permission checker.
+ * Can check permissions in the access control context of the current thread
+ * through the <code>checkPermission()</code> method.
+ * Manipulates the access control context for code that needs to be executed
+ * the protection domain of the calling class (by explicitly ignoring the
+ * context of the calling code) in the <code>doPrivileged()</code> methods.
+ * And provides a <code>getContext()</code> method which gives the access
+ * control context of the current thread that can be used for checking
+ * permissions at a later time and/or in another thread.
+ * <p>
+ * XXX - Mostly a stub implementation at the moment. Needs native support
+ * from the VM to function correctly. XXX - Do not forget to think about
+ * how to handle <code>java.lang.reflect.Method.invoke()</code> on the
+ * <code>doPrivileged()</code> methods.
+ *
+ * @author Mark Wielaard (mark@klomp.org)
+ * @since 1.2
+ */
+public final class AccessController
+{
+  /**
+   * This class only has static methods so there is no public contructor.
+   */
+  private AccessController()
+  {
+  }
+
+  /**
+   * Checks wether the access control context of the current thread allows
+   * the given Permission. Throws an <code>AccessControlException</code>
+   * when the permission is not allowed in the current context. Otherwise
+   * returns silently without throwing an exception.
+   *
+   * @param perm the permission to be checked.
+   * @exception AccessControlException thrown if the current context does not
+   * allow the given permission.
+   */
+  public static void checkPermission(Permission perm)
+    throws AccessControlException
+  {
+    getContext().checkPermission(perm);
+  }
+
+  /**
+   * Calls the <code>run()</code> method of the given action with as
+   * (initial) access control context only the protection domain of the
+   * calling class. Calls to <code>checkPermission()</code> in the
+   * <code>run()</code> method ignore all earlier protection domains of
+   * classes in the call chain. Note that the protection domains of classes
+   * called by the code in the <code>run()</code> method are not ignored.
+   *
+   * @param action the <code>PrivilegedAction</code> whose <code>run()</code>
+   * should be be called.
+   * @return the result of the <code>action.run()</code> method.
+   */
+  public static Object doPrivileged(PrivilegedAction action)
+  {
+    return action.run();
+  }
+
+  /**
+   * Calls the <code>run()</code> method of the given action with as
+   * (initial) access control context the given context combined with the
+   * protection domain of the calling class. Calls to
+   * <code>checkPermission()</code> in the <code>run()</code> method ignore
+   * all earlier protection domains of classes in the call chain, but add
+   * checks for the protection domains given in the supplied context.
+   *
+   * @param action the <code>PrivilegedAction</code> whose <code>run()</code>
+   * should be be called.
+   * @param context the <code>AccessControlContext</code> whose protection
+   * domains should be added to the protection domain of the calling class.
+   * @return the result of the <code>action.run()</code> method.
+   */
+  public static Object doPrivileged(PrivilegedAction action,
+                                    AccessControlContext context)
+  {
+    VMAccessController.pushContext (context, action.getClass());
+    try
+      {
+        return action.run();
+      }
+    finally
+      {
+        VMAccessController.popContext (action.getClass());
+      }
+  }
+
+  /**
+   * Calls the <code>run()</code> method of the given action with as
+   * (initial) access control context only the protection domain of the
+   * calling class. Calls to <code>checkPermission()</code> in the
+   * <code>run()</code> method ignore all earlier protection domains of
+   * classes in the call chain. Note that the protection domains of classes
+   * called by the code in the <code>run()</code> method are not ignored.
+   * If the <code>run()</code> method throws an exception then this method
+   * will wrap that exception in an <code>PrivilegedActionException</code>.
+   *
+   * @param action the <code>PrivilegedExceptionAction</code> whose
+   * <code>run()</code> should be be called.
+   * @return the result of the <code>action.run()</code> method.
+   * @exception PrivilegedActionException wrapped around any exception that
+   * is thrown in the <code>run()</code> method.
+   */
+  public static Object doPrivileged(PrivilegedExceptionAction action)
+    throws PrivilegedActionException
+  {
+
+    try
+      {
+        return action.run();
+      }
+    catch (Exception e)
+      {
+        throw new PrivilegedActionException(e);
+      }
+  }
+
+  /**
+   * Calls the <code>run()</code> method of the given action with as
+   * (initial) access control context the given context combined with the
+   * protection domain of the calling class. Calls to
+   * <code>checkPermission()</code> in the <code>run()</code> method ignore
+   * all earlier protection domains of classes in the call chain, but add
+   * checks for the protection domains given in the supplied context.
+   * If the <code>run()</code> method throws an exception then this method
+   * will wrap that exception in an <code>PrivilegedActionException</code>.
+   *
+   * @param action the <code>PrivilegedExceptionAction</code> whose
+   * <code>run()</code> should be be called.
+   * @param context the <code>AccessControlContext</code> whose protection
+   * domains should be added to the protection domain of the calling class.
+   * @return the result of the <code>action.run()</code> method.
+   * @exception PrivilegedActionException wrapped around any exception that
+   * is thrown in the <code>run()</code> method.
+   */
+  public static Object doPrivileged(PrivilegedExceptionAction action,
+                                    AccessControlContext context)
+    throws PrivilegedActionException
+  {
+    VMAccessController.pushContext (context, action.getClass());
+
+    try
+      {
+        return action.run();
+      }
+    catch (Exception e)
+      {
+        throw new PrivilegedActionException(e);
+      }
+    finally
+      {
+        VMAccessController.popContext (action.getClass());
+      }
+  }
+
+  /**
+   * Returns the complete access control context of the current thread.
+   * The returned object encompasses all {@link ProtectionDomain} objects
+   * for all classes in the current call stack, or the set of protection
+   * domains until the last call to {@link
+   * #doPrivileged(java.security.PrivilegedAction)}.
+   *
+   * <p>Additionally, if a call was made to {@link
+   * #doPrivileged(java.security.PrivilegedAction,java.security.AccessControlContext)}
+   * that supplied an {@link AccessControlContext}, then that
+   */
+  public static AccessControlContext getContext()
+  {
+    return VMAccessController.getContext();
+  }
 }
-
Index: libraries/javalib/java/security/IntersectingDomainCombiner.java
===================================================================
RCS file: libraries/javalib/java/security/IntersectingDomainCombiner.java
diff -N libraries/javalib/java/security/IntersectingDomainCombiner.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ libraries/javalib/java/security/IntersectingDomainCombiner.java	30 May 2004 01:11:10 -0000
@@ -0,0 +1,82 @@
+/* IntersectingDomainCombiner.java --
+   Copyright (C) 2004  Casey Marshall <csm@gnu.org>
+
+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.
+
+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.security;
+
+import java.util.HashSet;
+
+/**
+ * A trivial implementation of {@link DomainCombiner} that produces the
+ * intersection of the supplied {@link ProtectionDomain} objects.
+ */
+final class IntersectingDomainCombiner implements DomainCombiner
+{
+
+  // Contstant.
+  // -------------------------------------------------------------------------
+
+  static final IntersectingDomainCombiner SINGLETON = new IntersectingDomainCombiner();
+
+  // Constructor.
+  // -------------------------------------------------------------------------
+
+  private IntersectingDomainCombiner()
+  {
+  }
+
+  // Methods.
+  // -------------------------------------------------------------------------
+
+  public ProtectionDomain[] combine (ProtectionDomain[] currentDomains,
+                                     ProtectionDomain[] assignedDomains)
+  {
+    HashSet newDomains = new HashSet ();
+    for (int i = 0; i < currentDomains.length; i++)
+      {
+        if (currentDomains[i] == null)
+          continue;
+        for (int j = 0; j < assignedDomains.length; j++)
+          {
+            if (currentDomains[i].equals (assignedDomains[j]))
+              newDomains.add (currentDomains[i]);
+          }
+      }
+    return (ProtectionDomain[])
+      newDomains.toArray(new ProtectionDomain[newDomains.size()]);
+  }
+}
Index: libraries/javalib/java/security/ProtectionDomain.java
===================================================================
RCS file: /cvs/kaffe/kaffe/libraries/javalib/java/security/ProtectionDomain.java,v
retrieving revision 1.2
diff -u -r1.2 ProtectionDomain.java
--- libraries/javalib/java/security/ProtectionDomain.java	23 Jan 2004 17:34:20 -0000	1.2
+++ libraries/javalib/java/security/ProtectionDomain.java	30 May 2004 01:11:10 -0000
@@ -83,7 +83,7 @@
    */
   public ProtectionDomain(CodeSource codesource, PermissionCollection permissions)
   {
-    this(codesource, permissions, null, null, false);
+    this(codesource, permissions, null, null, true);
   }
 
   /**
Index: libraries/javalib/java/security/SecureClassLoader.java
===================================================================
RCS file: /cvs/kaffe/kaffe/libraries/javalib/java/security/SecureClassLoader.java,v
retrieving revision 1.5
diff -u -r1.5 SecureClassLoader.java
--- libraries/javalib/java/security/SecureClassLoader.java	30 Jan 2004 21:11:18 -0000	1.5
+++ libraries/javalib/java/security/SecureClassLoader.java	30 May 2004 01:11:10 -0000
@@ -1,40 +1,109 @@
+/* SecureClassLoader.java --- A Secure Class Loader
+   Copyright (C) 1999, 2004 Free Software Foundation, Inc.
 
-/*
- * Java core library component.
- *
- * Copyright (c) 1999
- *	Archie L. Cobbs.  All rights reserved.
- * Copyright (c) 1999
- *	Transvirtual Technologies, Inc.  All rights reserved.
- *
- * See the file "license.terms" for information on usage and redistribution
- * of this file.
- *
- * Author: Archie L. Cobbs <archie@whistle.com>
- */
+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.
+
+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.security;
 
-public class SecureClassLoader extends ClassLoader {
-	protected SecureClassLoader(ClassLoader parent) {
-		super(parent);
-	}
-
-	protected SecureClassLoader() {
-	}
-
-	protected final Class defineClass(String name, byte[] b,
-			int off, int len, CodeSource cs) {
-	    if (cs == null) {
-		return defineClass(name, b, off, len);
-	    }
-	    else {
-		return defineClass(name, b, off, len, new ProtectionDomain(cs, null));
-	    }
-	}
-
-	protected PermissionCollection getPermissions(CodeSource cs) {
-		return null;	// XXX implement me
-	}
-}
+/**
+   A Secure Class Loader for loading classes with additional
+   support for specifying code source and permissions when
+   they are retrieved by the system policy handler.
 
+   @since JDK 1.2
+
+   @author Mark Benvenuto
+ */
+public class SecureClassLoader extends ClassLoader
+{
+  protected SecureClassLoader(ClassLoader parent)
+  {
+    super(parent);
+    SecurityManager sm = System.getSecurityManager();
+    if(sm != null)
+      sm.checkCreateClassLoader();
+  }
+
+  protected SecureClassLoader()
+  {
+    SecurityManager sm = System.getSecurityManager();
+    if(sm != null)
+      sm.checkCreateClassLoader();
+  }
+
+  /**
+     Creates a class using an array of bytes and a
+     CodeSource.
+
+     @param name the name to give the class.  null if unknown.
+     @param b the data representing the classfile, in classfile format.
+     @param off the offset into the data where the classfile starts.
+     @param len the length of the classfile data in the array.
+     @param cs the CodeSource for the class or null when unknown.
+
+     @return the class that was defined and optional CodeSource.
+
+     @exception ClassFormatError if the byte array is not in proper classfile format.
+   */
+  protected final Class defineClass(String name, byte[] b, int off, int len,
+                                    CodeSource cs)
+  {
+    // FIXME: Need to cache ProtectionDomains according to 1.3 docs.
+    if (cs != null)
+      {
+        ProtectionDomain protectionDomain
+                = new ProtectionDomain(cs, getPermissions(cs), this, null);
+        return super.defineClass(name, b, off, len, protectionDomain);
+      }
+    else
+      return super.defineClass(name, b, off, len);
+  }
+
+  /**
+     Returns a PermissionCollection for the specified CodeSource.
+     The default implementation invokes
+     java.security.Policy.getPermissions.
+
+     This method is called by defineClass that takes a CodeSource
+     arguement to build a proper ProtectionDomain for the class
+     being defined.
+
+   */
+  protected PermissionCollection getPermissions(CodeSource cs)
+  {
+    Policy policy = Policy.getCurrentPolicy();
+    return policy.getPermissions(cs);
+  }
+}
Index: libraries/javalib/java/security/VMAccessController.java
===================================================================
RCS file: libraries/javalib/java/security/VMAccessController.java
diff -N libraries/javalib/java/security/VMAccessController.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ libraries/javalib/java/security/VMAccessController.java	30 May 2004 01:11:11 -0000
@@ -0,0 +1,236 @@
+/* VMAccessController.java -- VM-specific access controller methods.
+   Copyright (C) 2004  Casey Marshall <csm@gnu.org>
+
+This program 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.
+
+This program 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 this program; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 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.security;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+final class VMAccessController
+{
+
+  // Fields.
+  // -------------------------------------------------------------------------
+
+  /**
+   * A mapping between pairs (<i>thread</i>, <i>classname</i>) to access
+   * control contexts. The <i>thread</i> and <i>classname</i> are the thread
+   * and <i>classname</i> current as of the last call to doPrivileged with
+   * an AccessControlContext argument.
+   */
+  private static final Map contexts = Collections.synchronizedMap(new HashMap());
+
+  private static final ThreadLocal inGetContext = new ThreadLocal();
+
+  private final static AccessControlContext DEFAULT_CONTEXT;
+  static
+  {
+    CodeSource source = new CodeSource(null, null);
+    Permissions permissions = new Permissions();
+    permissions.add(new AllPermission());
+    ProtectionDomain[] domain = new ProtectionDomain[] {
+      new ProtectionDomain(source, permissions)
+    };
+    DEFAULT_CONTEXT = new AccessControlContext(domain);
+  }
+
+  private static final boolean DEBUG = true;
+  private static void debug (String msg)
+  {
+    System.err.print (">>> VMAccessController: ");
+    System.err.println (msg);
+  }
+
+  // Constructors.
+  // -------------------------------------------------------------------------
+
+  private VMAccessController() { }
+
+  // Class methods.
+  // -------------------------------------------------------------------------
+
+  /**
+   * Relate a class (which should be an instance of {@link PrivilegedAction}
+   * with an access control context. This method is used by {@link
+   * AccessController#doPrivileged(java.security.PrivilegedAction,java.security.AccessControlContext)}
+   * to set up the context that will be returned by {@link #getContext()}.
+   * This method relates the class to the current thread, so contexts
+   * pushed from one thread will not be available to another.
+   *
+   * @param acc The access control context.
+   * @param clazz The class that implements {@link PrivilegedAction}.
+   */
+  static void pushContext (AccessControlContext acc, Class clazz)
+  {
+    ArrayList pair = new ArrayList (2);
+    pair.add (Thread.currentThread());
+    pair.add (clazz);
+    if (DEBUG) debug ("pushing " + pair);
+    contexts.put (pair, acc);
+  }
+
+  /**
+   * Removes the relation of a class to an {@link AccessControlContext}.
+   * This method is used by {@link AccessController} when exiting from a
+   * call to {@link
+   * AccessController#doPrivileged(java.security.PrivilegedAction,java.security.AccessControlContext)}.
+   *
+   * @param clazz The class that implements {@link PrivilegedAction}.
+   */
+  static void popContext (Class clazz)
+  {
+    ArrayList pair = new ArrayList (2);
+    pair.add (Thread.currentThread());
+    pair.add (clazz);
+    if (DEBUG) debug ("popping " + pair);
+    contexts.remove (pair);
+  }
+
+  /**
+   * Examine the method stack of the currently running thread, and create
+   * an {@link AccessControlContext} filled in with the appropriate {@link
+   * ProtectionDomain} objects given this stack.
+   *
+   * @return The context.
+   */
+  static AccessControlContext getContext()
+  {
+    // If we are already in getContext, but called a method that needs
+    // a permission check, return the all-permissive context so methods
+    // called from here succeed.
+    //
+    // XXX is this necessary? We should verify if there are any calls in
+    // the stack below this method that require permission checks.
+    Boolean inCall = (Boolean) inGetContext.get();
+    if (inCall != null && inCall.booleanValue())
+      {
+        if (DEBUG) debug ("already in getContext");
+        return DEFAULT_CONTEXT;
+      }
+
+    Object[][] stack = getStack();
+    Class[] classes = (Class[]) stack[0];
+    String[] methods = (String[]) stack[1];
+
+    inGetContext.set (Boolean.TRUE);
+
+    if (DEBUG) debug (">>> got trace of length " + classes.length);
+
+    HashSet domains = new HashSet();
+    HashSet seenDomains = new HashSet();
+    AccessControlContext context = null;
+
+    // We walk down the stack, adding each ProtectionDomain for each
+    // class in the call stack. If we reach a call to doPrivileged,
+    // we don't add any more stack frames. We skip the first three stack
+    // frames, since they comprise the calls to getStack, getContext,
+    // and AccessController.getContext.
+    for (int i = 3; i < classes.length; i++)
+      {
+        Class clazz = classes[i];
+        String method = methods[i];
+
+        if (DEBUG) debug (">>> checking " + clazz + "." + method);
+
+        if (DEBUG) debug (">>> loader = " + clazz.getClassLoader());
+
+        if (clazz.equals (AccessController.class)
+            && method.equals ("doPrivileged"))
+          {
+            // If there was a call to doPrivileged with a supplied context,
+            // return that context.
+            List pair = new ArrayList(2);
+            pair.add (Thread.currentThread());
+            pair.add (classes[i-1]);
+            if (contexts.containsKey (pair))
+              context = (AccessControlContext) contexts.get (pair);
+            break;
+          }
+
+        ProtectionDomain domain = clazz.getProtectionDomain();
+
+        if (domain == null)
+          continue;
+        if (seenDomains.contains (domain))
+          continue;
+        seenDomains.add (domain);
+
+        // Create a static snapshot of this domain, which may change over time
+        // if the current policy changes.
+        domains.add (new ProtectionDomain (domain.getCodeSource(),
+                                           domain.getPermissions()));
+      }
+
+    if (DEBUG) debug ("created domains: " + domains);
+
+    ProtectionDomain[] result = (ProtectionDomain[])
+      domains.toArray (new ProtectionDomain[domains.size()]);
+
+    // Intersect the derived protection domain with the context supplied
+    // to doPrivileged.
+    if (context != null)
+      context = new AccessControlContext (result, context,
+                                          IntersectingDomainCombiner.SINGLETON);
+    // No context was supplied. Return the derived one.
+    else
+      context = new AccessControlContext (result);
+
+    inGetContext.set (Boolean.FALSE);
+    return context;
+  }
+
+  /**
+   * Returns a snapshot of the current call stack as a pair of arrays:
+   * the first an array of classes in the call stack, the second an array
+   * of strings containing the method names in the call stack. The two
+   * arrays match up, meaning that method <i>i</i> is declared in class
+   * <i>i</i>. The arrays are clean; it will only contain Java methods,
+   * and no element of the list should be null.
+   *
+   * <p>XXX note: this interface (VMAccessController) would possibly be
+   * cleaner if we had a method similar to this, but returned an array
+   * of java.lang.reflect.Method objects. Then, instead of having this
+   * much logic in this class, we put everything in AccessController,
+   * and simply have this single getStack method for a VM to implement.
+   */
+  private static native Object[][] getStack();
+}
Index: libraries/javalib/java/util/PropertyPermissionCollection.java
===================================================================
RCS file: /cvs/kaffe/kaffe/libraries/javalib/java/util/PropertyPermissionCollection.java,v
retrieving revision 1.1
diff -u -r1.1 PropertyPermissionCollection.java
--- libraries/javalib/java/util/PropertyPermissionCollection.java	11 Nov 2002 12:01:53 -0000	1.1
+++ libraries/javalib/java/util/PropertyPermissionCollection.java	30 May 2004 01:11:11 -0000
@@ -67,7 +67,7 @@
   /**
    * A flag to detect if "*" is in the collection.
    *
-   * @serial true if "*" is in the collection 
+   * @serial true if "*" is in the collection
    */
   private boolean all_allowed;
 
@@ -145,7 +145,7 @@
               return true;
           }
 
-        prefixLength = name.lastIndexOf('.', prefixLength);
+        prefixLength = name.lastIndexOf('.', prefixLength - 1);
         if (prefixLength < 0)
           return false;
         name = name.substring(0, prefixLength + 1) + '*';
Index: libraries/javalib/kaffe/lang/PrimordialClassLoader.java
===================================================================
RCS file: /cvs/kaffe/kaffe/libraries/javalib/kaffe/lang/PrimordialClassLoader.java,v
retrieving revision 1.5
diff -u -r1.5 PrimordialClassLoader.java
--- libraries/javalib/kaffe/lang/PrimordialClassLoader.java	22 Mar 2004 11:25:32 -0000	1.5
+++ libraries/javalib/kaffe/lang/PrimordialClassLoader.java	30 May 2004 01:11:11 -0000
@@ -14,6 +14,9 @@
 import java.io.IOException;
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.security.AllPermission;
+import java.security.CodeSource;
+import java.security.Permissions;
 import java.security.ProtectionDomain;
 import java.util.Enumeration;
 import java.util.Hashtable;
@@ -27,15 +30,23 @@
  * Java-level access to the primordial class loader.
  */
 public final class PrimordialClassLoader extends ClassLoader {
-	
+
 private static final PrimordialClassLoader SINGLETON =
 	new PrimordialClassLoader();
 
 private static final Package[] NO_PACKAGES = new Package[0];
-private static final ProtectionDomain DEFAULT_PROTECTION_DOMAIN = new ProtectionDomain(null, null);
+private static final ProtectionDomain DEFAULT_PROTECTION_DOMAIN;
 
 private static final Map bootjars = new Hashtable();
 
+static {
+	CodeSource source = new CodeSource(null, null);
+	Permissions permissions = new Permissions();
+	permissions.add(new AllPermission());
+	permissions.setReadOnly();
+	DEFAULT_PROTECTION_DOMAIN = new ProtectionDomain(source, permissions);
+}
+
 private PrimordialClassLoader() {
 	super(null);
 }
@@ -66,7 +77,7 @@
 // Throws ClassNotFoundException if the component type
 // is not a primitive type and is not enclosed by 'L' and ';'.
 private static String componentType(String name) throws ClassNotFoundException {
-        // find the start of the component type
+	// find the start of the component type
 	int componentStart = name.lastIndexOf('[') + 1;
 
 	// if component type is an object type,
@@ -86,7 +97,7 @@
 	}
 	// if component type is a primitive type return primitive type.
 	// if the length of the primitive type name is > 1,
-	// then it's a bad primitive type: 
+	// then it's a bad primitive type:
 	// just return the primitive type name
 	// for the error message
 	else if (name.length() - componentStart > 1) {
@@ -114,7 +125,7 @@
 	String pathSep = System.getProperties().getProperty("path.separator");
 	String classpath = System.getProperties().getProperty("sun.boot.class.path");
 	StringTokenizer t = new StringTokenizer(classpath, pathSep);
-	
+
 	if (name.startsWith("/")) {
 	    name = name.substring(1);
 	}
@@ -157,7 +168,7 @@
 public URL findResource (String name) {
 	try {
 		Vector v = new Vector ();
-		
+
 		findResources (v, name);
 
 		if (v.size()>0) {
@@ -165,7 +176,7 @@
 		}
 	} catch (IOException _) {
 	}
- 
+
 	return null;
 }
 
@@ -173,7 +184,7 @@
 	Vector retval = new Vector();
 
 	this.findResources(retval, name);
-	
+
 	return retval.elements();
 }
 
@@ -190,7 +201,7 @@
 }
 
 protected Class findClass(String name) throws ClassNotFoundException {
-	return findClass0(name); 
+	return findClass0(name);
 }
 
 private native Class findClass0(String name) throws ClassNotFoundException;

--=-=-=--