changeset 5:a16ad9963666 jdk6-b02

6755901: Changes for openjdk6 build 02 6481955: Uncanonicalized absolute filepath with length 248-260 no longer works (win) 4223944: FileInputStream(FileDescriptor fdObj): behaviour for invalid fdObj not specified 4625418: RFE: LTP: java.beans.XMLEncoder should have an option to specify other charset than UTF-8 4691089: RFE: Provide method to return all defined Currency's 4692419: RFE: Add name of currency to java.util.Currency 4760481: DefaultTreeCellRenderer icons and colors aren't updated in updateUI() 4836629: RFE: Add Currency Number to java.util.Currency 4980473: JTree with RTL orientation does not behave properly when edited 6187066: Want to open a Frame without activating it 6205557: Changes to image data should be tracked at a finer granularity 6210002: Undefined behavior of DefaultTreeSelectionModel.getSelectionPath() after setSelectionPaths 6211316: TCK : JTree.setSelectionInterval(int index0, int index1) implementation bug 6247526: java.awt.Font should not be finalizable 6286592: (fmt) Formatter "%tz" returns wrong GMT time offset during daylight savings time 6332666: RFE: Better Currency Data support 6470103: [AS] AttributedString constructor API doc error 6500914: Default Swing TransferHandlers don't support drop - so don't install drop target 6520322: Calling GraphicsEnv.registerFont(null) crashes the VM 6535542: (bf spec) ByteBuffer.allocate{Direct}?() has undocumented zero-initialization 6538876: api/java_beans/PropertyEditorSupport/descriptions.html#EditorSupport problem with null value 6559064: javax.imageio.metadata.IIOMetaDataNode needs to declare its behaviour for DOM L3 methods. 6568874: RFE: Provide option for displaying native print and page dialogs when using an AttributeSet 6579021: (spec) ClassCircularityError uses "initializing" inappropriately 6419042: JCK-runtime-60: api/java_awt/interactive/SystemTrayTests.html fail on Windows Vista 32 IE7.0 Plugin 4419748: JEditorPane CSS not supporting borders properly 6599328: SCCS keywords in nio files 4921754: java.nio exception classes don't specify serialVersionUID 6550465: make/java/nio/genExceptions.sh generates files with wrong legal notices 6619468: Fix tests to not use filenames with $ in the name 6610080: Create a viable OpenJDK RenderingEngine plugin 6609038: Fix the default import jdk to be from the 6-open area Summary: Final b02 state (as defined by the source bundle) Reviewed-by: darcy
author ohair
date Fri, 30 Jan 2009 16:19:09 -0800
parents 9d1e841d8f2d
children cf1ab142a11e
files make/common/internal/BinaryPlugs.gmk make/common/shared/Defs.gmk make/java/nio/Makefile make/java/nio/addNotices.sh make/java/nio/genCharsetProvider.sh make/java/nio/genExceptions.sh make/java/sun_nio/Makefile make/sun/Makefile make/sun/awt/Makefile make/sun/dcpr/Makefile make/sun/native2ascii/Makefile make/sun/nio/Makefile src/share/classes/com/sun/beans/ObjectHandler.java src/share/classes/java/awt/FlowLayout.java src/share/classes/java/awt/Font.java src/share/classes/java/awt/GraphicsConfiguration.java src/share/classes/java/awt/GraphicsEnvironment.java src/share/classes/java/awt/Toolkit.java src/share/classes/java/awt/Window.java src/share/classes/java/beans/PropertyEditorSupport.java src/share/classes/java/beans/XMLEncoder.java src/share/classes/java/io/FileInputStream.java src/share/classes/java/io/FileOutputStream.java src/share/classes/java/lang/ClassCircularityError.java src/share/classes/java/nio/Buffer.java src/share/classes/java/nio/X-Buffer.java src/share/classes/java/nio/channels/exceptions src/share/classes/java/nio/charset/CoderMalfunctionError.java src/share/classes/java/nio/charset/MalformedInputException.java src/share/classes/java/nio/charset/UnmappableCharacterException.java src/share/classes/java/nio/charset/exceptions src/share/classes/java/nio/exceptions src/share/classes/java/text/AttributedString.java src/share/classes/java/util/Currency.java src/share/classes/java/util/Formatter.java src/share/classes/java/util/spi/CurrencyNameProvider.java src/share/classes/javax/imageio/metadata/IIOMetadataNode.java src/share/classes/javax/swing/JComponent.java src/share/classes/javax/swing/JTree.java src/share/classes/javax/swing/text/html/CSS.java src/share/classes/javax/swing/text/html/StyleSheet.java src/share/classes/javax/swing/text/html/default.css src/share/classes/javax/swing/tree/DefaultTreeCellRenderer.java src/share/classes/javax/swing/tree/DefaultTreeSelectionModel.java src/share/classes/sun/io/ConversionBufferFullException.java src/share/classes/sun/io/MalformedInputException.java src/share/classes/sun/io/UnknownCharacterException.java src/share/classes/sun/java2d/pipe/ShapeSpanIterator.java src/share/classes/sun/java2d/pisces/Dasher.java src/share/classes/sun/java2d/pisces/LineSink.java src/share/classes/sun/java2d/pisces/PiscesMath.java src/share/classes/sun/java2d/pisces/Renderer.java src/share/classes/sun/java2d/pisces/Stroker.java src/share/classes/sun/java2d/pisces/Transform4.java src/share/classes/sun/nio/ch/Reflect.java src/share/classes/sun/nio/ch/exceptions src/share/classes/sun/nio/cs/standard-charsets src/share/classes/sun/print/DialogTypeSelection.java src/share/classes/sun/print/PSPrinterJob.java src/share/classes/sun/print/PrintJob2D.java src/share/classes/sun/print/PrinterGraphicsConfig.java src/share/classes/sun/print/RasterPrinterJob.java src/share/classes/sun/tools/native2ascii/Main.java src/solaris/classes/sun/awt/X11/XWindowPeer.java src/solaris/classes/sun/awt/X11GraphicsConfig.java src/windows/classes/sun/awt/Win32GraphicsConfig.java src/windows/classes/sun/awt/windows/WToolkit.java src/windows/native/java/io/io_util_md.c src/windows/native/sun/windows/awt_Toolkit.cpp test/java/awt/TrayIcon/ProtectedModeCrashTest/ProtectedModeCrashTest.java test/java/io/File/MaxPath.java test/java/nio/Buffer/AllocateDirectInit.java test/java/nio/Buffer/Basic.java test/java/rmi/activation/Activatable/createPrivateActivable/ActivateMe.java test/java/rmi/activation/Activatable/createPrivateActivable/CreatePrivateActivatable.java test/java/rmi/server/RemoteObject/verifyRemoteEquals/VerifyRemoteEquals.java test/java/util/Currency/CurrencyTest.java test/java/util/Currency/ValidateISO4217.java
diffstat 78 files changed, 1645 insertions(+), 1436 deletions(-) [+]
line wrap: on
line diff
--- a/make/common/internal/BinaryPlugs.gmk	Fri Jan 30 16:15:05 2009 -0800
+++ b/make/common/internal/BinaryPlugs.gmk	Fri Jan 30 16:19:09 2009 -0800
@@ -29,10 +29,8 @@
 
 # Names of native shared libraries
 
-PLUG_DCPR_LIBRARY=$(LIB_PREFIX)dcpr.$(LIBRARY_SUFFIX)
 PLUG_JSOUND_LIBRARY=$(LIB_PREFIX)jsoundhs.$(LIBRARY_SUFFIX)
 PLUG_LIBRARY_NAMES = \
-    $(PLUG_DCPR_LIBRARY) \
     $(PLUG_JSOUND_LIBRARY)
 
 # Sub-directory where native shared libraries are located (e.g. jre/bin or...)
@@ -162,25 +160,10 @@
 java/awt/image/renderable/RenderableImageProducer.class \
 java/awt/image/renderable/RenderedImageFactory.class
 
-PLUG_DC_CLASS_NAMES = \
-sun/dc/DuctusRenderingEngine.class \
-sun/dc/DuctusRenderingEngine\$$FillAdapter.class \
-sun/dc/path/FastPathProducer.class \
-sun/dc/path/PathConsumer.class \
-sun/dc/path/PathError.class \
-sun/dc/path/PathException.class \
-sun/dc/pr/PRError.class \
-sun/dc/pr/PRException.class \
-sun/dc/pr/PathDasher.class \
-sun/dc/pr/PathFiller.class \
-sun/dc/pr/PathStroker.class \
-sun/dc/pr/Rasterizer\$$ConsumerDisposer.class \
-sun/dc/pr/Rasterizer.class
-
 # Class list temp files (used by both import and export of plugs)
 
 PLUG_TEMPDIR=$(ABS_TEMPDIR)/plugs
-PLUG_CLASS_AREAS = jmf sound awt dc
+PLUG_CLASS_AREAS = jmf sound awt
 PLUG_CLISTS = $(PLUG_CLASS_AREAS:%=$(PLUG_TEMPDIR)/%.clist)
 
 # Create jargs file command
@@ -208,11 +191,6 @@
 	@for i in $(PLUG_AWT_CLASS_NAMES) ; do \
 	  $(ECHO) "$$i" >> $@ ; \
 	done
-$(PLUG_TEMPDIR)/dc.clist:
-	@$(prep-target)
-	@for i in $(PLUG_DC_CLASS_NAMES) ; do \
-	  $(ECHO) "$$i" >> $@ ; \
-	done
 $(PLUG_TEMPDIR)/all.clist: $(PLUG_CLISTS)
 	@$(prep-target)
 	$(CAT) $(PLUG_CLISTS) > $@
@@ -222,8 +200,6 @@
 	$(plug-create-jargs)
 $(PLUG_TEMPDIR)/awt.jargs: $(PLUG_TEMPDIR)/awt.clist
 	$(plug-create-jargs)
-$(PLUG_TEMPDIR)/dc.jargs: $(PLUG_TEMPDIR)/dc.clist
-	$(plug-create-jargs)
 $(PLUG_TEMPDIR)/all.jargs: $(PLUG_TEMPDIR)/all.clist
 	$(plug-create-jargs)
 
@@ -261,30 +237,22 @@
 	$(call import-binary-plug-classes,$(PLUG_TEMPDIR)/sound.clist)
 import-binary-plug-awt-classes: $(PLUG_IMPORT_JARFILE) $(PLUG_TEMPDIR)/awt.clist
 	$(call import-binary-plug-classes,$(PLUG_TEMPDIR)/awt.clist)
-import-binary-plug-dc-classes: $(PLUG_IMPORT_JARFILE) $(PLUG_TEMPDIR)/dc.clist
-	$(call import-binary-plug-classes,$(PLUG_TEMPDIR)/dc.clist)
 
 # Import all classes from the jar file
 
 import-binary-plug-jar: \
 	     import-binary-plug-jmf-classes \
 	     import-binary-plug-sound-classes \
-	     import-binary-plug-awt-classes \
-	     import-binary-plug-dc-classes 
+	     import-binary-plug-awt-classes
 
 # Import native libraries
 
-$(LIB_LOCATION)/$(PLUG_DCPR_LIBRARY): \
-    $(PLUG_IMPORT_DIR)/$(PLUG_LOCATION_SUBDIR)/$(PLUG_DCPR_LIBRARY)
-	$(import-binary-plug-file)
 $(LIB_LOCATION)/$(PLUG_JSOUND_LIBRARY): \
     $(PLUG_IMPORT_DIR)/$(PLUG_LOCATION_SUBDIR)/$(PLUG_JSOUND_LIBRARY)
 	$(import-binary-plug-file)
 
 # Rules only used by lower level makefiles
 
-import-binary-plug-dcpr-library: \
-    $(LIB_LOCATION)/$(PLUG_DCPR_LIBRARY)
 import-binary-plug-jsound-library: \
     $(LIB_LOCATION)/$(PLUG_JSOUND_LIBRARY)
 
@@ -319,8 +287,6 @@
         import-binary-plug-jmf-classes \
         import-binary-plug-sound-classes \
 	import-binary-plug-awt-classes \
-        import-binary-plug-dc-classes  \
-	import-binary-plug-dcpr-library \
         import-binary-plug-jsound-library
 
 else # !OPENJDK
@@ -359,9 +325,6 @@
 
 # Export native libraries
 
-$(PLUG_EXPORT_DIR)/$(PLUG_LOCATION_SUBDIR)/$(PLUG_DCPR_LIBRARY): \
-    $(LIB_LOCATION)/$(PLUG_DCPR_LIBRARY)
-	$(export-binary-plug-file)
 $(PLUG_EXPORT_DIR)/$(PLUG_LOCATION_SUBDIR)/$(PLUG_JSOUND_LIBRARY): \
     $(LIB_LOCATION)/$(PLUG_JSOUND_LIBRARY)
 	$(export-binary-plug-file)
--- a/make/common/shared/Defs.gmk	Fri Jan 30 16:15:05 2009 -0800
+++ b/make/common/shared/Defs.gmk	Fri Jan 30 16:19:09 2009 -0800
@@ -275,7 +275,7 @@
 endif
 
 # Promoted build location
-PROMOTED_RE_AREA = $(SLASH_JAVA)/re/jdk/$(JDK_VERSION)/promoted
+PROMOTED_RE_AREA = $(SLASH_JAVA)/re/openjdk/$(JDK_MINOR_VERSION)/promoted
 PROMOTED_BUILD_LATEST = latest
 PROMOTED_BUILD_BASEDIR = $(PROMOTED_RE_AREA)/$(PROMOTED_BUILD_LATEST)
 PROMOTED_BUILD_BINARIES = $(PROMOTED_BUILD_BASEDIR)/binaries
--- a/make/java/nio/Makefile	Fri Jan 30 16:15:05 2009 -0800
+++ b/make/java/nio/Makefile	Fri Jan 30 16:19:09 2009 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright 2000-2005 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 2000-2007 Sun Microsystems, Inc.  All Rights Reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@
 PACKAGE = java.nio
 LIBRARY = nio
 PRODUCT = java
+OTHER_JAVACFLAGS += -Xmaxwarns 1000 -Xlint:serial -Werror
 include $(BUILDDIR)/common/Defs.gmk
 
 NIO_SRC = $(SHARE_SRC)/classes/java/nio
@@ -55,7 +56,7 @@
         sun/nio/ch/DevPollSelectorProvider.java \
 	sun/nio/ch/InheritedChannel.java \
         sun/nio/ch/PollSelectorProvider.java \
-        sun/nio/ch/PollSelectorImpl.java 
+        sun/nio/ch/PollSelectorImpl.java
 
 FILES_c += \
         DevPollArrayWrapper.c \
@@ -66,7 +67,7 @@
 FILES_export += \
 	sun/nio/ch/DevPollArrayWrapper.java \
 	sun/nio/ch/InheritedChannel.java \
-	sun/nio/ch/NativeThread.java 
+	sun/nio/ch/NativeThread.java
 endif # PLATFORM = solaris
 
 ifeq ($(PLATFORM), windows)
@@ -100,7 +101,7 @@
 FILES_export += \
         sun/nio/ch/EPollArrayWrapper.java \
 	sun/nio/ch/InheritedChannel.java \
-	sun/nio/ch/NativeThread.java 
+	sun/nio/ch/NativeThread.java
 endif # PLATFORM = linux
 
 # Find platform-specific C source files
@@ -234,7 +235,7 @@
 	$(MV) $@.temp $@
 
 # Buffers whose contents are heap-allocated
-# 
+#
 $(BUF_GEN)/HeapByteBuffer.java: $(BUF_SRC)/Heap-X-Buffer.java $(GEN_BUFFER_SH)
 	$(prep-target)
 	@$(RM) $@.temp
@@ -307,7 +308,7 @@
 	$(MV) $@.temp $@
 
 # Direct byte buffer
-# 
+#
 $(BUF_GEN)/DirectByteBuffer.java: $(BUF_SRC)/Direct-X-Buffer.java \
 				  $(BUF_SRC)/Direct-X-Buffer.java \
 				  $(GEN_BUFFER_SH)
@@ -599,25 +600,29 @@
 # Generated exception classes
 #
 
+GEN_EX_SH = genExceptions.sh
+
+GEN_EX_CMD = NAWK=$(NAWK) $(SHELL) $(GEN_EX_SH)
+
 $(CH_GEN)/%Exception.java: genExceptions.sh $(CH_SRC)/exceptions
 	$(prep-target)
 	@$(RM) $@.temp
-	$(SHELL) genExceptions.sh $(CH_SRC)/exceptions $(CH_GEN)
+	$(GEN_EX_CMD) $(CH_SRC)/exceptions $(CH_GEN)
 
 $(CS_GEN)/%Exception.java: genExceptions.sh $(CS_SRC)/exceptions
 	$(prep-target)
 	@$(RM) $@.temp
-	$(SHELL) genExceptions.sh $(CS_SRC)/exceptions $(CS_GEN)
+	$(GEN_EX_CMD) $(CS_SRC)/exceptions $(CS_GEN)
 
 $(BUF_GEN)/%Exception.java: genExceptions.sh $(BUF_SRC)/exceptions
 	$(prep-target)
 	@$(RM) $@.temp
-	$(SHELL) genExceptions.sh $(BUF_SRC)/exceptions $(BUF_GEN)
+	$(GEN_EX_CMD) $(BUF_SRC)/exceptions $(BUF_GEN)
 
 $(SCH_GEN)/%Exception.java: genExceptions.sh $(SCH_SRC)/exceptions
 	$(prep-target)
 	@$(RM) $@.temp
-	$(SHELL) genExceptions.sh $(SCH_SRC)/exceptions $(SCH_GEN)
+	$(GEN_EX_CMD) $(SCH_SRC)/exceptions $(SCH_GEN)
 
 
 #
@@ -634,5 +639,4 @@
 	  HASHER="$(BOOT_JAVA_CMD) -jar $(HASHER_JARFILE)" \
 	  $(SHELL) -e genCharsetProvider.sh $(SCS_SRC)/standard-charsets $(SCS_GEN)
 
-.PHONY: sources 
-
+.PHONY: sources
--- a/make/java/nio/addNotices.sh	Fri Jan 30 16:15:05 2009 -0800
+++ b/make/java/nio/addNotices.sh	Fri Jan 30 16:19:09 2009 -0800
@@ -25,7 +25,7 @@
 #
 
 # Parse the first contiguous comment block in this script and generate
-# a java comment block.  If this script is invoked with a copyright 
+# a java comment block.  If this script is invoked with a copyright
 # year/year range, the java comment block will contain a Sun copyright.
 
 COPYRIGHT_YEARS=$1
--- a/make/java/nio/genCharsetProvider.sh	Fri Jan 30 16:15:05 2009 -0800
+++ b/make/java/nio/genCharsetProvider.sh	Fri Jan 30 16:19:09 2009 -0800
@@ -1,7 +1,7 @@
 #! /bin/sh
 
 #
-# Copyright 2004-2005 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 2004-2007 Sun Microsystems, Inc.  All Rights Reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -36,10 +36,9 @@
 DST=$1; shift
 
 eval `$NAWK <$SPEC '
+  /^[ \t]*copyright / { printf "COPYRIGHT_YEARS=%s\n", $2; }
   /^[ \t]*package / { printf "PKG=%s\n", $2; }
   /^[ \t]*class / { printf "CLASS=%s\n", $2; }
-  /^[ \t]*id / { printf "ID=%s\n", $2; }
-  /^[ \t]*date / { printf "DATE=%s\n", $2; }
 '`
 
 OUT=$DST/$CLASS.java
@@ -48,7 +47,10 @@
 
 # Header
 #
-cat <<__END__ >$OUT
+
+$SHELL addNotices.sh "$COPYRIGHT_YEARS" > $OUT
+
+cat <<__END__ >>$OUT
 
 // -- This file was mechanically generated: Do not edit! -- //
 
@@ -82,7 +84,7 @@
 
   /^[ \t]*alias / {
     acsns[m++] = tolower($2);
-    aliasMap[tolower($2)] = lcsn; 
+    aliasMap[tolower($2)] = lcsn;
     printf "        \"%s\",\n", $2;
   }
 
--- a/make/java/nio/genExceptions.sh	Fri Jan 30 16:15:05 2009 -0800
+++ b/make/java/nio/genExceptions.sh	Fri Jan 30 16:19:09 2009 -0800
@@ -32,21 +32,18 @@
 gen() {
   ID=$1
   WHAT=$2
-  ARG_TYPE=$3
-  ARG_ID=$4
-  ARG_PROP=$5
-  ARG_PHRASE=$6
+  SVUID=$3
+  ARG_TYPE=$4
+  ARG_ID=$5
+  ARG_PROP=$6
+  ARG_PHRASE=$7
   ARG_PARAM="$ARG_TYPE$ $ARG_ID"
   echo '-->' $DST/$ID.java
   out=$DST/${ID}.java
 
-  cat >$out <<__END__
-/*
- * Copyright 2007 by Sun Microsystems, Inc.  All Rights Reserved.
- * 
- * This software is the proprietary information of Sun Microsystems, Inc.  
- * Use is subject to license terms.
- */
+  $SHELL addNotices.sh "$COPYRIGHT_YEARS" > $out
+
+cat >>$out <<__END__
 
 // -- This file was mechanically generated: Do not edit! -- //
 
@@ -62,6 +59,8 @@
         then echo 'abstract '; fi`class $ID
     extends ${SUPER}
 {
+
+    private static final long serialVersionUID = $SVUID;
 __END__
 
   if [ $ARG_ID ]; then
--- a/make/java/sun_nio/Makefile	Fri Jan 30 16:15:05 2009 -0800
+++ b/make/java/sun_nio/Makefile	Fri Jan 30 16:19:09 2009 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright 2003-2005 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 2003-2007 Sun Microsystems, Inc.  All Rights Reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@
 PACKAGE = sun.nio
 PRODUCT = sun
 
+OTHER_JAVACFLAGS += -Xlint:serial -Werror
 include $(BUILDDIR)/common/Defs.gmk
 
 #
@@ -45,8 +46,7 @@
 
 include $(BUILDDIR)/common/Classes.gmk
 
-clean:: 
+clean::
 	$(RM) -r $(CLASSHDRDIR)
-clobber:: 
-	$(RM) -r $(CLASSBINDIR)/sun/nio/cs 
-
+clobber::
+	$(RM) -r $(CLASSBINDIR)/sun/nio/cs
--- a/make/sun/Makefile	Fri Jan 30 16:15:05 2009 -0800
+++ b/make/sun/Makefile	Fri Jan 30 16:19:09 2009 -0800
@@ -56,7 +56,12 @@
 ifndef OPENJDK
   JDBC_SUBDIR = jdbc
 endif
-SUBDIRS = jar security javazic misc net audio dcpr image \
+ifdef OPENJDK
+  RENDER_SUBDIR = pisces
+else
+  RENDER_SUBDIR = dcpr
+endif
+SUBDIRS = jar security javazic misc net audio $(RENDER_SUBDIR) image \
 	  awt splashscreen $(XAWT_SUBDIR) $(MOTIF_SUBDIRS) \
           $(HEADLESS_SUBDIR) $(DGA_SUBDIR) \
 	  font jpeg cmm applet rmi beans $(JDBC_SUBDIR) \
--- a/make/sun/awt/Makefile	Fri Jan 30 16:15:05 2009 -0800
+++ b/make/sun/awt/Makefile	Fri Jan 30 16:19:09 2009 -0800
@@ -47,11 +47,12 @@
 #
 
 #
-# Include all Java source files in sun/awt and sun/java2d, except for the
-# sun/awt/resources directory, which is handled by java/awt/Makefile.
+# Include all Java source files in sun/awt and sun/java2d, except for:
+# sun/awt/resources       handled by java/awt/Makefile
+# sun/java2d/pisces       handled by sun/pisces/Makefile
 #
 AUTO_FILES_JAVA_DIRS = sun/awt sun/java2d
-AUTO_JAVA_PRUNE = resources
+AUTO_JAVA_PRUNE = resources pisces
 
 ifeq ($(PLATFORM), windows)
 # vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv WINDOWS
--- a/make/sun/dcpr/Makefile	Fri Jan 30 16:15:05 2009 -0800
+++ b/make/sun/dcpr/Makefile	Fri Jan 30 16:19:09 2009 -0800
@@ -36,8 +36,6 @@
 #
 include FILES_c.gmk
 
-ifndef OPENJDK
-
 FILES_java = \
  sun/dc/DuctusRenderingEngine.java \
  sun/dc/path/FastPathProducer.java \
@@ -56,21 +54,6 @@
 	sun/dc/pr/PathFiller.java \
 	sun/dc/pr/PathStroker.java
 
-else
-
-#
-# Specific to OpenJDK building
-#
-
-# Plug lib will be copied instead of compiling.
-USE_BINARY_PLUG_LIBRARY=true
-
-build: import-binary-plug-dc-classes import-binary-plug-dcpr-library
-
-include $(BUILDDIR)/common/internal/BinaryPlugs.gmk
-
-endif # OPENJDK
-
 #
 # Rules.
 #
--- a/make/sun/native2ascii/Makefile	Fri Jan 30 16:15:05 2009 -0800
+++ b/make/sun/native2ascii/Makefile	Fri Jan 30 16:19:09 2009 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright 1996-2002 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 1996-2007 Sun Microsystems, Inc.  All Rights Reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -30,6 +30,7 @@
 BUILDDIR = ../..
 PACKAGE = sun.tools.native2ascii
 PRODUCT = sun
+OTHER_JAVACFLAGS += -Xlint:serial -Werror
 include $(BUILDDIR)/common/Defs.gmk
 
 #
@@ -50,4 +51,3 @@
 # Rules
 #
 include $(BUILDDIR)/common/Classes.gmk
-
--- a/make/sun/nio/Makefile	Fri Jan 30 16:15:05 2009 -0800
+++ b/make/sun/nio/Makefile	Fri Jan 30 16:19:09 2009 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright 1996-2006 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 1996-2007 Sun Microsystems, Inc.  All Rights Reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -35,6 +35,7 @@
 # This re-directs all the class files to a separate location
 CLASSDESTDIR = $(TEMPDIR)/classes
 
+OTHER_JAVACFLAGS += -Xlint:serial -Werror
 include $(BUILDDIR)/common/Defs.gmk
 
 #
@@ -52,7 +53,7 @@
 endif # PLATFORM
 
 # For Cygwin, command line arguments that are paths must be converted to
-# windows style paths. These paths cannot be used as targets, however, because 
+# windows style paths. These paths cannot be used as targets, however, because
 # the ":" in them  will interfere with GNU Make rules, generating "multiple
 # target pattern" errors.
 
@@ -86,4 +87,3 @@
 clean::
 	$(RM) -r $(CLASSDESTDIR)
 	$(RM) $(CHARSETS_JAR)
-
--- a/src/share/classes/com/sun/beans/ObjectHandler.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/com/sun/beans/ObjectHandler.java	Fri Jan 30 16:19:09 2009 -0800
@@ -363,14 +363,28 @@
         if (name == "char") {
             String value = (String) map.get("code");
             if (value != null) {
-                int code = Integer.decode(value);
-                for (char ch : Character.toChars(code)) {
-                    this.chars.append(ch);
-                }
+                this.chars.append(parseIntAsChar(value));
             }
         }
     }
 
+    private static char parseIntAsChar(String data) {
+        try {
+            int i = data.startsWith("#")
+                    ? Integer.parseInt(data.substring(1), 16)
+                    : Integer.parseInt(data);
+
+            // be convinced, that valid character code is read
+            char ch = (char) i;
+            if (ch == i)
+                return ch;
+
+            throw new IllegalArgumentException("Wrong character code: '" + data + "'");
+        } catch (NumberFormatException exception) {
+            throw new IllegalArgumentException("Wrong character code: '" + data + "'", exception);
+        }
+    }
+
     public Object lookup(String s) { 
         Expression e = (Expression)environment.get(s); 
         if (e == null) { 
--- a/src/share/classes/java/awt/FlowLayout.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/java/awt/FlowLayout.java	Fri Jan 30 16:19:09 2009 -0800
@@ -133,6 +133,8 @@
      * <code>LEFT</code>
      * <code>RIGHT</code>
      * <code>CENTER</code>
+     * <code>LEADING</code>
+     * <code>TRAILING</code>
      * </ul>
      *
      * @serial
--- a/src/share/classes/java/awt/Font.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/java/awt/Font.java	Fri Jan 30 16:19:09 2009 -0800
@@ -2520,4 +2520,15 @@
      * Initialize JNI field and method IDs
      */
     private static native void initIDs();
+
+    /*
+     * Disposes the native <code>Font</code> object.
+     */
+     protected void finalize() throws Throwable {
+        /* Yes, its empty, yes, that's OK :-)
+         * The 2D disposer thread now releases font resources,
+         * and because this method is empty it does not in fact
+         * trigger object finalization.
+         */
+     }
 }
--- a/src/share/classes/java/awt/GraphicsConfiguration.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/java/awt/GraphicsConfiguration.java	Fri Jan 30 16:19:09 2009 -0800
@@ -145,13 +145,7 @@
      * @return a <code>BufferedImage</code> whose data layout and color
      * model is compatible with this <code>GraphicsConfiguration</code>.
      */
-    public BufferedImage createCompatibleImage(int width, int height) {
-	ColorModel model = getColorModel();
-	WritableRaster raster =
-            model.createCompatibleWritableRaster(width, height);
-        return new BufferedImage(model, raster,
-                                 model.isAlphaPremultiplied(), null);
-    }
+    public abstract BufferedImage createCompatibleImage(int width, int height);
 
     /**
      * Returns a <code>BufferedImage</code> that supports the specified
--- a/src/share/classes/java/awt/GraphicsEnvironment.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/java/awt/GraphicsEnvironment.java	Fri Jan 30 16:19:09 2009 -0800
@@ -326,7 +326,6 @@
      * </ul>
      * @return true if the <code>font</code> is successfully
      * registered in this <code>GraphicsEnvironment</code>.
-     * @throws NullPointerException if <code>font</code> is null
      * @since 1.6
      */
     public boolean registerFont(Font font) {
--- a/src/share/classes/java/awt/Toolkit.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/java/awt/Toolkit.java	Fri Jan 30 16:19:09 2009 -0800
@@ -65,16 +65,13 @@
 /**
  * This class is the abstract superclass of all actual
  * implementations of the Abstract Window Toolkit. Subclasses of
- * the <code>Toolkit</code> class are used to bind the various components
+ * <code>Toolkit</code> are used to bind the various components
  * to particular native toolkit implementations.
  * <p>
- * Many GUI events may be delivered to user 
- * asynchronously, if the opposite is not specified explicitly.
- * As well as 
- * many GUI operations may be performed asynchronously.
- * This fact means that if the state of a component is set, and then 
- * the state immediately queried, the returned value may not yet
- * reflect the requested change.  This behavior includes, but is not
+ * Many GUI operations may be performed asynchronously.  This
+ * means that if you set the state of a component, and then
+ * immediately query the state, the returned value may not yet
+ * reflect the requested change.  This includes, but is not
  * limited to:
  * <ul>
  * <li>Scrolling to a specified position.
@@ -472,9 +469,6 @@
 /**
      * Controls whether the layout of Containers is validated dynamically
      * during resizing, or statically, after resizing is complete.
-     * Use {@code isDynamicLayoutActive()} to detect if this feature enabled
-     * in this program and is supported by this operating system
-     * and/or window manager.
      * Note that this feature is supported not on all platforms, and
      * conversely, that this feature cannot be turned off on some platforms.
      * On these platforms where dynamic layout during resizing is not supported
@@ -534,16 +528,8 @@
     /**
      * Returns whether dynamic layout of Containers on resize is
      * currently active (both set in program
-     *( {@code isDynamicLayoutSet()} )
      *, and supported
      * by the underlying operating system and/or window manager).
-     * If dynamic layout is currently inactive then Containers
-     * re-layout their components when resizing is completed. As a result
-     * the {@code Component.validate()} method will be invoked only
-     * once per resize.
-     * If dynamic layout is currently active then Containers
-     * re-layout their components on every native resize event and
-     * the {@code validate()} method will be invoked each time.
      * The OS/WM support can be queried using
      * the getDesktopProperty("awt.dynamicLayoutSupported") method.
      *
--- a/src/share/classes/java/awt/Window.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/java/awt/Window.java	Fri Jan 30 16:19:09 2009 -0800
@@ -281,7 +281,7 @@
      * @see #isAutoRequestFocus
      * @since 1.7
      */
-    private volatile boolean autoRequestFocus = true;
+    private transient volatile boolean autoRequestFocus = true;
 
     /*
      * Indicates that this window is being shown. This flag is set to true at
@@ -834,21 +834,6 @@
     /**
      * Shows or hides this {@code Window} depending on the value of parameter
      * {@code b}.
-     * <p>
-     * If the method shows the window then the window is also made
-     * focused under the following conditions:
-     * <ul>
-     * <li> The {@code Window} meets the requirements outlined in the
-     *      {@link #isFocusableWindow} method.
-     * <li> The {@code Window}'s {@code autoRequestFocus} property is of the {@code true} value.
-     * <li> Native windowing system allows the {@code Window} to get focused.
-     * </ul>
-     * There is an exception for the second condition (the value of the
-     * {@code autoRequestFocus} property). The property is not taken into account if the
-     * window is a modal dialog, which blocks the currently focused window.
-     * <p>
-     * Developers must never assume that the window is the focused or active window
-     * until it receives a WINDOW_GAINED_FOCUS or WINDOW_ACTIVATED event.
      * @param b  if {@code true}, makes the {@code Window} visible, 
      * otherwise hides the {@code Window}.
      * If the {@code Window} and/or its owner
@@ -864,8 +849,6 @@
      * @see java.awt.Component#setVisible
      * @see java.awt.Window#toFront
      * @see java.awt.Window#dispose
-     * @see java.awt.Window#setAutoRequestFocus
-     * @see java.awt.Window#isFocusableWindow
      */
     public void setVisible(boolean b) {
         super.setVisible(b);
@@ -1104,19 +1087,13 @@
      * however, developers should not assume that this method will move this
      * Window above all other windows in every situation.
      * <p>
-     * Developers must never assume that this Window is the focused or active
-     * Window until this Window receives a WINDOW_GAINED_FOCUS or WINDOW_ACTIVATED
-     * event. On platforms where the top-most window is the focused window, this
-     * method will <b>probably</b> focus this Window (if it is not already focused)
-     * under the following conditions:
-     * <ul>
-     * <li> The window meets the requirements outlined in the
-     *      {@link #isFocusableWindow} method.
-     * <li> The window's property {@code autoRequestFocus} is of the
-     *      {@code true} value.
-     * <li> Native windowing system allows the window to get focused.
-     * </ul>
-     * On platforms where the stacking order does not typically affect the focused
+     * Because of variations in native windowing systems, no guarantees about
+     * changes to the focused and active Windows can be made. Developers must
+     * never assume that this Window is the focused or active Window until this
+     * Window receives a WINDOW_GAINED_FOCUS or WINDOW_ACTIVATED event. On
+     * platforms where the top-most window is the focused window, this method
+     * will <b>probably</b> focus this Window, if it is not already focused. On
+     * platforms where the stacking order does not typically affect the focused
      * window, this method will <b>probably</b> leave the focused and active
      * Windows unchanged.
      * <p>
@@ -1129,8 +1106,6 @@
      * is brought to the front and remains above the blocked window.
      *
      * @see       #toBack
-     * @see       #setAutoRequestFocus
-     * @see       #isFocusableWindow
      */
     public void toFront() {
         toFront_NoClientCode();
@@ -2424,46 +2399,6 @@
     }
 
     /**
-     * Sets whether this window should receive focus on
-     * subsequently being shown (with a call to {@link #setVisible setVisible(true)}),
-     * or being moved to the front (with a call to {@link #toFront}). 
-     * <p>
-     * Note that {@link #setVisible setVisible(true)} may be called indirectly
-     * (e.g. when showing an owner of the window makes the window to be shown).
-     * {@link #toFront} may also be called indirectly (e.g. when
-     * {@link #setVisible setVisible(true)} is called on already visible window).
-     * In all such cases this property takes effect as well.
-     * <p>
-     * The value of the property is not inherited by owned windows.
-     *
-     * @param autoRequestFocus whether this window should be focused on
-     *        subsequently being shown or being moved to the front
-     * @see #isAutoRequestFocus
-     * @see #isFocusableWindow
-     * @see #setVisible
-     * @see #toFront
-     * @since 1.7
-     */
-    public void setAutoRequestFocus(boolean autoRequestFocus) {
-        this.autoRequestFocus = autoRequestFocus;
-    }
-
-    /**
-     * Returns whether this window should receive focus on subsequently being shown
-     * (with a call to {@link #setVisible setVisible(true)}), or being moved to the front
-     * (with a call to {@link #toFront}).
-     * <p>
-     * By default, the window has {@code autoRequestFocus} value of {@code true}.
-     *
-     * @return {@code autoRequestFocus} value
-     * @see #setAutoRequestFocus
-     * @since 1.7
-     */
-    public boolean isAutoRequestFocus() {
-        return autoRequestFocus;
-    }
-
-    /**
      * Adds a PropertyChangeListener to the listener list. The listener is
      * registered for all bound properties of this class, including the
      * following:
--- a/src/share/classes/java/beans/PropertyEditorSupport.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/java/beans/PropertyEditorSupport.java	Fri Jan 30 16:19:09 2009 -0800
@@ -157,7 +157,7 @@
      *
      * @return The property value as a string suitable for presentation
      *       to a human to edit.
-     * <p>   Returns null if the value can't be expressed as a string.
+     * <p>   Returns "null" is the value can't be expressed as a string.
      * <p>   If a non-null value is returned, then the PropertyEditor should
      *	     be prepared to parse that string back in setAsText().
      */
--- a/src/share/classes/java/beans/XMLEncoder.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/java/beans/XMLEncoder.java	Fri Jan 30 16:19:09 2009 -0800
@@ -29,7 +29,6 @@
 import java.lang.reflect.*;
 import java.nio.charset.Charset;
 import java.nio.charset.CharsetEncoder;
-import java.nio.charset.IllegalCharsetNameException;
 import java.nio.charset.UnsupportedCharsetException;
 
 /**
@@ -207,11 +206,9 @@
  */
 public class XMLEncoder extends Encoder {
 
-    private final CharsetEncoder encoder;
-    private final String charset;
-    private final boolean declaration;
+    private static String encoding = "UTF-8";
 
-    private OutputStreamWriter out;
+    private OutputStream out;
     private Object owner;
     private int indentation = 0;
     private boolean internal = false;
@@ -228,66 +225,16 @@
     }
 
     /**
-     * Creates a new XML encoder to write out <em>JavaBeans</em>
+     * Creates a new output stream for sending <em>JavaBeans</em>
      * to the stream <code>out</code> using an XML encoding.
      *
-     * @param out  the stream to which the XML representation of
-     *             the objects will be written
-     *
-     * @throws  IllegalArgumentException
-     *          if <code>out</code> is <code>null</code>
+     * @param out The stream to which the XML representation of
+     * the objects will be sent.
      *
      * @see XMLDecoder#XMLDecoder(InputStream)
      */
     public XMLEncoder(OutputStream out) {
-        this(out, "UTF-8", true, 0);
-    }
-
-    /**
-     * Creates a new XML encoder to write out <em>JavaBeans</em>
-     * to the stream <code>out</code> using the given <code>charset</code>
-     * starting from the given <code>indentation</code>.
-     *
-     * @param out          the stream to which the XML representation of
-     *                     the objects will be written
-     * @param charset      the name of the requested charset;
-     *                     may be either a canonical name or an alias
-     * @param declaration  whether the XML declaration should be generated;
-     *                     set this to <code>false</code>
-     *                     when embedding the contents in another XML document
-     * @param indentation  the number of space characters to indent the entire XML document by
-     *
-     * @throws  IllegalArgumentException
-     *          if <code>out</code> or <code>charset</code> is <code>null</code>,
-     *          or if <code>indentation</code> is less than 0
-     *
-     * @throws  IllegalCharsetNameException
-     *          if <code>charset</code> name is illegal
-     *
-     * @throws  UnsupportedCharsetException
-     *          if no support for the named charset is available
-     *          in this instance of the Java virtual machine
-     *
-     * @throws  UnsupportedOperationException
-     *          if loaded charset does not support encoding
-     *
-     * @see Charset#forName(String)
-     *
-     * @since 1.7
-     */
-    public XMLEncoder(OutputStream out, String charset, boolean declaration, int indentation) {
-        if (out == null) {
-            throw new IllegalArgumentException("the output stream cannot be null");
-        }
-        if (indentation < 0) {
-            throw new IllegalArgumentException("the indentation must be >= 0");
-        }
-        Charset cs = Charset.forName(charset);
-        this.encoder = cs.newEncoder();
-        this.charset = charset;
-        this.declaration = declaration;
-        this.indentation = indentation;
-        this.out = new OutputStreamWriter(out, cs.newEncoder());
+        this.out = out;
         valueToExpression = new IdentityHashMap();
         targetToStatementList = new IdentityHashMap();
 	nameGenerator = new NameGenerator();
@@ -455,10 +402,8 @@
      */
     public void flush() {
 	if (!preambleWritten) { // Don't do this in constructor - it throws ... pending.
-            if (this.declaration) {
-                writeln("<?xml version=" + quote("1.0") +
-                            " encoding=" + quote(this.charset) + "?>");
-            }
+            writeln("<?xml version=" + quote("1.0") +
+                        " encoding=" + quote(encoding) + "?>");
 	    writeln("<java version=" + quote(System.getProperty("java.version")) +
 	                   " class=" + quote(XMLDecoder.class.getName()) + ">");
 	    preambleWritten = true;
@@ -558,7 +503,7 @@
             }
             sb.append(exp);
             sb.append('\n');
-            this.out.write(sb.toString());
+            this.out.write(sb.toString().getBytes(encoding));
         }
         catch (IOException e) {
             getExceptionListener().exceptionThrown(e);
@@ -644,6 +589,8 @@
     }
 
     private String createString(String string) {
+        CharsetEncoder encoder = Charset.forName(encoding).newEncoder();
+
         StringBuilder sb = new StringBuilder();
         sb.append("<string>");
         int index = 0;
@@ -651,7 +598,7 @@
             int point = string.codePointAt(index);
             int count = Character.charCount(point);
 
-            if (isValidCharCode(point) && this.encoder.canEncode(string.substring(index, index + count))) {
+            if (isValidCharCode(point) && encoder.canEncode(string.substring(index, index + count))) {
                 String value = quoteCharCode(point);
                 if (value != null) {
                     sb.append(value);
@@ -663,6 +610,18 @@
                 sb.append(createString(string.charAt(index)));
                 index++;
             }
+/*
+            String value = isValidCharCode(point) && encoder.canEncode(string.substring(index, index + count))
+                    ? quoteCharCode(point)
+                    : createString(point);
+
+            if (value != null) {
+                sb.append(value);
+            } else {
+                sb.appendCodePoint(point);
+            }
+            index += count;
+*/
         }
         sb.append("</string>");
         return sb.toString();
--- a/src/share/classes/java/io/FileInputStream.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/java/io/FileInputStream.java	Fri Jan 30 16:19:09 2009 -0800
@@ -52,14 +52,14 @@
     private FileDescriptor fd;
 
     private FileChannel channel = null;
- 
+
     private Object closeLock = new Object();
     private volatile boolean closed = false;
 
     private static ThreadLocal<Boolean> runningFinalize =
 				new ThreadLocal<Boolean>();
-    
-    private static boolean isRunningFinalize() { 
+
+    private static boolean isRunningFinalize() {
 	Boolean val;
 	if ((val = runningFinalize.get()) != null)
 	    return val.booleanValue();
@@ -150,11 +150,6 @@
      * <p>
      * If <code>fdObj</code> is null then a <code>NullPointerException</code>
      * is thrown.
-     * <p>
-     * This constructor does not throw an exception if <code>fdObj</code>
-     * is {link java.io.FileDescriptor#valid() invalid}.
-     * However, if the methods are invoked on the resulting stream to attempt
-     * I/O on the stream, an <code>IOException</code> is thrown.   
      *
      * @param      fdObj   the file descriptor to be opened for reading.
      * @throws     SecurityException      if a security manager exists and its
@@ -233,8 +228,8 @@
      *             <code>-1</code> if there is no more data because the end of
      *             the file has been reached.
      * @exception  NullPointerException If <code>b</code> is <code>null</code>.
-     * @exception  IndexOutOfBoundsException If <code>off</code> is negative, 
-     * <code>len</code> is negative, or <code>len</code> is greater than 
+     * @exception  IndexOutOfBoundsException If <code>off</code> is negative,
+     * <code>len</code> is negative, or <code>len</code> is greater than
      * <code>b.length - off</code>
      * @exception  IOException  if an I/O error occurs.
      */
@@ -307,24 +302,24 @@
 	    /*
 	     * Decrement the FD use count associated with the channel
 	     * The use count is incremented whenever a new channel
-	     * is obtained from this stream. 
+	     * is obtained from this stream.
 	     */
 	   fd.decrementAndGetUseCount();
 	   channel.close();
 	}
-	   
+
 	/*
 	 * Decrement the FD use count associated with this stream
-	 */ 
+	 */
 	int useCount = fd.decrementAndGetUseCount();
 
 	/*
 	 * If FileDescriptor is still in use by another stream, the finalizer
-	 * will not close it. 
+	 * will not close it.
 	 */
 	if ((useCount <= 0) || !isRunningFinalize()) {
 	    close0();
-        } 
+        }
     }
 
     /**
@@ -363,11 +358,11 @@
 	    if (channel == null) {
 		channel = FileChannelImpl.open(fd, true, false, this);
 
-	        /* 
+	        /*
 		 * Increment fd's use count. Invoking the channel's close()
 		 * method will result in decrementing the use count set for
 		 * the channel.
-		 */ 
+		 */
 		fd.incrementAndGetUseCount();
 	    }
 	    return channel;
--- a/src/share/classes/java/io/FileOutputStream.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/java/io/FileOutputStream.java	Fri Jan 30 16:19:09 2009 -0800
@@ -30,7 +30,7 @@
 
 
 /**
- * A file output stream is an output stream for writing data to a 
+ * A file output stream is an output stream for writing data to a
  * <code>File</code> or to a <code>FileDescriptor</code>. Whether or not
  * a file is available or may be created depends upon the underlying
  * platform.  Some platforms, in particular, allow a file to be opened
@@ -76,11 +76,11 @@
     }
 
     /**
-     * Creates an output file stream to write to the file with the 
-     * specified name. A new <code>FileDescriptor</code> object is 
+     * Creates an output file stream to write to the file with the
+     * specified name. A new <code>FileDescriptor</code> object is
      * created to represent this file connection.
      * <p>
-     * First, if there is a security manager, its <code>checkWrite</code> 
+     * First, if there is a security manager, its <code>checkWrite</code>
      * method is called with <code>name</code> as its argument.
      * <p>
      * If the file exists but is a directory rather than a regular file, does
@@ -107,13 +107,13 @@
      * A new <code>FileDescriptor</code> object is created to represent this
      * file connection.
      * <p>
-     * First, if there is a security manager, its <code>checkWrite</code> 
+     * First, if there is a security manager, its <code>checkWrite</code>
      * method is called with <code>name</code> as its argument.
      * <p>
      * If the file exists but is a directory rather than a regular file, does
      * not exist but cannot be created, or cannot be opened for any other
      * reason then a <code>FileNotFoundException</code> is thrown.
-     * 
+     *
      * @param     name        the system-dependent file name
      * @param     append      if <code>true</code>, then bytes will be written
      *                   to the end of the file rather than the beginning
@@ -133,13 +133,13 @@
     }
 
     /**
-     * Creates a file output stream to write to the file represented by 
-     * the specified <code>File</code> object. A new 
-     * <code>FileDescriptor</code> object is created to represent this 
+     * Creates a file output stream to write to the file represented by
+     * the specified <code>File</code> object. A new
+     * <code>FileDescriptor</code> object is created to represent this
      * file connection.
      * <p>
-     * First, if there is a security manager, its <code>checkWrite</code> 
-     * method is called with the path represented by the <code>file</code> 
+     * First, if there is a security manager, its <code>checkWrite</code>
+     * method is called with the path represented by the <code>file</code>
      * argument as its argument.
      * <p>
      * If the file exists but is a directory rather than a regular file, does
@@ -162,14 +162,14 @@
     }
 
     /**
-     * Creates a file output stream to write to the file represented by 
+     * Creates a file output stream to write to the file represented by
      * the specified <code>File</code> object. If the second argument is
      * <code>true</code>, then bytes will be written to the end of the file
      * rather than the beginning. A new <code>FileDescriptor</code> object is
      * created to represent this file connection.
      * <p>
-     * First, if there is a security manager, its <code>checkWrite</code> 
-     * method is called with the path represented by the <code>file</code> 
+     * First, if there is a security manager, its <code>checkWrite</code>
+     * method is called with the path represented by the <code>file</code>
      * argument as its argument.
      * <p>
      * If the file exists but is a directory rather than a regular file, does
@@ -212,21 +212,13 @@
     }
 
     /**
-     * Creates an output file stream to write to the specified file 
-     * descriptor, which represents an existing connection to an actual 
+     * Creates an output file stream to write to the specified file
+     * descriptor, which represents an existing connection to an actual
      * file in the file system.
      * <p>
-     * First, if there is a security manager, its <code>checkWrite</code> 
-     * method is called with the file descriptor <code>fdObj</code> 
+     * First, if there is a security manager, its <code>checkWrite</code>
+     * method is called with the file descriptor <code>fdObj</code>
      * argument as its argument.
-     * <p>
-     * If <code>fdObj</code> is null then a <code>NullPointerException</code>
-     * is thrown.
-     * <p>
-     * This constructor does not throw an exception if <code>fdObj</code>
-     * is {link java.io.FileDescriptor#valid() invalid}.
-     * However, if the methods are invoked on the resulting stream to attempt
-     * I/O on the stream, an <code>IOException</code> is thrown.   
      *
      * @param      fdObj   the file descriptor to be opened for writing
      * @exception  SecurityException  if a security manager exists and its
@@ -265,7 +257,7 @@
     private native void openAppend(String name) throws FileNotFoundException;
 
     /**
-     * Writes the specified byte to this file output stream. Implements 
+     * Writes the specified byte to this file output stream. Implements
      * the <code>write</code> method of <code>OutputStream</code>.
      *
      * @param      b   the byte to be written.
@@ -283,8 +275,8 @@
     private native void writeBytes(byte b[], int off, int len) throws IOException;
 
     /**
-     * Writes <code>b.length</code> bytes from the specified byte array 
-     * to this file output stream. 
+     * Writes <code>b.length</code> bytes from the specified byte array
+     * to this file output stream.
      *
      * @param      b   the data.
      * @exception  IOException  if an I/O error occurs.
@@ -294,8 +286,8 @@
     }
 
     /**
-     * Writes <code>len</code> bytes from the specified byte array 
-     * starting at offset <code>off</code> to this file output stream. 
+     * Writes <code>len</code> bytes from the specified byte array
+     * starting at offset <code>off</code> to this file output stream.
      *
      * @param      b     the data.
      * @param      off   the start offset in the data.
@@ -307,9 +299,9 @@
     }
 
     /**
-     * Closes this file output stream and releases any system resources 
-     * associated with this stream. This file output stream may no longer 
-     * be used for writing bytes. 
+     * Closes this file output stream and releases any system resources
+     * associated with this stream. This file output stream may no longer
+     * be used for writing bytes.
      *
      * <p> If this stream has an associated channel then the channel is closed
      * as well.
@@ -354,10 +346,10 @@
     /**
      * Returns the file descriptor associated with this stream.
      *
-     * @return  the <code>FileDescriptor</code> object that represents 
-     *          the connection to the file in the file system being used 
-     *          by this <code>FileOutputStream</code> object. 
-     * 
+     * @return  the <code>FileDescriptor</code> object that represents
+     *          the connection to the file in the file system being used
+     *          by this <code>FileOutputStream</code> object.
+     *
      * @exception  IOException  if an I/O error occurs.
      * @see        java.io.FileDescriptor
      */
@@ -365,7 +357,7 @@
 	if (fd != null) return fd;
 	throw new IOException();
      }
-    
+
     /**
      * Returns the unique {@link java.nio.channels.FileChannel FileChannel}
      * object associated with this file output stream. </p>
@@ -392,7 +384,7 @@
 		 * Increment fd's use count. Invoking the channel's close()
 		 * method will result in decrementing the use count set for
 		 * the channel.
-		 */ 
+		 */
 		fd.incrementAndGetUseCount();
 	    }
 	    return channel;
@@ -400,9 +392,9 @@
     }
 
     /**
-     * Cleans up the connection to the file, and ensures that the 
+     * Cleans up the connection to the file, and ensures that the
      * <code>close</code> method of this file output stream is
-     * called when there are no more references to this stream. 
+     * called when there are no more references to this stream.
      *
      * @exception  IOException  if an I/O error occurs.
      * @see        java.io.FileInputStream#close()
@@ -426,12 +418,12 @@
 		}
  	    }
  	}
-    } 
+    }
 
     private native void close0() throws IOException;
 
     private static native void initIDs();
-    
+
     static {
 	initIDs();
     }
--- a/src/share/classes/java/lang/ClassCircularityError.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/java/lang/ClassCircularityError.java	Fri Jan 30 16:19:09 2009 -0800
@@ -26,8 +26,7 @@
 package java.lang;
 
 /**
- * Thrown when the Java Virtual Machine detects a circularity in the
- * superclass hierarchy of a class being loaded.
+ * Thrown when a circularity has been detected while initializing a class.
  *
  * @author     unascribed
  * @since      JDK1.0
--- a/src/share/classes/java/nio/Buffer.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/java/nio/Buffer.java	Fri Jan 30 16:19:09 2009 -0800
@@ -104,8 +104,7 @@
  * <p> A newly-created buffer always has a position of zero and a mark that is
  * undefined.  The initial limit may be zero, or it may be some other value
  * that depends upon the type of the buffer and the manner in which it is
- * constructed.  Each element of a newly-allocated buffer is initialized
- * to zero.
+ * constructed.  The initial content of a buffer is, in general, undefined.
  *
  *
  * <h4> Clearing, flipping, and rewinding </h4>
--- a/src/share/classes/java/nio/X-Buffer.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/java/nio/X-Buffer.java	Fri Jan 30 16:19:09 2009 -0800
@@ -290,8 +290,7 @@
      * Allocates a new direct $fulltype$ buffer.
      *
      * <p> The new buffer's position will be zero, its limit will be its
-     * capacity, its mark will be undefined, and each of its elements will be
-     * initialized to zero.  Whether or not it has a
+     * capacity, and its mark will be undefined.  Whether or not it has a
      * {@link #hasArray </code>backing array<code>} is unspecified.
      *
      * @param  capacity
@@ -312,8 +311,7 @@
      * Allocates a new $fulltype$ buffer.
      *
      * <p> The new buffer's position will be zero, its limit will be its
-     * capacity, its mark will be undefined, and each of its elements will be
-     * initialized to zero.  It will have a {@link #array
+     * capacity, and its mark will be undefined.  It will have a {@link #array
      * </code>backing array<code>}, and its {@link #arrayOffset </code>array
      * offset<code>} will be zero.
      *
--- a/src/share/classes/java/nio/channels/exceptions	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/java/nio/channels/exceptions	Fri Jan 30 16:19:09 2009 -0800
@@ -1,10 +1,34 @@
-# %W% %E%
+#
+# Copyright 2000-2007 Sun Microsystems, Inc.  All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
 # Generated exception classes for java.nio.channels
 
-SCCS_ID='%I%'
-SCCS_DATE='%E%'
 SINCE=1.4
 PACKAGE=java.nio.channels
+# This year should only change if the generated source is modified.
+COPYRIGHT_YEARS=2000-2007
 
 
 SUPER=java.io.IOException
@@ -14,12 +38,14 @@
  * I/O operation upon channel that is closed, or at least closed to that
  * operation.  That this exception is thrown does not necessarily imply that
  * the channel is completely closed.  A socket channel whose write half has
- * been shut down, for example, may still be open for reading."
+ * been shut down, for example, may still be open for reading." \
+ 882777185433553857L
 
 gen FileLockInterruptionException "
  * Checked exception received by a thread when another thread interrupts it
  * while it is waiting to acquire a file lock.  Before this exception is thrown
- * the interrupt status of the previously-blocked thread will have been set."
+ * the interrupt status of the previously-blocked thread will have been set." \
+ 7104080643653532383L
 
 
 SUPER=ClosedChannelException
@@ -27,7 +53,8 @@
 gen AsynchronousCloseException "
  * Checked exception received by a thread when another thread closes the
  * channel or the part of the channel upon which it is blocked in an I/O
- * operation."
+ * operation." \
+ 6891178312432313966L
 
 
 SUPER=AsynchronousCloseException
@@ -36,7 +63,8 @@
  * Checked exception received by a thread when another thread interrupts it
  * while it is blocked in an I/O operation upon a channel.  Before this
  * exception is thrown the channel will have been closed and the interrupt
- * status of the previously-blocked thread will have been set."
+ * status of the previously-blocked thread will have been set." \
+ -4488191543534286750L
 
 
 SUPER=IllegalArgumentException
@@ -44,63 +72,77 @@
 gen IllegalSelectorException "
  * Unchecked exception thrown when an attempt is made to register a channel
  * with a selector that was not created by the provider that created the
- * channel."
+ * channel." \
+ -8406323347253320987L
 
 gen UnresolvedAddressException "
  * Unchecked exception thrown when an attempt is made to invoke a network
- * operation upon an unresolved socket address."
+ * operation upon an unresolved socket address." \
+ 6136959093620794148L
 
 gen UnsupportedAddressTypeException "
  * Unchecked exception thrown when an attempt is made to bind or connect
- * to a socket address of a type that is not supported."
+ * to a socket address of a type that is not supported." \
+ -2964323842829700493L
 
 
 SUPER=IllegalStateException
 
 gen AlreadyConnectedException "
  * Unchecked exception thrown when an attempt is made to connect a {@link
- * SocketChannel} that is already connected."
+ * SocketChannel} that is already connected." \
+ -7331895245053773357L
 
 gen ConnectionPendingException "
  * Unchecked exception thrown when an attempt is made to connect a {@link
  * SocketChannel} for which a non-blocking connection operation is already in
- * progress."
+ * progress." \
+ 2008393366501760879L
 
 gen ClosedSelectorException "
  * Unchecked exception thrown when an attempt is made to invoke an I/O
- * operation upon a closed selector."
+ * operation upon a closed selector." \
+ 6466297122317847835L
 
 gen CancelledKeyException "
  * Unchecked exception thrown when an attempt is made to use
- * a selection key that is no longer valid."
+ * a selection key that is no longer valid." \
+ -8438032138028814268L
 
 gen IllegalBlockingModeException "
  * Unchecked exception thrown when a blocking-mode-specific operation
- * is invoked upon a channel in the incorrect blocking mode."
+ * is invoked upon a channel in the incorrect blocking mode." \
+ -3335774961855590474L
 
 gen NoConnectionPendingException "
  * Unchecked exception thrown when the {@link SocketChannel#finishConnect
  * finishConnect} method of a {@link SocketChannel} is invoked without first
- * successfully invoking its {@link SocketChannel#connect connect} method."
+ * successfully invoking its {@link SocketChannel#connect connect} method." \
+ -8296561183633134743L
 
 gen NonReadableChannelException "
  * Unchecked exception thrown when an attempt is made to read
- * from a channel that was not originally opened for reading."
+ * from a channel that was not originally opened for reading." \
+ -3200915679294993514L
 
 gen NonWritableChannelException "
  * Unchecked exception thrown when an attempt is made to write
- * to a channel that was not originally opened for writing."
+ * to a channel that was not originally opened for writing." \
+ -7071230488279011621L
 
 gen NotYetBoundException "
  * Unchecked exception thrown when an attempt is made to invoke an I/O
- * operation upon a server socket channel that is not yet bound."
+ * operation upon a server socket channel that is not yet bound." \
+ 4640999303950202242L
 
 gen NotYetConnectedException "
  * Unchecked exception thrown when an attempt is made to invoke an I/O
- * operation upon a socket channel that is not yet connected."
+ * operation upon a socket channel that is not yet connected." \
+ 4697316551909513464L
 
 gen OverlappingFileLockException "
  * Unchecked exception thrown when an attempt is made to acquire a lock on a
  * region of a file that overlaps a region already locked by the same Java
  * virtual machine, or when another thread is already waiting to lock an
- * overlapping region of the same file."
+ * overlapping region of the same file." \
+ 2047812138163068433L
--- a/src/share/classes/java/nio/charset/CoderMalfunctionError.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/java/nio/charset/CoderMalfunctionError.java	Fri Jan 30 16:19:09 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2007 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -32,7 +32,6 @@
  * encodeLoop} method of a {@link CharsetEncoder}, throws an unexpected
  * exception.
  *
- * @version %I%, %E%
  * @since 1.4
  */
 
@@ -40,6 +39,8 @@
     extends Error
 {
 
+    private static final long serialVersionUID = -1151412348057794301L;
+
     /**
      * Initializes an instance of this class.
      *
--- a/src/share/classes/java/nio/charset/MalformedInputException.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/java/nio/charset/MalformedInputException.java	Fri Jan 30 16:19:09 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2001 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2007 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -38,6 +38,8 @@
     extends CharacterCodingException
 {
 
+    private static final long serialVersionUID = -3438823399834806194L;
+
     private int inputLength;
 
     public MalformedInputException(int inputLength) {
--- a/src/share/classes/java/nio/charset/UnmappableCharacterException.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/java/nio/charset/UnmappableCharacterException.java	Fri Jan 30 16:19:09 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2001-2007 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -38,6 +38,8 @@
     extends CharacterCodingException
 {
 
+    private static final long serialVersionUID = -7026962371537706123L;
+
     private int inputLength;
 
     public UnmappableCharacterException(int inputLength) {
--- a/src/share/classes/java/nio/charset/exceptions	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/java/nio/charset/exceptions	Fri Jan 30 16:19:09 2009 -0800
@@ -1,17 +1,41 @@
-# %W% %E%
+#
+# Copyright 2000-2007 Sun Microsystems, Inc.  All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
 # Generated exception classes for java.nio.charset
 
-SCCS_ID='%I%'
-SCCS_DATE='%E%'
 SINCE=1.4
 PACKAGE=java.nio.charset
-
+# This year should only change if the generated source is modified.
+COPYRIGHT_YEARS=2000-2007
 
 SUPER=java.io.IOException
 
 gen CharacterCodingException "
  * Checked exception thrown when a character encoding
- * or decoding error occurs."
+ * or decoding error occurs." \
+ 8421532232154627783L
 
 
 SUPER=IllegalArgumentException
@@ -19,9 +43,11 @@
 gen IllegalCharsetNameException "
  * Unchecked exception thrown when a string that is not a
  * <a href="Charset.html#names">legal charset name</a> is used as such." \
+ 1457525358470002989L \
  String charsetName CharsetName "illegal charset name"
 
 gen UnsupportedCharsetException "
  * Unchecked exception thrown when no support is available
  * for a requested charset." \
+ 1490765524727386367L \
  String charsetName CharsetName "name of the unsupported charset"
--- a/src/share/classes/java/nio/exceptions	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/java/nio/exceptions	Fri Jan 30 16:19:09 2009 -0800
@@ -1,32 +1,60 @@
-# %W% %E%
+#
+# Copyright 2000-2007 Sun Microsystems, Inc.  All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
 # Generated exception classes for java.nio
 
-SCCS_ID='%I%'
-SCCS_DATE='%E%'
 SINCE=1.4
 PACKAGE=java.nio
+# This year should only change if the generated source is modified.
+COPYRIGHT_YEARS=2000-2007
 
 
 SUPER=RuntimeException
 
 gen BufferOverflowException "
  * Unchecked exception thrown when a relative <i>put</i> operation reaches
- * the target buffer's limit."
+ * the target buffer's limit." \
+ -5484897634319144535L
 
 gen BufferUnderflowException "
  * Unchecked exception thrown when a relative <i>get</i> operation reaches
- * the source buffer's limit."
+ * the source buffer's limit." \
+ -1713313658691622206L
 
 
 SUPER=IllegalStateException
 
 gen InvalidMarkException "
  * Unchecked exception thrown when an attempt is made to reset a buffer
- * when its mark is not defined."
+ * when its mark is not defined." \
+ 1698329710438510774L
 
 
 SUPER=UnsupportedOperationException
 
 gen ReadOnlyBufferException "
  * Unchecked exception thrown when a content-mutation method such as
- * <tt>put</tt> or <tt>compact</tt> is invoked upon a read-only buffer."
+ * <tt>put</tt> or <tt>compact</tt> is invoked upon a read-only buffer." \
+ -1210063976496234090L
--- a/src/share/classes/java/text/AttributedString.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/java/text/AttributedString.java	Fri Jan 30 16:19:09 2009 -0800
@@ -222,7 +222,8 @@
      * @param attributes Specifies attributes to be extracted
      * from the text. If null is specified, all available attributes will
      * be used.
-     * @exception NullPointerException if <code>text</code> is null.
+     * @exception NullPointerException if <code>text</code> or
+     *            <code>attributes</code> is null.
      * @exception IllegalArgumentException if the subrange given by
      * beginIndex and endIndex is out of the text range.
      * @see java.text.Annotation
--- a/src/share/classes/java/util/Currency.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/java/util/Currency.java	Fri Jan 30 16:19:09 2009 -0800
@@ -55,21 +55,6 @@
  * <code>Currency</code> instance for any given currency. Therefore, there's
  * no public constructor. You obtain a <code>Currency</code> instance using
  * the <code>getInstance</code> methods.
- * <p>
- * Users can supersede the Java runtime currency data by creating a properties 
- * file named <code>&lt;JAVA_HOME&gt;/lib/currency.properties</code>.  The contents 
- * of the properties file are key/value pairs of the ISO 3166 country codes 
- * and the ISO 4217 currency data respectively.  The value part consists of 
- * three ISO 4217 values of a currency, i.e., an alphabetic code, a numeric 
- * code, and a minor unit.  Those three ISO 4217 values are separated by commas.  
- * The lines which start with '#'s are considered comment lines.  For example,
- * <p> 
- * <code>
- * #Sample currency properties<br>
- * JP=JPZ,999,0
- * </code>
- * <p>
- * will supersede the currency data for Japan.
  *
  * @since 1.4
  */
@@ -226,6 +211,7 @@
 		    throw ie;
                 }
 
+                if (false) {
 		// look for the properties file for overrides
 		try {
 		    File propFile = new File(homeDir + File.separator + 
@@ -246,6 +232,7 @@
                 } catch (IOException e) {
 	            log(Level.INFO, "currency.properties is ignored because of an IOException", e);
                 }
+                }
                 return null;
             }
         });
@@ -400,7 +387,7 @@
      *    available in the runtime, the returned set is empty.
      * @since 1.7
      */
-    public static Set<Currency> getAvailableCurrencies() {
+    private static Set<Currency> getAvailableCurrencies() {
         synchronized(Currency.class) {
 	    if (available == null) {
 	        available = new HashSet<Currency>(256);
@@ -515,7 +502,7 @@
      * @return the ISO 4217 numeric code of this currency
      * @since 1.7
      */
-    public int getNumericCode() {
+    private int getNumericCode() {
         return numericCode;
     }
 
@@ -527,7 +514,7 @@
      * @return the display name of this currency for the default locale
      * @since 1.7
      */
-    public String getDisplayName() {
+    private String getDisplayName() {
         return getDisplayName(Locale.getDefault());
     }
     
@@ -542,7 +529,7 @@
      * @exception NullPointerException if <code>locale</code> is null
      * @since 1.7
      */
-    public String getDisplayName(Locale locale) {
+    private String getDisplayName(Locale locale) {
         try {
             OpenListResourceBundle bundle = LocaleData.getCurrencyNames(locale);
             String result = null;
@@ -630,8 +617,8 @@
             switch(type) {
             case SYMBOL:
 	        return currencyNameProvider.getSymbol(key, locale);
-            case DISPLAYNAME:
-		return currencyNameProvider.getDisplayName(key, locale);
+//          case DISPLAYNAME:
+//		return currencyNameProvider.getDisplayName(key, locale);
             default:
                 assert false; // shouldn't happen
             }
--- a/src/share/classes/java/util/Formatter.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/java/util/Formatter.java	Fri Jan 30 16:19:09 2009 -0800
@@ -409,19 +409,11 @@
  *
  * <tr><td valign="top"><tt>'z'</tt>
  *     <td> <a href="http://www.ietf.org/rfc/rfc0822.txt">RFC&nbsp;822</a>
- *     style numeric time zone offset from GMT, e.g. <tt>-0800</tt>.  This
- *     value will be adjusted as necessary for Daylight Saving Time.  For
- *     <tt>long</tt>, {@link Long}, and {@link Date} the time zone used is
- *     the {@plainlink TimeZone#getDefault() default time zone} for this 
- *     instance of the Java virtual machine.
+ *     style numeric time zone offset from GMT, e.g. <tt>-0800</tt>.  
  *
  * <tr><td valign="top"><tt>'Z'</tt>
- *     <td> A string representing the abbreviation for the time zone.  This 
- *     value will be adjusted as necessary for Daylight Saving Time.  For
- *     <tt>long</tt>, {@link Long}, and {@link Date} the  time zone used is 
- *     the {@plainlink TimeZone#getDefault() default time zone} for this 
- *     instance of the Java virtual machine.  The Formatter's locale will
- *     supersede the locale of the argument (if any). 
+ *     <td> A string representing the abbreviation for the time zone.  The 
+ *     Formatter's locale will supersede the locale of the argument (if any). 
  *
  * <tr><td valign="top"><tt>'s'</tt>
  *     <td> Seconds since the beginning of the epoch starting at 1 January 1970
@@ -1573,19 +1565,11 @@
  * <tr><td valign="top"><tt>'z'</tt>
  *     <td valign="top"> <tt>'&#92;u007a'</tt>
  *     <td> <a href="http://www.ietf.org/rfc/rfc0822.txt">RFC&nbsp;822</a>
- *     style numeric time zone offset from GMT, e.g. <tt>-0800</tt>.  This
- *     value will be adjusted as necessary for Daylight Saving Time.  For
- *     <tt>long</tt>, {@link Long}, and {@link Date} the time zone used is
- *     the {@plainlink TimeZone#getDefault() default time zone} for this 
- *     instance of the Java virtual machine.
+ *     style numeric time zone offset from GMT, e.g. <tt>-0800</tt>.  
  *
  * <tr><td valign="top"><tt>'Z'</tt>
- *     <td> A string representing the abbreviation for the time zone.  This 
- *     value will be adjusted as necessary for Daylight Saving Time.  For
- *     <tt>long</tt>, {@link Long}, and {@link Date} the time zone used is 
- *     the {@plainlink TimeZone#getDefault() default time zone} for this 
- *     instance of the Java virtual machine.  The Formatter's locale will
- *     supersede the locale of the argument (if any). 
+ *     <td valign="top"> <tt>'&#92;u005a'</tt>
+ *     <td> A string representing the abbreviation for the time zone. 
  *
  * <tr><td valign="top"><tt>'s'</tt>
  *     <td valign="top"> <tt>'&#92;u0073'</tt>
--- a/src/share/classes/java/util/spi/CurrencyNameProvider.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/java/util/spi/CurrencyNameProvider.java	Fri Jan 30 16:19:09 2009 -0800
@@ -91,7 +91,7 @@
      *     <code>locale</code> is <code>null</code>
      * @since 1.7
      */
-    public String getDisplayName(String currencyCode, Locale locale) {
+    private String getDisplayName(String currencyCode, Locale locale) {
         if (currencyCode == null || locale == null) {
 	    throw new NullPointerException();
 	}
--- a/src/share/classes/javax/imageio/metadata/IIOMetadataNode.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/javax/imageio/metadata/IIOMetadataNode.java	Fri Jan 30 16:19:09 2009 -0800
@@ -130,6 +130,8 @@
 
 class IIOAttr extends IIOMetadataNode implements Attr {
 
+    boolean specified = true;
+
     Element owner;
     String name;
     String value;
@@ -153,7 +155,7 @@
     }
 
     public boolean getSpecified() {
-        return true;
+        return specified;
     }
 
     public String getValue() {
@@ -180,18 +182,63 @@
         this.owner = owner;
     }
 
-    /** This method is new in the DOM L3 for Attr interface.
-     * Could throw DOMException here, but its probably OK
-     * to always return false. One reason for this, is we have no good
-     * way to document this exception, since this class, IIOAttr,
-     * is not a public class. The rest of the methods that throw
-     * DOMException are publically documented as such on IIOMetadataNode.
-     * @return false
-     */
-    public boolean isId() {
-        return false;
+    // Start of dummy methods for DOM L3. PENDING: Please revisit
+    public boolean isId( ) {
+        throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
+    }
+    public TypeInfo getSchemaTypeInfo() {
+        throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
+    }
+    public Object setUserData(String key,
+                              Object data,
+                              UserDataHandler handler) {
+        throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
+    }
+
+
+    public Object getUserData ( String key ) {
+        throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
+    }
+
+    public Object getFeature ( String feature, String version ) {
+        throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
+    }
+    public boolean isEqualNode( Node node ) {
+        throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
+    }
+    public boolean isSameNode( Node node ) {
+        throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
     }
 
+    public String lookupNamespaceURI( String prefix ) {
+        throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
+    }
+    public boolean isDefaultNamespace(String namespaceURI) {
+        throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
+    }
+
+    public String lookupPrefix(String namespaceURI) {
+        throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
+    }
+
+
+    String textContent;
+    public String getTextContent() throws DOMException {
+        return textContent;
+    }
+    public void setTextContent(String textContent) throws DOMException{
+        this.textContent = textContent; //PENDING
+    }
+    public short compareDocumentPosition(Node other)
+                                         throws DOMException {
+        throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
+    }
+
+    public String getBaseURI() {
+        throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
+    }
+    // End of dummy methods for DOM L3. PENDING: Please revisit
+
 
 }
 
@@ -212,20 +259,12 @@
  *
  * <p> Namespaces are ignored in this implementation.  The terms "tag
  * name" and "node name" are always considered to be synonymous.
- * 
- * <em>Note:</em>
- * The DOM Level 3 specification added a number of new methods to the
- * {@code Node}, {@code Element} and {@code Attr} interfaces that are not
- * of value to the {@code IIOMetadataNode} implementation or specification.
- * 
- * Calling such methods on an {@code IIOMetadataNode}, or an {@code Attr}
- * instance returned from an {@code IIOMetadataNode} will result in a
- * {@code DOMException} being thrown.
  *
  * @see IIOMetadata#getAsTree
  * @see IIOMetadata#setFromTree
  * @see IIOMetadata#mergeTree
  *
+ * @version 0.5
  */
 public class IIOMetadataNode implements Element, NodeList {
 
@@ -326,19 +365,11 @@
         return nodeName;
     }
 
-    /**
-     * Returns the value associated with this node.
-     *
-     * @return the node value, as a <code>String</code>.
-     */
-    public String getNodeValue(){
+    public String getNodeValue() throws DOMException {
         return nodeValue;
     }
 
-    /**
-     * Sets the <code>String</code> value associated with this node.
-     */
-    public void setNodeValue(String nodeValue) {
+    public void setNodeValue(String nodeValue) throws DOMException {
         this.nodeValue = nodeValue;
     }
 
@@ -369,13 +400,6 @@
         return parent;
     }
 
-    /**
-     * Returns a <code>NodeList</code> that contains all children of this node.
-     * If there are no children, this is a <code>NodeList</code> containing
-     * no nodes.
-     *
-     * @return the children as a <code>NodeList</code>
-     */
     public NodeList getChildNodes() {
         return this;
     }
@@ -424,13 +448,6 @@
         return nextSibling;
     }
 
-    /**
-     * Returns a <code>NamedNodeMap</code> containing the attributes of
-     * this node.
-     *
-     * @return a <code>NamedNodeMap</code> containing the attributes of
-     * this node.
-     */
     public NamedNodeMap getAttributes() {
         return new IIONamedNodeMap(attributes);
     }
@@ -720,22 +737,10 @@
 
     // Methods from Element
 
-
-    /**
-     * Equivalent to <code>getNodeName</code>.
-     *
-     * @return the node name, as a <code>String</code
-     */
     public String getTagName() {
         return nodeName;
     }
-
-    /**
-     * Retrieves an attribute value by name.
-     * @param name The name of the attribute to retrieve.
-     * @return The <code>Attr</code> value as a string, or the empty string 
-     * if that attribute does not have a specified or default value.
-     */
+    
     public String getAttribute(String name) {
         Attr attr = getAttributeNode(name);
         if (attr == null) {
@@ -953,180 +958,78 @@
         this.userObject = userObject;
     }
 
-    // Start of dummy methods for DOM L3.
-
-    /**
-     * This DOM Level 3 method is not supported for {@code IIOMetadataNode}
-     * and will throw a {@code DOMException}.
-     * @throws DOMException - always.
-     */
+    // Start of dummy methods for DOM L3. PENDING: Please revisit
     public void setIdAttribute(String name,
                                boolean isId)
                                throws DOMException {
-        throw new DOMException(DOMException.NOT_SUPPORTED_ERR,
-                               "Method not supported");
+        throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
     }
 
-    /**
-     * This DOM Level 3 method is not supported for {@code IIOMetadataNode}
-     * and will throw a {@code DOMException}.
-     * @throws DOMException - always.
-     */
     public void setIdAttributeNS(String namespaceURI,
                                  String localName,
                                  boolean isId)
                                  throws DOMException {
-        throw new DOMException(DOMException.NOT_SUPPORTED_ERR,
-                               "Method not supported");
+        throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
     }
 
-    /**
-     * This DOM Level 3 method is not supported for {@code IIOMetadataNode}
-     * and will throw a {@code DOMException}.
-     * @throws DOMException - always.
-     */
     public void setIdAttributeNode(Attr idAttr,
                                    boolean isId)
                                    throws DOMException {
-        throw new DOMException(DOMException.NOT_SUPPORTED_ERR,
-                               "Method not supported");
+        throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
     }
 
-    /**
-     * This DOM Level 3 method is not supported for {@code IIOMetadataNode}
-     * and will throw a {@code DOMException}.
-     * @throws DOMException - always.
-     */
-    public TypeInfo getSchemaTypeInfo() throws DOMException {
-        throw new DOMException(DOMException.NOT_SUPPORTED_ERR,
-                               "Method not supported");
-    }
-
-    /**
-     * This DOM Level 3 method is not supported for {@code IIOMetadataNode}
-     * and will throw a {@code DOMException}.
-     * @throws DOMException - always.
-     */
-    public Object setUserData(String key,
-                              Object data,
-                              UserDataHandler handler) throws DOMException {
-        throw new DOMException(DOMException.NOT_SUPPORTED_ERR,
-                               "Method not supported");
+    public TypeInfo getSchemaTypeInfo() {
+        throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
     }
 
-    /**
-     * This DOM Level 3 method is not supported for {@code IIOMetadataNode}
-     * and will throw a {@code DOMException}.
-     * @throws DOMException - always.
-     */
-    public Object getUserData(String key) throws DOMException {
-        throw new DOMException(DOMException.NOT_SUPPORTED_ERR,
-                               "Method not supported");
+    public Object setUserData(String key,
+                              Object data,
+                              UserDataHandler handler) {
+        throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
     }
 
-    /**
-     * This DOM Level 3 method is not supported for {@code IIOMetadataNode}
-     * and will throw a {@code DOMException}.
-     * @throws DOMException - always.
-     */
-    public Object getFeature(String feature, String version) 
-                              throws DOMException {
-        throw new DOMException(DOMException.NOT_SUPPORTED_ERR,
-                               "Method not supported");
+
+    public Object getUserData ( String key ) {
+        throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
+    }
+    public Object getFeature ( String feature, String version ) {
+        throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
     }
 
-    /**
-     * This DOM Level 3 method is not supported for {@code IIOMetadataNode}
-     * and will throw a {@code DOMException}.
-     * @throws DOMException - always.
-     */
-    public boolean isSameNode(Node node) throws DOMException {
-        throw new DOMException(DOMException.NOT_SUPPORTED_ERR,
-                               "Method not supported");
-    }
-
-    /**
-     * This DOM Level 3 method is not supported for {@code IIOMetadataNode}
-     * and will throw a {@code DOMException}.
-     * @throws DOMException - always.
-     */
-    public boolean isEqualNode(Node node) throws DOMException {
-        throw new DOMException(DOMException.NOT_SUPPORTED_ERR,
-                               "Method not supported");
+    public boolean isSameNode( Node node ) {
+        throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
     }
 
-    /**
-     * This DOM Level 3 method is not supported for {@code IIOMetadataNode}
-     * and will throw a {@code DOMException}.
-     * @throws DOMException - always.
-     */
-    public String lookupNamespaceURI(String prefix) throws DOMException {
-        throw new DOMException(DOMException.NOT_SUPPORTED_ERR,
-                               "Method not supported");
+    public boolean isEqualNode( Node node ) {
+        throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
     }
-
-    /**
-     * This DOM Level 3 method is not supported for {@code IIOMetadataNode}
-     * and will throw a {@code DOMException}.
-     * @throws DOMException - always.
-     */
-    public boolean isDefaultNamespace(String namespaceURI)
-                                               throws DOMException {
-        throw new DOMException(DOMException.NOT_SUPPORTED_ERR,
-                               "Method not supported");
+    public String lookupNamespaceURI( String prefix ) {
+        throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
     }
-
-    /**
-     * This DOM Level 3 method is not supported for {@code IIOMetadataNode}
-     * and will throw a {@code DOMException}.
-     * @throws DOMException - always.
-     */
-    public String lookupPrefix(String namespaceURI) throws DOMException {
-        throw new DOMException(DOMException.NOT_SUPPORTED_ERR,
-                               "Method not supported");
+    public boolean isDefaultNamespace(String namespaceURI) {
+        throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
     }
 
-    /**
-     * This DOM Level 3 method is not supported for {@code IIOMetadataNode}
-     * and will throw a {@code DOMException}.
-     * @throws DOMException - always.
-     */
-    public String getTextContent() throws DOMException {
-        throw new DOMException(DOMException.NOT_SUPPORTED_ERR,
-                               "Method not supported");
+    public String lookupPrefix(String namespaceURI) {
+        throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
     }
-
-    /**
-     * This DOM Level 3 method is not supported for {@code IIOMetadataNode}
-     * and will throw a {@code DOMException}.
-     * @throws DOMException - always.
-     */
-    public void setTextContent(String textContent) throws DOMException {
-        throw new DOMException(DOMException.NOT_SUPPORTED_ERR,
-                               "Method not supported");
+    String textContent;
+    public String getTextContent() throws DOMException {
+        return textContent;
+    }
+    public void setTextContent(String textContent) throws DOMException{
+        this.textContent = textContent; //PENDING
     }
 
-    /**
-     * This DOM Level 3 method is not supported for {@code IIOMetadataNode}
-     * and will throw a {@code DOMException}.
-     * @throws DOMException - always.
-     */
+
     public short compareDocumentPosition(Node other)
                                          throws DOMException {
-        throw new DOMException(DOMException.NOT_SUPPORTED_ERR,
-                               "Method not supported");
+        throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
     }
-
-    /**
-     * This DOM Level 3 method is not supported for {@code IIOMetadataNode}
-     * and will throw a {@code DOMException}.
-     * @throws DOMException - always.
-     */
-    public String getBaseURI() throws DOMException {
-        throw new DOMException(DOMException.NOT_SUPPORTED_ERR,
-                               "Method not supported");
+    public String getBaseURI() {
+        throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Method not supported");
     }
-    //End of dummy methods for DOM L3.
+    //End of dummy methods for DOM L3. Please revisit
 
 
 }
--- a/src/share/classes/javax/swing/JComponent.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/javax/swing/JComponent.java	Fri Jan 30 16:19:09 2009 -0800
@@ -3148,35 +3148,24 @@
     }
 
     /**
-     * Sets the {@code TransferHandler}, which provides support for transfer
-     * of data into and out of this component via cut/copy/paste and drag
-     * and drop. This may be {@code null} if the component does not support
-     * data transfer operations.
+     * Sets the <code>transferHandler</code> property,
+     * which is <code>null</code> if the component does
+     * not support data transfer operations.
      * <p>
-     * If the new {@code TransferHandler} is not {@code null}, this method
-     * also installs a <b>new</b> {@code DropTarget} on the component to
-     * activate drop handling through the {@code TransferHandler} and activate
-     * any built-in support (such as calculating and displaying potential drop
-     * locations). If you do not wish for this component to respond in any way
-     * to drops, you can disable drop support entirely either by removing the
-     * drop target ({@code setDropTarget(null)}) or by de-activating it
-     * ({@code getDropTaget().setActive(false)}).
-     * <p>
-     * If the new {@code TransferHandler} is {@code null}, this method removes
-     * the drop target.
-     * <p>
-     * Under two circumstances, this method does not modify the drop target:
-     * First, if the existing drop target on this component was explicitly
-     * set by the developer to a {@code non-null} value. Second, if the
-     * system property {@code suppressSwingDropSupport} is {@code true}. The
-     * default value for the system property is {@code false}.
+     * If <code>newHandler</code> is not <code>null</code>,
+     * and the system property
+     * <code>suppressSwingDropSupport</code> is not true, this will 
+     * install a <code>DropTarget</code> on the <code>JComponent</code>.
+     * The default for the system property is false, so that a
+     * <code>DropTarget</code> will be added.
      * <p>
      * Please see
      * <a href="http://java.sun.com/docs/books/tutorial/uiswing/misc/dnd.html">
      * How to Use Drag and Drop and Data Transfer</a>,
      * a section in <em>The Java Tutorial</em>, for more information.
      * 
-     * @param newHandler the new {@code TransferHandler}
+     * @param newHandler  mechanism for transfer of data to
+     *    and from the component
      *
      * @see TransferHandler
      * @see #getTransferHandler
--- a/src/share/classes/javax/swing/JTree.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/javax/swing/JTree.java	Fri Jan 30 16:19:09 2009 -0800
@@ -1605,12 +1605,9 @@
     //
 
     /**
-     * Returns the number of viewable nodes. A node is viewable if all of its
-     * parents are expanded. The root is only included in this count if
-     * {@code isRootVisible()} is {@code true}. This returns {@code 0} if
-     * the UI has not been set.
+     * Returns the number of rows that are currently being displayed.
      *
-     * @return the number of viewable nodes
+     * @return the number of rows that are being displayed
      */
     public int getRowCount() {
         TreeUI            tree = getUI();
@@ -1788,13 +1785,12 @@
     }
 
     /**
-     * Returns the last path component of the selected path. This is
-     * a convenience method for
-     * {@code getSelectionModel().getSelectionPath().getLastPathComponent()}.
-     * This is typically only useful if the selection has one path.
+     * Returns the last path component in the first node of the current 
+     * selection.
      *
-     * @return the last path component of the selected path, or
-     *         <code>null</code> if nothing is selected
+     * @return the last <code>Object</code> in the first selected node's
+     *                <code>TreePath</code>,
+     *                or <code>null</code> if nothing is selected
      * @see TreePath#getLastPathComponent
      */
     public Object getLastSelectedPathComponent() {
@@ -1866,20 +1862,20 @@
     }
 
     /**
-     * Returns the smallest selected row. If the selection is empty, or
-     * none of the selected paths are viewable, {@code -1} is returned.
+     * Gets the first selected row.
      *
-     * @return the smallest selected row
+     * @return an integer designating the first selected row, where 0 is the 
+     *         first row in the display
      */
     public int getMinSelectionRow() {
         return getSelectionModel().getMinSelectionRow();
     }
 
     /**
-     * Returns the largest selected row. If the selection is empty, or
-     * none of the selected paths are viewable, {@code -1} is returned.
+     * Returns the last selected row.
      *
-     * @return the largest selected row
+     * @return an integer designating the last selected row, where 0 is the 
+     *         first row in the display
      */
     public int getMaxSelectionRow() {
         return getSelectionModel().getMaxSelectionRow();
@@ -2471,72 +2467,40 @@
     }
 
     /**
-     * Returns the paths (inclusive) between the specified rows. If
-     * the specified indices are within the viewable set of rows, or
-     * bound the viewable set of rows, then the indices are
-     * constrained by the viewable set of rows. If the specified
-     * indices are not within the viewable set of rows, or do not
-     * bound the viewable set of rows, then an empty array is
-     * returned. For example, if the row count is {@code 10}, and this
-     * method is invoked with {@code -1, 20}, then the specified
-     * indices are constrained to the viewable set of rows, and this is
-     * treated as if invoked with {@code 0, 9}. On the other hand, if
-     * this were invoked with {@code -10, -1}, then the specified
-     * indices do not bound the viewable set of rows, and an empty
-     * array is returned.
-     * <p>
-     * The parameters are not order dependent. That is, {@code
-     * getPathBetweenRows(x, y)} is equivalent to
-     * {@code getPathBetweenRows(y, x)}.
-     * <p>
-     * An empty array is returned if the row count is {@code 0}, or
-     * the specified indices do not bound the viewable set of rows.
+     * Returns <code>JTreePath</code> instances representing the path
+     * between index0 and index1 (including index1).
+     * Returns <code>null</code> if there is no tree.
      *
-     * @param index0 the first index in the range
-     * @param index1 the last index in the range
-     * @return the paths (inclusive) between the specified row indices
+     * @param index0  an integer specifying a display row, where 0 is the
+     *                first row in the display
+     * @param index1  an integer specifying a second display row
+     * @return an array of <code>TreePath</code> objects, one for each
+     *                node between index0 and index1, inclusive; or <code>null</code>
+     *                if there is no tree
      */
     protected TreePath[] getPathBetweenRows(int index0, int index1) {
+        int              newMinIndex, newMaxIndex;
         TreeUI           tree = getUI();
-        if (tree != null) {
-            int rowCount = getRowCount();
-            if (rowCount > 0 && !((index0 < 0 && index1 < 0) ||
-                                  (index0 >= rowCount && index1 >= rowCount))){
-                index0 = Math.min(rowCount - 1, Math.max(index0, 0));
-                index1 = Math.min(rowCount - 1, Math.max(index1, 0));
-                int minIndex = Math.min(index0, index1);
-                int maxIndex = Math.max(index0, index1);
-                TreePath[] selection = new TreePath[
-                        maxIndex - minIndex + 1];
-                for(int counter = minIndex; counter <= maxIndex; counter++) {
-                    selection[counter - minIndex] = 
-                            tree.getPathForRow(this, counter);
-                }
-                return selection;
+
+        newMinIndex = Math.min(index0, index1);
+        newMaxIndex = Math.max(index0, index1);
+
+        if(tree != null) {
+            TreePath[] selection = new TreePath[newMaxIndex - newMinIndex + 1];
+            for(int counter = newMinIndex; counter <= newMaxIndex; counter++) {
+                selection[counter - newMinIndex] = tree.getPathForRow(this, counter);
             }
+            return selection;
         }
-        return new TreePath[0];
+        return null;
     }
 
     /**
-     * Selects the rows in the specified interval (inclusive). If
-     * the specified indices are within the viewable set of rows, or bound
-     * the viewable set of rows, then the specified rows are constrained by
-     * the viewable set of rows. If the specified indices are not within the
-     * viewable set of rows, or do not bound the viewable set of rows, then
-     * the selection is cleared. For example, if the row count is {@code
-     * 10}, and this method is invoked with {@code -1, 20}, then the
-     * specified indices bounds the viewable range, and this is treated as
-     * if invoked with {@code 0, 9}. On the other hand, if this were
-     * invoked with {@code -10, -1}, then the specified indices do not
-     * bound the viewable set of rows, and the selection is cleared.
-     * <p>
-     * The parameters are not order dependent. That is, {@code
-     * setSelectionInterval(x, y)} is equivalent to
-     * {@code setSelectionInterval(y, x)}.
+     * Selects the nodes between index0 and index1, inclusive.
      *
-     * @param index0 the first index in the range to select
-     * @param index1 the last index in the range to select
+     * @param index0  an integer specifying a display row, where 0 is the
+     *                first row in the display
+     * @param index1  an integer specifying a second display row
     */
     public void setSelectionInterval(int index0, int index1) {
         TreePath[]         paths = getPathBetweenRows(index0, index1);
@@ -2545,60 +2509,31 @@
     }
 
     /**
-     * Adds the specified rows (inclusive) to the selection. If the
-     * specified indices are within the viewable set of rows, or bound
-     * the viewable set of rows, then the specified indices are
-     * constrained by the viewable set of rows. If the indices are not
-     * within the viewable set of rows, or do not bound the viewable
-     * set of rows, then the selection is unchanged. For example, if
-     * the row count is {@code 10}, and this method is invoked with
-     * {@code -1, 20}, then the specified indices bounds the viewable
-     * range, and this is treated as if invoked with {@code 0, 9}. On
-     * the other hand, if this were invoked with {@code -10, -1}, then
-     * the specified indices do not bound the viewable set of rows,
-     * and the selection is unchanged.
-     * <p>
-     * The parameters are not order dependent. That is, {@code
-     * addSelectionInterval(x, y)} is equivalent to
-     * {@code addSelectionInterval(y, x)}.
+     * Adds the paths between index0 and index1, inclusive, to the 
+     * selection.
      *
-     * @param index0 the first index in the range to add to the selection
-     * @param index1 the last index in the range to add to the selection
+     * @param index0  an integer specifying a display row, where 0 is the
+     *                first row in the display
+     * @param index1  an integer specifying a second display row
      */
     public void addSelectionInterval(int index0, int index1) {
         TreePath[]         paths = getPathBetweenRows(index0, index1);
 
-        if (paths != null && paths.length > 0) {
-            this.getSelectionModel().addSelectionPaths(paths);
-        }
+        this.getSelectionModel().addSelectionPaths(paths);
     }
 
     /**
-     * Removes the specified rows (inclusive) from the selection. If
-     * the specified indices are within the viewable set of rows, or bound
-     * the viewable set of rows, then the specified indices are constrained by
-     * the viewable set of rows. If the specified indices are not within the
-     * viewable set of rows, or do not bound the viewable set of rows, then
-     * the selection is unchanged. For example, if the row count is {@code
-     * 10}, and this method is invoked with {@code -1, 20}, then the
-     * specified range bounds the viewable range, and this is treated as
-     * if invoked with {@code 0, 9}. On the other hand, if this were
-     * invoked with {@code -10, -1}, then the specified range does not
-     * bound the viewable set of rows, and the selection is unchanged.
-     * <p>
-     * The parameters are not order dependent. That is, {@code
-     * removeSelectionInterval(x, y)} is equivalent to
-     * {@code removeSelectionInterval(y, x)}.
+     * Removes the nodes between index0 and index1, inclusive, from the  
+     * selection. 
      *
-     * @param index0 the first row to remove from the selection
-     * @param index1 the last row to remove from the selection
+     * @param index0  an integer specifying a display row, where 0 is the 
+     *                first row in the display 
+     * @param index1  an integer specifying a second display row 
      */
     public void removeSelectionInterval(int index0, int index1) {
         TreePath[]         paths = getPathBetweenRows(index0, index1);
 
-        if (paths != null && paths.length > 0) {
-            this.getSelectionModel().removeSelectionPaths(paths);
-        }
+        this.getSelectionModel().removeSelectionPaths(paths); 
     }
 
     /**
--- a/src/share/classes/javax/swing/text/html/CSS.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/javax/swing/text/html/CSS.java	Fri Jan 30 16:19:09 2009 -0800
@@ -185,39 +185,21 @@
 	public static final Attribute BORDER_BOTTOM =
 	    new Attribute("border-bottom", null, false);
 
-        public static final Attribute BORDER_BOTTOM_COLOR =
-            new Attribute("border-bottom-color", null, false);
-
-        public static final Attribute BORDER_BOTTOM_STYLE =
-            new Attribute("border-bottom-style", "none", false);
-
 	public static final Attribute BORDER_BOTTOM_WIDTH =
 	    new Attribute("border-bottom-width", "medium", false);
 
 	public static final Attribute BORDER_COLOR =
-            new Attribute("border-color", null, false);
+	    new Attribute("border-color", "black", false);
 
 	public static final Attribute BORDER_LEFT =
 	    new Attribute("border-left", null, false);
 
-        public static final Attribute BORDER_LEFT_COLOR =
-            new Attribute("border-left-color", null, false);
-
-        public static final Attribute BORDER_LEFT_STYLE =
-            new Attribute("border-left-style", "none", false);
-
 	public static final Attribute BORDER_LEFT_WIDTH =
 	    new Attribute("border-left-width", "medium", false);
 
 	public static final Attribute BORDER_RIGHT =
 	    new Attribute("border-right", null, false);
 
-        public static final Attribute BORDER_RIGHT_COLOR =
-            new Attribute("border-right-color", null, false);
-
-        public static final Attribute BORDER_RIGHT_STYLE =
-            new Attribute("border-right-style", "none", false);
-
 	public static final Attribute BORDER_RIGHT_WIDTH =
 	    new Attribute("border-right-width", "medium", false);
 
@@ -227,12 +209,6 @@
 	public static final Attribute BORDER_TOP =
 	    new Attribute("border-top", null, false);
 
-        public static final Attribute BORDER_TOP_COLOR =
-            new Attribute("border-top-color", null, false);
-
-        public static final Attribute BORDER_TOP_STYLE =
-            new Attribute("border-top-style", "none", false);
-
 	public static final Attribute BORDER_TOP_WIDTH =
 	    new Attribute("border-top-width", "medium", false);
 
@@ -379,10 +355,6 @@
 	    BORDER, BORDER_BOTTOM, BORDER_BOTTOM_WIDTH, BORDER_COLOR,
 	    BORDER_LEFT, BORDER_LEFT_WIDTH, BORDER_RIGHT, BORDER_RIGHT_WIDTH,
 	    BORDER_STYLE, BORDER_TOP, BORDER_TOP_WIDTH, BORDER_WIDTH,
-            BORDER_TOP_STYLE, BORDER_RIGHT_STYLE, BORDER_BOTTOM_STYLE,
-            BORDER_LEFT_STYLE,
-            BORDER_TOP_COLOR, BORDER_RIGHT_COLOR, BORDER_BOTTOM_COLOR,
-            BORDER_LEFT_COLOR,
 	    CLEAR, COLOR, DISPLAY, FLOAT, FONT, FONT_FAMILY, FONT_SIZE,
 	    FONT_STYLE, FONT_VARIANT, FONT_WEIGHT, HEIGHT, LETTER_SPACING,
 	    LINE_HEIGHT, LIST_STYLE, LIST_STYLE_IMAGE, LIST_STYLE_POSITION,
@@ -401,12 +373,6 @@
 	private static final Attribute[] ALL_BORDER_WIDTHS =
 	        { BORDER_TOP_WIDTH, BORDER_RIGHT_WIDTH, BORDER_BOTTOM_WIDTH,
 		  BORDER_LEFT_WIDTH };
-        private static final Attribute[] ALL_BORDER_STYLES =
-                { BORDER_TOP_STYLE, BORDER_RIGHT_STYLE, BORDER_BOTTOM_STYLE,
-                  BORDER_LEFT_STYLE };
-        private static final Attribute[] ALL_BORDER_COLORS =
-                { BORDER_TOP_COLOR, BORDER_RIGHT_COLOR, BORDER_BOTTOM_COLOR,
-                  BORDER_LEFT_COLOR };
 
     }
 
@@ -427,7 +393,6 @@
 
 	static final Value INHERITED = new Value("inherited");
 	static final Value NONE = new Value("none");
-        static final Value HIDDEN = new Value("hidden");
 	static final Value DOTTED = new Value("dotted");
 	static final Value DASHED = new Value("dashed");
 	static final Value SOLID = new Value("solid");
@@ -437,6 +402,7 @@
 	static final Value INSET = new Value("inset");
 	static final Value OUTSET = new Value("outset");
 	// Lists.
+	static final Value BLANK_LIST_ITEM = new Value("none");
 	static final Value DISC = new Value("disc");
 	static final Value CIRCLE = new Value("circle");
 	static final Value SQUARE = new Value("square");
@@ -460,7 +426,7 @@
 	    INHERITED, NONE, DOTTED, DASHED, SOLID, DOUBLE, GROOVE,
 	    RIDGE, INSET, OUTSET, DISC, CIRCLE, SQUARE, DECIMAL,
 	    LOWER_ROMAN, UPPER_ROMAN, LOWER_ALPHA, UPPER_ALPHA,
-            BACKGROUND_NO_REPEAT, BACKGROUND_REPEAT,
+	    BLANK_LIST_ITEM, BACKGROUND_NO_REPEAT, BACKGROUND_REPEAT,
 	    BACKGROUND_REPEAT_X, BACKGROUND_REPEAT_Y,
 	    BACKGROUND_FIXED, BACKGROUND_FIXED
 	};
@@ -473,18 +439,11 @@
 	valueConvertor.put(CSS.Attribute.FONT_SIZE, new FontSize());
 	valueConvertor.put(CSS.Attribute.FONT_FAMILY, new FontFamily());
 	valueConvertor.put(CSS.Attribute.FONT_WEIGHT, new FontWeight());
-        Object bs = new BorderStyle();
-        valueConvertor.put(CSS.Attribute.BORDER_TOP_STYLE, bs);
-        valueConvertor.put(CSS.Attribute.BORDER_RIGHT_STYLE, bs);
-        valueConvertor.put(CSS.Attribute.BORDER_BOTTOM_STYLE, bs);
-        valueConvertor.put(CSS.Attribute.BORDER_LEFT_STYLE, bs);
+	valueConvertor.put(CSS.Attribute.BORDER_STYLE, new BorderStyle());
 	Object cv = new ColorValue();
 	valueConvertor.put(CSS.Attribute.COLOR, cv);
 	valueConvertor.put(CSS.Attribute.BACKGROUND_COLOR, cv);
-        valueConvertor.put(CSS.Attribute.BORDER_TOP_COLOR, cv);
-        valueConvertor.put(CSS.Attribute.BORDER_RIGHT_COLOR, cv);
-        valueConvertor.put(CSS.Attribute.BORDER_BOTTOM_COLOR, cv);
-        valueConvertor.put(CSS.Attribute.BORDER_LEFT_COLOR, cv);
+	valueConvertor.put(CSS.Attribute.BORDER_COLOR, cv);
 	Object lv = new LengthValue();
 	valueConvertor.put(CSS.Attribute.MARGIN_TOP, lv);
 	valueConvertor.put(CSS.Attribute.MARGIN_BOTTOM, lv);
@@ -499,6 +458,7 @@
 	valueConvertor.put(CSS.Attribute.PADDING_LEFT, lv);
 	valueConvertor.put(CSS.Attribute.PADDING_RIGHT, lv);
 	Object bv = new BorderWidthValue(null, 0);
+	valueConvertor.put(CSS.Attribute.BORDER_WIDTH, lv);
 	valueConvertor.put(CSS.Attribute.BORDER_TOP_WIDTH, bv);
 	valueConvertor.put(CSS.Attribute.BORDER_BOTTOM_WIDTH, bv);
 	valueConvertor.put(CSS.Attribute.BORDER_LEFT_WIDTH, bv);
@@ -599,21 +559,6 @@
 	    ShorthandMarginParser.parseShorthandMargin(this, value, attr,
 					   CSS.Attribute.ALL_BORDER_WIDTHS);
 	}
-        else if (key == CSS.Attribute.BORDER_COLOR) {
-            ShorthandMarginParser.parseShorthandMargin(this, value, attr,
-                                            CSS.Attribute.ALL_BORDER_COLORS);
-        }
-        else if (key == CSS.Attribute.BORDER_STYLE) {
-            ShorthandMarginParser.parseShorthandMargin(this, value, attr,
-                                            CSS.Attribute.ALL_BORDER_STYLES);
-        }
-        else if ((key == CSS.Attribute.BORDER) ||
-                   (key == CSS.Attribute.BORDER_TOP) ||
-                   (key == CSS.Attribute.BORDER_RIGHT) ||
-                   (key == CSS.Attribute.BORDER_BOTTOM) ||
-                   (key == CSS.Attribute.BORDER_LEFT)) {
-            ShorthandBorderParser.parseShorthandBorder(attr, key, value);
-        }
 	else {
 	    Object iValue = getInternalCSSValue(key, value);
 	    if (iValue != null) {
@@ -795,19 +740,10 @@
 	Element elem = (Element)htmlAttrSet;
 	HTML.Tag tag = getHTMLTag(htmlAttrSet);
 	if ((tag == HTML.Tag.TD) || (tag == HTML.Tag.TH)) {
-            // translate border width into the cells, if it has non-zero value.
+	    // translate border width into the cells
 	    AttributeSet tableAttr = elem.getParentElement().
 		                     getParentElement().getAttributes();
-            int borderWidth;
-            try {
-                borderWidth = Integer.parseInt(
-                    (String) tableAttr.getAttribute(HTML.Attribute.BORDER));
-            } catch (NumberFormatException e) {
-                borderWidth = 0;
-            }
-            if (borderWidth > 0) {
-                translateAttribute(HTML.Attribute.BORDER, tableAttr, cssAttrSet);
-            }
+	    translateAttribute(HTML.Attribute.BORDER, tableAttr, cssAttrSet);
 	    String pad = (String)tableAttr.getAttribute(HTML.Attribute.CELLPADDING);
 	    if (pad != null) {
 		LengthValue v = 
@@ -1162,9 +1098,6 @@
     static Color stringToColor(String str) {
       Color color = null;
 
-      if (str == null) {
-          return null;
-      }
       if (str.length() == 0)
         color = Color.black;
       else if (str.startsWith("rgb(")) {
@@ -1204,8 +1137,6 @@
         color = hexToColor("#008080");
       else if(str.equalsIgnoreCase("Aqua"))
         color = hexToColor("#00FFFF");
-      else if(str.equalsIgnoreCase("Orange"))
-        color = hexToColor("#FF8000");
       else
 	  color = hexToColor(str); // sometimes get specified without leading #
       return color;
@@ -3027,53 +2958,6 @@
 	}
     }
 
-    static class ShorthandBorderParser {
-        static Attribute[] keys = {
-            Attribute.BORDER_TOP, Attribute.BORDER_RIGHT,
-            Attribute.BORDER_BOTTOM, Attribute.BORDER_LEFT,
-        };
-
-        static void parseShorthandBorder(MutableAttributeSet attributes,
-                                            CSS.Attribute key, String value) {            
-            Object[] parts = new Object[CSSBorder.PARSERS.length];
-            String[] strings = parseStrings(value);
-            for (String s : strings) {
-                boolean valid = false;
-                for (int i = 0; i < parts.length; i++) {
-                    Object v = CSSBorder.PARSERS[i].parseCssValue(s);
-                    if (v != null) {
-                        if (parts[i] == null) {
-                            parts[i] = v;
-                            valid = true;
-                        }
-                        break;
-                    }
-                }
-                if (!valid) {
-                    // Part is non-parseable or occured more than once.
-                    return;
-                }
-            }
-
-            // Unspecified parts get default values.
-            for (int i = 0; i < parts.length; i++) {
-                if (parts[i] == null) {
-                    parts[i] = CSSBorder.DEFAULTS[i];
-                }
-            }
-
-            // Dispatch collected values to individual properties.
-            for (int i = 0; i < keys.length; i++) {
-                if ((key == Attribute.BORDER) || (key == keys[i])) {
-                    for (int k = 0; k < parts.length; k++) {
-                        attributes.addAttribute(
-                                        CSSBorder.ATTRIBUTES[k][i], parts[k]);
-                    }
-                }
-            }
-        }
-    }
-    
     /**
      * Calculate the requirements needed to tile the requirements 
      * given by the iterator that would be tiled.  The calculation
--- a/src/share/classes/javax/swing/text/html/StyleSheet.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/javax/swing/text/html/StyleSheet.java	Fri Jan 30 16:19:09 2009 -0800
@@ -1787,7 +1787,25 @@
 	 * moment.
 	 */
 	Border getBorder(AttributeSet a) {
-            return new CSSBorder(a);
+	    Border b = noBorder;
+	    Object o = a.getAttribute(CSS.Attribute.BORDER_STYLE);
+	    if (o != null) {
+		String bstyle = o.toString();
+		int bw = (int) getLength(CSS.Attribute.BORDER_TOP_WIDTH, a);
+		if (bw > 0) {
+		    if (bstyle.equals("inset")) {
+			Color c = getBorderColor(a);
+			b = new BevelBorder(BevelBorder.LOWERED, c.brighter(), c.darker());
+		    } else if (bstyle.equals("outset")) {
+			Color c = getBorderColor(a);
+			b = new BevelBorder(BevelBorder.RAISED, c.brighter(), c.darker());
+		    } else if (bstyle.equals("solid")) {
+			Color c = getBorderColor(a);
+                        b = new LineBorder(c, bw);
+		    }
+		}
+	    }
+	    return b;
 	}
 
 	/**
--- a/src/share/classes/javax/swing/text/html/default.css	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/javax/swing/text/html/default.css	Fri Jan 30 16:19:09 2009 -0800
@@ -211,8 +211,8 @@
      font-style: italic}
 
 table {
-        border-style: outset;
-        border-width: 0;
+	border-color: Gray;
+	border-style: outset
 }
 
 tr {
@@ -220,7 +220,7 @@
 }
 
 td {
-        border-width: 0;
+	border-color: Gray;
 	border-style: inset;
 	padding-left: 3;
 	padding-right: 3;
@@ -231,7 +231,7 @@
 th {
 	text-align: center;
 	font-weight: bold;
-        border-width: 0;
+	border-color: Gray;
 	border-style: inset;
 	padding-left: 3;
 	padding-right: 3;
--- a/src/share/classes/javax/swing/tree/DefaultTreeCellRenderer.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/javax/swing/tree/DefaultTreeCellRenderer.java	Fri Jan 30 16:19:09 2009 -0800
@@ -28,7 +28,6 @@
 import javax.swing.*;
 import javax.swing.plaf.ColorUIResource;
 import javax.swing.plaf.FontUIResource;
-import javax.swing.plaf.UIResource;
 import javax.swing.plaf.basic.BasicGraphicsUtils;
 import java.awt.*;
 import java.awt.event.*;
@@ -45,28 +44,7 @@
  * in <em>The Java Tutorial</em>
  * for examples of customizing node display using this class.
  * <p>                                                                        
- * The set of icons and colors used by {@code DefaultTreeCellRenderer}
- * can be configured using the various setter methods. The value for
- * each property is initialized from the defaults table. When the
- * look and feel changes ({@code updateUI} is invoked), any properties
- * that have a value of type {@code UIResource} are refreshed from the
- * defaults table. The following table lists the mapping between
- * {@code DefaultTreeCellRenderer} property and defaults table key:
- * <table border="1" cellpadding="1" cellspacing="0" 
- *         valign="top" >
- *   <tr valign="top"  align="left">
- *     <th bgcolor="#CCCCFF" align="left">Property:
- *     <th bgcolor="#CCCCFF" align="left">Key:
- *   <tr><td>"leafIcon"<td>"Tree.leafIcon"
- *   <tr><td>"closedIcon"<td>"Tree.closedIcon"
- *   <tr><td>"openIcon"<td>"Tree.openIcon"
- *   <tr><td>"textSelectionColor"<td>"Tree.selectionForeground"
- *   <tr><td>"textNonSelectionColor"<td>"Tree.textForeground"
- *   <tr><td>"backgroundSelectionColor"<td>"Tree.selectionBackground"
- *   <tr><td>"backgroundNonSelectionColor"<td>"Tree.textBackground"
- *   <tr><td>"borderSelectionColor"<td>"Tree.selectionBorderColor"
- * </table>
- * <p>
+ *
  * <strong><a name="override">Implementation Note:</a></strong>
  * This class overrides
  * <code>invalidate</code>,
@@ -151,62 +129,21 @@
     private boolean isDropCell;
 
     /**
-     * Set to true after the constructor has run.
-     */
-    private boolean inited;
-
-    /**
-     * Creates a {@code DefaultTreeCellRenderer}. Icons and text color are
-     * determined from the {@code UIManager}.
+     * Returns a new instance of DefaultTreeCellRenderer.  Alignment is
+     * set to left aligned. Icons and text color are determined from the
+     * UIManager.
      */
     public DefaultTreeCellRenderer() {
-        inited = true;
-    }
+
+        setLeafIcon(UIManager.getIcon("Tree.leafIcon"));
+        setClosedIcon(UIManager.getIcon("Tree.closedIcon"));
+        setOpenIcon(UIManager.getIcon("Tree.openIcon"));
 
-    /**
-     * {@inheritDoc}
-     *
-     * @since 1.7
-     */
-    public void updateUI() {
-        super.updateUI();
-        // To avoid invoking new methods from the constructor, the
-        // inited field is first checked. If inited is false, the constructor
-        // has not run and there is no point in checking the value. As
-        // all look and feels have a non-null value for these properties,
-        // a null value means the developer has specifically set it to
-        // null. As such, if the value is null, this does not reset the
-        // value.
-        if (!inited || (getLeafIcon() instanceof UIResource)) {
-            setLeafIcon(UIManager.getIcon("Tree.leafIcon"));
-        }
-        if (!inited || (getClosedIcon() instanceof UIResource)) {
-            setClosedIcon(UIManager.getIcon("Tree.closedIcon"));
-        }
-        if (!inited || (getOpenIcon() instanceof UIManager)) {
-            setOpenIcon(UIManager.getIcon("Tree.openIcon"));
-        }
-        if (!inited || (getTextSelectionColor() instanceof UIResource)) {
-            setTextSelectionColor(
-                    UIManager.getColor("Tree.selectionForeground"));
-        }
-        if (!inited || (getTextNonSelectionColor() instanceof UIResource)) {
-            setTextNonSelectionColor(
-                UIManager.getColor("Tree.textForeground"));
-        }
-        if (!inited || (getBackgroundSelectionColor() instanceof UIResource)) {
-            setBackgroundSelectionColor(
-                UIManager.getColor("Tree.selectionBackground"));
-        }
-        if (!inited || 
-                (getBackgroundNonSelectionColor() instanceof UIResource)) {
-            setBackgroundNonSelectionColor(
-                    UIManager.getColor("Tree.textBackground"));
-        }
-        if (!inited || (getBorderSelectionColor() instanceof UIResource)) {
-            setBorderSelectionColor(
-                UIManager.getColor("Tree.selectionBorderColor"));
-        }
+        setTextSelectionColor(UIManager.getColor("Tree.selectionForeground"));
+        setTextNonSelectionColor(UIManager.getColor("Tree.textForeground"));
+        setBackgroundSelectionColor(UIManager.getColor("Tree.selectionBackground"));
+        setBackgroundNonSelectionColor(UIManager.getColor("Tree.textBackground"));
+        setBorderSelectionColor(UIManager.getColor("Tree.selectionBorderColor"));
 	Object value = UIManager.get("Tree.drawsFocusBorderAroundIcon");
 	drawsFocusBorderAroundIcon = (value != null && ((Boolean)value).
 				      booleanValue());
--- a/src/share/classes/javax/swing/tree/DefaultTreeSelectionModel.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/javax/swing/tree/DefaultTreeSelectionModel.java	Fri Jan 30 16:19:09 2009 -0800
@@ -27,12 +27,10 @@
 
 import java.beans.PropertyChangeListener;
 import java.io.*;
-import java.util.ArrayList;
 import java.util.BitSet;
 import java.util.Enumeration;
 import java.util.EventListener;
 import java.util.Hashtable;
-import java.util.List;
 import java.util.Vector;
 import javax.swing.event.*;
 import javax.swing.DefaultListSelectionModel;
@@ -48,6 +46,8 @@
  * filter what is allowed to be selected, be sure and message
  * <code>resetRowSelection</code> if you do not message super.
  * 
+ * <p>
+ * 
  * <strong>Warning:</strong>
  * Serialized objects of this class will not be compatible with
  * future Swing releases. The current serialization support is
@@ -190,28 +190,19 @@
     }
 
     /**
-     * Sets the selection. Whether the supplied paths are taken as the
-     * new selection depends upon the selection mode. If the supplied
-     * array is {@code null}, or empty, the selection is cleared. If
-     * the selection mode is {@code SINGLE_TREE_SELECTION}, only the
-     * first path in {@code pPaths} is used. If the selection
-     * mode is {@code CONTIGUOUS_TREE_SELECTION} and the supplied paths
-     * are not contiguous, then only the first path in {@code pPaths} is
-     * used. If the selection mode is
-     * {@code DISCONTIGUOUS_TREE_SELECTION}, then all paths are used.
-     * <p>
-     * All {@code null} paths in {@code pPaths} are ignored.
-     * <p>
-     * If this represents a change, all registered {@code
-     * TreeSelectionListener}s are notified.
-     * <p>
-     * The lead path is set to the last unique path.
-     * <p>
-     * The paths returned from {@code getSelectionPaths} are in the same
-     * order as those supplied to this method.
-     *
-     * @param pPaths the new selection
-     */
+      * Sets the selection to the paths in paths.  If this represents a
+      * change the TreeSelectionListeners are notified.  Potentially
+      * paths will be held by this object; in other words don't change
+      * any of the objects in the array once passed in.
+      * <p>If <code>paths</code> is
+      * null, this has the same effect as invoking <code>clearSelection</code>.
+      * <p>The lead path is set to the last path in <code>pPaths</code>.
+      * <p>If the selection mode is <code>CONTIGUOUS_TREE_SELECTION</code>,
+      * and adding the new paths would make the selection discontiguous,
+      * the selection is reset to the first TreePath in <code>paths</code>.
+      *
+      * @param pPaths new selection
+      */
     public void setSelectionPaths(TreePath[] pPaths) {
 	int            newCount, newCounter, oldCount, oldCounter;
 	TreePath[]     paths = pPaths;
@@ -245,28 +236,47 @@
 		}
 	    }
 
+            int              validCount = 0;
 	    TreePath         beginLeadPath = leadPath;
 	    Vector           cPaths = new Vector(newCount + oldCount);
-            List<TreePath> newSelectionAsList = 
-                    new ArrayList<TreePath>(newCount);
 
 	    lastPaths.clear();
 	    leadPath = null;
 	    /* Find the paths that are new. */
 	    for(newCounter = 0; newCounter < newCount; newCounter++) {
-                TreePath path = paths[newCounter];
-                if (path != null && lastPaths.get(path) == null) {
-                    lastPaths.put(path, Boolean.TRUE);
-                    if (uniquePaths.get(path) == null) {
-                        cPaths.addElement(new PathPlaceHolder(path, true));
+                if(paths[newCounter] != null &&
+                   lastPaths.get(paths[newCounter]) == null) {
+                    validCount++;
+                    lastPaths.put(paths[newCounter], Boolean.TRUE);
+                    if (uniquePaths.get(paths[newCounter]) == null) {
+                        cPaths.addElement(new PathPlaceHolder
+                                          (paths[newCounter], true));
 		    }
-                    leadPath = path;
-                    newSelectionAsList.add(path);
+                    leadPath = paths[newCounter];
 		}
 	    }
 
-            TreePath[] newSelection = newSelectionAsList.toArray(
-                    new TreePath[newSelectionAsList.size()]);
+            /* If the validCount isn't equal to newCount it means there
+               are some null in paths, remove them and set selection to
+               the new path. */
+            TreePath[]     newSelection;
+
+            if(validCount == 0) {
+                newSelection = null;
+            }
+            else if (validCount != newCount) {
+                Enumeration keys = lastPaths.keys();
+
+                newSelection = new TreePath[validCount];
+                validCount = 0;
+                while (keys.hasMoreElements()) {
+                    newSelection[validCount++] = (TreePath)keys.nextElement();
+                }
+            }
+            else {
+                newSelection = new TreePath[paths.length];
+                System.arraycopy(paths, 0, newSelection, 0, paths.length);
+            }
 
 	    /* Get the paths that were selected but no longer selected. */
 	    for(oldCounter = 0; oldCounter < oldCount; oldCounter++)
@@ -284,7 +294,8 @@
 	    lastPaths.clear();
 
 	    // No reason to do this now, but will still call it.
-            insureUniqueness();
+            if(selection != null)
+                insureUniqueness();
 
 	    updateLeadIndex();
 
@@ -512,16 +523,14 @@
       * if only one item currently selected.
       */
     public TreePath getSelectionPath() {
-        if (selection != null && selection.length > 0) {
+        if(selection != null)
             return selection[0];
-        }
 	return null;
     }
 
     /**
-      * Returns the selection.
-      *
-      * @return the selection
+      * Returns the paths in the selection. This will return null (or an
+      * empty array) if nothing is currently selected.
       */
     public TreePath[] getSelectionPaths() {
 	if(selection != null) {
@@ -531,7 +540,7 @@
 	    System.arraycopy(selection, 0, result, 0, pathSize);
 	    return result;
 	}
-        return new TreePath[0];
+        return null;
     }
 
     /**
@@ -553,7 +562,7 @@
       * Returns true if the selection is currently empty.
       */
     public boolean isSelectionEmpty() {
-        return (selection == null || selection.length == 0);
+        return (selection == null);
     }
 
     /**
@@ -561,7 +570,7 @@
       * current selection, the selection listeners are notified.
       */
     public void clearSelection() {
-        if (selection != null && selection.length > 0) {
+        if(selection != null) {
 	    int                    selSize = selection.length;
 	    boolean[]              newness = new boolean[selSize];
 
@@ -682,23 +691,17 @@
     }
 
     /**
-     * Returns the selection in terms of rows. There is not
-     * necessarily a one-to-one mapping between the {@code TreePath}s
-     * returned from {@code getSelectionPaths} and this method. In
-     * particular, if a {@code TreePath} is not viewable (the {@code
-     * RowMapper} returns {@code -1} for the row corresponding to the
-     * {@code TreePath}), then the corresponding row is not included
-     * in the returned array. For example, if the selection consists
-     * of two paths, {@code A} and {@code B}, with {@code A} at row
-     * {@code 10}, and {@code B} not currently viewable, then this method
-     * returns an array with the single entry {@code 10}.
-     *
-     * @return the selection in terms of rows
-     */
+      * Returns all of the currently selected rows. This will return
+      * null (or an empty array) if there are no selected TreePaths or
+      * a RowMapper has not been set.
+      * This may return an array of length less that than of the selected
+      * TreePaths if some of the rows are not visible (that is the
+      * RowMapper returned -1 for the row corresponding to the TreePath).
+      */
     public int[] getSelectionRows() {
 	// This is currently rather expensive.  Needs
 	// to be better support from ListSelectionModel to speed this up.
-        if (rowMapper != null && selection != null && selection.length > 0) {
+        if(rowMapper != null && selection != null) {
 	    int[]      rows = rowMapper.getRowsForPaths(selection);
 
 	    if (rows != null) {
@@ -728,7 +731,7 @@
 	    }
 	    return rows;
 	}
-        return new int[0];
+        return null;
     }
 
     /**
--- a/src/share/classes/sun/io/ConversionBufferFullException.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/sun/io/ConversionBufferFullException.java	Fri Jan 30 16:19:09 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1996-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1996-2007 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -39,6 +39,8 @@
 public class ConversionBufferFullException
     extends java.io.CharConversionException
 {
+    private static final long serialVersionUID = -6537318994265003622L;
+
     /**
      * Constructs a BufferFullException with no detail message.
      * A detail message is a String that describes this particular exception.
--- a/src/share/classes/sun/io/MalformedInputException.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/sun/io/MalformedInputException.java	Fri Jan 30 16:19:09 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1996-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1996-2007 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -39,6 +39,8 @@
 public class MalformedInputException
     extends java.io.CharConversionException
 {
+    private static final long serialVersionUID = 2585413228493157652L;
+
     /**
      * Constructs a MalformedInputException with no detail message.
      * A detail message is a String that describes this particular exception.
--- a/src/share/classes/sun/io/UnknownCharacterException.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/sun/io/UnknownCharacterException.java	Fri Jan 30 16:19:09 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1996-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1996-2007 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -39,6 +39,8 @@
 public class UnknownCharacterException
     extends java.io.CharConversionException
 {
+    private static final long serialVersionUID = -8563196502398436986L;
+
     /**
      * Constructs a UnknownCharacterException with no detail message.
      * A detail message is a String that describes this particular exception.
--- a/src/share/classes/sun/java2d/pipe/ShapeSpanIterator.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/sun/java2d/pipe/ShapeSpanIterator.java	Fri Jan 30 16:19:09 2009 -0800
@@ -68,8 +68,6 @@
     long pData;
 
     static {
-        java.security.AccessController.doPrivileged(
-              new sun.security.action.LoadLibraryAction("dcpr"));
 	initIDs();
     }
 
--- a/src/share/classes/sun/java2d/pisces/Dasher.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/sun/java2d/pisces/Dasher.java	Fri Jan 30 16:19:09 2009 -0800
@@ -114,27 +114,27 @@
      */
     public void setParameters(int[] dash, int phase,
                               Transform4 transform) {
-        if (phase < 0) {
-            throw new IllegalArgumentException("phase < 0 !");
-        }
+	if (phase < 0) {
+	    throw new IllegalArgumentException("phase < 0 !");
+	}
 
-        // Normalize so 0 <= phase < dash[0]
-        int idx = 0;
+	// Normalize so 0 <= phase < dash[0]
+	int idx = 0;
         dashOn = false;
-        int d;
-        while (phase >= (d = dash[idx])) {
-            phase -= d;
-            idx = (idx + 1) % dash.length;
+	int d;
+	while (phase >= (d = dash[idx])) {
+	    phase -= d;
+	    idx = (idx + 1) % dash.length;
             dashOn = !dashOn;
-        }
+	}
 
-        this.dash = new int[dash.length];
-        for (int i = 0; i < dash.length; i++) {
-            this.dash[i] = dash[i];
-        }
-        this.startPhase = this.phase = phase;
+	this.dash = new int[dash.length];
+	for (int i = 0; i < dash.length; i++) {
+	    this.dash[i] = dash[i];
+	}
+	this.startPhase = this.phase = phase;
         this.startDashOn = dashOn;
-        this.startIdx = idx;
+	this.startIdx = idx;
 
         this.transform = transform;
 
@@ -147,12 +147,12 @@
     }
 
     public void moveTo(int x0, int y0) {
-        output.moveTo(x0, y0);
-        this.idx = startIdx;
+ 	output.moveTo(x0, y0);
+	this.idx = startIdx;
         this.dashOn = this.startDashOn;
-        this.phase = this.startPhase;
-        this.sx = this.x0 = x0;
-        this.sy = this.y0 = y0;
+	this.phase = this.startPhase;
+	this.sx = this.x0 = x0;
+	this.sy = this.y0 = y0;
         this.starting = true;
     }
 
@@ -161,30 +161,30 @@
     }
 
     private void goTo(int x1, int y1) {
-        if (dashOn) {
+	if (dashOn) {
             if (starting) {
                 this.sx1 = x1;
                 this.sy1 = y1;
                 firstDashOn = true;
                 starting = false;
             }
-            output.lineTo(x1, y1);
-        } else {
+	    output.lineTo(x1, y1);
+	} else {
             if (starting) {
                 firstDashOn = false;
                 starting = false;
             }
-            output.moveTo(x1, y1);
-        }
-        this.x0 = x1;
-        this.y0 = y1;
+	    output.moveTo(x1, y1);
+	}
+	this.x0 = x1;
+	this.y0 = y1;
     }
 
     public void lineTo(int x1, int y1) {
-        while (true) {
-            int d = dash[idx] - phase;
-            int lx = x1 - x0;
-            int ly = y1 - y0;
+	while (true) {
+	    int d = dash[idx] - phase;
+	    int lx = x1 - x0;
+	    int ly = y1 - y0;
 
             // Compute segment length in the untransformed
             // coordinate system
@@ -198,14 +198,14 @@
                 long lb = ((long)ly*m01 - (long)lx*m11)/ldet;
                 l = (int)PiscesMath.hypot(la, lb);
             }
-
-            if (l < d) {
-                goTo(x1, y1);
-                // Advance phase within current dash segment
-                phase += l;
-                return;
-            }
-
+	    
+	    if (l < d) {
+		goTo(x1, y1);
+		// Advance phase within current dash segment
+		phase += l;
+		return;
+	    }
+	    
             long t;
             int xsplit, ysplit;
 //             // For zero length dashses, SE appears to move 1/8 unit
@@ -224,13 +224,13 @@
                 xsplit = x0 + (int)(t*(x1 - x0) >> 16);
                 ysplit = y0 + (int)(t*(y1 - y0) >> 16);
 //             }
-            goTo(xsplit, ysplit);
-
-            // Advance to next dash segment
-            idx = (idx + 1) % dash.length;
+	    goTo(xsplit, ysplit);
+	    
+	    // Advance to next dash segment
+	    idx = (idx + 1) % dash.length;
             dashOn = !dashOn;
-            phase = 0;
-        }
+	    phase = 0;
+	}
     }
 
     public void close() {
--- a/src/share/classes/sun/java2d/pisces/LineSink.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/sun/java2d/pisces/LineSink.java	Fri Jan 30 16:19:09 2009 -0800
@@ -91,3 +91,4 @@
     public abstract void end();
 
 }
+
--- a/src/share/classes/sun/java2d/pisces/PiscesMath.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/sun/java2d/pisces/PiscesMath.java	Fri Jan 30 16:19:09 2009 -0800
@@ -91,7 +91,7 @@
 
 //         System.Out.Println("Lx = " + Lx);
 //         System.Out.Println("Lsqrt = " + Lsqrt/65536.0);
-
+        
 //         Return Dsqrt;
 //     }
 
--- a/src/share/classes/sun/java2d/pisces/Renderer.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/sun/java2d/pisces/Renderer.java	Fri Jan 30 16:19:09 2009 -0800
@@ -28,7 +28,7 @@
 public class Renderer extends LineSink {
     public static final int WIND_EVEN_ODD = 0;
     public static final int WIND_NON_ZERO = 1;
-
+    
     // Initial edge list size
     // IMPL_NOTE - restore size after growth
     public static final int INITIAL_EDGES = 1000;
@@ -73,7 +73,7 @@
     private int windingRule;
 
     // Current drawing position, i.e., final point of last segment
-    private int x0, y0;
+    private int x0, y0; 
 
     // Position of most recent 'moveTo' command
     private int sx0, sy0;
@@ -127,24 +127,24 @@
     }
 
     public void setWindingRule(int windingRule) {
-        this.windingRule = windingRule;
+	this.windingRule = windingRule;
     }
 
     public int getWindingRule() {
-        return windingRule;
+	return windingRule;
     }
 
     public void beginRendering(int boundsX, int boundsY,
-                               int boundsWidth, int boundsHeight) {
+			       int boundsWidth, int boundsHeight) {
         lastOrientation = 0;
         flips = 0;
 
         resetEdges();
 
-        this.boundsMinX = boundsX << 16;
-        this.boundsMinY = boundsY << 16;
-        this.boundsMaxX = (boundsX + boundsWidth) << 16;
-        this.boundsMaxY = (boundsY + boundsHeight) << 16;
+	this.boundsMinX = boundsX << 16; 
+	this.boundsMinY = boundsY << 16;
+	this.boundsMaxX = (boundsX + boundsWidth) << 16;
+	this.boundsMaxY = (boundsY + boundsHeight) << 16;
 
         this.bboxX0 = boundsX;
         this.bboxY0 = boundsY;
@@ -155,8 +155,8 @@
     public void moveTo(int x0, int y0) {
         // System.out.println("Renderer: moveTo " + x0/65536.0 + " " + y0/65536.0);
         close();
-        this.sx0 = this.x0 = x0;
-        this.sy0 = this.y0 = y0;
+	this.sx0 = this.x0 = x0;
+	this.sy0 = this.y0 = y0;
         this.lastOrientation = 0;
     }
 
@@ -186,8 +186,8 @@
         // Bias Y by 1 ULP so endpoints never lie on a scanline
         addEdge(x0, y0 | 0x1, x1, y1 | 0x1);
 
-        this.x0 = x1;
-        this.y0 = y1;
+	this.x0 = x1;
+	this.y0 = y1;
     }
 
     public void close() {
@@ -200,7 +200,7 @@
         if (orientation != firstOrientation) {
             ++flips;
         }
-        lineTo(sx0, sy0);
+	lineTo(sx0, sy0);
     }
 
     public void end() {
@@ -215,12 +215,12 @@
         int iy0 = edges[index + 1];
         int iy1 = edges[index + 3];
 
-        // Clip to valid Y range
-        int clipy0 = (iy0 > boundsMinY) ? iy0 : boundsMinY;
-        int clipy1 = (iy1 < boundsMaxY) ? iy1 : boundsMaxY;
+  	// Clip to valid Y range
+  	int clipy0 = (iy0 > boundsMinY) ? iy0 : boundsMinY;
+  	int clipy1 = (iy1 < boundsMaxY) ? iy1 : boundsMaxY;
 
-        int minY = ((clipy0 + HYSTEP) & YMASK) + HYSTEP;
-        int maxY = ((clipy1 - HYSTEP) & YMASK) + HYSTEP;
+	int minY = ((clipy0 + HYSTEP) & YMASK) + HYSTEP;
+	int maxY = ((clipy1 - HYSTEP) & YMASK) + HYSTEP;
 
         // IMPL_NOTE - If line falls outside the valid X range, could
         // draw a vertical line instead
@@ -240,7 +240,7 @@
         // Compute first crossing point at y = minY
         int orientation = edges[index + 4];
         int y = minY;
-        long lx = (((long) y) - iy0)*dx/dy + ix0;
+  	long lx = (((long) y) - iy0)*dx/dy + ix0;
         addCrossing(y >> YSHIFT, (int)(lx >> XSHIFT), orientation);
 
         // Advance y to next scanline, exit if past endpoint
@@ -252,11 +252,11 @@
         // Compute xstep only if additional scanlines are crossed
         // For each scanline, add xstep to lx and YSTEP to y and
         // emit the new crossing
-        long xstep = ((long)YSTEP*dx)/dy;
-        for (; y <= maxY; y += YSTEP) {
-            lx += xstep;
-            addCrossing(y >> YSHIFT, (int)(lx >> XSHIFT), orientation);
-        }
+    	long xstep = ((long)YSTEP*dx)/dy;
+	for (; y <= maxY; y += YSTEP) {
+   	    lx += xstep;
+	    addCrossing(y >> YSHIFT, (int)(lx >> XSHIFT), orientation);
+	}
     }
 
     private void computeBounds() {
@@ -264,30 +264,30 @@
         rasterMaxX = crossingMaxX | SUBPIXEL_MASK_X;
         rasterMinY = crossingMinY & ~SUBPIXEL_MASK_Y;
         rasterMaxY = crossingMaxY | SUBPIXEL_MASK_Y;
-
-        // If nothing was drawn, we have:
-        // minX = Integer.MAX_VALUE and maxX = Integer.MIN_VALUE
-        // so nothing to render
-        if (rasterMinX > rasterMaxX || rasterMinY > rasterMaxY) {
-            rasterMinX = 0;
-            rasterMaxX = -1;
-            rasterMinY = 0;
-            rasterMaxY = -1;
-            return;
-        }
+        
+	// If nothing was drawn, we have:
+	// minX = Integer.MAX_VALUE and maxX = Integer.MIN_VALUE
+	// so nothing to render
+	if (rasterMinX > rasterMaxX || rasterMinY > rasterMaxY) {
+	    rasterMinX = 0;
+	    rasterMaxX = -1;
+	    rasterMinY = 0;
+	    rasterMaxY = -1;
+	    return;
+	}
 
-        if (rasterMinX < boundsMinX >> XSHIFT) {
-            rasterMinX = boundsMinX >> XSHIFT;
-        }
-        if (rasterMinY < boundsMinY >> YSHIFT) {
-            rasterMinY = boundsMinY >> YSHIFT;
-        }
-        if (rasterMaxX > boundsMaxX >> XSHIFT) {
-            rasterMaxX = boundsMaxX >> XSHIFT;
-        }
-        if (rasterMaxY > boundsMaxY >> YSHIFT) {
-            rasterMaxY = boundsMaxY >> YSHIFT;
-        }
+	if (rasterMinX < boundsMinX >> XSHIFT) {
+	    rasterMinX = boundsMinX >> XSHIFT;
+	}
+	if (rasterMinY < boundsMinY >> YSHIFT) {
+	    rasterMinY = boundsMinY >> YSHIFT;
+	}
+	if (rasterMaxX > boundsMaxX >> XSHIFT) {
+	    rasterMaxX = boundsMaxX >> XSHIFT;
+	}
+	if (rasterMaxY > boundsMaxY >> YSHIFT) {
+	    rasterMaxY = boundsMaxY >> YSHIFT;
+	}
     }
 
     private int clamp(int x, int min, int max) {
@@ -323,7 +323,7 @@
             int y0 = edges[1] >> YSHIFT;
             int x1 = edges[5] >> XSHIFT;
             int y1 = edges[3] >> YSHIFT;
-
+            
             if (x0 > x1) {
                 int tmp = x0;
                 x0 = x1;
@@ -382,7 +382,7 @@
         int imaxY = (maxY >> YSHIFT) | SUBPIXEL_MASK_Y;
         int yextent = (imaxY - iminY) + 1;
 
-        // Maximum number of crossings
+        // Maximum number of crossings 
         int size = flips*yextent;
 
         int bmax = (boundsMaxY >> YSHIFT) - 1;
@@ -493,32 +493,32 @@
         // Allocate one extra entry in rowAA to avoid a conditional in
         // the rendering loop
         int bufLen = width + 1;
-        if (this.rowAA == null || this.rowAA.length < bufLen) {
+	if (this.rowAA == null || this.rowAA.length < bufLen) {
             this.rowAA = new byte[bufLen];
-        }
+	}
 
-        // Mask to determine the relevant bit of the crossing sum
-        // 0x1 if EVEN_ODD, all bits if NON_ZERO
-        int mask = (windingRule == WIND_EVEN_ODD) ? 0x1 : ~0x0;
-
-        int y = 0;
-        int prevY = rasterMinY - 1;
+	// Mask to determine the relevant bit of the crossing sum
+	// 0x1 if EVEN_ODD, all bits if NON_ZERO
+	int mask = (windingRule == WIND_EVEN_ODD) ? 0x1 : ~0x0;
+	
+	int y = 0;
+	int prevY = rasterMinY - 1;
 
         int minX = Integer.MAX_VALUE;
         int maxX = Integer.MIN_VALUE;
 
-        iterateCrossings();
-        while (hasMoreCrossingRows()) {
+	iterateCrossings();
+	while (hasMoreCrossingRows()) {
             y = crossingY;
 
-            // Emit any skipped rows
-            for (int j = prevY + 1; j < y; j++) {
-                if (((j & SUBPIXEL_MASK_Y) == SUBPIXEL_MASK_Y) ||
-                    (j == rasterMaxY)) {
+	    // Emit any skipped rows
+	    for (int j = prevY + 1; j < y; j++) {
+		if (((j & SUBPIXEL_MASK_Y) == SUBPIXEL_MASK_Y) ||
+		    (j == rasterMaxY)) {
                     emitRow(j >> SUBPIXEL_LG_POSITIONS_Y, 0, -1);
-                }
-            }
-            prevY = y;
+		}
+	    }
+	    prevY = y;
 
             if (crossingRowIndex < crossingRowCount) {
                 int lx = crossings[crossingRowOffset + crossingRowIndex];
@@ -534,22 +534,22 @@
                 maxX = Math.max(maxX, x1 >> SUBPIXEL_LG_POSITIONS_X);
             }
 
-            int sum = 0;
-            int prev = rasterMinX;
+	    int sum = 0;
+	    int prev = rasterMinX;
             while (crossingRowIndex < crossingRowCount) {
                 int crxo = crossings[crossingRowOffset + crossingRowIndex];
                 crossingRowIndex++;
 
-                int crx = crxo >> 1;
-                int crorientation = ((crxo & 0x1) == 0x1) ? 1 : -1;
+		int crx = crxo >> 1;
+		int crorientation = ((crxo & 0x1) == 0x1) ? 1 : -1;	
 
-                if ((sum & mask) != 0) {
-                    // Clip to active X range, if x1 < x0 loop will
-                    // have no effect
+		if ((sum & mask) != 0) {
+		    // Clip to active X range, if x1 < x0 loop will
+		    // have no effect
                     int x0 = prev > rasterMinX ? prev : rasterMinX;
-                    int x1 =  crx < rasterMaxX ?  crx : rasterMaxX;
+		    int x1 =  crx < rasterMaxX ?  crx : rasterMaxX;
 
-                    // Empty spans
+		    // Empty spans
                     if (x1 > x0) {
                         x0 -= rasterMinX;
                         x1 -= rasterMinX;
@@ -562,7 +562,7 @@
                         // In the middle of the span, we can update a full
                         // pixel at a time (i.e., SUBPIXEL_POSITIONS_X
                         // subpixels)
-
+                        
                         int x = x0 >> SUBPIXEL_LG_POSITIONS_X;
                         int xmaxm1 = (x1 - 1) >> SUBPIXEL_LG_POSITIONS_X;
                         if (x == xmaxm1) {
@@ -586,29 +586,29 @@
                             rowAA[x] += x1 & SUBPIXEL_MASK_X;
                         }
                     }
-                }
-                sum += crorientation;
-                prev = crx;
-            }
+		}
+		sum += crorientation;
+		prev = crx;
+	    }
 
-            // Every SUBPIXEL_POSITIONS rows, output an antialiased row
-            if (((y & SUBPIXEL_MASK_Y) == SUBPIXEL_MASK_Y) ||
-                (y == rasterMaxY)) {
+	    // Every SUBPIXEL_POSITIONS rows, output an antialiased row
+	    if (((y & SUBPIXEL_MASK_Y) == SUBPIXEL_MASK_Y) ||
+		(y == rasterMaxY)) {
                 emitRow(y >> SUBPIXEL_LG_POSITIONS_Y, minX, maxX);
                 minX = Integer.MAX_VALUE;
                 maxX = Integer.MIN_VALUE;
-            }
-        }
+	    }
+	}
 
         // Emit final row
-        for (int j = prevY + 1; j <= rasterMaxY; j++) {
-            if (((j & SUBPIXEL_MASK_Y) == SUBPIXEL_MASK_Y) ||
-                (j == rasterMaxY)) {
+	for (int j = prevY + 1; j <= rasterMaxY; j++) {
+	    if (((j & SUBPIXEL_MASK_Y) == SUBPIXEL_MASK_Y) ||
+		(j == rasterMaxY)) {
                 emitRow(j >> SUBPIXEL_LG_POSITIONS_Y, minX, maxX);
                 minX = Integer.MAX_VALUE;
                 maxX = Integer.MIN_VALUE;
-            }
-        }
+	    }
+	}
     }
 
     private void clearAlpha(byte[] alpha,
@@ -650,7 +650,7 @@
 
                         runLen = 1;
                         startVal = nextVal;
-                    }
+                    }                    
                 }
                 cache.addRLERun(startVal, runLen);
                 cache.addRLERun((byte)0, 0);
@@ -682,7 +682,7 @@
         }
 
         int orientation = 1;
-        if (y0 > y1) {
+ 	if (y0 > y1) {
             int tmp = y0;
             y0 = y1;
             y1 = tmp;
@@ -691,8 +691,8 @@
         }
 
         // Skip edges that don't cross a subsampled scanline
-        int eminY = ((y0 + HYSTEP) & YMASK);
-        int emaxY = ((y1 - HYSTEP) & YMASK);
+ 	int eminY = ((y0 + HYSTEP) & YMASK);
+	int emaxY = ((y1 - HYSTEP) & YMASK);
         if (eminY > emaxY) {
             return;
         }
@@ -708,18 +708,18 @@
         edges[edgeIdx++] = x1;
         edges[edgeIdx++] = y1;
         edges[edgeIdx++] = orientation;
-
+        
         // Update Y bounds of primitive
         if (y0 < edgeMinY) {
             edgeMinY = y0;
         }
-        if (y1 > edgeMaxY) {
+	if (y1 > edgeMaxY) {
             edgeMaxY = y1;
         }
     }
 
     private void resetEdges() {
-        this.edgeIdx = 0;
+	this.edgeIdx = 0;
         this.edgeMinY = Integer.MAX_VALUE;
         this.edgeMaxY = Integer.MIN_VALUE;
     }
@@ -791,7 +791,7 @@
 
             while (j > off && (xjm1 = x[j - 1]) > xj) {
                 x[j] = xjm1;
-                x[j - 1] = xj;
+                x[j - 1] = xj;                    
                 j--;
             }
         }
@@ -808,7 +808,7 @@
     private void addCrossing(int y, int x, int orientation) {
         if (x < crossingMinX) {
             crossingMinX = x;
-        }
+	}
         if (x > crossingMaxX) {
             crossingMaxX = x;
         }
--- a/src/share/classes/sun/java2d/pisces/Stroker.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/sun/java2d/pisces/Stroker.java	Fri Jan 30 16:19:09 2009 -0800
@@ -275,7 +275,7 @@
 
     private boolean isCCW(int x0, int y0,
                           int x1, int y1,
-                          int x2, int y2) {
+                          int x2, int y2) { 
         int dx0 = x1 - x0;
         int dy0 = y1 - y0;
         int dx1 = x2 - x1;
@@ -435,7 +435,7 @@
     }
 
     private void drawMiter(int px0, int py0,
-                           int x0, int y0,
+                           int x0, int y0, 
                            int x1, int y1,
                            int omx, int omy, int mx, int my,
                            boolean rev) {
@@ -481,7 +481,7 @@
             lineToImpl(sx0, sy0, joinToOrigin);
             lineToOrigin = false;
         }
-
+        
         if (prev == LINE_TO) {
             finish();
         }
@@ -509,8 +509,8 @@
                 // staying in the starting point
                 return;
             }
-
-            // not closing the path, do the previous lineTo
+        
+            // not closing the path, do the previous lineTo   
             lineToImpl(sx0, sy0, joinToOrigin);
             lineToOrigin = false;
         } else if (x1 == x0 && y1 == y0) {
@@ -525,7 +525,7 @@
         lineToImpl(x1, y1, joinSegment);
         joinSegment = false;
     }
-
+    
     private void lineToImpl(int x1, int y1, boolean joinSegment) {
         computeOffset(x0, y0, x1, y1, offset);
         int mx = offset[0];
@@ -545,14 +545,14 @@
                     drawMiter(px0, py0, x0, y0, x1, y1, omx, omy, mx, my,
                               ccw);
                 } else if (joinStyle == JOIN_ROUND) {
-                    drawRoundJoin(x0, y0,
+                    drawRoundJoin(x0, y0, 
                                   omx, omy,
                                   mx, my, 0, false, ccw,
                                   ROUND_JOIN_THRESHOLD);
                 }
             } else {
                 // Draw internal joins as round
-                drawRoundJoin(x0, y0,
+                drawRoundJoin(x0, y0, 
                               omx, omy,
                               mx, my, 0, false, ccw,
                               ROUND_JOIN_INTERNAL_THRESHOLD);
@@ -582,7 +582,7 @@
 
     public void close() {
         // System.out.println("Stroker.close()");
-
+        
         if (lineToOrigin) {
             // ignore the previous lineTo
             lineToOrigin = false;
@@ -592,7 +592,7 @@
             finish();
             return;
         }
-
+        
         computeOffset(x0, y0, sx0, sy0, offset);
         int mx = offset[0];
         int my = offset[1];
@@ -608,7 +608,7 @@
             }
         } else {
             // Draw internal joins as round
-            drawRoundJoin(x0, y0,
+            drawRoundJoin(x0, y0, 
                           omx, omy,
                           mx, my, 0, false, ccw,
                           ROUND_JOIN_INTERNAL_THRESHOLD);
--- a/src/share/classes/sun/java2d/pisces/Transform4.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/sun/java2d/pisces/Transform4.java	Fri Jan 30 16:19:09 2009 -0800
@@ -51,7 +51,7 @@
 //         double dm11 = m11/65536.0;
 
 //         double invdet = 65536.0/(dm00*dm11 - dm01*dm10);
-
+        
 //         int im00 = (int)( dm11*invdet);
 //         int im01 = (int)(-dm01*invdet);
 //         int im10 = (int)(-dm10*invdet);
--- a/src/share/classes/sun/nio/ch/Reflect.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/sun/nio/ch/Reflect.java	Fri Jan 30 16:19:09 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2001 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2007 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -36,6 +36,7 @@
     private Reflect() { }
 
     private static class ReflectionError extends Error {
+        private static final long serialVersionUID = -8659519328078164097L;
 	ReflectionError(Throwable x) {
 	    super(x);
 	}
--- a/src/share/classes/sun/nio/ch/exceptions	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/sun/nio/ch/exceptions	Fri Jan 30 16:19:09 2009 -0800
@@ -1,14 +1,39 @@
-# %W% %E%
+#
+# Copyright 2000-2007 Sun Microsystems, Inc.  All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
 # Generated exception classes for sun.nio.ch
 
-SCCS_ID='%I%'
-SCCS_DATE='%E%'
 SINCE=1.4
 PACKAGE=sun.nio.ch
+# This year should only change if the generated source is modified.
+COPYRIGHT_YEARS=2000-2007
 
 
 SUPER=IllegalStateException
 
 gen AlreadyBoundException "
  * Unchecked exception thrown when an attempt is made to bind a {@link
- * SocketChannel} that is already bound."
+ * SocketChannel} that is already bound." \
+ 9002280723481772026L
--- a/src/share/classes/sun/nio/cs/standard-charsets	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/sun/nio/cs/standard-charsets	Fri Jan 30 16:19:09 2009 -0800
@@ -1,4 +1,28 @@
-# %W% %E%
+#
+# Copyright 2000-2007 Sun Microsystems, Inc.  All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
 # Standard charsets provided by StandardCharsets provider.
 #
 # Note that these "standard" charsets listed here are not
@@ -10,10 +34,10 @@
 # compared to the charsets packaged in "ExtendedCharsets" provider,
 # which is lazy initialized.
 
+# This year should only change if the generated source is modified.
+copyright 2000
 package sun.nio.cs
 class StandardCharsets
-id %I%
-date %E%
 
 charset US-ASCII US_ASCII
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/sun/print/DialogTypeSelection.java	Fri Jan 30 16:19:09 2009 -0800
@@ -0,0 +1,128 @@
+/*
+ * Copyright 2003-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package sun.print;
+
+import javax.print.attribute.EnumSyntax;
+import javax.print.attribute.PrintRequestAttribute;
+
+/**
+ * Class DialogTypeSelection is a printing attribute class, an enumeration, 
+ * that indicates the user dialog type to be used for specifying
+ * printing options. 
+ * If {@code NATIVE} is specified, then where available, a native
+ * platform dialog is displayed.
+ * If {@code COMMON} is specified, a cross-platform print dialog is displayed.
+ *
+ * This option to specify a native dialog for use with an IPP attribute
+ * set provides a standard way to reflect back of the setting and option
+ * changes made by a user to the calling application, and integrates
+ * the native dialog into the Java printing APIs.
+ * But note that some options and settings in a native dialog may not
+ * necessarily map to IPP attributes as they may be non-standard platform,
+ * or even printer specific options.
+ * <P>
+ * <B>IPP Compatibility:</B> This is not an IPP attribute.
+ * <P>
+ *
+ */
+public final class DialogTypeSelection extends EnumSyntax 
+	implements PrintRequestAttribute {
+
+    /**
+     * 
+     */
+    public static final DialogTypeSelection 
+	NATIVE = new DialogTypeSelection(0);	
+	    
+    /**
+     * 
+     */
+    public static final DialogTypeSelection 
+	COMMON = new DialogTypeSelection(1);
+    
+    /**
+     * Construct a new dialog type selection enumeration value with the 
+     * given integer value. 
+     *
+     * @param  value  Integer value.
+     */
+    protected DialogTypeSelection(int value) {
+		super(value);
+    }
+
+    private static final String[] myStringTable = {
+	"native", "common"};
+
+
+    private static final DialogTypeSelection[] myEnumValueTable = {
+	NATIVE,
+	COMMON
+    };
+
+    /**
+     * Returns the string table for class DialogTypeSelection.
+     */
+    protected String[] getStringTable() {
+	return myStringTable;
+    }
+
+    /**
+     * Returns the enumeration value table for class DialogTypeSelection.
+     */
+    protected EnumSyntax[] getEnumValueTable() {
+	return myEnumValueTable;
+    }
+
+
+   /**
+     * Get the printing attribute class which is to be used as the "category" 
+     * for this printing attribute value.
+     * <P>
+     * For class DialogTypeSelection the category is class 
+     * DialogTypeSelection itself. 
+     *
+     * @return  Printing attribute class (category), an instance of class
+     *          {@link java.lang.Class java.lang.Class}.
+     */
+    public final Class getCategory() {
+        return DialogTypeSelection.class;
+    }
+   
+
+    /**
+     * Get the name of the category of which this attribute value is an 
+     * instance. 
+     * <P>
+     * For class DialogTypeSelection the category name is
+     * <CODE>"dialog-type-selection"</CODE>. 
+     *
+     * @return  Attribute category name.
+     */
+    public final String getName() {
+        return "dialog-type-selection";
+    }
+
+}
--- a/src/share/classes/sun/print/PSPrinterJob.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/sun/print/PSPrinterJob.java	Fri Jan 30 16:19:09 2009 -0800
@@ -62,7 +62,6 @@
 import javax.print.attribute.standard.Chromaticity;
 import javax.print.attribute.standard.Copies;
 import javax.print.attribute.standard.Destination;
-import javax.print.attribute.standard.DialogTypeSelection;
 import javax.print.attribute.standard.JobName;
 import javax.print.attribute.standard.Sides;
 
--- a/src/share/classes/sun/print/PrintJob2D.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/sun/print/PrintJob2D.java	Fri Jan 30 16:19:09 2009 -0800
@@ -59,7 +59,6 @@
 import javax.print.attribute.standard.Chromaticity;
 import javax.print.attribute.standard.Copies;
 import javax.print.attribute.standard.Destination;
-import javax.print.attribute.standard.DialogTypeSelection;
 import javax.print.attribute.standard.JobName;
 import javax.print.attribute.standard.MediaSize;
 import javax.print.attribute.standard.PrintQuality;
@@ -72,6 +71,7 @@
 import javax.print.attribute.standard.PageRanges;
 
 import sun.print.SunPageSelection;
+import sun.print.DialogTypeSelection;
 import sun.print.SunMinMaxPage;
 
 /** 
--- a/src/share/classes/sun/print/PrinterGraphicsConfig.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/sun/print/PrinterGraphicsConfig.java	Fri Jan 30 16:19:09 2009 -0800
@@ -34,6 +34,7 @@
 import java.awt.image.BufferedImage;
 import java.awt.image.ColorModel;
 import java.awt.image.DirectColorModel;
+import java.awt.image.WritableRaster;
 
 public class PrinterGraphicsConfig extends GraphicsConfiguration {
 
@@ -58,6 +59,14 @@
 	return gd;
     }
 
+    public BufferedImage createCompatibleImage(int width, int height) {
+        ColorModel model = getColorModel();
+        WritableRaster raster =
+            model.createCompatibleWritableRaster(width, height);
+        return new BufferedImage(model, raster,
+                                 model.isAlphaPremultiplied(), null);
+    }
+
     /**
      * Returns the color model associated with this configuration.
      */
--- a/src/share/classes/sun/print/RasterPrinterJob.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/sun/print/RasterPrinterJob.java	Fri Jan 30 16:19:09 2009 -0800
@@ -76,7 +76,6 @@
 import javax.print.attribute.standard.Chromaticity;
 import javax.print.attribute.standard.Copies;
 import javax.print.attribute.standard.Destination;
-import javax.print.attribute.standard.DialogTypeSelection;
 import javax.print.attribute.standard.Fidelity;
 import javax.print.attribute.standard.JobName;
 import javax.print.attribute.standard.JobSheets;
@@ -97,6 +96,7 @@
 import sun.print.PageableDoc;
 import sun.print.ServiceDialog;
 import sun.print.SunPrinterJobService;
+import sun.print.DialogTypeSelection;
 import sun.print.SunPageSelection;
 
 /** 
--- a/src/share/classes/sun/tools/native2ascii/Main.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/share/classes/sun/tools/native2ascii/Main.java	Fri Jan 30 16:19:09 2009 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright 1996-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1996-2007 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -24,10 +24,6 @@
  */
 
 /*
- * %W%	%E%
- */
-
-/*
  	Currently javac and load() method in java.util.Properties
 	supports only Latin1 encoding input.
 	But in Asian platforms programmer or message translator
@@ -176,7 +172,7 @@
 		if (outputFile.exists()) {
 		    // Some win32 platforms can't handle atomic
 		    // rename if source and target file paths are
-		    // identical. To make things simple we just unconditionally 
+		    // identical. To make things simple we just unconditionally
 		    // delete the target file before calling renameTo()
 		    outputFile.delete();
 		}
@@ -213,12 +209,12 @@
 
 	    try {
 		 forwardIn = new FileInputStream(inFile);
-	    } catch (IOException e) { 
+	    } catch (IOException e) {
 	       throw new Exception(formatMsg("err.cannot.read", f.getName()));
 	    }
 	}
 
-	BufferedReader r = (encodingString != null) ? 
+	BufferedReader r = (encodingString != null) ?
 	    new BufferedReader(new InputStreamReader(forwardIn,
 						     encodingString)) :
 	    new BufferedReader(new InputStreamReader(forwardIn));
@@ -256,7 +252,7 @@
 	n2aOut = new BufferedWriter(new N2AFilter(output));
 	return n2aOut;
     }
-	
+
     private BufferedReader getA2NInput(String inFile) throws Exception {
 	Reader in;
 	BufferedReader reader;
@@ -271,7 +267,7 @@
 
 	    try {
 		 in = new FileReader(inFile);
-	    } catch (Exception e) { 
+	    } catch (Exception e) {
 	       throw new Exception(formatMsg("err.cannot.read", f.getName()));
 	    }
 	}
@@ -281,7 +277,7 @@
     }
 
     private Writer getA2NOutput(String outFile) throws Exception {
-	
+
 	OutputStreamWriter w = null;
 	OutputStream output = null;
 
@@ -308,7 +304,7 @@
 	w = (encodingString != null) ?
 	    new OutputStreamWriter(output, encodingString) :
 	    new OutputStreamWriter(output);
-	    
+
 	return (w);
     }
 
@@ -340,7 +336,7 @@
 		null;
 	} catch (IllegalCharsetNameException e) {
             throw new Error(e);
-        } 
+        }
     }
 
     private static ResourceBundle rsrc;
@@ -366,7 +362,7 @@
         String msg = getMsg(key);
         String[] args = new String[1];
         args[0] = arg;
-        return MessageFormat.format(msg, args);
+        return MessageFormat.format(msg, (Object)args);
     }
 
 
--- a/src/solaris/classes/sun/awt/X11/XWindowPeer.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/solaris/classes/sun/awt/X11/XWindowPeer.java	Fri Jan 30 16:19:09 2009 -0800
@@ -523,11 +523,14 @@
     }
 
     boolean isAutoRequestFocus() {
+        /* comment this as a part of 6187066 revertion.
         if (XToolkit.isToolkitThread()) {
             return WindowAccessor.isAutoRequestFocus((Window)target);
         } else {
             return ((Window)target).isAutoRequestFocus();
         }
+        */
+        return true;
     }
 
     /*
--- a/src/solaris/classes/sun/awt/X11GraphicsConfig.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/solaris/classes/sun/awt/X11GraphicsConfig.java	Fri Jan 30 16:19:09 2009 -0800
@@ -197,6 +197,14 @@
 	return solidloops;
     }
 
+    public BufferedImage createCompatibleImage(int width, int height) {
+        ColorModel model = getColorModel();
+        WritableRaster raster =
+            model.createCompatibleWritableRaster(width, height);
+        return new BufferedImage(model, raster,
+                                 model.isAlphaPremultiplied(), null);
+    }
+
     /**
      * Returns the color model associated with this configuration.
      */
--- a/src/windows/classes/sun/awt/Win32GraphicsConfig.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/windows/classes/sun/awt/Win32GraphicsConfig.java	Fri Jan 30 16:19:09 2009 -0800
@@ -141,6 +141,14 @@
 	return solidloops;
     }
 
+    public BufferedImage createCompatibleImage(int width, int height) {
+        ColorModel model = getColorModel();
+        WritableRaster raster =
+            model.createCompatibleWritableRaster(width, height);
+        return new BufferedImage(model, raster,
+                                 model.isAlphaPremultiplied(), null);
+    }
+
     /**
      * Returns the color model associated with this configuration.
      */
--- a/src/windows/classes/sun/awt/windows/WToolkit.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/windows/classes/sun/awt/windows/WToolkit.java	Fri Jan 30 16:19:09 2009 -0800
@@ -481,6 +481,10 @@
     }
 
     public boolean isTraySupported() {
+        // workaround for 6419042
+        if (isProtectedMode()) {
+            return false;
+        }
         return true;
     }
 
@@ -935,4 +939,5 @@
         return new WDesktopPeer();
     }
 
+    private static native boolean isProtectedMode();
 }
--- a/src/windows/native/java/io/io_util_md.c	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/windows/native/java/io/io_util_md.c	Fri Jan 30 16:19:09 2009 -0800
@@ -104,23 +104,56 @@
     }
 }
 
+/*
+  The "abpathlen" is the size of the buffer needed by _wfullpath. If the
+  "path" is a relative path, it is "the length of the current dir" + "the
+  length of the path", if it's "absolute" already, it's the same as
+  pathlen which is the length of "path".
+ */
+WCHAR* prefixAbpath(const WCHAR* path, int pathlen, int abpathlen) {
+    WCHAR* pathbuf = NULL;
+    WCHAR* abpath = NULL;
+
+    abpathlen += 10;  //padding
+    abpath = (WCHAR*)malloc(abpathlen * sizeof(WCHAR));
+    if (abpath) {
+	/* Collapse instances of "foo\.." and ensure absoluteness before
+	   going down to prefixing.
+	*/
+        if (_wfullpath(abpath, path, abpathlen)) { 
+	    pathbuf = getPrefixed(abpath, abpathlen);
+	} else {
+	    /* _wfullpath fails if the pathlength exceeds 32k wchar.
+	       Instead of doing more fancy things we simply copy the
+	       ps into the return buffer, the subsequent win32 API will
+	       probably fail with FileNotFoundException, which is expected
+	    */
+	    pathbuf = (WCHAR*)malloc((pathlen + 6) * sizeof(WCHAR));
+	    if (pathbuf != 0) {
+	        wcscpy(pathbuf, path);
+	    }
+	}
+	free(abpath);
+    }
+    return pathbuf;
+}
+
 /* If this returns NULL then an exception is pending */
 WCHAR* 
 pathToNTPath(JNIEnv *env, jstring path, jboolean throwFNFE) {
     int pathlen = 0;
     WCHAR *pathbuf = NULL;
-    int max_path = 248;   /* Since CreateDirectoryW() has the limit of
-                             248 instead of the normal MAX_PATH, we 
-                             use 248 as the max_path to satisfy both
-                           */
+    int max_path = 248; /* CreateDirectoryW() has the limit of 248 */
+
     WITH_UNICODE_STRING(env, path, ps) {
         pathlen = wcslen(ps);
         if (pathlen != 0) {
             if (pathlen > 2 && 
                 (ps[0] == L'\\' && ps[1] == L'\\' ||   //UNC
-                 ps[1] == L':' && ps[2] == L'\\')) {   //absolute
+                 ps[1] == L':' && ps[2] == L'\\'))     //absolute
+	    {
                  if (pathlen > max_path - 1) {
-                     pathbuf = getPrefixed(ps, pathlen);
+		     pathbuf = prefixAbpath(ps, pathlen, pathlen);
                  } else {
                      pathbuf = (WCHAR*)malloc((pathlen + 6) * sizeof(WCHAR));
                      if (pathbuf != 0) {
@@ -132,7 +165,7 @@
                    its absolute form is bigger than max_path or not, if yes
                    need to (1)convert it to absolute and (2)prefix. This is
                    obviously a burden to all relative paths (The current dir/len
-                   for "dirve & directory" relative path is cached, so we only
+                   for "drive & directory" relative path is cached, so we only
                    calculate it once but for "drive-relative path we call
                    _wgetdcwd() and wcslen() everytime), but a hit we have
                    to take if we want to support relative path beyond max_path.
@@ -143,24 +176,7 @@
                 WCHAR *abpath = NULL;
                 int dirlen = currentDirLength(ps, pathlen);
                 if (dirlen + pathlen + 1 > max_path - 1) {
-                    int abpathlen = dirlen + pathlen + 10; 
-                    abpath = (WCHAR*)malloc(abpathlen * sizeof(WCHAR));
-                    if (abpath) {
-                        if (_wfullpath(abpath, ps, abpathlen)) { 
-                            pathbuf = getPrefixed(abpath, abpathlen);
-                        } else {
-			    /* _wfullpath fails if the pathlength exceeds 32k wchar.
-                               Instead of doing more fancy things we simply copy the
-                               ps into the return buffer, the subsequent win32 API will
-                               probably fail with FileNotFoundException, which is expected
-                             */
-                            pathbuf = (WCHAR*)malloc((pathlen + 6) * sizeof(WCHAR));
-                            if (pathbuf != 0) {
-                                wcscpy(pathbuf, ps);
-                            }
-                        }
-                        free(abpath);
-                    }
+                    pathbuf = prefixAbpath(ps, pathlen, dirlen + pathlen);
                 } else {
                     pathbuf = (WCHAR*)malloc((pathlen + 6) * sizeof(WCHAR));
                     if (pathbuf != 0) {
@@ -168,7 +184,7 @@
                     }
                 }
             }
-        }
+	}
     } END_UNICODE_STRING(env, ps);
 
     if (pathlen == 0) {
--- a/src/windows/native/sun/windows/awt_Toolkit.cpp	Fri Jan 30 16:15:05 2009 -0800
+++ b/src/windows/native/sun/windows/awt_Toolkit.cpp	Fri Jan 30 16:19:09 2009 -0800
@@ -2145,6 +2145,48 @@
     return (newEventNumber - eventNumber) > 2;
 }
 
+/*
+ * Class:     sun_awt_windows_WToolkit
+ * Method:    isProtectedMode
+ * Signature: ()Z
+ */
+JNIEXPORT jboolean JNICALL
+Java_sun_awt_windows_WToolkit_isProtectedMode(JNIEnv *env, jclass cls)
+{
+    TRY;
+
+    if (!IS_WINVISTA) {
+        return JNI_FALSE;
+    }
+
+    BOOL bIEIsProtectedModeProcess = FALSE;
+    HINSTANCE hLibIEFrameDll = ::LoadLibrary(TEXT("IEFRAME.DLL"));
+
+    typedef HRESULT (WINAPI IEIsProtectedModeProcessFunc)(BOOL *);
+
+    if (hLibIEFrameDll != NULL)
+    {
+        IEIsProtectedModeProcessFunc *lpIEIsProtectedModeProcess =
+            (IEIsProtectedModeProcessFunc*)GetProcAddress(hLibIEFrameDll,
+                                                          "IEIsProtectedModeProcess");
+
+        HRESULT hResult = E_FAIL;
+        if (lpIEIsProtectedModeProcess != NULL) {
+            hResult = lpIEIsProtectedModeProcess(&bIEIsProtectedModeProcess);
+        }
+
+        ::FreeLibrary(hLibIEFrameDll);
+
+        if (SUCCEEDED(hResult) && bIEIsProtectedModeProcess) {
+            return JNI_TRUE;
+        }
+    }
+
+    return JNI_FALSE;
+
+    CATCH_BAD_ALLOC_RET(JNI_FALSE);
+}
+
 } /* extern "C" */
 
 /* Convert a Windows desktop color index into an RGB value. */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/java/awt/TrayIcon/ProtectedModeCrashTest/ProtectedModeCrashTest.java	Fri Jan 30 16:19:09 2009 -0800
@@ -0,0 +1,364 @@
+/*
+ * Copyright (c) 2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ * 
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ * 
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ * 
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ * 
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/* 
+  @test
+  @bug 6587371
+  @summary JCK SystemTray tests cause VM crash on WinVista in JDK 6u3 with -Xcomp option (passed on 6u1)
+  @author Dmitry Cherepanov: area=awt.tray
+  @run main/othervm -Xcomp ProtectedModeCrashTest
+*/
+
+/**
+ * ProtectedModeCrashTest.java
+ *
+ * summary:  The test verifies that the isSupported method of the SystemTray
+ *           class doesn't crash if -Xcomp option is specified
+ */
+
+import java.awt.*;
+import java.awt.event.*;
+
+
+public class ProtectedModeCrashTest
+{
+    private static void init() 
+    {      
+        String[] instructions = 
+        {
+            "This is an AUTOMATIC test, simply wait until it is done.",
+            "The result (passed or failed) will be shown in the",
+            "message window below."
+        };
+        Sysout.createDialog( );
+        Sysout.printInstructions( instructions );
+
+	boolean isSupported = SystemTray.isSupported();
+
+        ProtectedModeCrashTest.pass();
+    }//End  init()
+
+
+
+    /*****************************************************
+     * Standard Test Machinery Section
+     * DO NOT modify anything in this section -- it's a 
+     * standard chunk of code which has all of the
+     * synchronisation necessary for the test harness.
+     * By keeping it the same in all tests, it is easier
+     * to read and understand someone else's test, as
+     * well as insuring that all tests behave correctly
+     * with the test harness.
+     * There is a section following this for test-
+     * classes
+     ******************************************************/
+    private static boolean theTestPassed = false;
+    private static boolean testGeneratedInterrupt = false;
+    private static String failureMessage = "";
+
+    private static Thread mainThread = null;
+
+    private static int sleepTime = 300000;
+
+    // Not sure about what happens if multiple of this test are
+    //  instantiated in the same VM.  Being static (and using
+    //  static vars), it aint gonna work.  Not worrying about
+    //  it for now.
+    public static void main( String args[] ) throws InterruptedException
+    {
+        mainThread = Thread.currentThread();
+        try
+        {
+            init();
+        }
+        catch( TestPassedException e )
+        {
+            //The test passed, so just return from main and harness will
+            // interepret this return as a pass
+            return;
+        }
+        //At this point, neither test pass nor test fail has been
+        // called -- either would have thrown an exception and ended the
+        // test, so we know we have multiple threads.
+
+        //Test involves other threads, so sleep and wait for them to
+        // called pass() or fail()
+        try 
+        {
+            Thread.sleep( sleepTime );
+            //Timed out, so fail the test
+            throw new RuntimeException( "Timed out after " + sleepTime/1000 + " seconds" );
+        } 
+        catch (InterruptedException e) 
+        {
+            //The test harness may have interrupted the test.  If so, rethrow the exception
+            // so that the harness gets it and deals with it.
+            if( ! testGeneratedInterrupt ) throw e;
+
+            //reset flag in case hit this code more than once for some reason (just safety)
+            testGeneratedInterrupt = false;
+
+            if ( theTestPassed == false )
+            {
+                throw new RuntimeException( failureMessage );
+            }
+        }
+      
+    }//main
+
+    public static synchronized void setTimeoutTo( int seconds )
+    {
+        sleepTime = seconds * 1000;
+    }
+   
+    public static synchronized void pass()
+    {
+        Sysout.println( "The test passed." );
+        Sysout.println( "The test is over, hit  Ctl-C to stop Java VM" );
+        //first check if this is executing in main thread
+        if ( mainThread == Thread.currentThread() )
+        {
+            //Still in the main thread, so set the flag just for kicks,
+            // and throw a test passed exception which will be caught
+            // and end the test.
+            theTestPassed = true;
+            throw new TestPassedException();
+        }
+        theTestPassed = true;
+        testGeneratedInterrupt = true;
+        mainThread.interrupt();
+    }//pass()
+
+    public static synchronized void fail()
+    {
+        //test writer didn't specify why test failed, so give generic
+        fail( "it just plain failed! :-)" );
+    }
+
+    public static synchronized void fail( String whyFailed )
+    {
+        Sysout.println( "The test failed: " + whyFailed );
+        Sysout.println( "The test is over, hit  Ctl-C to stop Java VM" );
+        //check if this called from main thread
+        if ( mainThread == Thread.currentThread() )
+        {
+            //If main thread, fail now 'cause not sleeping
+            throw new RuntimeException( whyFailed );
+        }
+        theTestPassed = false;
+        testGeneratedInterrupt = true;
+        failureMessage = whyFailed;
+        mainThread.interrupt();
+    }//fail()
+
+}// class AutomaticMainTest
+
+//This exception is used to exit from any level of call nesting
+// when it's determined that the test has passed, and immediately
+// end the test.
+class TestPassedException extends RuntimeException
+{
+}
+
+//*********** End Standard Test Machinery Section **********
+
+ 
+//************ Begin classes defined for the test ****************
+
+// if want to make listeners, here is the recommended place for them, then instantiate 
+//  them in init()
+
+/* Example of a class which may be written as part of a test
+class NewClass implements anInterface 
+ {
+   static int newVar = 0;
+   
+   public void eventDispatched(AWTEvent e) 
+    {
+      //Counting events to see if we get enough
+      eventCount++;
+      
+      if( eventCount == 20 )
+       {
+         //got enough events, so pass
+
+         AutomaticMainTest.pass();
+       }
+      else if( tries == 20 )
+       {
+         //tried too many times without getting enough events so fail
+
+         AutomaticMainTest.fail();
+       }
+      
+    }// eventDispatched()
+
+ }// NewClass class
+
+*/
+
+
+//************** End classes defined for the test *******************
+  
+
+
+
+/****************************************************
+ Standard Test Machinery
+ DO NOT modify anything below -- it's a standard 
+  chunk of code whose purpose is to make user 
+  interaction uniform, and thereby make it simpler
+  to read and understand someone else's test.
+ ****************************************************/
+
+/**
+ This is part of the standard test machinery.
+ It creates a dialog (with the instructions), and is the interface
+  for sending text messages to the user.
+ To print the instructions, send an array of strings to Sysout.createDialog
+  WithInstructions method.  Put one line of instructions per array entry.
+ To display a message for the tester to see, simply call Sysout.println
+  with the string to be displayed.
+ This mimics System.out.println but works within the test harness as well 
+  as standalone.
+ */
+
+class Sysout 
+{ 
+    private static TestDialog dialog;
+
+    public static void createDialogWithInstructions( String[] instructions )
+    {
+        dialog = new TestDialog( new Frame(), "Instructions" );
+        dialog.printInstructions( instructions );
+        dialog.setVisible(true);
+        println( "Any messages for the tester will display here." );
+    }
+   
+    public static void createDialog( )
+    {
+        dialog = new TestDialog( new Frame(), "Instructions" );
+        String[] defInstr = { "Instructions will appear here. ", "" } ;
+        dialog.printInstructions( defInstr );
+        dialog.setVisible(true);
+        println( "Any messages for the tester will display here." );
+    }
+   
+      
+    public static void printInstructions( String[] instructions )
+    {
+        dialog.printInstructions( instructions );
+    }
+
+
+    public static void println( String messageIn )
+    {
+        dialog.displayMessage( messageIn );
+        System.out.println(messageIn);
+    }
+
+}// Sysout  class
+
+/**
+  This is part of the standard test machinery.  It provides a place for the
+   test instructions to be displayed, and a place for interactive messages
+   to the user to be displayed.
+  To have the test instructions displayed, see Sysout.
+  To have a message to the user be displayed, see Sysout.
+  Do not call anything in this dialog directly.
+  */
+class TestDialog extends Dialog
+{
+
+    TextArea instructionsText;
+    TextArea messageText;
+    int maxStringLength = 80;
+   
+    //DO NOT call this directly, go through Sysout
+    public TestDialog( Frame frame, String name ) 
+    {
+        super( frame, name );
+        int scrollBoth = TextArea.SCROLLBARS_BOTH;
+        instructionsText = new TextArea( "", 15, maxStringLength, scrollBoth );
+        add( "North", instructionsText );
+      
+        messageText = new TextArea( "", 5, maxStringLength, scrollBoth );
+        add("Center", messageText);
+      
+        pack();
+      
+        setVisible(true);
+    }// TestDialog()
+
+    //DO NOT call this directly, go through Sysout
+    public void printInstructions( String[] instructions )
+    {
+        //Clear out any current instructions
+        instructionsText.setText( "" );
+
+        //Go down array of instruction strings
+
+        String printStr, remainingStr;
+        for( int i=0; i < instructions.length; i++ )
+        { 
+            //chop up each into pieces maxSringLength long
+            remainingStr = instructions[ i ];
+            while( remainingStr.length() > 0 )
+            {
+                //if longer than max then chop off first max chars to print
+                if( remainingStr.length() >= maxStringLength )
+                {
+                    //Try to chop on a word boundary
+                    int posOfSpace = remainingStr.
+                        lastIndexOf( ' ', maxStringLength - 1 );
+               
+                    if( posOfSpace <= 0 ) posOfSpace = maxStringLength - 1;
+               
+                    printStr = remainingStr.substring( 0, posOfSpace + 1 );
+                    remainingStr = remainingStr.substring( posOfSpace + 1 );
+                }
+                //else just print
+                else 
+                { 
+                    printStr = remainingStr;
+                    remainingStr = "";
+                }
+            
+                instructionsText.append( printStr + "\n" );
+            
+            }// while
+         
+        }// for
+      
+    }//printInstructions()
+
+    //DO NOT call this directly, go through Sysout
+    public void displayMessage( String messageIn )
+    {
+        messageText.append( messageIn + "\n" );
+        System.out.println(messageIn);
+    }  
+   
+}// TestDialog  class    
+  
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/java/io/File/MaxPath.java	Fri Jan 30 16:19:09 2009 -0800
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/* @test
+   @bug 6481955
+   @summary Path length less than MAX_PATH (260) works on Windows
+ */
+
+import java.io.*;
+ 
+public class MaxPath {
+    public static void main(String[] args) throws Exception {
+        String osName = System.getProperty("os.name");
+        if (!osName.startsWith("Windows")) {
+            return;
+        }
+	int MAX_PATH = 260;
+	String dir = new File(".").getAbsolutePath() + "\\";
+	String padding = "1234567890123456789012345678901234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890";
+	for (int i = 240 - dir.length(); i < MAX_PATH - dir.length(); i++) {
+	    String longname = dir + padding.substring(0, i);
+	    try {
+		File f = new File(longname);
+		if (f.createNewFile()) {
+		    if (!f.exists() || !f.canRead()) {
+			throw new RuntimeException("Failed at length: " + longname.length());
+		    }
+		    f.delete();
+		}
+	    } catch (IOException e) {
+	        System.out.println("Failed at length: " + longname.length());
+		throw e;
+	    }
+	}
+    }
+}  
--- a/test/java/nio/Buffer/AllocateDirectInit.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/test/java/nio/Buffer/AllocateDirectInit.java	Fri Jan 30 16:19:09 2009 -0800
@@ -23,7 +23,7 @@
 
 /**
  * @test
- * @bug 4490253 6535542
+ * @bug 4490253
  * @summary Verify that newly allocated direct buffers are initialized.
  */
 
--- a/test/java/nio/Buffer/Basic.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/test/java/nio/Buffer/Basic.java	Fri Jan 30 16:19:09 2009 -0800
@@ -25,7 +25,7 @@
  * @summary Unit test for buffers
  * @bug 4413135 4414911 4416536 4416562 4418782 4471053 4472779 4490253 4523725
  *      4526177 4463011 4660660 4661219 4663521 4782970 4804304 4938424 6231529
- *      6221101 6234263 6535542 6591971
+ *      6221101 6234263 6591971
  * @author Mark Reinhold
  */
 
--- a/test/java/rmi/activation/Activatable/createPrivateActivable/ActivateMe.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/test/java/rmi/activation/Activatable/createPrivateActivable/ActivateMe.java	Fri Jan 30 16:19:09 2009 -0800
@@ -1,4 +1,4 @@
-/* 
+/*
  * Copyright 1999 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
--- a/test/java/rmi/activation/Activatable/createPrivateActivable/CreatePrivateActivatable.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/test/java/rmi/activation/Activatable/createPrivateActivable/CreatePrivateActivatable.java	Fri Jan 30 16:19:09 2009 -0800
@@ -29,7 +29,6 @@
  * @library ../../../testlibrary
  * @build TestLibrary RMID
  * @build ActivateMe
- * @build CreatePrivateActivatable$PrivateActivatable_Stub
  * @build CreatePrivateActivatable
  * @run main/othervm/policy=security.policy/timeout=240 CreatePrivateActivatable
  */
--- a/test/java/rmi/server/RemoteObject/verifyRemoteEquals/VerifyRemoteEquals.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/test/java/rmi/server/RemoteObject/verifyRemoteEquals/VerifyRemoteEquals.java	Fri Jan 30 16:19:09 2009 -0800
@@ -1,4 +1,4 @@
-/* 
+/*
  * Copyright 1999 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -29,8 +29,6 @@
  * @library ../../../testlibrary
  *
  * @build VerifyRemoteEquals
- * @build VerifyRemoteEquals$TestHomeImpl_Stub
- * @build VerifyRemoteEquals$TestImpl_Stub
  * @run main/othervm/timeout=40 VerifyRemoteEquals
  * @author Laird Dornin
  */
@@ -52,181 +50,181 @@
      */
     public interface Test extends Remote {
     }
-    
+
     /**
      * Implementation of Remote interface passing custom socket
      * factories
      */
-    public static final class TestImpl 
-	extends UnicastRemoteObject implements Test 
+    public static final class TestImpl
+        extends UnicastRemoteObject implements Test
     {
-	public TestImpl() throws RemoteException {
-	    super();
-	}
-	
-	public TestImpl(RMIClientSocketFactory clientFactory,
-			RMIServerSocketFactory serverFactory)
-	    throws RemoteException 
-	{
-	    
-	    super(0, clientFactory, serverFactory);
-	}
-	
-	public TestImpl(RMISocketFactory factory)
-	    throws RemoteException 
-	{
-	    super(0, factory, factory);
-	}
+        public TestImpl() throws RemoteException {
+            super();
+        }
+
+        public TestImpl(RMIClientSocketFactory clientFactory,
+                        RMIServerSocketFactory serverFactory)
+            throws RemoteException
+        {
+
+            super(0, clientFactory, serverFactory);
+        }
+
+        public TestImpl(RMISocketFactory factory)
+            throws RemoteException
+        {
+            super(0, factory, factory);
+        }
     }
-    
+
     /**
      * Remote interface for retrieving Test object.
      */
     public interface TestHome extends Remote {
-	public Test get() throws RemoteException;
+        public Test get() throws RemoteException;
     }
 
     /**
      * Implementation of interface TestHome.
      */
-    public static final class TestHomeImpl 
-	extends UnicastRemoteObject implements TestHome 
+    public static final class TestHomeImpl
+        extends UnicastRemoteObject implements TestHome
     {
-	private Test test;
-	
-	public TestHomeImpl(Test test) 
-	    throws RemoteException {
-			
-	    super();
-	    
-	    this.test = test;
-	}
-	
-	public Test get() {
-	    return test;
-	}
+        private Test test;
+
+        public TestHomeImpl(Test test)
+            throws RemoteException {
+
+            super();
+
+            this.test = test;
+        }
+
+        public Test get() {
+            return test;
+        }
     }
 
-    /** 
+    /**
      * Custom server socket factory.
-     */		
-    public static final class ServerSocketAndFactory 
-	extends ServerSocket implements RMIServerSocketFactory, Serializable 
+     */
+    public static final class ServerSocketAndFactory
+        extends ServerSocket implements RMIServerSocketFactory, Serializable
     {
-	ServerSocketAndFactory() throws IOException, java.net.UnknownHostException {
-	    // I am forced to do something useless with the parent
-	    // constructor
-	    super(0);
-	}
-	ServerSocketAndFactory(int port) throws IOException,
-	    java.net.UnknownHostException
-	{
-	    super(port);
-	}
-	
-	public ServerSocket createServerSocket(int port) 
-	    throws IOException
-	{
-	    
-	    return new ServerSocketAndFactory(port);
-	}
+        ServerSocketAndFactory() throws IOException, java.net.UnknownHostException {
+            // I am forced to do something useless with the parent
+            // constructor
+            super(0);
+        }
+        ServerSocketAndFactory(int port) throws IOException,
+            java.net.UnknownHostException
+        {
+            super(port);
+        }
+
+        public ServerSocket createServerSocket(int port)
+            throws IOException
+        {
 
-	public int hashCode() {
-	    return getLocalPort();
-	}
+            return new ServerSocketAndFactory(port);
+        }
+
+        public int hashCode() {
+            return getLocalPort();
+        }
 
-	public boolean equals(Object obj) {
-	    if (obj instanceof ServerSocketAndFactory) {
-		ServerSocketAndFactory ssf = (ServerSocketAndFactory) obj;
-		if (getLocalPort() == ssf.getLocalPort()) {
-		    return true;
-		}
-	    }
-	    return false;
-	}
+        public boolean equals(Object obj) {
+            if (obj instanceof ServerSocketAndFactory) {
+                ServerSocketAndFactory ssf = (ServerSocketAndFactory) obj;
+                if (getLocalPort() == ssf.getLocalPort()) {
+                    return true;
+                }
+            }
+            return false;
+        }
     }
 
-    /** 
+    /**
      * Custom socket factory.
-     */		
-    public static final class ClientSocketAndFactory 
-	extends Socket implements RMIClientSocketFactory, Serializable 
+     */
+    public static final class ClientSocketAndFactory
+        extends Socket implements RMIClientSocketFactory, Serializable
     {
-	ClientSocketAndFactory() {
-	}
-	ClientSocketAndFactory(String host, int port) throws IOException {
-	    super(host, port);
-	}
-	
-	public Socket createSocket(String host, int port) 
-	    throws IOException {
-		
-	    return new ClientSocketAndFactory(host, port);
-	}
+        ClientSocketAndFactory() {
+        }
+        ClientSocketAndFactory(String host, int port) throws IOException {
+            super(host, port);
+        }
+
+        public Socket createSocket(String host, int port)
+            throws IOException {
+
+            return new ClientSocketAndFactory(host, port);
+        }
 
-	public int hashCode() {
-	    return getPort();
-	}
+        public int hashCode() {
+            return getPort();
+        }
 
-	public boolean equals(Object obj) {
+        public boolean equals(Object obj) {
 
-	    if (obj instanceof ClientSocketAndFactory) {
-		ClientSocketAndFactory csf = (ClientSocketAndFactory) obj;
-		if (getPort() == csf.getPort()) {
-		    return true;
-		}
-	    }
+            if (obj instanceof ClientSocketAndFactory) {
+                ClientSocketAndFactory csf = (ClientSocketAndFactory) obj;
+                if (getPort() == csf.getPort()) {
+                    return true;
+                }
+            }
 
-	    return false;
-	}
+            return false;
+        }
     }
 
     public static void main(String[] args) {
-	
-	try {
-	    System.out.println("\n\nRegression test for, 4251010\n\n");
-	    
-	    Test test = new TestImpl(new ClientSocketAndFactory(),
-				     new ServerSocketAndFactory());
-	    TestHome home = new TestHomeImpl(test);
+
+        try {
+            System.out.println("\n\nRegression test for, 4251010\n\n");
+
+            Test test = new TestImpl(new ClientSocketAndFactory(),
+                                     new ServerSocketAndFactory());
+            TestHome home = new TestHomeImpl(test);
 
-	    Test test0 = ((Test) RemoteObject.toStub(test));
-	    Test test1 = ((TestHome) RemoteObject.toStub(home)).get();
-	    Test test2 = ((TestHome) RemoteObject.toStub(home)).get();
-	    Test test3 = ((Test) (new MarshalledObject(test)).get());
+            Test test0 = ((Test) RemoteObject.toStub(test));
+            Test test1 = ((TestHome) RemoteObject.toStub(home)).get();
+            Test test2 = ((TestHome) RemoteObject.toStub(home)).get();
+            Test test3 = ((Test) (new MarshalledObject(test)).get());
 
-	    if (test0.equals(test1)) {
-		System.out.println("test0, test1, stubs equal");
-	    } else {
-		TestLibrary.bomb("test0, test1, stubs not equal");
-	    }
+            if (test0.equals(test1)) {
+                System.out.println("test0, test1, stubs equal");
+            } else {
+                TestLibrary.bomb("test0, test1, stubs not equal");
+            }
 
-	    if (test1.equals(test2)) {
-		System.out.println("test1, test2, stubs equal");
-	    } else {
-		TestLibrary.bomb("test1, test2, stubs not equal");
-	    }
+            if (test1.equals(test2)) {
+                System.out.println("test1, test2, stubs equal");
+            } else {
+                TestLibrary.bomb("test1, test2, stubs not equal");
+            }
 
-	    // explicitly compare an unmarshalled object with toStub
-	    // return
-	    if (test2.equals(test3)) {
-		System.out.println("test2, test3, stubs equal");
-	    } else {
-		TestLibrary.bomb("test2, test3, stubs not equal");
-	    }
+            // explicitly compare an unmarshalled object with toStub
+            // return
+            if (test2.equals(test3)) {
+                System.out.println("test2, test3, stubs equal");
+            } else {
+                TestLibrary.bomb("test2, test3, stubs not equal");
+            }
 
-	    test0 = null;
-	    test1 = null;
-	    test2 = null;
-	    test3 = null;
+            test0 = null;
+            test1 = null;
+            test2 = null;
+            test3 = null;
 
-	    TestLibrary.unexport(test);
-	    TestLibrary.unexport(home);
+            TestLibrary.unexport(test);
+            TestLibrary.unexport(home);
 
-	    System.err.println("test passed: stubs were equal");
-	    
-	} catch (Exception e) {
-	    TestLibrary.bomb("test got unexpected exception", e);
-	}
+            System.err.println("test passed: stubs were equal");
+
+        } catch (Exception e) {
+            TestLibrary.bomb("test got unexpected exception", e);
+        }
     }
 }
--- a/test/java/util/Currency/CurrencyTest.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/test/java/util/Currency/CurrencyTest.java	Fri Jan 30 16:19:09 2009 -0800
@@ -22,7 +22,7 @@
  */
 /*
  * @test
- * @bug 4290801 4692419 4693631 5101540 5104960 6296410 6336600 6371531
+ * @bug 4290801 4693631 5101540 5104960 6296410 6336600 6371531
  *    6488442
  * @summary Basic tests for Currency class.
  */
@@ -48,7 +48,6 @@
         testSymbols();
         testFractionDigits();
         testSerialization();
-	testDisplayNames();
     }
     
     static void testCurrencyCodeValidation() {
@@ -235,32 +234,4 @@
         }
     }       
 
-    static void testDisplayNames() {
-        // null argument test
-	try {
-	    testDisplayName("USD", null, "");
-            throw new RuntimeException("getDisplayName(NULL) did not throw an NPE.");
-	} catch (NullPointerException npe) {}
-
-        testDisplayName("USD", Locale.ENGLISH, "US Dollar");
-        testDisplayName("FRF", Locale.FRENCH, "franc fran\u00e7ais");
-        testDisplayName("DEM", Locale.GERMAN, "Deutsche Mark");
-        testDisplayName("ESP", new Locale("es"), "peseta espa\u00f1ola");
-        testDisplayName("ITL", new Locale("it"), "Lira Italiana");
-        testDisplayName("JPY", Locale.JAPANESE, "\u65e5\u672c\u5186");
-        testDisplayName("KRW", Locale.KOREAN, "\ub300\ud55c\ubbfc\uad6d \uc6d0");
-        testDisplayName("SEK", new Locale("sv"), "Svensk krona");
-        testDisplayName("CNY", Locale.SIMPLIFIED_CHINESE, "\u4eba\u6c11\u5e01");
-        testDisplayName("TWD", Locale.TRADITIONAL_CHINESE, "\u65b0\u81fa\u5e63");
-    }
-    
-    static void testDisplayName(String currencyCode, Locale locale, String expectedName) {
-        String name = Currency.getInstance(currencyCode).getDisplayName(locale);
-        if (!name.equals(expectedName)) {
-            throw new RuntimeException("Wrong display name for currency " +
-                    currencyCode +": expected '" + expectedName +
-                    "', got '" + name + "'");
-        }
-    }
-    
 }
--- a/test/java/util/Currency/ValidateISO4217.java	Fri Jan 30 16:15:05 2009 -0800
+++ b/test/java/util/Currency/ValidateISO4217.java	Fri Jan 30 16:19:09 2009 -0800
@@ -22,7 +22,7 @@
  */
 /*
  * @test
- * @bug 4691089 4819436 4942982 5104960 6544471
+ * @bug 4819436 4942982 5104960 6544471
  * @summary Validate ISO 4217 data for Currency class.
  */
 
@@ -100,7 +100,6 @@
         CheckDataVersion.check();
 	test1();
 	test2();
-	getAvailableCurrenciesTest();
 
 	if (err) {
 	    throw new RuntimeException("Failed: Validation ISO 4217 data");
@@ -212,12 +211,6 @@
 	try {
 	    Currency currency = currency = Currency.getInstance(currencyCode);
 
-	    if (currency.getNumericCode() != numericCode) {
-		System.err.println("Error: [" + currencyCode + "] expected: " +
-		    numericCode + "; got: " + currency.getNumericCode());
-		err = true;
-	    }
-
 	    if (currency.getDefaultFractionDigits() != digits) {
 		System.err.println("Error: [" + currencyCode + "] expected: " +
 		    digits + "; got: " + currency.getDefaultFractionDigits());
@@ -272,27 +265,4 @@
 	    }
 	}
     }
-
-    /**
-     * This test depends on test1(), where 'testCurrencies' set is constructed
-     */
-    static void getAvailableCurrenciesTest() {
-        Set<Currency> jreCurrencies = Currency.getAvailableCurrencies();
-
-	// add otherCodes
-	StringTokenizer st = new StringTokenizer(otherCodes, "-");
-	while (st.hasMoreTokens()) {
-	    testCurrencies.add(Currency.getInstance(st.nextToken()));
-	}
-
-	if (!testCurrencies.containsAll(jreCurrencies)) {
-	    System.err.print("Error: getAvailableCurrencies() returned extra currencies than expected: ");
-	    jreCurrencies.removeAll(testCurrencies);
-	    for (Currency c : jreCurrencies) {
-	        System.err.print(" "+c);
-	    }
-	    System.err.println();
-	    err = true;
-	}
-    }
 }