changeset 2614:94404fea2067

Merge
author lana
date Wed, 16 Jun 2010 14:07:47 -0700
parents 705777f990cf 6568c84116bb
children 3df25d0680f3
files make/com/sun/inputmethods/Makefile make/com/sun/inputmethods/indicim/Makefile make/com/sun/inputmethods/thaiim/Makefile make/common/Defs-linux.gmk make/common/Defs-solaris.gmk make/common/Release.gmk src/share/classes/com/sun/inputmethods/internal/indicim/DevanagariInputMethodDescriptor.java src/share/classes/com/sun/inputmethods/internal/indicim/DevanagariTables.java src/share/classes/com/sun/inputmethods/internal/indicim/IndicInputMethod.java src/share/classes/com/sun/inputmethods/internal/indicim/IndicInputMethodImpl.java src/share/classes/com/sun/inputmethods/internal/indicim/java.awt.im.spi.InputMethodDescriptor src/share/classes/com/sun/inputmethods/internal/indicim/resources/DisplayNames.properties src/share/classes/com/sun/inputmethods/internal/indicim/resources/DisplayNames_de.properties src/share/classes/com/sun/inputmethods/internal/indicim/resources/DisplayNames_es.properties src/share/classes/com/sun/inputmethods/internal/indicim/resources/DisplayNames_fr.properties src/share/classes/com/sun/inputmethods/internal/indicim/resources/DisplayNames_it.properties src/share/classes/com/sun/inputmethods/internal/indicim/resources/DisplayNames_ja.properties src/share/classes/com/sun/inputmethods/internal/indicim/resources/DisplayNames_ko.properties src/share/classes/com/sun/inputmethods/internal/indicim/resources/DisplayNames_sv.properties src/share/classes/com/sun/inputmethods/internal/indicim/resources/DisplayNames_zh_CN.properties src/share/classes/com/sun/inputmethods/internal/indicim/resources/DisplayNames_zh_TW.properties src/share/classes/com/sun/inputmethods/internal/thaiim/ThaiInputMethod.java src/share/classes/com/sun/inputmethods/internal/thaiim/ThaiInputMethodDescriptor.java src/share/classes/com/sun/inputmethods/internal/thaiim/ThaiInputMethodImpl.java src/share/classes/com/sun/inputmethods/internal/thaiim/ThaiRules.java src/share/classes/com/sun/inputmethods/internal/thaiim/java.awt.im.spi.InputMethodDescriptor src/share/classes/com/sun/inputmethods/internal/thaiim/resources/DisplayNames.properties src/share/classes/com/sun/servicetag/resources/register.html src/share/classes/com/sun/servicetag/resources/register_ja.html src/share/classes/com/sun/servicetag/resources/register_zh_CN.html src/share/classes/javax/swing/text/html/parser/html32.bdtd test/java/util/ResourceBundle/Bug4168625Test.java
diffstat 280 files changed, 9663 insertions(+), 3636 deletions(-) [+]
line wrap: on
line diff
--- a/.hgtags	Wed Jun 16 12:40:22 2010 -0700
+++ b/.hgtags	Wed Jun 16 14:07:47 2010 -0700
@@ -70,3 +70,5 @@
 219b84b9533ae4fe3c6c2083f8a8962cb579f1de jdk7-b93
 cf44386c8fe3fbdb9da14346be25d19fd1092f71 jdk7-b94
 db951e984ccf50756160fee3078c791300b0917e jdk7-b95
+51b9e5dbc2da0631414484b934ac3fb62e48a2c6 jdk7-b96
+b1903d7528d33b521df42bc9291bdcdd2f444a29 jdk7-b97
--- a/make/com/sun/Makefile	Wed Jun 16 12:40:22 2010 -0700
+++ b/make/com/sun/Makefile	Wed Jun 16 14:07:47 2010 -0700
@@ -42,7 +42,7 @@
 SUBDIRS = java security net/ssl jarsigner
 
 SUBDIRS_management = jmx
-SUBDIRS_desktop    = image inputmethods
+SUBDIRS_desktop    = image
 SUBDIRS_enterprise = crypto/provider jndi \
                      org xml rowset net/httpserver
 SUBDIRS_misc       = $(SCRIPT_SUBDIR) tracing servicetag nio demo
--- a/make/com/sun/inputmethods/Makefile	Wed Jun 16 12:40:22 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-#
-# Copyright (c) 2002, 2005, Oracle and/or its affiliates. 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.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-#
-# Makefile for building Java input methods
-#
-
-BUILDDIR = ../../..
-PRODUCT = sun
-include $(BUILDDIR)/common/Defs.gmk
-
-SUBDIRS = indicim thaiim
-include $(BUILDDIR)/common/Subdirs.gmk
-
-all build clean clobber::
-	$(SUBDIRS-loop)
-
--- a/make/com/sun/inputmethods/indicim/Makefile	Wed Jun 16 12:40:22 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-#
-# Copyright (c) 2002, 2008, Oracle and/or its affiliates. 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.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-#
-# Makefile for indic input method.
-#
-
-BUILDDIR = ../../../..
-
-PACKAGE = com.sun.inputmethods.internal.indicim
-PRODUCT = sun
-
-CLASSDESTDIR = $(TEMPDIR)/classes
-SERVICESDIR=META-INF/services
-IMJAR = $(IMJARDIR)/indicim.jar
-IMJARDIR=$(LIBDIR)/im
-include $(BUILDDIR)/common/Defs.gmk
-
-#
-# Files
-#
-AUTO_FILES_JAVA_DIRS = com/sun/inputmethods/internal/indicim
-
-FILES_copy = \
-	$(CLASSDESTDIR)/com/sun/inputmethods/internal/indicim/resources/DisplayNames.properties
-
-PROVIDER_CONF_FILE = \
-	$(CLASSDESTDIR)/$(SERVICESDIR)/java.awt.im.spi.InputMethodDescriptor
-
-#
-# Rules
-#
-include $(BUILDDIR)/common/Classes.gmk
-
-build: $(IMJAR)
-
-#
-# Extra rules to build im.
-#
-
-$(CLASSDESTDIR)/com/sun/inputmethods/internal/indicim/resources/% : $(SHARE_SRC)/classes/com/sun/inputmethods/internal/indicim/resources/%
-	$(install-file)
-
-$(CLASSDESTDIR)/$(SERVICESDIR)/java.awt.im.spi.InputMethodDescriptor : $(SHARE_SRC)/classes/com/sun/inputmethods/internal/indicim/java.awt.im.spi.InputMethodDescriptor
-	$(install-file)
-
-$(IMJAR): $(FILES_class) $(FILES_copy) $(PROVIDER_CONF_FILE)
-	$(prep-target)
-	$(BOOT_JAR_CMD) -cf $@ \
-	     -C $(CLASSDESTDIR) com \
-	     -C $(CLASSDESTDIR) $(SERVICESDIR) \
-	     $(BOOT_JAR_JFLAGS)
-	@$(java-vm-cleanup)
-
-clean::
-	$(RM) -r $(CLASSDESTDIR)
-	$(RM) $(IMJAR)
--- a/make/com/sun/inputmethods/thaiim/Makefile	Wed Jun 16 12:40:22 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-#
-# Copyright (c) 2002, 2008, Oracle and/or its affiliates. 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.  Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-#
-# Makefile for thai input method.
-#
-
-BUILDDIR = ../../../..
-
-PACKAGE = com.sun.inputmethods.internal.thaiim
-PRODUCT = sun
-
-CLASSDESTDIR = $(TEMPDIR)/classes
-SERVICESDIR=META-INF/services
-IMJAR = $(IMJARDIR)/thaiim.jar
-IMJARDIR=$(LIBDIR)/im
-include $(BUILDDIR)/common/Defs.gmk
-
-#
-# Files
-#
-AUTO_FILES_JAVA_DIRS = com/sun/inputmethods/internal/thaiim
-
-FILES_copy = \
-	$(CLASSDESTDIR)/com/sun/inputmethods/internal/thaiim/resources/DisplayNames.properties
-
-PROVIDER_CONF_FILE = \
-	$(CLASSDESTDIR)/$(SERVICESDIR)/java.awt.im.spi.InputMethodDescriptor
-
-#
-# Rules
-#
-include $(BUILDDIR)/common/Classes.gmk
-
-build: $(IMJAR)
-
-#
-# Extra rules to build im.
-#
-
-$(CLASSDESTDIR)/com/sun/inputmethods/internal/thaiim/resources/% : $(SHARE_SRC)/classes/com/sun/inputmethods/internal/thaiim/resources/%
-	$(install-file)
-
-$(CLASSDESTDIR)/$(SERVICESDIR)/java.awt.im.spi.InputMethodDescriptor : $(SHARE_SRC)/classes/com/sun/inputmethods/internal/thaiim/java.awt.im.spi.InputMethodDescriptor
-	$(install-file)
-
-$(IMJAR): $(FILES_class) $(FILES_copy) $(PROVIDER_CONF_FILE)
-	$(prep-target)
-	$(BOOT_JAR_CMD) -cf $@ \
-	     -C $(CLASSDESTDIR) com \
-	     -C $(CLASSDESTDIR) $(SERVICESDIR) \
-	     $(BOOT_JAR_JFLAGS)
-	@$(java-vm-cleanup)
-
-clean::
-	$(RM) -r $(CLASSDESTDIR)
-	$(RM) $(IMJAR)
--- a/make/common/Defs-linux.gmk	Wed Jun 16 12:40:22 2010 -0700
+++ b/make/common/Defs-linux.gmk	Wed Jun 16 14:07:47 2010 -0700
@@ -194,7 +194,16 @@
   CXXFLAGS_DBG	+= $(CC_OPT/$(FASTDEBUG_OPTIMIZATION_LEVEL))
 endif
 
-CPPFLAGS_COMMON = -D$(ARCH) -DARCH='"$(ARCH)"' -DLINUX $(VERSION_DEFINES) \
+CPP_ARCH_FLAGS = -DARCH='"$(ARCH)"'
+
+# Alpha arch does not like "alpha" defined (potential general arch cleanup issue here)
+ifneq ($(ARCH),alpha)
+  CPP_ARCH_FLAGS += -D$(ARCH)
+else
+  CPP_ARCH_FLAGS += -D_$(ARCH)_
+endif
+
+CPPFLAGS_COMMON = $(CPP_ARCH_FLAGS) -DLINUX $(VERSION_DEFINES) \
 		  -D_LARGEFILE64_SOURCE -D_GNU_SOURCE -D_REENTRANT
 
 ifeq ($(ARCH_DATA_MODEL), 64)
--- a/make/common/Defs-solaris.gmk	Wed Jun 16 12:40:22 2010 -0700
+++ b/make/common/Defs-solaris.gmk	Wed Jun 16 14:07:47 2010 -0700
@@ -639,21 +639,8 @@
 #    in general this is ok to continue to do.
 LIBCXX = /usr/lib$(ISA_DIR)/libCrun.so.1
 
-# Math Library (libm.so), do not use -lm.
-#    There might be two versions of libm.so on the build system:
-#    libm.so.1 and libm.so.2, and we want libm.so.1.
-#    Depending on the Solaris release being used to build with,
-#    /usr/lib/libm.so could point at a libm.so.2, so we are
-#    explicit here so that the libjvm.so you have built will work on an
-#    older Solaris release that might not have libm.so.2.
-#    This is a critical factor in allowing builds on Solaris 10 or newer
-#    to run on Solaris 8 or 9.
-#
-#    Note: Historically there was also a problem picking up a static version
-#          of libm.a from the compiler area, but that problem has gone away
-#          with the newer compilers. Use of libm.a would cause .so bloat.
-#
-LIBM = /usr/lib$(ISA_DIR)/libm.so.1
+# JDK now requires Solaris 10, so pick up libm.so.2
+LIBM = /usr/lib$(ISA_DIR)/libm.so.2
 
 # Socket library
 LIBSOCKET = -lsocket
--- a/make/common/Release.gmk	Wed Jun 16 12:40:22 2010 -0700
+++ b/make/common/Release.gmk	Wed Jun 16 14:07:47 2010 -0700
@@ -47,8 +47,7 @@
 # Swing has taken this approach only as a temporary measure to avoid
 # the compiler warnings until we can properly document these packages.
 # This is covered under 6491853.
-EXCLUDE_PROPWARN_PKGS = com.sun.java.swing.plaf          \
-                        com.sun.java.swing.plaf.windows  \
+EXCLUDE_PROPWARN_PKGS = com.sun.java.swing.plaf.windows  \
                         com.sun.java.swing.plaf.motif    \
                         com.sun.java.swing.plaf.gtk
 
@@ -655,7 +654,9 @@
 JAR_MANIFEST_FILE=$(ABS_TEMPDIR)/manifest.tmp
 $(JAR_MANIFEST_FILE): $(MAINMANIFEST) $(BEANMANIFEST)
 	$(prep-target)
-	$(SED) -e "s/@@RELEASE@@/$(RELEASE)/" $(MAINMANIFEST) >> $@
+	$(SED) -e "s#@@RELEASE@@#$(RELEASE)#" 		\
+	       -e "s#@@COMPANY_NAME@@#$(COMPANY_NAME)#" \
+	       $(MAINMANIFEST) >> $@
 	$(ECHO) >> $@
 	$(CAT) $(BEANMANIFEST) >> $@
 
--- a/make/common/Subdirs.gmk	Wed Jun 16 12:40:22 2010 -0700
+++ b/make/common/Subdirs.gmk	Wed Jun 16 14:07:47 2010 -0700
@@ -19,7 +19,7 @@
 #
 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 # or visit www.oracle.com if you need additional information or have any
-# have any questions
+# questions.
 #
 
 #
--- a/make/common/shared/Defs.gmk	Wed Jun 16 12:40:22 2010 -0700
+++ b/make/common/shared/Defs.gmk	Wed Jun 16 14:07:47 2010 -0700
@@ -214,7 +214,7 @@
   PRODUCT_NAME = Java(TM)
   PRODUCT_SUFFIX = SE Runtime Environment
   JDK_RC_PLATFORM_NAME = Platform SE
-  COMPANY_NAME = Sun Microsystems, Inc.
+  COMPANY_NAME = Oracle
 endif
 
 RUNTIME_NAME = $(PRODUCT_NAME) $(PRODUCT_SUFFIX)
--- a/make/java/nio/Makefile	Wed Jun 16 12:40:22 2010 -0700
+++ b/make/java/nio/Makefile	Wed Jun 16 14:07:47 2010 -0700
@@ -818,7 +818,7 @@
 GENSOR_EXE = $(TEMPDIR)/genSocketOptionRegistry$(EXE_SUFFIX)
 
 SOR_COPYRIGHT_YEARS = $(shell $(CAT) $(GENSOR_SRC) | \
-	$(NAWK) '/^.*Copyright.*Sun/ { print $$3 }') 
+	$(NAWK) '/^.*Copyright.*Oracle/ { printf "%s %s",$$4,$$5 }') 
 
 $(TEMPDIR)/$(GENSOR_SRC) : $(GENSOR_SRC)
 	$(install-non-module-file)
@@ -830,7 +830,7 @@
 
 $(SCH_GEN)/SocketOptionRegistry.java: $(GENSOR_EXE)
 	$(prep-target)
-	NAWK="$(NAWK)" SH="$(SH)" $(SH) -e addNotices.sh $(SOR_COPYRIGHT_YEARS) > $@
+	NAWK="$(NAWK)" SH="$(SH)" $(SH) -e addNotices.sh "$(SOR_COPYRIGHT_YEARS)" > $@
 	$(GENSOR_EXE) >> $@
 
 #
@@ -852,7 +852,7 @@
 GENUC_EXE = $(TEMPDIR)/genUnixConstants
 
 GENUC_COPYRIGHT_YEARS = $(shell $(CAT) $(GENUC_SRC) | \
-	$(NAWK) '/^.*Copyright.*Sun/ { print $$3 }')
+	$(NAWK) '/^.*Copyright.*Oracle/ { printf "%s %s",$$4,$$5 }')
 
 $(GENUC_EXE) : $(GENUC_SRC)
 	$(prep-target)
@@ -860,7 +860,7 @@
 
 $(SFS_GEN)/UnixConstants.java: $(GENUC_EXE)
 	$(prep-target)
-	NAWK="$(NAWK)" SH="$(SH)" $(SH) -e addNotices.sh $(GENUC_COPYRIGHT_YEARS) > $@
+	NAWK="$(NAWK)" SH="$(SH)" $(SH) -e addNotices.sh "$(GENUC_COPYRIGHT_YEARS)" > $@
 	$(GENUC_EXE) >> $@
 
 GENSC_SRC = $(PLATFORM_SRC)/native/sun/nio/fs/genSolarisConstants.c
@@ -868,7 +868,7 @@
 GENSC_EXE = $(TEMPDIR)/genSolarisConstants
 
 GENSC_COPYRIGHT_YEARS = $(shell $(CAT) $(GENSC_SRC) | \
-	$(NAWK) '/^.*Copyright.*Sun/ { print $$3 }')
+	$(NAWK) '/^.*Copyright.*Oracle/ { printf "%s %s",$$4,$$5 }')
 
 $(GENSC_EXE) : $(GENSC_SRC)
 	$(prep-target)
@@ -876,7 +876,7 @@
 
 $(SFS_GEN)/SolarisConstants.java: $(GENSC_EXE)
 	$(prep-target)
-	NAWK="$(NAWK)" SH="$(SH)" $(SH) -e addNotices.sh $(GENSC_COPYRIGHT_YEARS) > $@
+	NAWK="$(NAWK)" SH="$(SH)" $(SH) -e addNotices.sh "$(GENSC_COPYRIGHT_YEARS)" > $@
 	$(GENSC_EXE) >> $@
 
 .PHONY: sources 
--- a/make/java/nio/addNotices.sh	Wed Jun 16 12:40:22 2010 -0700
+++ b/make/java/nio/addNotices.sh	Wed Jun 16 14:07:47 2010 -0700
@@ -28,7 +28,7 @@
 # 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
+COPYRIGHT_YEARS="$1"
 
 cat <<__END__
 /*
@@ -36,10 +36,10 @@
 
 if [ "x$COPYRIGHT_YEARS" != x ]; then
   cat <<__END__
- * Copyright $COPYRIGHT_YEARS Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright (c) $COPYRIGHT_YEARS Oracle and/or its affiliates. All rights reserved.
 __END__
 fi
 
-$NAWK ' /^#.*Copyright.*Sun/ { next }
+$NAWK ' /^#.*Copyright.*Oracle/ { next }
         /^#([^!]|$)/ { sub(/^#/, " *"); print }
         /^$/ { print " */"; exit } ' $0
--- a/make/java/nio/genCharsetProvider.sh	Wed Jun 16 12:40:22 2010 -0700
+++ b/make/java/nio/genCharsetProvider.sh	Wed Jun 16 14:07:47 2010 -0700
@@ -36,7 +36,7 @@
 DST=$1; shift
 
 eval `$NAWK <$SPEC '
-  /^[ \t]*copyright / { printf "COPYRIGHT_YEARS=%s\n", $2; }
+  /^[ \t]*copyright / { printf "COPYRIGHT_YEARS=\"%s %s\"\n", $2, $3; }
   /^[ \t]*package / { printf "PKG=%s\n", $2; }
   /^[ \t]*class / { printf "CLASS=%s\n", $2; }
 '`
--- a/make/javax/swing/FILES.gmk	Wed Jun 16 12:40:22 2010 -0700
+++ b/make/javax/swing/FILES.gmk	Wed Jun 16 14:07:47 2010 -0700
@@ -25,7 +25,6 @@
 
 MISC_FILES = \
         $(CLASSBINDIR)/javax/swing/text/html/default.css 			\
-        $(CLASSBINDIR)/javax/swing/text/html/parser/html32.bdtd 		\
         $(CLASSBINDIR)/javax/swing/text/rtf/charsets/NeXT.txt 			\
         $(CLASSBINDIR)/javax/swing/text/rtf/charsets/ansi.txt 			\
         $(CLASSBINDIR)/javax/swing/text/rtf/charsets/cpg437.txt 		\
--- a/make/javax/swing/Makefile	Wed Jun 16 12:40:22 2010 -0700
+++ b/make/javax/swing/Makefile	Wed Jun 16 14:07:47 2010 -0700
@@ -59,9 +59,6 @@
 $(CLASSBINDIR)/%.css: $(SHARE_SRC)/classes/%.css
 	$(install-file)
 
-$(CLASSBINDIR)/%.bdtd: $(SHARE_SRC)/classes/%.bdtd
-	$(install-file)
-
 $(CLASSBINDIR)/%.txt: $(SHARE_SRC)/classes/%.txt
 	$(install-file)
 
--- a/make/jdk_generic_profile.sh	Wed Jun 16 12:40:22 2010 -0700
+++ b/make/jdk_generic_profile.sh	Wed Jun 16 14:07:47 2010 -0700
@@ -174,7 +174,7 @@
    
   # Check CYGWIN (should have already been done)
   #   Assumption here is that you are in a shell window via cygwin.
-  proc_arch=`echo "$(PROCESSOR_IDENTIFIER)" | expand | cut -d' ' -f1 | sed -e 's@x86@X86@g' -e 's@Intel64@X64@g' -e 's@em64t@X64@g' -e 's@EM64T@X64@g' -e 's@amd64@X64@g' -e 's@AMD64@X64@g' -e 's@ia64@IA64@g'`
+  proc_arch=`echo "${PROCESSOR_IDENTIFIER}" | expand | cut -d' ' -f1 | sed -e 's@x86@X86@g' -e 's@Intel64@X64@g' -e 's@em64t@X64@g' -e 's@EM64T@X64@g' -e 's@amd64@X64@g' -e 's@AMD64@X64@g' -e 's@ia64@IA64@g'`
   if [ "${proc_arch}" = "X64" ] ; then
     windows_arch=amd64
   else
--- a/make/sun/awt/mapfile-mawt-vers	Wed Jun 16 12:40:22 2010 -0700
+++ b/make/sun/awt/mapfile-mawt-vers	Wed Jun 16 14:07:47 2010 -0700
@@ -312,6 +312,7 @@
                 Java_sun_awt_X11GraphicsEnvironment_initGLX;
 		Java_sun_awt_X11GraphicsEnvironment_pRunningXinerama;
 		Java_sun_awt_X11GraphicsEnvironment_getXineramaCenterPoint;
+		Java_sun_awt_X11GraphicsEnvironment_initXRender;
                 #Java_sun_awt_motif_MEmbedCanvasPeer_initXEmbedServer;
                 #Java_sun_awt_motif_MEmbedCanvasPeer_destroyXEmbedServer;
                 #Java_sun_awt_motif_MEmbedCanvasPeer_isXEmbedActive;
@@ -406,18 +407,53 @@
 		Java_sun_java2d_x11_X11SurfaceData_initIDs;
 		Java_sun_java2d_x11_X11SurfaceData_initOps;
 		Java_sun_java2d_x11_X11SurfaceData_initSurface;
-		Java_sun_java2d_x11_X11SurfaceData_isDrawableValid;
 		Java_sun_java2d_x11_X11SurfaceData_isDgaAvailable;
 		Java_sun_java2d_x11_X11SurfaceData_isShmPMAvailable;
-		Java_sun_java2d_x11_X11SurfaceData_setInvalid;
-		Java_sun_java2d_x11_X11SurfaceData_flushNativeSurface;
-                Java_sun_java2d_x11_X11SurfaceData_XCreateGC;
-                Java_sun_java2d_x11_X11SurfaceData_XResetClip;
-                Java_sun_java2d_x11_X11SurfaceData_XSetClip;
                 Java_sun_java2d_x11_X11SurfaceData_XSetCopyMode;
                 Java_sun_java2d_x11_X11SurfaceData_XSetXorMode;
                 Java_sun_java2d_x11_X11SurfaceData_XSetForeground;
-                Java_sun_java2d_x11_X11SurfaceData_XSetGraphicsExposures;
+
+		Java_sun_java2d_x11_XSurfaceData_initOps;
+		Java_sun_java2d_x11_XSurfaceData_XCreateGC;
+		Java_sun_java2d_x11_XSurfaceData_XResetClip;
+		Java_sun_java2d_x11_XSurfaceData_XSetClip;
+		Java_sun_java2d_x11_XSurfaceData_flushNativeSurface;
+		Java_sun_java2d_x11_XSurfaceData_isDrawableValid;
+		Java_sun_java2d_x11_XSurfaceData_setInvalid;
+		Java_sun_java2d_x11_XSurfaceData_XSetGraphicsExposures;
+		Java_sun_java2d_xr_XRSurfaceData_initXRPicture;
+		Java_sun_java2d_xr_XRSurfaceData_initIDs;
+		Java_sun_java2d_xr_XRSurfaceData_XRInitSurface;
+		Java_sun_java2d_xr_XRBackendNative_initIDs;
+		Java_sun_java2d_xr_XIDGenerator_bufferXIDs;
+		Java_sun_java2d_xr_XRBackendNative_freeGC;
+		Java_sun_java2d_xr_XRBackendNative_createGC;
+		Java_sun_java2d_xr_XRBackendNative_createPixmap;
+		Java_sun_java2d_xr_XRBackendNative_createPictureNative;
+		Java_sun_java2d_xr_XRBackendNative_freePicture;
+		Java_sun_java2d_xr_XRBackendNative_freePixmap;
+		Java_sun_java2d_xr_XRBackendNative_setPictureRepeat;
+		Java_sun_java2d_xr_XRBackendNative_setGCExposures;
+		Java_sun_java2d_xr_XRBackendNative_setGCForeground;
+		Java_sun_java2d_xr_XRBackendNative_copyArea;
+		Java_sun_java2d_xr_XRBackendNative_renderComposite;
+		Java_sun_java2d_xr_XRBackendNative_renderRectangle;
+		Java_sun_java2d_xr_XRBackendNative_XRenderRectanglesNative;
+		Java_sun_java2d_xr_XRBackendNative_XRSetTransformNative;
+		Java_sun_java2d_xr_XRBackendNative_XRCreateLinearGradientPaintNative;
+		Java_sun_java2d_xr_XRBackendNative_XRCreateRadialGradientPaintNative;
+		Java_sun_java2d_xr_XRBackendNative_setFilter;
+		Java_sun_java2d_xr_XRBackendNative_XRSetClipNative;
+		Java_sun_java2d_xr_XRBackendNative_putMaskNative;
+		Java_sun_java2d_xr_XRBackendNative_XRAddGlyphsNative;
+		Java_sun_java2d_xr_XRBackendNative_XRFreeGlyphsNative;
+		Java_sun_java2d_xr_XRBackendNative_XRenderCreateGlyphSetNative;
+		Java_sun_java2d_xr_XRBackendNative_XRenderCompositeTextNative;
+		Java_sun_java2d_xr_XRBackendNative_setGCMode;
+		Java_sun_java2d_xr_XRBackendNative_GCRectanglesNative;
+		Java_sun_java2d_xr_XRUtils_initFormatPtrs;
+		Java_sun_java2d_xr_XRBackendNative_renderCompositeTrapezoidsNative;
+		XRT_DrawGlyphList;
 
                 Java_sun_java2d_opengl_OGLContext_getOGLIdString;
                 Java_sun_java2d_opengl_OGLMaskFill_maskFill;
--- a/make/sun/awt/mapfile-vers-linux	Wed Jun 16 12:40:22 2010 -0700
+++ b/make/sun/awt/mapfile-vers-linux	Wed Jun 16 14:07:47 2010 -0700
@@ -425,6 +425,7 @@
 		Java_sun_awt_X11GraphicsEnvironment_initDisplay;
 		Java_sun_awt_X11GraphicsEnvironment_pRunningXinerama;
 		Java_sun_awt_X11GraphicsEnvironment_getXineramaCenterPoint;
+		Java_sun_awt_X11GraphicsEnvironment_initXRender;
         
         
 
--- a/make/sun/headless/mapfile-vers	Wed Jun 16 12:40:22 2010 -0700
+++ b/make/sun/headless/mapfile-vers	Wed Jun 16 14:07:47 2010 -0700
@@ -46,17 +46,20 @@
 		Java_sun_java2d_x11_X11Renderer_XFillRoundRect;
 		Java_sun_java2d_x11_X11Renderer_devCopyArea;
 		Java_sun_java2d_x11_X11SurfaceData_initIDs;
-		Java_sun_java2d_x11_X11SurfaceData_initOps;
-		Java_sun_java2d_x11_X11SurfaceData_isDrawableValid;
 		Java_sun_java2d_x11_X11SurfaceData_initSurface;
-		Java_sun_java2d_x11_X11SurfaceData_setInvalid;
-                Java_sun_java2d_x11_X11SurfaceData_XCreateGC;
-                Java_sun_java2d_x11_X11SurfaceData_XResetClip;
-                Java_sun_java2d_x11_X11SurfaceData_XSetClip;
                 Java_sun_java2d_x11_X11SurfaceData_XSetCopyMode;
                 Java_sun_java2d_x11_X11SurfaceData_XSetXorMode;
                 Java_sun_java2d_x11_X11SurfaceData_XSetForeground;
 
+		Java_sun_java2d_x11_XSurfaceData_initOps;
+                Java_sun_java2d_x11_XSurfaceData_XCreateGC;
+                Java_sun_java2d_x11_XSurfaceData_XResetClip;
+                Java_sun_java2d_x11_XSurfaceData_XSetClip;
+                Java_sun_java2d_x11_XSurfaceData_flushNativeSurface;
+		Java_sun_java2d_x11_XSurfaceData_isDrawableValid;
+		Java_sun_java2d_x11_XSurfaceData_setInvalid;
+		Java_sun_java2d_x11_XSurfaceData_XSetGraphicsExposures;
+
 		X11SurfaceData_GetOps;
 		Java_java_awt_Font_initIDs;
                 Java_sun_font_FontConfigManager_getFontConfig;
--- a/make/sun/jawt/Makefile	Wed Jun 16 12:40:22 2010 -0700
+++ b/make/sun/jawt/Makefile	Wed Jun 16 14:07:47 2010 -0700
@@ -113,7 +113,7 @@
 # Libraries to link in.
 #
 ifeq ($(PLATFORM), solaris)
-OTHER_LDLIBS = -L$(LIBDIR)/$(LIBARCH) -L$(OPENWIN_LIB) -L$(LIBDIR)/$(LIBARCH)/xawt -lmawt
+OTHER_LDLIBS = -L$(LIBDIR)/$(LIBARCH) -L$(OPENWIN_LIB) -L$(LIBDIR)/$(LIBARCH)/xawt -lmawt -L/usr/openwin/sfw/lib$(ISA_DIR) -lXrender
 endif # PLATFORM
 
 ifeq ($(PLATFORM), linux)
--- a/make/sun/xawt/FILES_c_unix.gmk	Wed Jun 16 12:40:22 2010 -0700
+++ b/make/sun/xawt/FILES_c_unix.gmk	Wed Jun 16 14:07:47 2010 -0700
@@ -80,4 +80,6 @@
         swing_GTKEngine.c \
         swing_GTKStyle.c \
         rect.c \
-	sun_awt_X11_GtkFileDialogPeer.c
+	sun_awt_X11_GtkFileDialogPeer.c \
+	XRSurfaceData.c \
+	XRBackendNative.c
--- a/make/sun/xawt/Makefile	Wed Jun 16 12:40:22 2010 -0700
+++ b/make/sun/xawt/Makefile	Wed Jun 16 14:07:47 2010 -0700
@@ -49,6 +49,11 @@
 
 LDFLAGS += -L$(OPENWIN_LIB)
 
+# For Xrender extension.
+ifeq ($(PLATFORM), solaris)
+LDFLAGS += -L/usr/openwin/sfw/lib$(ISA_DIR) -R/usr/openwin/sfw/lib$(ISA_DIR)
+endif
+
 ifeq ($(PLATFORM), linux)
 LDFLAGS += -lpthread
 dummy := $(shell $(MKDIR) -p $(LIB_LOCATION))
@@ -88,7 +93,7 @@
 vpath %.c   $(PLATFORM_SRC)/native/sun/java2d/opengl
 vpath %.c   $(PLATFORM_SRC)/native/sun/java2d/x11
 
-OTHER_LDLIBS = $(LIBM) -lawt -lXext -lX11 -ldl \
+OTHER_LDLIBS = $(LIBM) -lawt -lXext -lX11 -lXrender -ldl \
                    $(LDFLAGS_COMMON) $(AWT_RUNPATH) $(OTHER_LDFLAGS) -lXtst -lXi
 
 ifeq  ($(PLATFORM), solaris)
@@ -122,7 +127,7 @@
 	-I$(PLATFORM_SRC)/native/sun/awt/medialib \
         -I$(PLATFORM_SRC)/native/sun/font \
         -I$(SHARE_SRC)/native/sun/awt \
-        -I$(PLATFORM_SRC)/native/sun/awt 
+        -I$(PLATFORM_SRC)/native/sun/awt
 
 ifeq ($(PLATFORM), linux)
 # Allows for builds on Debian GNU Linux, X11 is in a different place 
--- a/make/sun/xawt/mapfile-vers	Wed Jun 16 12:40:22 2010 -0700
+++ b/make/sun/xawt/mapfile-vers	Wed Jun 16 14:07:47 2010 -0700
@@ -192,6 +192,7 @@
 	Java_sun_font_X11FontManager_setNativeFontPath;
         Java_sun_awt_X11GraphicsEnvironment_initDisplay;
         Java_sun_awt_X11GraphicsEnvironment_initGLX;
+	Java_sun_awt_X11GraphicsEnvironment_initXRender;
         Java_sun_awt_X11GraphicsEnvironment_checkShmExt;
         Java_sun_awt_X11GraphicsEnvironment_getNumScreens;
         Java_sun_awt_X11GraphicsEnvironment_getDefaultScreenNum;
@@ -355,21 +356,52 @@
 	Java_sun_java2d_x11_X11Renderer_XFillRect;
 	Java_sun_java2d_x11_X11Renderer_XFillRoundRect;
         Java_sun_java2d_x11_X11Renderer_devCopyArea;
-        Java_sun_java2d_x11_X11SurfaceData_setInvalid;
         Java_sun_java2d_x11_X11SurfaceData_initIDs;
-	Java_sun_java2d_x11_X11SurfaceData_isDrawableValid;
         Java_sun_java2d_x11_X11SurfaceData_isDgaAvailable;
 	Java_sun_java2d_x11_X11SurfaceData_isShmPMAvailable;
-        Java_sun_java2d_x11_X11SurfaceData_initOps;
         Java_sun_java2d_x11_X11SurfaceData_initSurface;
-        Java_sun_java2d_x11_X11SurfaceData_flushNativeSurface;
-        Java_sun_java2d_x11_X11SurfaceData_XCreateGC;
-        Java_sun_java2d_x11_X11SurfaceData_XResetClip;
-        Java_sun_java2d_x11_X11SurfaceData_XSetClip;
         Java_sun_java2d_x11_X11SurfaceData_XSetCopyMode;
         Java_sun_java2d_x11_X11SurfaceData_XSetXorMode;
         Java_sun_java2d_x11_X11SurfaceData_XSetForeground;
-        Java_sun_java2d_x11_X11SurfaceData_XSetGraphicsExposures;
+
+        Java_sun_java2d_x11_XSurfaceData_initOps;
+        Java_sun_java2d_x11_XSurfaceData_XCreateGC;
+        Java_sun_java2d_x11_XSurfaceData_XResetClip;
+        Java_sun_java2d_x11_XSurfaceData_XSetClip;
+        Java_sun_java2d_x11_XSurfaceData_flushNativeSurface;
+	Java_sun_java2d_x11_XSurfaceData_isDrawableValid;
+        Java_sun_java2d_x11_XSurfaceData_setInvalid;
+        Java_sun_java2d_x11_XSurfaceData_XSetGraphicsExposures;
+        Java_sun_java2d_xr_XRSurfaceData_initXRPicture;
+        Java_sun_java2d_xr_XRSurfaceData_initIDs;
+        Java_sun_java2d_xr_XRSurfaceData_XRInitSurface;
+	Java_sun_java2d_xr_XRBackendNative_initIDs;
+	Java_sun_java2d_xr_XRBackendNative_freeGC;
+	Java_sun_java2d_xr_XRBackendNative_createGC;
+	Java_sun_java2d_xr_XRBackendNative_createPixmap;
+	Java_sun_java2d_xr_XRBackendNative_createPictureNative;
+	Java_sun_java2d_xr_XRBackendNative_freePicture;
+	Java_sun_java2d_xr_XRBackendNative_freePixmap;
+	Java_sun_java2d_xr_XRBackendNative_setPictureRepeat;
+	Java_sun_java2d_xr_XRBackendNative_setGCExposures;
+	Java_sun_java2d_xr_XRBackendNative_setGCForeground;
+	Java_sun_java2d_xr_XRBackendNative_copyArea;
+	Java_sun_java2d_xr_XRBackendNative_renderComposite;
+	Java_sun_java2d_xr_XRBackendNative_renderRectangle;
+	Java_sun_java2d_xr_XRBackendNative_XRenderRectanglesNative;
+	Java_sun_java2d_xr_XRBackendNative_XRSetTransformNative;
+	Java_sun_java2d_xr_XRBackendNative_XRCreateLinearGradientPaintNative;
+	Java_sun_java2d_xr_XRBackendNative_XRCreateRadialGradientPaintNative;
+	Java_sun_java2d_xr_XRBackendNative_setFilter;
+	Java_sun_java2d_xr_XRBackendNative_XRSetClipNative;
+	Java_sun_java2d_xr_XRBackendNative_putMaskNative;
+	Java_sun_java2d_xr_XRBackendNative_XRAddGlyphsNative;
+	Java_sun_java2d_xr_XRBackendNative_XRFreeGlyphsNative;
+	Java_sun_java2d_xr_XRBackendNative_XRenderCreateGlyphSetNative;
+	Java_sun_java2d_xr_XRBackendNative_XRenderCompositeTextNative;
+	Java_sun_java2d_xr_XRBackendNative_setGCMode;
+	Java_sun_java2d_xr_XRBackendNative_GCRectanglesNative;
+	Java_sun_java2d_xr_XRBackendNative_renderCompositeTrapezoidsNative;
 
         Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1arrow;
         Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1box;
@@ -397,8 +429,8 @@
         Java_com_sun_java_swing_plaf_gtk_GTKStyle_nativeGetClassValue;
         Java_com_sun_java_swing_plaf_gtk_GTKStyle_nativeGetPangoFontName;
 
-	Java_sun_awt_X11_GtkFileDialogPeer_run;
-	Java_sun_awt_X11_GtkFileDialogPeer_quit;
+        Java_sun_awt_X11_GtkFileDialogPeer_run;
+        Java_sun_awt_X11_GtkFileDialogPeer_quit;
 
 	Java_sun_print_CUPSPrinter_initIDs;
 	Java_sun_print_CUPSPrinter_getCupsServer;
--- a/make/tools/manifest.mf	Wed Jun 16 12:40:22 2010 -0700
+++ b/make/tools/manifest.mf	Wed Jun 16 14:07:47 2010 -0700
@@ -1,7 +1,7 @@
 Manifest-Version: 1.0
 Specification-Title: Java Platform API Specification
 Specification-Version: 1.6
-Specification-Vendor: Sun Microsystems, Inc.
+Specification-Vendor: Oracle
 Implementation-Title: Java Runtime Environment
 Implementation-Version: @@RELEASE@@
-Implementation-Vendor: Sun Microsystems, Inc.
+Implementation-Vendor: @@COMPANY_NAME@@
--- a/make/tools/sharing/classlist.linux	Wed Jun 16 12:40:22 2010 -0700
+++ b/make/tools/sharing/classlist.linux	Wed Jun 16 14:07:47 2010 -0700
@@ -2259,7 +2259,6 @@
 com/sun/java/swing/plaf/gtk/GTKLookAndFeel$2
 com/sun/java/swing/plaf/gtk/GTKLookAndFeel$3
 javax/swing/plaf/synth/SynthPanelUI
-sun/swing/plaf/synth/SynthUI
 javax/swing/plaf/synth/SynthConstants
 javax/swing/plaf/synth/SynthContext
 javax/swing/plaf/synth/SynthBorder
@@ -2271,6 +2270,7 @@
 javax/swing/plaf/synth/SynthMenuBarUI
 javax/swing/plaf/synth/DefaultMenuLayout
 javax/swing/plaf/synth/SynthMenuUI
+javax/swing/plaf/synth/SynthUI
 com/sun/java/swing/plaf/gtk/GTKIconFactory
 com/sun/java/swing/plaf/gtk/GTKIconFactory$MenuArrowIcon
 com/sun/java/swing/plaf/gtk/GTKIconFactory$DelegatingIcon
--- a/make/tools/sharing/classlist.solaris	Wed Jun 16 12:40:22 2010 -0700
+++ b/make/tools/sharing/classlist.solaris	Wed Jun 16 14:07:47 2010 -0700
@@ -2360,7 +2360,6 @@
 com/sun/java/swing/plaf/gtk/GTKLookAndFeel$2
 com/sun/java/swing/plaf/gtk/GTKLookAndFeel$3
 javax/swing/plaf/synth/SynthPanelUI
-sun/swing/plaf/synth/SynthUI
 javax/swing/plaf/synth/SynthConstants
 javax/swing/plaf/synth/SynthContext
 javax/swing/plaf/synth/SynthBorder
@@ -2373,6 +2372,7 @@
 javax/swing/plaf/synth/SynthMenuBarUI
 javax/swing/plaf/synth/DefaultMenuLayout
 javax/swing/plaf/synth/SynthMenuUI
+javax/swing/plaf/synth/SynthUI
 com/sun/java/swing/plaf/gtk/GTKIconFactory
 com/sun/java/swing/plaf/gtk/GTKIconFactory$MenuArrowIcon
 com/sun/java/swing/plaf/gtk/GTKIconFactory$DelegatingIcon
--- a/src/share/classes/com/sun/inputmethods/internal/indicim/DevanagariInputMethodDescriptor.java	Wed Jun 16 12:40:22 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * (C) Copyright IBM Corp. 2000 - All Rights Reserved
- *
- * The original version of this source code and documentation is
- * copyrighted and owned by IBM. These materials are provided
- * under terms of a License Agreement between IBM and Sun.
- * This technology is protected by multiple US and International
- * patents. This notice and attribution to IBM may not be removed.
- *
- */
-
-package com.sun.inputmethods.internal.indicim;
-
-import java.awt.Image;
-import java.awt.im.spi.InputMethod;
-import java.awt.im.spi.InputMethodDescriptor;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-public class DevanagariInputMethodDescriptor implements InputMethodDescriptor {
-
-    static final Locale HINDI = new Locale("hi", "IN");
-
-    public DevanagariInputMethodDescriptor() {
-    }
-
-    /**
-     * @see java.awt.im.spi.InputMethodDescriptor#getAvailableLocales
-     */
-    public Locale[] getAvailableLocales() {
-        return new Locale[] { HINDI };
-    }
-
-    /**
-     * @see java.awt.im.spi.InputMethodDescriptor#hasDynamicLocaleList
-     */
-    public boolean hasDynamicLocaleList() {
-        return false;
-    }
-
-    /**
-     * @see java.awt.im.spi.InputMethodDescriptor#getInputMethodDisplayName
-     */
-    public synchronized String getInputMethodDisplayName(Locale inputLocale, Locale displayLanguage) {
-        try {
-            ResourceBundle resources = ResourceBundle.getBundle("com.sun.inputmethods.internal.indicim.resources.DisplayNames", displayLanguage);
-            return resources.getString("DisplayName.Devanagari");
-        } catch (MissingResourceException mre) {
-            return "Devanagari Input Method";
-        }
-    }
-
-    /**
-     * @see java.awt.im.spi.InputMethodDescriptor#getInputMethodIcon
-     */
-    public Image getInputMethodIcon(Locale inputLocale) {
-        return null;
-    }
-
-    /**
-     * @see java.awt.im.spi.InputMethodDescriptor#createInputMethod
-     */
-    public InputMethod createInputMethod() throws Exception {
-        IndicInputMethodImpl impl = new IndicInputMethodImpl(
-            DevanagariTables.keyboardMap,
-            DevanagariTables.joinWithNukta,
-            DevanagariTables.nuktaForm,
-            DevanagariTables.substitutionTable);
-
-        return new IndicInputMethod(HINDI, impl);
-    }
-
-    public String toString() {
-        return getClass().getName();
-    }
-}
--- a/src/share/classes/com/sun/inputmethods/internal/indicim/DevanagariTables.java	Wed Jun 16 12:40:22 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,255 +0,0 @@
-/*
- * Copyright (c) 2002, 2003, Oracle and/or its affiliates. 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * (C) Copyright IBM Corp. 2000 - All Rights Reserved
- *
- * The original version of this source code and documentation is
- * copyrighted and owned by IBM. These materials are provided
- * under terms of a License Agreement between IBM and Sun.
- * This technology is protected by multiple US and International
- * patents. This notice and attribution to IBM may not be removed.
- *
- */
-
-package com.sun.inputmethods.internal.indicim;
-
-class DevanagariTables {
-
-    static final char[] keyboardMap = {
-    /* 00 */ '\u0000',
-    /* 01 */ '\u0001',
-    /* 02 */ '\u0002',
-    /* 03 */ '\u0003',
-    /* 04 */ '\u0004',
-    /* 05 */ '\u0005',
-    /* 06 */ '\u0006',
-    /* 07 */ '\u0007',
-    /* 08 */ '\u0008',
-    /* 09 */ '\u0009',
-    /* 0A */ '\012',
-    /* 0B */ '\u000B',
-    /* 0C */ '\u000C',
-    /* 0D */ '\015',
-    /* 0E */ '\u000E',
-    /* 0F */ '\u000F',
-    /* 10 */ '\u0010',
-    /* 11 */ '\u0011',
-    /* 12 */ '\u0012',
-    /* 13 */ '\u0013',
-    /* 14 */ '\u0014',
-    /* 15 */ '\u0015',
-    /* 16 */ '\u0016',
-    /* 17 */ '\u0017',
-    /* 18 */ '\u0018',
-    /* 19 */ '\u0019',
-    /* 1A */ '\u001A',
-    /* 1B */ '\u001B',
-    /* 1C */ '\u001C',
-    /* 1D */ '\u001D',
-    /* 1E */ '\u001E',
-    /* 1F */ '\u001F',
-    /* 20 */ '\u0020',
-    /* 21 */ '\u090D',   // '!'
-    /* 22 */ '\u0920',   // '"'
-    /* 23 */ '\uFF00',   // '#'
-    /* 24 */ '\uFF01',   // '$'
-    /* 25 */ '\uFF02',   // '%'
-    /* 26 */ '\uFF04',   // '&'
-    /* 27 */ '\u091F',   // '''
-    /* 28 */ '\u0028',   // '('
-    /* 29 */ '\u0029',   // ')'
-    /* 2A */ '\uFF05',   // '*'
-    /* 2B */ '\u090B',   // '+'
-    /* 2C */ '\u002C',   // ','
-    /* 2D */ '\u002D',   // '-'
-    /* 2E */ '\u002E',   // '.'
-    /* 2F */ '\u092F',   // '/'
-    /* 30 */ '\u0966',   // '0'
-    /* 31 */ '\u0967',   // '1'
-    /* 32 */ '\u0968',   // '2'
-    /* 33 */ '\u0969',   // '3'
-    /* 34 */ '\u096A',   // '4'
-    /* 35 */ '\u096B',   // '5'
-    /* 36 */ '\u096C',   // '6'
-    /* 37 */ '\u096D',   // '7'
-    /* 38 */ '\u096E',   // '8'
-    /* 39 */ '\u096F',   // '9'
-    /* 3A */ '\u091B',   // ':'
-    /* 3B */ '\u091A',   // ';'
-    /* 3C */ '\u0937',   // '<'
-    /* 3D */ '\u0943',   // '='
-    /* 3E */ '\u0964',   // '>'
-    /* 3F */ '\u095F',   // '?'
-    /* 40 */ '\u0945',   // '@'
-    /* 41 */ '\u0913',   // 'A'
-    /* 42 */ '\u0934',   // 'B'
-    /* 43 */ '\u0923',   // 'C'
-    /* 44 */ '\u0905',   // 'D'
-    /* 45 */ '\u0906',   // 'E'
-    /* 46 */ '\u0907',   // 'F'
-    /* 47 */ '\u0909',   // 'G'
-    /* 48 */ '\u092B',   // 'H'
-    /* 49 */ '\u0918',   // 'I'
-    /* 4A */ '\u0931',   // 'J'
-    /* 4B */ '\u0916',   // 'K'
-    /* 4C */ '\u0925',   // 'L'
-    /* 4D */ '\u0936',   // 'M'
-    /* 4E */ '\u0933',   // 'N'
-    /* 4F */ '\u0927',   // 'O'
-    /* 50 */ '\u091D',   // 'P'
-    /* 51 */ '\u0914',   // 'Q'
-    /* 52 */ '\u0908',   // 'R'
-    /* 53 */ '\u090F',   // 'S'
-    /* 54 */ '\u090A',   // 'T'
-    /* 55 */ '\u0919',   // 'U'
-    /* 56 */ '\u0929',   // 'V'
-    /* 57 */ '\u0910',   // 'W'
-    /* 58 */ '\u0901',   // 'X'
-    /* 59 */ '\u092D',   // 'Y'
-    /* 5A */ '\u090E',   // 'Z'
-    /* 5B */ '\u0921',   // '['
-    /* 5C */ '\u0949',   // '\'
-    /* 5D */ '\u093C',   // ']'
-    /* 5E */ '\uFF03',   // '^'
-    /* 5F */ '\u0903',   // '_'
-    /* 60 */ '\u094A',   // '`'
-    /* 61 */ '\u094B',   // 'a'
-    /* 62 */ '\u0935',   // 'b'
-    /* 63 */ '\u092E',   // 'c'
-    /* 64 */ '\u094D',   // 'd'
-    /* 65 */ '\u093E',   // 'e'
-    /* 66 */ '\u093F',   // 'f'
-    /* 67 */ '\u0941',   // 'g'
-    /* 68 */ '\u092A',   // 'h'
-    /* 69 */ '\u0917',   // 'i'
-    /* 6A */ '\u0930',   // 'j'
-    /* 6B */ '\u0915',   // 'k'
-    /* 6C */ '\u0924',   // 'l'
-    /* 6D */ '\u0938',   // 'm'
-    /* 6E */ '\u0932',   // 'n'
-    /* 6F */ '\u0926',   // 'o'
-    /* 70 */ '\u091C',   // 'p'
-    /* 71 */ '\u094C',   // 'q'
-    /* 72 */ '\u0940',   // 'r'
-    /* 73 */ '\u0947',   // 's'
-    /* 74 */ '\u0942',   // 't'
-    /* 75 */ '\u0939',   // 'u'
-    /* 76 */ '\u0928',   // 'v'
-    /* 77 */ '\u0948',   // 'w'
-    /* 78 */ '\u0902',   // 'x'
-    /* 79 */ '\u092C',   // 'y'
-    /* 7A */ '\u0946',   // 'z'
-    /* 7B */ '\u0922',   // '{'
-    /* 7C */ '\u0911',   // '|'
-    /* 7D */ '\u091E',   // '}'
-    /* 7E */ '\u0912',   // '~'
-    /* 7F */ '\u007F'    //
-};
-
-    // the character substitutions for the meta characters.
-    static final char[] RA_SUB = {'\u094D', '\u0930'};
-    static final char[] RA_SUP = {'\u0930', '\u094D'};
-    static final char[] CONJ_JA_NYA = {'\u091C', '\u094D', '\u091E'};
-    static final char[] CONJ_TA_RA = {'\u0924', '\u094D', '\u0930'};
-    static final char[] CONJ_KA_SSA = {'\u0915', '\u094D', '\u0937'};
-    static final char[] CONJ_SHA_RA = {'\u0936', '\u094D', '\u0930'};
-
-    static final char[][] substitutionTable = {
-        RA_SUB, RA_SUP, CONJ_JA_NYA, CONJ_TA_RA, CONJ_KA_SSA, CONJ_SHA_RA
-    };
-
-    // The following characters followed by Nukta should be replaced
-    // by the corresponding character as defined in ISCII91
-    static final char SIGN_CANDRABINDU      = '\u0901';
-    static final char LETTER_I              = '\u0907';
-    static final char LETTER_II             = '\u0908';
-    static final char LETTER_VOCALIC_R      = '\u090B';
-    static final char LETTER_KA             = '\u0915';
-    static final char LETTER_KHA            = '\u0916';
-    static final char LETTER_GA             = '\u0917';
-    static final char LETTER_JA             = '\u091C';
-    static final char LETTER_DDA            = '\u0921';
-    static final char LETTER_DDHA           = '\u0922';
-    static final char LETTER_PHA            = '\u092B';
-    static final char VOWEL_SIGN_I          = '\u093F';
-    static final char VOWEL_SIGN_II         = '\u0940';
-    static final char VOWEL_SIGN_VOCALIC_R  = '\u0943';
-    static final char DANDA                 = '\u0964';
-
-   // The follwing characters replace the above characters followed by Nukta. These
-   // are defined in one to one correspondence order.
-    static final char SIGN_OM               = '\u0950';
-    static final char LETTER_VOCALIC_L      = '\u090C';
-    static final char LETTER_VOCALIC_LL     = '\u0961';
-    static final char LETTER_VOCALIC_RR     = '\u0960';
-    static final char LETTER_QA             = '\u0958';
-    static final char LETTER_KHHA           = '\u0959';
-    static final char LETTER_GHHA           = '\u095A';
-    static final char LETTER_ZA             = '\u095B';
-    static final char LETTER_DDDHA          = '\u095C';
-    static final char LETTER_RHA            = '\u095D';
-    static final char LETTER_FA             = '\u095E';
-    static final char VOWEL_SIGN_VOCALIC_L  = '\u0962';
-    static final char VOWEL_SIGN_VOCALIC_LL = '\u0963';
-    static final char VOWEL_SIGN_VOCALIC_RR = '\u0944';
-    static final char SIGN_AVAGRAHA         = '\u093D';
-
-    static final char[] joinWithNukta = {
-        SIGN_CANDRABINDU,
-        LETTER_I,
-        LETTER_II,
-        LETTER_VOCALIC_R ,
-        LETTER_KA,
-        LETTER_KHA,
-        LETTER_GA,
-        LETTER_JA,
-        LETTER_DDA,
-        LETTER_DDHA,
-        LETTER_PHA,
-        VOWEL_SIGN_I,
-        VOWEL_SIGN_II,
-        VOWEL_SIGN_VOCALIC_R,
-        DANDA
-    };
-
-    static final char[] nuktaForm = {
-        SIGN_OM,
-        LETTER_VOCALIC_L,
-        LETTER_VOCALIC_LL,
-        LETTER_VOCALIC_RR,
-        LETTER_QA,
-        LETTER_KHHA,
-        LETTER_GHHA,
-        LETTER_ZA,
-        LETTER_DDDHA,
-        LETTER_RHA,
-        LETTER_FA,
-        VOWEL_SIGN_VOCALIC_L,
-        VOWEL_SIGN_VOCALIC_LL,
-        VOWEL_SIGN_VOCALIC_RR,
-        SIGN_AVAGRAHA
-    };
-}
--- a/src/share/classes/com/sun/inputmethods/internal/indicim/IndicInputMethod.java	Wed Jun 16 12:40:22 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,436 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * (C) Copyright IBM Corp. 2000 - All Rights Reserved
- *
- * The original version of this source code and documentation is
- * copyrighted and owned by IBM. These materials are provided
- * under terms of a License Agreement between IBM and Sun.
- * This technology is protected by multiple US and International
- * patents. This notice and attribution to IBM may not be removed.
- *
- */
-
-package com.sun.inputmethods.internal.indicim;
-
-import java.awt.im.spi.InputMethod;
-import java.awt.im.spi.InputMethodContext;
-
-import java.awt.AWTEvent;
-import java.awt.Rectangle;
-
-import java.awt.event.KeyEvent;
-import java.awt.event.MouseEvent;
-
-import java.lang.Character.Subset;
-
-import java.util.Locale;
-
-class IndicInputMethod implements InputMethod {
-
-    private IndicInputMethodImpl impl;
-    private Locale locale;
-
-    IndicInputMethod(Locale theLocale, IndicInputMethodImpl theImplementation) {
-        locale = theLocale;
-        impl = theImplementation;
-    }
-
-    /**
-     * Sets the input method context, which is used to dispatch input method
-     * events to the client component and to request information from
-     * the client component.
-     * <p>
-     * This method is called once immediately after instantiating this input
-     * method.
-     *
-     * @param context the input method context for this input method
-     * @exception NullPointerException if <code>context</code> is null
-     */
-    public void setInputMethodContext(InputMethodContext context) {
-
-        impl.setInputMethodContext(context);
-    }
-
-    /**
-     * Attempts to set the input locale. If the input method supports the
-     * desired locale, it changes its behavior to support input for the locale
-     * and returns true.
-     * Otherwise, it returns false and does not change its behavior.
-     * <p>
-     * This method is called
-     * <ul>
-     * <li>by {@link java.awt.im.InputContext#selectInputMethod InputContext.selectInputMethod},
-     * <li>when switching to this input method through the user interface if the user
-     *     specified a locale or if the previously selected input method's
-     *     {@link java.awt.im.spi.InputMethod#getLocale getLocale} method
-     *     returns a non-null value.
-     * </ul>
-     *
-     * @param locale locale to input
-     * @return whether the specified locale is supported
-     * @exception NullPointerException if <code>locale</code> is null
-     */
-    public boolean setLocale(Locale locale) {
-
-        if (locale.getLanguage().equals(this.locale.getLanguage())) {
-            //System.out.println("returning true for locale " + locale);
-            return true;
-        }
-        else {
-            //System.out.println("returning false for locale " + locale);
-            return false;
-        }
-    }
-
-    /**
-     * Returns the current input locale. Might return null in exceptional cases.
-     * <p>
-     * This method is called
-     * <ul>
-     * <li>by {@link java.awt.im.InputContext#getLocale InputContext.getLocale} and
-     * <li>when switching from this input method to a different one through the
-     *     user interface.
-     * </ul>
-     *
-     * @return the current input locale, or null
-     */
-    public Locale getLocale() {
-
-        return locale;
-    }
-
-    /**
-     * Sets the subsets of the Unicode character set that this input method
-     * is allowed to input. Null may be passed in to indicate that all
-     * characters are allowed.
-     * <p>
-     * This method is called
-     * <ul>
-     * <li>immediately after instantiating this input method,
-     * <li>when switching to this input method from a different one, and
-     * <li>by {@link java.awt.im.InputContext#setCharacterSubsets InputContext.setCharacterSubsets}.
-     * </ul>
-     *
-     * @param subsets the subsets of the Unicode character set from which
-     * characters may be input
-     */
-    public void setCharacterSubsets(Subset[] subsets) {
-    }
-
-    /**
-     * Enables or disables this input method for composition,
-     * depending on the value of the parameter <code>enable</code>.
-     * <p>
-     * An input method that is enabled for composition interprets incoming
-     * events for both composition and control purposes, while a
-     * disabled input method does not interpret events for composition.
-     * Note however that events are passed on to the input method regardless
-     * whether it is enabled or not, and that an input method that is disabled
-     * for composition may still interpret events for control purposes,
-     * including to enable or disable itself for composition.
-     * <p>
-     * This method is called
-     * <ul>
-     * <li>by {@link java.awt.im.InputContext#setCompositionEnabled InputContext.setCompositionEnabled},
-     * <li>when switching to this input method from a different one using the
-     *     user interface or
-     *     {@link java.awt.im.InputContext#selectInputMethod InputContext.selectInputMethod},
-     *     if the previously selected input method's
-     *     {@link java.awt.im.spi.InputMethod#isCompositionEnabled isCompositionEnabled}
-     *     method returns without throwing an exception.
-     * </ul>
-     *
-     * @param enable whether to enable the input method for composition
-     * @throws UnsupportedOperationException if this input method does not
-     * support the enabling/disabling operation
-     * @see #isCompositionEnabled
-     */
-    public void setCompositionEnabled(boolean enable) {
-
-        throw new UnsupportedOperationException();
-    }
-
-    /**
-     * Determines whether this input method is enabled.
-     * An input method that is enabled for composition interprets incoming
-     * events for both composition and control purposes, while a
-     * disabled input method does not interpret events for composition.
-     * <p>
-     * This method is called
-     * <ul>
-     * <li>by {@link java.awt.im.InputContext#isCompositionEnabled InputContext.isCompositionEnabled} and
-     * <li>when switching from this input method to a different one using the
-     *     user interface or
-     *     {@link java.awt.im.InputContext#selectInputMethod InputContext.selectInputMethod}.
-     * </ul>
-     *
-     * @return <code>true</code> if this input method is enabled for
-     * composition; <code>false</code> otherwise.
-     * @throws UnsupportedOperationException if this input method does not
-     * support checking whether it is enabled for composition
-     * @see #setCompositionEnabled
-     */
-    public boolean isCompositionEnabled() {
-
-        return true;
-    }
-
-    /**
-     * Starts the reconversion operation. The input method obtains the
-     * text to be reconverted from the current client component using the
-     * {@link java.awt.im.InputMethodRequests#getSelectedText InputMethodRequests.getSelectedText}
-     * method. It can use other <code>InputMethodRequests</code>
-     * methods to request additional information required for the
-     * reconversion operation. The composed and committed text
-     * produced by the operation is sent to the client component as a
-     * sequence of <code>InputMethodEvent</code>s. If the given text
-     * cannot be reconverted, the same text should be sent to the
-     * client component as committed text.
-     * <p>
-     * This method is called by
-     * {@link java.awt.im.InputContext#reconvert() InputContext.reconvert}.
-     *
-     * @throws UnsupportedOperationException if the input method does not
-     * support the reconversion operation.
-     */
-    public void reconvert() {
-
-        throw new UnsupportedOperationException("This input method does not reconvert.");
-    }
-
-    /**
-     * Dispatches the event to the input method. If input method support is
-     * enabled for the focussed component, incoming events of certain types
-     * are dispatched to the current input method for this component before
-     * they are dispatched to the component's methods or event listeners.
-     * The input method decides whether it needs to handle the event. If it
-     * does, it also calls the event's <code>consume</code> method; this
-     * causes the event to not get dispatched to the component's event
-     * processing methods or event listeners.
-     * <p>
-     * Events are dispatched if they are instances of InputEvent or its
-     * subclasses.
-     * This includes instances of the AWT classes KeyEvent and MouseEvent.
-     * <p>
-     * This method is called by {@link java.awt.im.InputContext#dispatchEvent InputContext.dispatchEvent}.
-     *
-     * @param event the event being dispatched to the input method
-     * @exception NullPointerException if <code>event</code> is null
-     */
-    public void dispatchEvent(AWTEvent event) {
-
-        if (event instanceof KeyEvent) {
-
-            KeyEvent keyEvent = (KeyEvent) event;
-            if (event.getID() == KeyEvent.KEY_TYPED) {
-                impl.handleKeyTyped(keyEvent);
-            }
-            //System.out.println("handled event " + event);
-        }
-        else {
-            //System.out.println("did not handle event " + event);
-        }
-    }
-
-    /**
-     * Notifies this input method of changes in the client window
-     * location or state. This method is called while this input
-     * method is the current input method of its input context and
-     * notifications for it are enabled (see {@link
-     * InputMethodContext#enableClientWindowNotification
-     * InputMethodContext.enableClientWindowNotification}). Calls
-     * to this method are temporarily suspended if the input context's
-     * {@link java.awt.im.InputContext#removeNotify removeNotify}
-     * method is called, and resume when the input method is activated
-     * for a new client component. It is called in the following
-     * situations:
-     * <ul>
-     * <li>
-     * when the window containing the current client component changes
-     * in location, size, visibility, iconification state, or when the
-     * window is closed.</li>
-     * <li>
-     * from <code> enableClientWindowNotification(inputMethod,
-     * true)</code> if the current client component exists,</li>
-     * <li>
-     * when activating the input method for the first time after it
-     * called
-     * <code>enableClientWindowNotification(inputMethod,
-     * true)</code> if during the call no current client component was
-     * available,</li>
-     * <li>
-     * when activating the input method for a new client component
-     * after the input context's removeNotify method has been
-     * called.</li>
-     * </ul>
-     * @param bounds client window's {@link
-     * java.awt.Component#getBounds bounds} on the screen; or null if
-     * the client window is iconified or invisible
-     */
-    public void notifyClientWindowChange(Rectangle bounds) {
-    }
-
-    /**
-     * Activates the input method for immediate input processing.
-     * <p>
-     * If an input method provides its own windows, it should make sure
-     * at this point that all necessary windows are open and visible.
-     * <p>
-     * This method is called
-     * <ul>
-     * <li>by {@link java.awt.im.InputContext#dispatchEvent InputContext.dispatchEvent}
-     *     when a client component receives a FOCUS_GAINED event,
-     * <li>when switching to this input method from a different one using the
-     *     user interface or
-     *     {@link java.awt.im.InputContext#selectInputMethod InputContext.selectInputMethod}.
-     * </ul>
-     * The method is only called when the input method is inactive.
-     * A newly instantiated input method is assumed to be inactive.
-     */
-    public void activate() {
-        //System.out.println("activated");
-    }
-
-    /**
-     * Deactivates the input method.
-     * The isTemporary argument has the same meaning as in
-     * {@link java.awt.event.FocusEvent#isTemporary FocusEvent.isTemporary}.
-     * <p>
-     * If an input method provides its own windows, only windows that relate
-     * to the current composition (such as a lookup choice window) should be
-     * closed at this point.
-     * It is possible that the input method will be immediately activated again
-     * for a different client component, and closing and reopening more
-     * persistent windows (such as a control panel) would create unnecessary
-     * screen flicker.
-     * Before an instance of a different input method class is activated,
-     * {@link #hideWindows} is called on the current input method.
-     * <p>
-     * This method is called
-     * <ul>
-     * <li>by {@link java.awt.im.InputContext#dispatchEvent InputContext.dispatchEvent}
-     *     when a client component receives a FOCUS_LOST event,
-     * <li>when switching from this input method to a different one using the
-     *     user interface or
-     *     {@link java.awt.im.InputContext#selectInputMethod InputContext.selectInputMethod},
-     * <li>before {@link #removeNotify removeNotify} if the current client component is
-     *     removed.
-     * </ul>
-     * The method is only called when the input method is active.
-     *
-     * @param isTemporary whether the focus change is temporary
-     */
-    public void deactivate(boolean isTemporary) {
-        //System.out.println("deactivated");
-    }
-
-    /**
-     * Closes or hides all windows opened by this input method instance or
-     * its class.
-     * <p>
-     * This method is called
-     * <ul>
-     * <li>before calling {@link #activate activate} on an instance of a different input
-     *     method class,
-     * <li>before calling {@link #dispose dispose} on this input method.
-     * </ul>
-     * The method is only called when the input method is inactive.
-     */
-    public void hideWindows() {
-    }
-
-    /**
-     * Notifies the input method that a client component has been
-     * removed from its containment hierarchy, or that input method
-     * support has been disabled for the component.
-     * <p>
-     * This method is called by {@link java.awt.im.InputContext#removeNotify InputContext.removeNotify}.
-     * <p>
-     * The method is only called when the input method is inactive.
-     */
-    public void removeNotify() {
-    }
-
-    /**
-     * Ends any input composition that may currently be going on in this
-     * context. Depending on the platform and possibly user preferences,
-     * this may commit or delete uncommitted text. Any changes to the text
-     * are communicated to the active component using an input method event.
-     *
-     * <p>
-     * A text editing component may call this in a variety of situations,
-     * for example, when the user moves the insertion point within the text
-     * (but outside the composed text), or when the component's text is
-     * saved to a file or copied to the clipboard.
-     * <p>
-     * This method is called
-     * <ul>
-     * <li>by {@link java.awt.im.InputContext#endComposition InputContext.endComposition},
-     * <li>by {@link java.awt.im.InputContext#dispatchEvent InputContext.dispatchEvent}
-     *     when switching to a different client component
-     * <li>when switching from this input method to a different one using the
-     *     user interface or
-     *     {@link java.awt.im.InputContext#selectInputMethod InputContext.selectInputMethod}.
-     * </ul>
-     */
-    public void endComposition() {
-
-        impl.endComposition();
-    }
-
-    /**
-     * Disposes of the input method and releases the resources used by it.
-     * In particular, the input method should dispose windows and close files that are no
-     * longer needed.
-     * <p>
-     * This method is called by {@link java.awt.im.InputContext#dispose InputContext.dispose}.
-     * <p>
-     * The method is only called when the input method is inactive.
-     * No method of this interface is called on this instance after dispose.
-     */
-    public void dispose() {
-    }
-
-    /**
-     * Returns a control object from this input method, or null. A
-     * control object provides methods that control the behavior of the
-     * input method or obtain information from the input method. The type
-     * of the object is an input method specific class. Clients have to
-     * compare the result against known input method control object
-     * classes and cast to the appropriate class to invoke the methods
-     * provided.
-     * <p>
-     * This method is called by
-     * {@link java.awt.im.InputContext#getInputMethodControlObject InputContext.getInputMethodControlObject}.
-     *
-     * @return a control object from this input method, or null
-     */
-    public Object getControlObject() {
-
-        return null;
-    }
-}
--- a/src/share/classes/com/sun/inputmethods/internal/indicim/IndicInputMethodImpl.java	Wed Jun 16 12:40:22 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,475 +0,0 @@
-/*
- * Copyright (c) 2002, 2004, Oracle and/or its affiliates. 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * (C) Copyright IBM Corp. 2000 - All Rights Reserved
- *
- * The original version of this source code and documentation is
- * copyrighted and owned by IBM. These materials are provided
- * under terms of a License Agreement between IBM and Sun.
- * This technology is protected by multiple US and International
- * patents. This notice and attribution to IBM may not be removed.
- *
- */
-
-package com.sun.inputmethods.internal.indicim;
-
-import java.awt.im.spi.InputMethodContext;
-
-import java.awt.event.KeyEvent;
-import java.awt.event.InputMethodEvent;
-import java.awt.font.TextAttribute;
-import java.awt.font.TextHitInfo;
-
-import java.text.AttributedCharacterIterator;
-
-import java.util.Hashtable;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-class IndicInputMethodImpl {
-
-    protected char[] KBD_MAP;
-
-    private static final char SUBSTITUTION_BASE = '\uff00';
-
-    // Indexed by map value - SUBSTITUTION_BASE
-    protected char[][] SUBSTITUTION_TABLE;
-
-    // Invalid character.
-    private static final char INVALID_CHAR              = '\uffff';
-
-    // Unmapped versions of some interesting characters.
-    private static final char KEY_SIGN_VIRAMA           = '\u0064'; // or just 'd'??
-    private static final char KEY_SIGN_NUKTA            = '\u005d';  // or just ']'??
-
-    // Two succeeding viramas are replaced by one virama and one ZWNJ.
-    // Viram followed by Nukta is replaced by one VIRAMA and one ZWJ
-    private static final char ZWJ                       = '\u200d';
-    private static final char ZWNJ                      = '\u200c';
-
-    // Backspace
-    private static final char BACKSPACE                 = '\u0008';
-
-    // Sorted list of characters which can be followed by Nukta
-    protected char[] JOIN_WITH_NUKTA;
-
-    // Nukta form of the above characters
-    protected char[] NUKTA_FORM;
-
-    private int log2;
-    private int power;
-    private int extra;
-
-    // cached TextHitInfo. Only one type of TextHitInfo is required.
-    private static final TextHitInfo ZERO_TRAILING_HIT_INFO = TextHitInfo.trailing(0);
-
-    /**
-     * Returns the index of the given character in the JOIN_WITH_NUKTA array.
-     * If character is not found, -1 is returned.
-     */
-    private int nuktaIndex(char ch) {
-
-        if (JOIN_WITH_NUKTA == null) {
-            return -1;
-        }
-
-        int probe = power;
-        int index = 0;
-
-        if (JOIN_WITH_NUKTA[extra] <= ch) {
-            index = extra;
-        }
-
-        while (probe > (1 << 0)) {
-            probe >>= 1;
-
-            if (JOIN_WITH_NUKTA[index + probe] <= ch) {
-                index += probe;
-            }
-        }
-
-        if (JOIN_WITH_NUKTA[index] != ch) {
-            index = -1;
-        }
-
-        return index;
-    }
-
-    /**
-     * Returns the equivalent character for hindi locale.
-     * @param originalChar The original character.
-     */
-    private char getMappedChar( char originalChar )
-    {
-        if (originalChar <= KBD_MAP.length) {
-            return KBD_MAP[originalChar];
-        }
-
-        return originalChar;
-    }//getMappedChar()
-
-    // Array used to hold the text to be sent.
-    // If the last character was not committed it is stored in text[0].
-    // The variable totalChars give an indication of whether the last
-    // character was committed or not. If at any time ( but not within a
-    // a call to dispatchEvent ) totalChars is not equal to 0 ( it can
-    // only be 1 otherwise ) the last character was not committed.
-    private char [] text = new char[4];
-
-    // this is always 0 before and after call to dispatchEvent. This character assumes
-    // significance only within a call to dispatchEvent.
-    private int committedChars = 0;// number of committed characters
-
-    // the total valid characters in variable text currently.
-    private int totalChars = 0;//number of total characters ( committed + composed )
-
-    private boolean lastCharWasVirama = false;
-
-    private InputMethodContext context;
-
-    //
-    // Finds the high bit by binary searching
-    // through the bits in n.
-    //
-    private static byte highBit(int n)
-    {
-        if (n <= 0) {
-            return -32;
-        }
-
-        byte bit = 0;
-
-        if (n >= 1 << 16) {
-            n >>= 16;
-            bit += 16;
-        }
-
-        if (n >= 1 << 8) {
-            n >>= 8;
-            bit += 8;
-        }
-
-        if (n >= 1 << 4) {
-            n >>= 4;
-            bit += 4;
-        }
-
-        if (n >= 1 << 2) {
-            n >>= 2;
-            bit += 2;
-        }
-
-        if (n >= 1 << 1) {
-            n >>= 1;
-            bit += 1;
-        }
-
-        return bit;
-    }
-
-    IndicInputMethodImpl(char[] keyboardMap, char[] joinWithNukta, char[] nuktaForm,
-                         char[][] substitutionTable) {
-        KBD_MAP = keyboardMap;
-        JOIN_WITH_NUKTA = joinWithNukta;
-        NUKTA_FORM = nuktaForm;
-        SUBSTITUTION_TABLE = substitutionTable;
-
-        if (JOIN_WITH_NUKTA != null) {
-            int log2 = highBit(JOIN_WITH_NUKTA.length);
-
-            power = 1 << log2;
-            extra = JOIN_WITH_NUKTA.length - power;
-        } else {
-            power = extra = 0;
-        }
-
-    }
-
-    void setInputMethodContext(InputMethodContext context) {
-
-        this.context = context;
-    }
-
-    void handleKeyTyped(KeyEvent kevent) {
-
-        char keyChar = kevent.getKeyChar();
-        char currentChar = getMappedChar(keyChar);
-
-        // The Explicit and Soft Halanta case.
-        if ( lastCharWasVirama ) {
-            switch (keyChar) {
-            case KEY_SIGN_NUKTA:
-                currentChar = ZWJ;
-                break;
-            case KEY_SIGN_VIRAMA:
-                currentChar = ZWNJ;
-                break;
-            default:
-            }//endSwitch
-        }//endif
-
-        if (currentChar == INVALID_CHAR) {
-            kevent.consume();
-            return;
-        }
-
-        if (currentChar == BACKSPACE) {
-            lastCharWasVirama = false;
-
-            if (totalChars > 0) {
-                totalChars = committedChars = 0;
-            } else {
-                return;
-            }
-        }
-        else if (keyChar == KEY_SIGN_NUKTA) {
-            int nuktaIndex = nuktaIndex(text[0]);
-
-            if (nuktaIndex != -1) {
-                text[0] = NUKTA_FORM[nuktaIndex];
-            } else {
-                // the last character was committed, commit just Nukta.
-                // Note : the lastChar must have been committed if it is not one of
-                // the characters which combine with nukta.
-                // the state must be totalChars = committedChars = 0;
-                text[totalChars++] = currentChar;
-            }
-
-            committedChars += 1;
-        }
-        else {
-            int nuktaIndex = nuktaIndex(currentChar);
-
-            if (nuktaIndex != -1) {
-                // Commit everything but currentChar
-                text[totalChars++] = currentChar;
-                committedChars = totalChars-1;
-            } else {
-                if (currentChar >= SUBSTITUTION_BASE) {
-                    char[] sub = SUBSTITUTION_TABLE[currentChar - SUBSTITUTION_BASE];
-
-                    System.arraycopy(sub, 0, text, totalChars, sub.length);
-                    totalChars += sub.length;
-                } else {
-                    text[totalChars++] = currentChar;
-                }
-
-                committedChars = totalChars;
-            }
-        }
-
-        ACIText aText = new ACIText( text, 0, totalChars, committedChars );
-        int composedCharLength = totalChars - committedChars;
-        TextHitInfo caret=null,visiblePosition=null;
-        switch( composedCharLength ) {
-            case 0:
-                break;
-            case 1:
-                visiblePosition = caret = ZERO_TRAILING_HIT_INFO;
-                break;
-            default:
-                assert false : "The code should not reach here. There is no case where there can be more than one character pending.";
-        }
-
-        context.dispatchInputMethodEvent(InputMethodEvent.INPUT_METHOD_TEXT_CHANGED,
-                                         aText,
-                                         committedChars,
-                                         caret,
-                                         visiblePosition);
-
-        if (totalChars == 0) {
-            text[0] = INVALID_CHAR;
-        } else {
-            text[0] = text[totalChars - 1];// make text[0] hold the last character
-        }
-
-        lastCharWasVirama =  keyChar == KEY_SIGN_VIRAMA && !lastCharWasVirama;
-
-        totalChars -= committedChars;
-        committedChars = 0;
-        // state now text[0] = last character
-        // totalChars = ( last character committed )? 0 : 1;
-        // committedChars = 0;
-
-        kevent.consume();// prevent client from getting this event.
-    }//dispatchEvent()
-
-    void endComposition() {
-        if( totalChars != 0 ) {// if some character is not committed.
-            ACIText aText = new ACIText( text, 0, totalChars, totalChars );
-            context.dispatchInputMethodEvent( InputMethodEvent.INPUT_METHOD_TEXT_CHANGED,
-                                aText, totalChars, null, null );
-            totalChars = committedChars = 0;
-            text[0] = INVALID_CHAR;
-            lastCharWasVirama = false;
-        }//end if
-    }//endComposition()
-
-    // custom AttributedCharacterIterator -- much lightweight since currently there is no
-    // attribute defined on the text being generated by the input method.
-    private class ACIText implements AttributedCharacterIterator {
-        private char [] text = null;
-        private int committed = 0;
-        private int index = 0;
-
-        ACIText( char [] chArray, int offset, int length, int committed ) {
-            this.text = new char[length];
-            this.committed = committed;
-            System.arraycopy( chArray, offset, text, 0, length );
-        }//c'tor
-
-        // CharacterIterator methods.
-        public char first() {
-            return _setIndex( 0 );
-        }
-
-        public char last() {
-            if( text.length == 0 ) {
-                return _setIndex( text.length );
-            }
-            return _setIndex( text.length - 1 );
-        }
-
-        public char current() {
-            if( index == text.length )
-                return DONE;
-            return text[index];
-        }
-
-        public char next() {
-            if( index == text.length ) {
-                return DONE;
-            }
-            return _setIndex( index + 1 );
-        }
-
-        public char previous() {
-            if( index == 0 )
-                return DONE;
-            return _setIndex( index - 1 );
-        }
-
-        public char setIndex(int position) {
-            if( position < 0 || position > text.length ) {
-                throw new IllegalArgumentException();
-            }
-            return _setIndex( position );
-        }
-
-        public int getBeginIndex() {
-            return 0;
-        }
-
-        public int getEndIndex() {
-            return text.length;
-        }
-
-        public int getIndex() {
-            return index;
-        }
-
-        public Object clone() {
-            try {
-                ACIText clone = (ACIText) super.clone();
-                return clone;
-            } catch (CloneNotSupportedException e) {
-                throw new InternalError();
-            }
-        }
-
-
-        // AttributedCharacterIterator methods.
-        public int getRunStart() {
-            return index >= committed ? committed : 0;
-        }
-
-        public int getRunStart(AttributedCharacterIterator.Attribute attribute) {
-            return (index >= committed &&
-                attribute == TextAttribute.INPUT_METHOD_UNDERLINE) ? committed : 0;
-        }
-
-        public int getRunStart(Set<? extends Attribute> attributes) {
-            return (index >= committed &&
-                    attributes.contains(TextAttribute.INPUT_METHOD_UNDERLINE)) ? committed : 0;
-        }
-
-        public int getRunLimit() {
-            return index < committed ? committed : text.length;
-        }
-
-        public int getRunLimit(AttributedCharacterIterator.Attribute attribute) {
-            return (index < committed &&
-                    attribute == TextAttribute.INPUT_METHOD_UNDERLINE) ? committed : text.length;
-        }
-
-        public int getRunLimit(Set<? extends Attribute> attributes) {
-            return (index < committed &&
-                    attributes.contains(TextAttribute.INPUT_METHOD_UNDERLINE)) ? committed : text.length;
-        }
-
-        public Map getAttributes() {
-            Hashtable result = new Hashtable();
-            if (index >= committed && committed < text.length) {
-                result.put(TextAttribute.INPUT_METHOD_UNDERLINE,
-                           TextAttribute.UNDERLINE_LOW_ONE_PIXEL);
-            }
-            return result;
-        }
-
-        public Object getAttribute(AttributedCharacterIterator.Attribute attribute) {
-            if (index >= committed &&
-                committed < text.length &&
-                attribute == TextAttribute.INPUT_METHOD_UNDERLINE) {
-
-                return TextAttribute.UNDERLINE_LOW_ONE_PIXEL;
-            }
-            return null;
-        }
-
-        public Set getAllAttributeKeys() {
-            HashSet result = new HashSet();
-            if (committed < text.length) {
-                result.add(TextAttribute.INPUT_METHOD_UNDERLINE);
-            }
-            return result;
-        }
-
-        // private methods
-
-        /**
-         * This is always called with valid i ( 0 < i <= text.length )
-         */
-        private char _setIndex( int i ) {
-            index = i;
-            if( i == text.length ) {
-                return DONE;
-            }
-            return text[i];
-        }//_setIndex()
-
-    }//end of inner class
-}
--- a/src/share/classes/com/sun/inputmethods/internal/indicim/java.awt.im.spi.InputMethodDescriptor	Wed Jun 16 12:40:22 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-com.sun.inputmethods.internal.indicim.DevanagariInputMethodDescriptor
--- a/src/share/classes/com/sun/inputmethods/internal/indicim/resources/DisplayNames.properties	Wed Jun 16 12:40:22 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-#
-# Default Input method display names for Indic input methods
-#
-
-DisplayName.Devanagari  = Devanagari Input Method
-
--- a/src/share/classes/com/sun/inputmethods/internal/indicim/resources/DisplayNames_de.properties	Wed Jun 16 12:40:22 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-#
-# Default Input method display names for Indic input methods
-#
-
-DisplayName.Devanagari  = Devanagari Input Method
--- a/src/share/classes/com/sun/inputmethods/internal/indicim/resources/DisplayNames_es.properties	Wed Jun 16 12:40:22 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-#
-# Default Input method display names for Indic input methods
-#
-
-DisplayName.Devanagari  = Devanagari Input Method
--- a/src/share/classes/com/sun/inputmethods/internal/indicim/resources/DisplayNames_fr.properties	Wed Jun 16 12:40:22 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-#
-# Default Input method display names for Indic input methods
-#
-
-DisplayName.Devanagari  = Devanagari Input Method
--- a/src/share/classes/com/sun/inputmethods/internal/indicim/resources/DisplayNames_it.properties	Wed Jun 16 12:40:22 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-#
-# Default Input method display names for Indic input methods
-#
-
-DisplayName.Devanagari  = Devanagari Input Method
--- a/src/share/classes/com/sun/inputmethods/internal/indicim/resources/DisplayNames_ja.properties	Wed Jun 16 12:40:22 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-#
-# Default Input method display names for Indic input methods
-#
-
-DisplayName.Devanagari  = \u30c7\u30fc\u30f4\u30a1\u30ca\u30fc\u30ac\u30ea\u30fc\u30a4\u30f3\u30d7\u30c3\u30c8\u30e1\u30bd\u30c3\u30c9
--- a/src/share/classes/com/sun/inputmethods/internal/indicim/resources/DisplayNames_ko.properties	Wed Jun 16 12:40:22 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-#
-# Default Input method display names for Indic input methods
-#
-
-DisplayName.Devanagari  = Devanagari \uc785\ub825 \uba54\uc18c\ub4dc
--- a/src/share/classes/com/sun/inputmethods/internal/indicim/resources/DisplayNames_sv.properties	Wed Jun 16 12:40:22 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-#
-# Default Input method display names for Indic input methods
-#
-
-DisplayName.Devanagari  = Devanagari Input Method
--- a/src/share/classes/com/sun/inputmethods/internal/indicim/resources/DisplayNames_zh_CN.properties	Wed Jun 16 12:40:22 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-#
-# Default Input method display names for Indic input methods
-#
-
-DisplayName.Devanagari  = Devanagari \u8f93\u5165\u6cd5
--- a/src/share/classes/com/sun/inputmethods/internal/indicim/resources/DisplayNames_zh_TW.properties	Wed Jun 16 12:40:22 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-#
-# Default Input method display names for Indic input methods
-#
-
-DisplayName.Devanagari  = Devanagari \u8f38\u5165\u6cd5
--- a/src/share/classes/com/sun/inputmethods/internal/thaiim/ThaiInputMethod.java	Wed Jun 16 12:40:22 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,437 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- *
- * (C) Copyright IBM Corp. 2000 - All Rights Reserved
- *
- * The original version of this source code and documentation is
- * copyrighted and owned by IBM. These materials are provided
- * under terms of a License Agreement between IBM and Sun.
- * This technology is protected by multiple US and International
- * patents. This notice and attribution to IBM may not be removed.
- *
- */
-
-package com.sun.inputmethods.internal.thaiim;
-
-import java.awt.im.spi.InputMethod;
-import java.awt.im.spi.InputMethodContext;
-
-import java.awt.AWTEvent;
-import java.awt.Rectangle;
-
-import java.awt.event.KeyEvent;
-import java.awt.event.MouseEvent;
-
-import java.lang.Character.Subset;
-
-import java.util.Locale;
-
-class ThaiInputMethod implements InputMethod {
-
-    private ThaiInputMethodImpl impl;
-    private Locale locale;
-
-    ThaiInputMethod(Locale theLocale, ThaiInputMethodImpl theImplementation) {
-        locale = theLocale;
-        impl = theImplementation;
-    }
-
-    /**
-     * Sets the input method context, which is used to dispatch input method
-     * events to the client component and to request information from
-     * the client component.
-     * <p>
-     * This method is called once immediately after instantiating this input
-     * method.
-     *
-     * @param context the input method context for this input method
-     * @exception NullPointerException if <code>context</code> is null
-     */
-    public void setInputMethodContext(InputMethodContext context) {
-
-        impl.setInputMethodContext(context);
-    }
-
-    /**
-     * Attempts to set the input locale. If the input method supports the
-     * desired locale, it changes its behavior to support input for the locale
-     * and returns true.
-     * Otherwise, it returns false and does not change its behavior.
-     * <p>
-     * This method is called
-     * <ul>
-     * <li>by {@link java.awt.im.InputContext#selectInputMethod InputContext.selectInputMethod},
-     * <li>when switching to this input method through the user interface if the user
-     *     specified a locale or if the previously selected input method's
-     *     {@link java.awt.im.spi.InputMethod#getLocale getLocale} method
-     *     returns a non-null value.
-     * </ul>
-     *
-     * @param locale locale to input
-     * @return whether the specified locale is supported
-     * @exception NullPointerException if <code>locale</code> is null
-     */
-    public boolean setLocale(Locale locale) {
-
-        if (locale.getLanguage().equals(this.locale.getLanguage())) {
-            //System.out.println("returning true for locale " + locale);
-            return true;
-        }
-        else {
-            //System.out.println("returning false for locale " + locale);
-            return false;
-        }
-    }
-
-    /**
-     * Returns the current input locale. Might return null in exceptional cases.
-     * <p>
-     * This method is called
-     * <ul>
-     * <li>by {@link java.awt.im.InputContext#getLocale InputContext.getLocale} and
-     * <li>when switching from this input method to a different one through the
-     *     user interface.
-     * </ul>
-     *
-     * @return the current input locale, or null
-     */
-    public Locale getLocale() {
-
-        return locale;
-    }
-
-    /**
-     * Sets the subsets of the Unicode character set that this input method
-     * is allowed to input. Null may be passed in to indicate that all
-     * characters are allowed.
-     * <p>
-     * This method is called
-     * <ul>
-     * <li>immediately after instantiating this input method,
-     * <li>when switching to this input method from a different one, and
-     * <li>by {@link java.awt.im.InputContext#setCharacterSubsets InputContext.setCharacterSubsets}.
-     * </ul>
-     *
-     * @param subsets the subsets of the Unicode character set from which
-     * characters may be input
-     */
-    public void setCharacterSubsets(Subset[] subsets) {
-    }
-
-    /**
-     * Enables or disables this input method for composition,
-     * depending on the value of the parameter <code>enable</code>.
-     * <p>
-     * An input method that is enabled for composition interprets incoming
-     * events for both composition and control purposes, while a
-     * disabled input method does not interpret events for composition.
-     * Note however that events are passed on to the input method regardless
-     * whether it is enabled or not, and that an input method that is disabled
-     * for composition may still interpret events for control purposes,
-     * including to enable or disable itself for composition.
-     * <p>
-     * This method is called
-     * <ul>
-     * <li>by {@link java.awt.im.InputContext#setCompositionEnabled InputContext.setCompositionEnabled},
-     * <li>when switching to this input method from a different one using the
-     *     user interface or
-     *     {@link java.awt.im.InputContext#selectInputMethod InputContext.selectInputMethod},
-     *     if the previously selected input method's
-     *     {@link java.awt.im.spi.InputMethod#isCompositionEnabled isCompositionEnabled}
-     *     method returns without throwing an exception.
-     * </ul>
-     *
-     * @param enable whether to enable the input method for composition
-     * @throws UnsupportedOperationException if this input method does not
-     * support the enabling/disabling operation
-     * @see #isCompositionEnabled
-     */
-    public void setCompositionEnabled(boolean enable) {
-
-        throw new UnsupportedOperationException();
-    }
-
-    /**
-     * Determines whether this input method is enabled.
-     * An input method that is enabled for composition interprets incoming
-     * events for both composition and control purposes, while a
-     * disabled input method does not interpret events for composition.
-     * <p>
-     * This method is called
-     * <ul>
-     * <li>by {@link java.awt.im.InputContext#isCompositionEnabled InputContext.isCompositionEnabled} and
-     * <li>when switching from this input method to a different one using the
-     *     user interface or
-     *     {@link java.awt.im.InputContext#selectInputMethod InputContext.selectInputMethod}.
-     * </ul>
-     *
-     * @return <code>true</code> if this input method is enabled for
-     * composition; <code>false</code> otherwise.
-     * @throws UnsupportedOperationException if this input method does not
-     * support checking whether it is enabled for composition
-     * @see #setCompositionEnabled
-     */
-    public boolean isCompositionEnabled() {
-
-        return true;
-    }
-
-    /**
-     * Starts the reconversion operation. The input method obtains the
-     * text to be reconverted from the current client component using the
-     * {@link java.awt.im.InputMethodRequests#getSelectedText InputMethodRequests.getSelectedText}
-     * method. It can use other <code>InputMethodRequests</code>
-     * methods to request additional information required for the
-     * reconversion operation. The composed and committed text
-     * produced by the operation is sent to the client component as a
-     * sequence of <code>InputMethodEvent</code>s. If the given text
-     * cannot be reconverted, the same text should be sent to the
-     * client component as committed text.
-     * <p>
-     * This method is called by
-     * {@link java.awt.im.InputContext#reconvert() InputContext.reconvert}.
-     *
-     * @throws UnsupportedOperationException if the input method does not
-     * support the reconversion operation.
-     */
-    public void reconvert() {
-
-        throw new UnsupportedOperationException("This input method does not reconvert.");
-    }
-
-    /**
-     * Dispatches the event to the input method. If input method support is
-     * enabled for the focussed component, incoming events of certain types
-     * are dispatched to the current input method for this component before
-     * they are dispatched to the component's methods or event listeners.
-     * The input method decides whether it needs to handle the event. If it
-     * does, it also calls the event's <code>consume</code> method; this
-     * causes the event to not get dispatched to the component's event
-     * processing methods or event listeners.
-     * <p>
-     * Events are dispatched if they are instances of InputEvent or its
-     * subclasses.
-     * This includes instances of the AWT classes KeyEvent and MouseEvent.
-     * <p>
-     * This method is called by {@link java.awt.im.InputContext#dispatchEvent InputContext.dispatchEvent}.
-     *
-     * @param event the event being dispatched to the input method
-     * @exception NullPointerException if <code>event</code> is null
-     */
-    public void dispatchEvent(AWTEvent event) {
-
-        if (event instanceof KeyEvent) {
-
-            KeyEvent keyEvent = (KeyEvent) event;
-            if (event.getID() == KeyEvent.KEY_TYPED) {
-                //System.out.println("handled event " + event);
-                impl.handleKeyTyped(keyEvent);
-            }
-        }
-        else {
-            //System.out.println("did not handle event " + event);
-        }
-    }
-
-    /**
-     * Notifies this input method of changes in the client window
-     * location or state. This method is called while this input
-     * method is the current input method of its input context and
-     * notifications for it are enabled (see {@link
-     * InputMethodContext#enableClientWindowNotification
-     * InputMethodContext.enableClientWindowNotification}). Calls
-     * to this method are temporarily suspended if the input context's
-     * {@link java.awt.im.InputContext#removeNotify removeNotify}
-     * method is called, and resume when the input method is activated
-     * for a new client component. It is called in the following
-     * situations:
-     * <ul>
-     * <li>
-     * when the window containing the current client component changes
-     * in location, size, visibility, iconification state, or when the
-     * window is closed.</li>
-     * <li>
-     * from <code> enableClientWindowNotification(inputMethod,
-     * true)</code> if the current client component exists,</li>
-     * <li>
-     * when activating the input method for the first time after it
-     * called
-     * <code>enableClientWindowNotification(inputMethod,
-     * true)</code> if during the call no current client component was
-     * available,</li>
-     * <li>
-     * when activating the input method for a new client component
-     * after the input context's removeNotify method has been
-     * called.</li>
-     * </ul>
-     * @param bounds client window's {@link
-     * java.awt.Component#getBounds bounds} on the screen; or null if
-     * the client window is iconified or invisible
-     */
-    public void notifyClientWindowChange(Rectangle bounds) {
-    }
-
-    /**
-     * Activates the input method for immediate input processing.
-     * <p>
-     * If an input method provides its own windows, it should make sure
-     * at this point that all necessary windows are open and visible.
-     * <p>
-     * This method is called
-     * <ul>
-     * <li>by {@link java.awt.im.InputContext#dispatchEvent InputContext.dispatchEvent}
-     *     when a client component receives a FOCUS_GAINED event,
-     * <li>when switching to this input method from a different one using the
-     *     user interface or
-     *     {@link java.awt.im.InputContext#selectInputMethod InputContext.selectInputMethod}.
-     * </ul>
-     * The method is only called when the input method is inactive.
-     * A newly instantiated input method is assumed to be inactive.
-     */
-    public void activate() {
-        //System.out.println("activated");
-    }
-
-    /**
-     * Deactivates the input method.
-     * The isTemporary argument has the same meaning as in
-     * {@link java.awt.event.FocusEvent#isTemporary FocusEvent.isTemporary}.
-     * <p>
-     * If an input method provides its own windows, only windows that relate
-     * to the current composition (such as a lookup choice window) should be
-     * closed at this point.
-     * It is possible that the input method will be immediately activated again
-     * for a different client component, and closing and reopening more
-     * persistent windows (such as a control panel) would create unnecessary
-     * screen flicker.
-     * Before an instance of a different input method class is activated,
-     * {@link #hideWindows} is called on the current input method.
-     * <p>
-     * This method is called
-     * <ul>
-     * <li>by {@link java.awt.im.InputContext#dispatchEvent InputContext.dispatchEvent}
-     *     when a client component receives a FOCUS_LOST event,
-     * <li>when switching from this input method to a different one using the
-     *     user interface or
-     *     {@link java.awt.im.InputContext#selectInputMethod InputContext.selectInputMethod},
-     * <li>before {@link #removeNotify removeNotify} if the current client component is
-     *     removed.
-     * </ul>
-     * The method is only called when the input method is active.
-     *
-     * @param isTemporary whether the focus change is temporary
-     */
-    public void deactivate(boolean isTemporary) {
-        //System.out.println("deactivated");
-    }
-
-    /**
-     * Closes or hides all windows opened by this input method instance or
-     * its class.
-     * <p>
-     * This method is called
-     * <ul>
-     * <li>before calling {@link #activate activate} on an instance of a different input
-     *     method class,
-     * <li>before calling {@link #dispose dispose} on this input method.
-     * </ul>
-     * The method is only called when the input method is inactive.
-     */
-    public void hideWindows() {
-    }
-
-    /**
-     * Notifies the input method that a client component has been
-     * removed from its containment hierarchy, or that input method
-     * support has been disabled for the component.
-     * <p>
-     * This method is called by {@link java.awt.im.InputContext#removeNotify InputContext.removeNotify}.
-     * <p>
-     * The method is only called when the input method is inactive.
-     */
-    public void removeNotify() {
-    }
-
-    /**
-     * Ends any input composition that may currently be going on in this
-     * context. Depending on the platform and possibly user preferences,
-     * this may commit or delete uncommitted text. Any changes to the text
-     * are communicated to the active component using an input method event.
-     *
-     * <p>
-     * A text editing component may call this in a variety of situations,
-     * for example, when the user moves the insertion point within the text
-     * (but outside the composed text), or when the component's text is
-     * saved to a file or copied to the clipboard.
-     * <p>
-     * This method is called
-     * <ul>
-     * <li>by {@link java.awt.im.InputContext#endComposition InputContext.endComposition},
-     * <li>by {@link java.awt.im.InputContext#dispatchEvent InputContext.dispatchEvent}
-     *     when switching to a different client component
-     * <li>when switching from this input method to a different one using the
-     *     user interface or
-     *     {@link java.awt.im.InputContext#selectInputMethod InputContext.selectInputMethod}.
-     * </ul>
-     */
-    public void endComposition() {
-
-        impl.endComposition();
-    }
-
-    /**
-     * Disposes of the input method and releases the resources used by it.
-     * In particular, the input method should dispose windows and close files that are no
-     * longer needed.
-     * <p>
-     * This method is called by {@link java.awt.im.InputContext#dispose InputContext.dispose}.
-     * <p>
-     * The method is only called when the input method is inactive.
-     * No method of this interface is called on this instance after dispose.
-     */
-    public void dispose() {
-    }
-
-    /**
-     * Returns a control object from this input method, or null. A
-     * control object provides methods that control the behavior of the
-     * input method or obtain information from the input method. The type
-     * of the object is an input method specific class. Clients have to
-     * compare the result against known input method control object
-     * classes and cast to the appropriate class to invoke the methods
-     * provided.
-     * <p>
-     * This method is called by
-     * {@link java.awt.im.InputContext#getInputMethodControlObject InputContext.getInputMethodControlObject}.
-     *
-     * @return a control object from this input method, or null
-     */
-    public Object getControlObject() {
-
-        return null;
-    }
-}
--- a/src/share/classes/com/sun/inputmethods/internal/thaiim/ThaiInputMethodDescriptor.java	Wed Jun 16 12:40:22 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- *
- * (C) Copyright IBM Corp. 2000 - All Rights Reserved
- *
- * The original version of this source code and documentation is
- * copyrighted and owned by IBM. These materials are provided
- * under terms of a License Agreement between IBM and Sun.
- * This technology is protected by multiple US and International
- * patents. This notice and attribution to IBM may not be removed.
- *
- */
-
-package com.sun.inputmethods.internal.thaiim;
-
-import java.awt.Image;
-import java.awt.im.spi.InputMethod;
-import java.awt.im.spi.InputMethodDescriptor;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-public class ThaiInputMethodDescriptor implements InputMethodDescriptor {
-
-    static final Locale THAI = new Locale("th");
-
-    public ThaiInputMethodDescriptor() {
-    }
-
-    /**
-     * @see java.awt.im.spi.InputMethodDescriptor#getAvailableLocales
-     */
-    public Locale[] getAvailableLocales() {
-        return new Locale[] { THAI };
-    }
-
-    /**
-     * @see java.awt.im.spi.InputMethodDescriptor#hasDynamicLocaleList
-     */
-    public boolean hasDynamicLocaleList() {
-        return false;
-    }
-
-    /**
-     * @see java.awt.im.spi.InputMethodDescriptor#getInputMethodDisplayName
-     */
-    public synchronized String getInputMethodDisplayName(Locale inputLocale, Locale displayLanguage) {
-        try {
-            ResourceBundle resources = ResourceBundle.getBundle(
-                "com.sun.inputmethods.internal.thaiim.resources.DisplayNames", displayLanguage);
-            return resources.getString("DisplayName.Thai");
-        } catch (MissingResourceException mre) {
-            return "Thai Input Method";
-        }
-    }
-
-    /**
-     * @see java.awt.im.spi.InputMethodDescriptor#getInputMethodIcon
-     */
-    public Image getInputMethodIcon(Locale inputLocale) {
-        return null;
-    }
-
-    /**
-     * @see java.awt.im.spi.InputMethodDescriptor#createInputMethod
-     */
-    public InputMethod createInputMethod() throws Exception {
-        ThaiInputMethodImpl impl = new ThaiInputMethodImpl();
-        return new ThaiInputMethod(THAI, impl);
-    }
-
-    public String toString() {
-        return getClass().getName();
-    }
-}
--- a/src/share/classes/com/sun/inputmethods/internal/thaiim/ThaiInputMethodImpl.java	Wed Jun 16 12:40:22 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,235 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- *
- * (C) Copyright IBM Corp. 2000 - All Rights Reserved
- *
- * The original version of this source code and documentation is
- * copyrighted and owned by IBM. These materials are provided
- * under terms of a License Agreement between IBM and Sun.
- * This technology is protected by multiple US and International
- * patents. This notice and attribution to IBM may not be removed.
- *
- */
-
-package com.sun.inputmethods.internal.thaiim;
-
-import java.awt.im.InputMethodRequests;
-import java.awt.im.spi.InputMethodContext;
-
-import java.awt.Toolkit;
-import java.awt.event.KeyEvent;
-import java.awt.event.InputMethodEvent;
-import java.awt.font.TextAttribute;
-import java.awt.font.TextHitInfo;
-
-import java.text.AttributedCharacterIterator;
-import java.text.AttributedString;
-
-class ThaiInputMethodImpl {
-
-    private static final char[] keyboardMap = {
-        /* 00 */ '\u0000',
-        /* 01 */ '\u0001',
-        /* 02 */ '\u0002',
-        /* 03 */ '\u0003',
-        /* 04 */ '\u0004',
-        /* 05 */ '\u0005',
-        /* 06 */ '\u0006',
-        /* 07 */ '\u0007',
-        /* 08 */ '\u0008',
-        /* 09 */ '\u0009',
-        /* 0A */ '\012',
-        /* 0B */ '\u000B',
-        /* 0C */ '\u000C',
-        /* 0D */ '\015',
-        /* 0E */ '\u000E',
-        /* 0F */ '\u000F',
-        /* 10 */ '\u0010',
-        /* 11 */ '\u0011',
-        /* 12 */ '\u0012',
-        /* 13 */ '\u0013',
-        /* 14 */ '\u0014',
-        /* 15 */ '\u0015',
-        /* 16 */ '\u0016',
-        /* 17 */ '\u0017',
-        /* 18 */ '\u0018',
-        /* 19 */ '\u0019',
-        /* 1A */ '\u001A',
-        /* 1B */ '\u001B',
-        /* 1C */ '\u001C',
-        /* 1D */ '\u001D',
-        /* 1E */ '\u001E',
-        /* 1F */ '\u001F',
-        /* 20 */ '\u0020',
-        /* 21 */ '\u0e45',   // '!'
-        /* 22 */ '\u002e',   // '"'
-        /* 23 */ '\u0e52',   // '#'
-        /* 24 */ '\u0e53',   // '$'
-        /* 25 */ '\u0e54',   // '%'
-        /* 26 */ '\u0e4e',   // '&'
-        /* 27 */ '\u0e07',   // '''
-        /* 28 */ '\u0e56',   // '('
-        /* 29 */ '\u0e57',   // ')'
-        /* 2A */ '\u0e55',   // '*'
-        /* 2B */ '\u0e59',   // '+'
-        /* 2C */ '\u0e21',   // ','
-        /* 2D */ '\u0e02',   // '-'
-        /* 2E */ '\u0e43',   // '.'
-        /* 2F */ '\u0e1d',   // '/'
-        /* 30 */ '\u0e08',   // '0'
-        /* 31 */ '\u0e3f',   // '1'
-        /* 32 */ '\u002f',   // '2'
-        /* 33 */ '\u002d',   // '3'
-        /* 34 */ '\u0e20',   // '4'
-        /* 35 */ '\u0e16',   // '5'
-        /* 36 */ '\u0e38',   // '6'
-        /* 37 */ '\u0e36',   // '7'
-        /* 38 */ '\u0e04',   // '8'
-        /* 39 */ '\u0e15',   // '9'
-        /* 3A */ '\u0e0b',   // ':'
-        /* 3B */ '\u0e27',   // ';'
-        /* 3C */ '\u0e12',   // '<'
-        /* 3D */ '\u0e0a',   // '='
-        /* 3E */ '\u0e2c',   // '>'
-        /* 3F */ '\u0e26',   // '?'
-        /* 40 */ '\u0e51',   // '@'
-        /* 41 */ '\u0e24',   // 'A'
-        /* 42 */ '\u0e3a',   // 'B'
-        /* 43 */ '\u0e09',   // 'C'
-        /* 44 */ '\u0e0f',   // 'D'
-        /* 45 */ '\u0e0e',   // 'E'
-        /* 46 */ '\u0e42',   // 'F'
-        /* 47 */ '\u0e0c',   // 'G'
-        /* 48 */ '\u0e47',   // 'H'
-        /* 49 */ '\u0e13',   // 'I'
-        /* 4A */ '\u0e4b',   // 'J'
-        /* 4B */ '\u0e29',   // 'K'
-        /* 4C */ '\u0e28',   // 'L'
-        /* 4D */ '\u003f',   // 'M'
-        /* 4E */ '\u0e4c',   // 'N'
-        /* 4F */ '\u0e2f',   // 'O'
-        /* 50 */ '\u0e0d',   // 'P'
-        /* 51 */ '\u0e50',   // 'Q'
-        /* 52 */ '\u0e11',   // 'R'
-        /* 53 */ '\u0e06',   // 'S'
-        /* 54 */ '\u0e18',   // 'T'
-        /* 55 */ '\u0e4a',   // 'U'
-        /* 56 */ '\u0e2e',   // 'V'
-        /* 57 */ '\u0022',   // 'W'
-        /* 58 */ '\u0029',   // 'X'
-        /* 59 */ '\u0e4d',   // 'Y'
-        /* 5A */ '\u0028',   // 'Z'
-        /* 5B */ '\u0e1a',   // '['
-        /* 5C */ '\u0e05',   // '\'
-        /* 5D */ '\u0e25',   // ']'
-        /* 5E */ '\u0e39',   // '^'
-        /* 5F */ '\u0e58',   // '_'
-        /* 60 */ '\u0e4f',   // '`'
-        /* 61 */ '\u0e1f',   // 'a'
-        /* 62 */ '\u0e34',   // 'b'
-        /* 63 */ '\u0e41',   // 'c'
-        /* 64 */ '\u0e01',   // 'd'
-        /* 65 */ '\u0e33',   // 'e'
-        /* 66 */ '\u0e14',   // 'f'
-        /* 67 */ '\u0e40',   // 'g'
-        /* 68 */ '\u0e49',   // 'h'
-        /* 69 */ '\u0e23',   // 'i'
-        /* 6A */ '\u0e48',   // 'j'
-        /* 6B */ '\u0e32',   // 'k'
-        /* 6C */ '\u0e2a',   // 'l'
-        /* 6D */ '\u0e17',   // 'm'
-        /* 6E */ '\u0e37',   // 'n'
-        /* 6F */ '\u0e19',   // 'o'
-        /* 70 */ '\u0e22',   // 'p'
-        /* 71 */ '\u0e46',   // 'q'
-        /* 72 */ '\u0e1e',   // 'r'
-        /* 73 */ '\u0e2b',   // 's'
-        /* 74 */ '\u0e30',   // 't'
-        /* 75 */ '\u0e35',   // 'u'
-        /* 76 */ '\u0e2d',   // 'v'
-        /* 77 */ '\u0e44',   // 'w'
-        /* 78 */ '\u0e1b',   // 'x'
-        /* 79 */ '\u0e31',   // 'y'
-        /* 7A */ '\u0e1c',   // 'z'
-        /* 7B */ '\u0e10',   // '{'
-        /* 7C */ '\u0e03',   // '|'
-        /* 7D */ '\u002c',   // '}'
-        /* 7E */ '\u0e5b',   // '~'
-        /* 7F */ '\u007F'    //
-    };
-
-    // cached TextHitInfo. Only one type of TextHitInfo is required.
-    private static final TextHitInfo ZERO_TRAILING_HIT_INFO = TextHitInfo.trailing(0);
-
-    private ThaiRules rules;
-
-    /**
-     * Returns the equivalent character for thai locale.
-     * @param originalChar The original character.
-     */
-    private char getMappedChar( char originalChar )
-    {
-        if (originalChar <= keyboardMap.length) {
-            return keyboardMap[originalChar];
-        }
-
-        return originalChar;
-    }//getMappedChar()
-
-    private InputMethodContext context;
-
-    void setInputMethodContext(InputMethodContext context) {
-        this.context = context;
-        rules = new ThaiRules((InputMethodRequests)context);
-    }
-
-    void handleKeyTyped(KeyEvent kevent) {
-        char keyChar = kevent.getKeyChar();
-        char currentChar = getMappedChar(keyChar);
-        if (!Character.UnicodeBlock.THAI.equals(Character.UnicodeBlock.of(currentChar))) {
-            // don't care
-            return;
-        } else if (rules.isInputValid(currentChar)) {
-            Character tmp = new Character(currentChar);
-            String tmp2 = tmp.toString();
-            context.dispatchInputMethodEvent(InputMethodEvent.INPUT_METHOD_TEXT_CHANGED,
-                                             (new AttributedString(tmp2)).getIterator(),
-                                             1,
-                                             ZERO_TRAILING_HIT_INFO,
-                                             ZERO_TRAILING_HIT_INFO);
-        } else {
-            // input sequence is not allowed
-            Toolkit.getDefaultToolkit().beep();
-        }
-
-        kevent.consume();// prevent client from getting this event.
-        return;
-    }//dispatchEvent()
-
-    void endComposition() {
-    }//endComposition()
-}
--- a/src/share/classes/com/sun/inputmethods/internal/thaiim/ThaiRules.java	Wed Jun 16 12:40:22 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,348 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.inputmethods.internal.thaiim;
-
-import java.awt.im.InputMethodRequests;
-
-public class ThaiRules {
-
-    public static final char BASE = 0x0e00;
-
-    public static final byte NON  =  0;
-    public static final byte CONS =  1;
-    public static final byte LV   =  2;
-    public static final byte FV1  =  3;
-    public static final byte FV2  =  4;
-    public static final byte FV3  =  5;
-    public static final byte FV4  =  6;
-    /* Note that FV4 is added. It is not in WTT.
-     * We need it for SARA AM since it has a
-     * weired characteristic to share the same
-     * cell with whatever consonant preceeds it.
-     */
-    public static final byte BV1  =  7;
-    public static final byte BV2  =  8;
-    public static final byte BD   =  9;
-    public static final byte TONE = 10;
-    public static final byte AD1  = 11;
-    public static final byte AD2  = 12;
-    public static final byte AD3  = 13;
-    public static final byte AV1  = 14;
-    public static final byte AV2  = 15;
-    public static final byte AV3  = 16;
-
-    /**
-     * Constants for validity checking and auto correction
-     */
-    public static final byte STRICT    = 0;
-    public static final byte LOOSE     = 1;
-    public static final byte NOREPLACE = 2;
-
-    public static final byte[] CHARTYPE = {
-    /* 0e00 UNUSED                      */      NON,
-    /* THAI CHARACTER KO KAI            */      CONS,
-    /* THAI CHARACTER KHO KHAI          */      CONS,
-    /* THAI CHARACTER KHO KHUAT         */      CONS,
-    /* THAI CHARACTER KHO KHWAI         */      CONS,
-    /* THAI CHARACTER KHO KHON          */      CONS,
-    /* THAI CHARACTER KHO RAKHANG       */      CONS,
-    /* THAI CHARACTER NGO NGU           */      CONS,
-    /* THAI CHARACTER CHO CHAN          */      CONS,
-    /* THAI CHARACTER CHO CHING         */      CONS,
-    /* THAI CHARACTER CHO CHANG         */      CONS,
-    /* THAI CHARACTER SO SO             */      CONS,
-    /* THAI CHARACTER CHO CHOE          */      CONS,
-    /* THAI CHARACTER YO YING           */      CONS,
-    /* THAI CHARACTER DO CHADA          */      CONS,
-    /* THAI CHARACTER TO PATAK          */      CONS,
-    /* THAI CHARACTER THO THAN          */      CONS,
-    /* THAI CHARACTER THO NANGMONTHO    */      CONS,
-    /* THAI CHARACTER THO PHUTHAO       */      CONS,
-    /* THAI CHARACTER NO NEN            */      CONS,
-    /* THAI CHARACTER DO DEK            */      CONS,
-    /* THAI CHARACTER TO TAO            */      CONS,
-    /* THAI CHARACTER THO THUNG         */      CONS,
-    /* THAI CHARACTER THO THAHAN        */      CONS,
-    /* THAI CHARACTER THO THONG         */      CONS,
-    /* THAI CHARACTER NO NU             */      CONS,
-    /* THAI CHARACTER BO BAIMAI         */      CONS,
-    /* THAI CHARACTER PO PLA            */      CONS,
-    /* THAI CHARACTER PHO PHUNG         */      CONS,
-    /* THAI CHARACTER FO FA             */      CONS,
-    /* THAI CHARACTER PHO PHAN          */      CONS,
-    /* THAI CHARACTER FO FAN            */      CONS,
-    /* THAI CHARACTER PHO SAMPHAO       */      CONS,
-    /* THAI CHARACTER MO MA             */      CONS,
-    /* THAI CHARACTER YO YAK            */      CONS,
-    /* THAI CHARACTER RO RUA            */      CONS,
-    /* THAI CHARACTER RU                */      FV3,
-    /* THAI CHARACTER LO LING           */      CONS,
-    /* THAI CHARACTER LU                */      FV3,
-    /* THAI CHARACTER WO WAEN           */      CONS,
-    /* THAI CHARACTER SO SALA           */      CONS,
-    /* THAI CHARACTER SO RUSI           */      CONS,
-    /* THAI CHARACTER SO SUA            */      CONS,
-    /* THAI CHARACTER HO HIP            */      CONS,
-    /* THAI CHARACTER LO CHULA          */      CONS,
-    /* THAI CHARACTER O ANG             */      CONS,
-    /* THAI CHARACTER HO NOKHUK         */      CONS,
-    /* THAI CHARACTER PAIYANNOI         */      NON,
-    /* THAI CHARACTER SARA A            */      FV1,
-    /* THAI CHARACTER MAI HAN-AKAT      */      AV2,
-    /* THAI CHARACTER SARA AA           */      FV1,
-    /* THAI CHARACTER SARA AM           */      FV4,
-    /* THAI CHARACTER SARA I            */      AV1,
-    /* THAI CHARACTER SARA II           */      AV3,
-    /* THAI CHARACTER SARA UE           */      AV2,
-    /* THAI CHARACTER SARA UEE          */      AV3,
-    /* THAI CHARACTER SARA U            */      BV1,
-    /* THAI CHARACTER SARA UU           */      BV2,
-    /* THAI CHARACTER PHINTHU           */      BD,
-    /* 0e3b UNUSED                      */      NON,
-    /* 0e3c UNUSED                      */      NON,
-    /* 0e3d UNUSED                      */      NON,
-    /* 0e3e UNUSED                      */      NON,
-    /* THAI CURRENCY SYMBOL BAHT        */      NON,
-    /* THAI CHARACTER SARA E            */      LV,
-    /* THAI CHARACTER SARA AE           */      LV,
-    /* THAI CHARACTER SARA O            */      LV,
-    /* THAI CHARACTER SARA AI MAIMUAN   */      LV,
-    /* THAI CHARACTER SARA AI MAIMALAI  */      LV,
-    /* THAI CHARACTER LAKKHANGYAO       */      FV2,
-    /* THAI CHARACTER MAIYAMOK          */      NON,
-    /* THAI CHARACTER MAITAIKHU         */      AD2,
-    /* THAI CHARACTER MAI EK            */      TONE,
-    /* THAI CHARACTER MAI THO           */      TONE,
-    /* THAI CHARACTER MAI TRI           */      TONE,
-    /* THAI CHARACTER MAI CHATTAWA      */      TONE,
-    /* THAI CHARACTER THANTHAKHAT       */      AD1,
-    /* THAI CHARACTER NIKHAHIT          */      AD3,
-    /* THAI CHARACTER YAMAKKAN          */      AD3,
-    /* THAI CHARACTER FONGMAN           */      NON,
-    /* THAI DIGIT ZERO                  */      NON,
-    /* THAI DIGIT ONE                   */      NON,
-    /* THAI DIGIT TWO                   */      NON,
-    /* THAI DIGIT THREE                 */      NON,
-    /* THAI DIGIT FOUR                  */      NON,
-    /* THAI DIGIT FIVE                  */      NON,
-    /* THAI DIGIT SIX                   */      NON,
-    /* THAI DIGIT SEVEN                 */      NON,
-    /* THAI DIGIT EIGHT                 */      NON,
-    /* THAI DIGIT NINE                  */      NON,
-    /* THAI CHARACTER ANGKHANKHU        */      NON,
-    /* THAI CHARACTER KHOMUT            */      NON
-    };
-
-    private InputMethodRequests requests;
-
-    ThaiRules(InputMethodRequests requests) {
-        this.requests = requests;
-    }
-
-    public static byte getCharType(char c) {
-        byte cType;
-        int ci = ((int) c) - (int) BASE;
-        if (ci < 0 || ci >= CHARTYPE.length)
-            cType = NON;
-        else
-            cType = CHARTYPE[ci];
-        return cType;
-    }
-
-    private static boolean isValid(char c1, char c2, int[] validityArray) {
-        return ((validityArray[getCharType(c1)]
-                & (1 << getCharType(c2))) != 0);
-    }
-
-    /**
-     * VALIDITY is a bit matrix defining whether one
-     * character is allowed to be typed in after the
-     * previous one (array index). Determining the
-     * validity is done by bit-anding the 2nd char
-     * type's mask (obtained by 1 << chartype) with
-     * the array element indexed by the first char
-     * type. If the result is non-zero, the 2nd
-     * character is allowed to follow the first.
-     */
-
-    /* Please note that the bits in the comment below
-     * are displayed least significant bit first.
-     * The actual value reflexs this representation
-     * when the bits are swapped.
-     */
-
-    private static final int[] INPUTVALIDITY = {
-    /* NON  1110 010  0 0000 0000 0 */          0x00027,
-    /* CONS 1111 111  1 1111 1111 1 */          0x1ffff,
-    /* LV   0100 000  0 0000 0000 0 */          0x00002,
-    /* FV1  1110 010  0 0000 0000 0 */          0x00027,
-    /* FV2  1110 010  0 0000 0000 0 */          0x00027,
-    /* FV3  1110 110  0 0000 0000 0 */          0x00037,
-    /* FV4  1110 010  0 0000 0000 0 */          0x00027,
-    /* BV1  1110 010  0 0011 0000 0 */          0x00c27,
-    /* BV2  1110 010  0 0010 0000 0 */          0x00427,
-    /* BD   1110 010  0 0000 0000 0 */          0x00027,
-    /* TONE 1111 011  0 0000 0000 0 */          0x0006f,
-    /* AD1  1110 010  0 0000 0000 0 */          0x00027,
-    /* AD2  1110 010  0 0000 0000 0 */          0x00027,
-    /* AD3  1110 010  0 0000 0000 0 */          0x00027,
-    /* AV1  1110 010  0 0011 0000 0 */          0x00c27,
-    /* AV2  1110 010  0 0010 0000 0 */          0x00427,
-    /* AV3  1110 010  0 0010 0100 0 */          0x02427
-    };
-
-    private static final int[] COMPOSABLE = {
-    /* NON  0000 000  0 0000 0000 0 */          0x00000,
-    /* CONS 0000 001  1 1111 1111 1 */          0x1ffc0,
-    /* LV   0000 000  0 0000 0000 0 */          0x00000,
-    /* FV1  0000 000  0 0000 0000 0 */          0x00000,
-    /* FV2  0000 000  0 0000 0000 0 */          0x00000,
-    /* FV3  0000 000  0 0000 0000 0 */          0x00000,
-    /* FV4  0000 000  0 0000 0000 0 */          0x00000,
-    /* BV1  0000 000  0 0011 0000 0 */          0x00c00,
-    /* BV2  0000 000  0 0010 0000 0 */          0x00400,
-    /* BD   0000 000  0 0000 0000 0 */          0x00000,
-    /* TONE 0000 001  0 0000 0000 0 */          0x00040,
-    /* AD1  0000 000  0 0000 0000 0 */          0x00000,
-    /* AD2  0000 000  0 0000 0000 0 */          0x00000,
-    /* AD3  0000 000  0 0000 0000 0 */          0x00000,
-    /* AV1  0000 000  0 0011 0000 0 */          0x00c00,
-    /* AV2  0000 000  0 0010 0000 0 */          0x00400,
-    /* AV3  0000 000  0 0010 0100 0 */          0x02400
-    };
-
-    private static final int[] REPLACABLE = {
-    /* NON  0000 000  0 0000 0000 0 */          0x00000,
-    /* CONS 0000 000  0 0000 0000 0 */          0x00000,
-    /* LV   0000 000  0 0000 0000 0 */          0x00000,
-    /* FV1  0000 000  0 0000 0000 0 */          0x00000,
-    /* FV2  0000 000  0 0000 0000 0 */          0x00000,
-    /* FV3  0000 000  0 0000 0000 0 */          0x00000,
-    /* FV4  0000 001  1 1001 1111 1 */          0x1f9c0,
-    /* BV1  0000 001  1 1100 1111 1 */          0x1f3c0,
-    /* BV2  0000 001  1 1101 1111 1 */          0x1fbc0,
-    /* BD   0000 001  1 1111 1111 1 */          0x1ffc0,
-    /* TONE 0000 000  0 0111 1100 0 */          0x03e00,
-    /* AD1  0000 001  0 1111 1101 1 */          0x1bf40,
-    /* AD2  0000 001  1 1111 1111 1 */          0x1ffc0,
-    /* AD3  0000 001  1 1111 1111 0 */          0x0ffc0,
-    /* AV1  0000 001  1 1100 1111 1 */          0x1f3c0,
-    /* AV2  0000 001  1 1101 1111 1 */          0x1fbc0,
-    /* AV3  0000 001  1 1101 1011 1 */          0x1dbc0
-    };
-
-    private static final int[] SWAPPABLE = {
-    /* NON  0000 000  0 0000 0000 0 */          0x00000,
-    /* CONS 0000 000  0 0000 0000 0 */          0x00000,
-    /* LV   0000 000  0 0000 0000 0 */          0x00000,
-    /* FV1  0000 000  0 0000 0000 0 */          0x00000,
-    /* FV2  0000 000  0 0000 0000 0 */          0x00000,
-    /* FV3  0000 000  0 0000 0000 0 */          0x00000,
-    /* FV4  0000 000  0 0010 0000 0 */          0x00400,
-    /* BV1  0000 000  0 0000 0000 0 */          0x00000,
-    /* BV2  0000 000  0 0000 0000 0 */          0x00000,
-    /* BD   0000 000  0 0000 0000 0 */          0x00000,
-    /* TONE 0000 000  1 1000 0011 1 */          0x1c180,
-    /* AD1  0000 000  1 0000 0010 0 */          0x04080,
-    /* AD2  0000 000  0 0000 0000 0 */          0x00000,
-    /* AD3  0000 000  0 0000 0000 1 */          0x10000,
-    /* AV1  0000 000  0 0000 0000 0 */          0x00000,
-    /* AV2  0000 000  0 0000 0000 0 */          0x00000,
-    /* AV3  0000 000  0 0000 0000 0 */          0x00000
-    };
-
-    public static boolean isInputValid(char c1, char c2) {
-        return isValid(c1, c2, INPUTVALIDITY);
-    }
-
-    public static boolean isComposable(char c1, char c2) {
-        return isValid(c1, c2, COMPOSABLE);
-    }
-
-    public static boolean isSwappable(char c1, char c2) {
-        return isValid(c1, c2, SWAPPABLE);
-    }
-
-    public static boolean isReplacable(char c1, char c2) {
-        return isValid(c1, c2, REPLACABLE);
-    }
-
-    public static boolean isForward(char c) {
-        return (getCharType(c) < FV4);
-    }
-
-    public static boolean isDead(char c) {
-        return (getCharType(c) > FV3);
-    }
-
-    public boolean isInputValid(char current) {
-        int offset = requests.getInsertPositionOffset();
-        if (offset == 0) {
-            byte charType = getCharType(current);
-            return ((charType < FV1) || (charType == FV3));
-        }
-        else {
-            char prev = requests.getCommittedText(offset-1, offset, null).first();
-
-            if(isForward(current)) {
-                if (isInputValid(prev, current)) {
-                    if (getCharType(prev) == TONE &&
-                        getCharType(current) == FV1) {
-                        if (offset == 1) {
-                            return true;
-                        } else {
-                            char pprev =
-                                requests.getCommittedText(offset-2, offset-1, null).first();
-                            return isInputValid(pprev, current);
-                        }
-                    } else {
-                        return true;
-                    }
-                } else if (prev == '\u0e32' &&       // SARA AA
-                           current  == '\u0e30') {   // SARA A
-                    return true;
-                } else if (prev == '\u0e4d' &&       // NIKAHIT
-                           current  == '\u0e32') {   // SARA AA
-                                                     // Special compose to SARA AM
-                    return true;
-                } else {
-                    return false;
-                }
-            } else {
-                if(isInputValid(prev, current)) {
-                    if (getCharType(prev) == TONE &&
-                        getCharType(current) == FV4) {
-                        return (offset != 1);
-                    } else {
-                        return true;
-                    }
-                } else {
-                    return false;
-                }
-            }
-        }
-    }
-}
--- a/src/share/classes/com/sun/inputmethods/internal/thaiim/java.awt.im.spi.InputMethodDescriptor	Wed Jun 16 12:40:22 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-com.sun.inputmethods.internal.thaiim.ThaiInputMethodDescriptor
--- a/src/share/classes/com/sun/inputmethods/internal/thaiim/resources/DisplayNames.properties	Wed Jun 16 12:40:22 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-#
-# Default Input method display names for Thai input methods
-#
-
-DisplayName.Thai     = Thai Input Method
-
--- a/src/share/classes/com/sun/jarsigner/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/com/sun/jarsigner/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -20,9 +20,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
   <head>
     <title>Jarsigner Signing Mechanism Package</title>
--- a/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTableHeaderUI.java	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/com/sun/java/swing/plaf/windows/WindowsTableHeaderUI.java	Wed Jun 16 14:07:47 2010 -0700
@@ -35,6 +35,7 @@
 import static com.sun.java.swing.plaf.windows.TMSchema.*;
 import static com.sun.java.swing.plaf.windows.XPStyle.*;
 import sun.swing.table.*;
+import sun.swing.SwingUtilities2;
 
 
 public class WindowsTableHeaderUI extends BasicTableHeaderUI {
@@ -163,18 +164,13 @@
             return this;
         }
 
-        private int viewIndexForColumn(TableColumn aColumn) {
-            if (aColumn != null) {
-                return header.getTable().convertColumnIndexToView(
-                        aColumn.getModelIndex());
-            }
-            return -1;
-        }
-
         public void paint(Graphics g) {
             Dimension size = getSize();
             State state = State.NORMAL;
-            if (column == viewIndexForColumn(header.getDraggedColumn())) {
+            TableColumn draggedColumn = header.getDraggedColumn();
+            if (draggedColumn != null &&
+                    column == SwingUtilities2.convertColumnIndexToView(
+                            header.getColumnModel(), draggedColumn.getModelIndex())) {
                 state = State.PRESSED;
             } else if (isSelected || hasFocus || hasRollover) {
                 state = State.HOT;
--- a/src/share/classes/com/sun/java/util/jar/pack/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/com/sun/java/util/jar/pack/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -22,9 +22,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </head>
 <body bgcolor="white">
--- a/src/share/classes/com/sun/jdi/connect/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/com/sun/jdi/connect/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -22,9 +22,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </head>
 <body bgcolor="white">
--- a/src/share/classes/com/sun/jdi/connect/spi/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/com/sun/jdi/connect/spi/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -22,9 +22,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </head>
 <body bgcolor="white">
--- a/src/share/classes/com/sun/jdi/event/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/com/sun/jdi/event/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -22,9 +22,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </head>
 <body bgcolor="white">
--- a/src/share/classes/com/sun/jdi/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/com/sun/jdi/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -22,9 +22,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </head>
 <body bgcolor="white">
--- a/src/share/classes/com/sun/jdi/request/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/com/sun/jdi/request/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -22,9 +22,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </head>
 <body bgcolor="white">
--- a/src/share/classes/com/sun/jmx/defaults/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/com/sun/jmx/defaults/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -22,9 +22,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </head>
 <body bgcolor="white">
--- a/src/share/classes/com/sun/jmx/interceptor/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/com/sun/jmx/interceptor/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -22,9 +22,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </head>
 <body bgcolor="white">
--- a/src/share/classes/com/sun/jmx/mbeanserver/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/com/sun/jmx/mbeanserver/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -22,9 +22,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </head>
 <body bgcolor="white">
--- a/src/share/classes/com/sun/jmx/remote/internal/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/com/sun/jmx/remote/internal/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -22,9 +22,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </head>
 <body bgcolor="white">
--- a/src/share/classes/com/sun/jmx/snmp/IPAcl/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/com/sun/jmx/snmp/IPAcl/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </HEAD>
 <BODY>
--- a/src/share/classes/com/sun/jmx/snmp/agent/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/com/sun/jmx/snmp/agent/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </HEAD>
 <BODY>
--- a/src/share/classes/com/sun/jmx/snmp/daemon/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/com/sun/jmx/snmp/daemon/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </HEAD>
 <BODY>
--- a/src/share/classes/com/sun/jmx/snmp/defaults/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/com/sun/jmx/snmp/defaults/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </HEAD>
 <BODY>
--- a/src/share/classes/com/sun/jmx/snmp/internal/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/com/sun/jmx/snmp/internal/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </HEAD>
 <BODY>
--- a/src/share/classes/com/sun/jmx/snmp/mpm/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/com/sun/jmx/snmp/mpm/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </HEAD>
 <BODY>
--- a/src/share/classes/com/sun/jmx/snmp/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/com/sun/jmx/snmp/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </HEAD>
 <BODY>
--- a/src/share/classes/com/sun/jmx/snmp/tasks/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/com/sun/jmx/snmp/tasks/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </HEAD>
 <BODY>
--- a/src/share/classes/com/sun/management/mgmt-overview.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/com/sun/management/mgmt-overview.html	Wed Jun 16 14:07:47 2010 -0700
@@ -24,9 +24,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
   </head>
--- a/src/share/classes/com/sun/management/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/com/sun/management/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -22,9 +22,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/com/sun/net/ssl/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/com/sun/net/ssl/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -23,9 +23,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 
 -->
 
--- a/src/share/classes/com/sun/rowset/providers/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/com/sun/rowset/providers/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -28,9 +28,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
   <title>javax.sql.rowset.providers Package</title>
 </head>
--- a/src/share/classes/com/sun/servicetag/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/com/sun/servicetag/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 
 -->
 
--- a/src/share/classes/com/sun/servicetag/resources/register.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/com/sun/servicetag/resources/register.html	Wed Jun 16 14:07:47 2010 -0700
@@ -25,9 +25,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 <style type="text/css">
--- a/src/share/classes/com/sun/servicetag/resources/register_ja.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/com/sun/servicetag/resources/register_ja.html	Wed Jun 16 14:07:47 2010 -0700
@@ -25,9 +25,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 <style type="text/css">
--- a/src/share/classes/com/sun/servicetag/resources/register_zh_CN.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/com/sun/servicetag/resources/register_zh_CN.html	Wed Jun 16 14:07:47 2010 -0700
@@ -25,9 +25,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 <style type="text/css">
--- a/src/share/classes/com/sun/tools/hat/resources/oqlhelp.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/com/sun/tools/hat/resources/oqlhelp.html	Wed Jun 16 14:07:47 2010 -0700
@@ -18,9 +18,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 <html>
--- a/src/share/classes/java/awt/Font.java	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/java/awt/Font.java	Wed Jun 16 14:07:47 2010 -0700
@@ -343,6 +343,10 @@
      * Identify a font resource of type TRUETYPE.
      * Used to specify a TrueType font resource to the
      * {@link #createFont} method.
+     * The TrueType format was extended to become the OpenType
+     * format, which adds support for fonts with Postscript outlines,
+     * this tag therefore references these fonts, as well as those
+     * with TrueType outlines.
      * @since 1.3
      */
 
--- a/src/share/classes/java/beans/DefaultPersistenceDelegate.java	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/java/beans/DefaultPersistenceDelegate.java	Wed Jun 16 14:07:47 2010 -0700
@@ -222,6 +222,25 @@
 
     // Write out the properties of this instance.
     private void initBean(Class type, Object oldInstance, Object newInstance, Encoder out) {
+        for (Field field : type.getFields()) {
+            int mod = field.getModifiers();
+            if (Modifier.isFinal(mod) || Modifier.isStatic(mod) || Modifier.isTransient(mod)) {
+                continue;
+            }
+            try {
+                Expression oldGetExp = new Expression(field, "get", new Object[] { oldInstance });
+                Expression newGetExp = new Expression(field, "get", new Object[] { newInstance });
+                Object oldValue = oldGetExp.getValue();
+                Object newValue = newGetExp.getValue();
+                out.writeExpression(oldGetExp);
+                if (!equals(newValue, out.get(oldValue))) {
+                    out.writeStatement(new Statement(field, "set", new Object[] { oldInstance, oldValue }));
+                }
+            }
+            catch (Exception exception) {
+                out.getExceptionListener().exceptionThrown(exception);
+            }
+        }
         BeanInfo info;
         try {
             info = Introspector.getBeanInfo(type);
--- a/src/share/classes/java/beans/MetaData.java	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/java/beans/MetaData.java	Wed Jun 16 14:07:47 2010 -0700
@@ -701,56 +701,6 @@
 // AWT
 
 /**
- * The persistence delegate for {@link Dimension}.
- * It is impossible to use {@link DefaultPersistenceDelegate}
- * because all getters have return types that differ from parameter types
- * of the constructor {@link Dimension#Dimension(int, int)}.
- *
- * @author Sergey A. Malenkov
- */
-final class java_awt_Dimension_PersistenceDelegate extends PersistenceDelegate {
-    protected boolean mutatesTo(Object oldInstance, Object newInstance) {
-        return oldInstance.equals(newInstance);
-    }
-
-    protected Expression instantiate(Object oldInstance, Encoder out) {
-        Dimension dimension = (Dimension) oldInstance;
-        Object[] args = new Object[] {
-                dimension.width,
-                dimension.height,
-        };
-        return new Expression(dimension, dimension.getClass(), "new", args);
-    }
-}
-
-/**
- * The persistence delegate for {@link GridBagConstraints}.
- * It is impossible to use {@link DefaultPersistenceDelegate}
- * because this class does not have any properties.
- *
- * @author Sergey A. Malenkov
- */
-final class java_awt_GridBagConstraints_PersistenceDelegate extends PersistenceDelegate {
-    protected Expression instantiate(Object oldInstance, Encoder out) {
-        GridBagConstraints gbc = (GridBagConstraints) oldInstance;
-        Object[] args = new Object[] {
-                gbc.gridx,
-                gbc.gridy,
-                gbc.gridwidth,
-                gbc.gridheight,
-                gbc.weightx,
-                gbc.weighty,
-                gbc.anchor,
-                gbc.fill,
-                gbc.insets,
-                gbc.ipadx,
-                gbc.ipady,
-        };
-        return new Expression(gbc, gbc.getClass(), "new", args);
-    }
-}
-
-/**
  * The persistence delegate for {@link Insets}.
  * It is impossible to use {@link DefaultPersistenceDelegate}
  * because this class does not have any properties.
@@ -775,54 +725,6 @@
 }
 
 /**
- * The persistence delegate for {@link Point}.
- * It is impossible to use {@link DefaultPersistenceDelegate}
- * because all getters have return types that differ from parameter types
- * of the constructor {@link Point#Point(int, int)}.
- *
- * @author Sergey A. Malenkov
- */
-final class java_awt_Point_PersistenceDelegate extends PersistenceDelegate {
-    protected boolean mutatesTo(Object oldInstance, Object newInstance) {
-        return oldInstance.equals(newInstance);
-    }
-
-    protected Expression instantiate(Object oldInstance, Encoder out) {
-        Point point = (Point) oldInstance;
-        Object[] args = new Object[] {
-                point.x,
-                point.y,
-        };
-        return new Expression(point, point.getClass(), "new", args);
-    }
-}
-
-/**
- * The persistence delegate for {@link Rectangle}.
- * It is impossible to use {@link DefaultPersistenceDelegate}
- * because all getters have return types that differ from parameter types
- * of the constructor {@link Rectangle#Rectangle(int, int, int, int)}.
- *
- * @author Sergey A. Malenkov
- */
-final class java_awt_Rectangle_PersistenceDelegate extends PersistenceDelegate {
-    protected boolean mutatesTo(Object oldInstance, Object newInstance) {
-        return oldInstance.equals(newInstance);
-    }
-
-    protected Expression instantiate(Object oldInstance, Encoder out) {
-        Rectangle rectangle = (Rectangle) oldInstance;
-        Object[] args = new Object[] {
-                rectangle.x,
-                rectangle.y,
-                rectangle.width,
-                rectangle.height,
-        };
-        return new Expression(rectangle, rectangle.getClass(), "new", args);
-    }
-}
-
-/**
  * The persistence delegate for {@link Font}.
  * It is impossible to use {@link DefaultPersistenceDelegate}
  * because size of the font can be float value.
--- a/src/share/classes/java/beans/XMLEncoder.java	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/java/beans/XMLEncoder.java	Wed Jun 16 14:07:47 2010 -0700
@@ -407,7 +407,20 @@
                    os.writeObject(this);
             */
             mark(oldStm);
-            statementList(oldStm.getTarget()).add(oldStm);
+            Object target = oldStm.getTarget();
+            if (target instanceof Field) {
+                String method = oldStm.getMethodName();
+                Object[] args = oldStm.getArguments();
+                if ((method == null) || (args == null)) {
+                }
+                else if (method.equals("get") && (args.length == 1)) {
+                    target = args[0];
+                }
+                else if (method.equals("set") && (args.length == 2)) {
+                    target = args[0];
+                }
+            }
+            statementList(target).add(oldStm);
         }
         catch (Exception e) {
             getExceptionListener().exceptionThrown(new Exception("XMLEncoder: discarding statement " + oldStm, e));
@@ -703,7 +716,9 @@
                 statements.add(exp);
             }
             outputValue(target, outer, false);
-            outputValue(value, outer, isArgument);
+            if (expression) {
+                outputValue(value, outer, isArgument);
+            }
             return;
         }
         if (expression && (d.refs > 1)) {
@@ -722,8 +737,10 @@
         }
         else if ((!expression && methodName.startsWith("set") && args.length == 1) ||
                  (expression && methodName.startsWith("get") && args.length == 0)) {
-            attributes = attributes + " property=" +
-                quote(Introspector.decapitalize(methodName.substring(3)));
+            if (3 < methodName.length()) {
+                attributes = attributes + " property=" +
+                    quote(Introspector.decapitalize(methodName.substring(3)));
+            }
         }
         else if (!methodName.equals("new") && !methodName.equals("newInstance")) {
             attributes = attributes + " method=" + quote(methodName);
--- a/src/share/classes/java/nio/channels/exceptions	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/java/nio/channels/exceptions	Wed Jun 16 14:07:47 2010 -0700
@@ -28,7 +28,7 @@
 SINCE=1.4
 PACKAGE=java.nio.channels
 # This year should only change if the generated source is modified.
-COPYRIGHT_YEARS=2000-2007
+COPYRIGHT_YEARS="2000, 2007,"
 
 
 SUPER=java.io.IOException
--- a/src/share/classes/java/nio/charset/exceptions	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/java/nio/charset/exceptions	Wed Jun 16 14:07:47 2010 -0700
@@ -28,7 +28,7 @@
 SINCE=1.4
 PACKAGE=java.nio.charset
 # This year should only change if the generated source is modified.
-COPYRIGHT_YEARS=2000-2007
+COPYRIGHT_YEARS="2000, 2007,"
 
 SUPER=java.io.IOException
 
--- a/src/share/classes/java/nio/exceptions	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/java/nio/exceptions	Wed Jun 16 14:07:47 2010 -0700
@@ -28,7 +28,7 @@
 SINCE=1.4
 PACKAGE=java.nio
 # This year should only change if the generated source is modified.
-COPYRIGHT_YEARS=2000-2007
+COPYRIGHT_YEARS="2000, 2007,"
 
 
 SUPER=RuntimeException
--- a/src/share/classes/java/security/acl/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/java/security/acl/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/java/security/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/java/security/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/java/security/spec/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/java/security/spec/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/java/sql/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/java/sql/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/java/text/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/java/text/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/java/text/spi/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/java/text/spi/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/java/util/jar/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/java/util/jar/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/java/util/logging/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/java/util/logging/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/java/util/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/java/util/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/java/util/prefs/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/java/util/prefs/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/java/util/regex/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/java/util/regex/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/java/util/spi/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/java/util/spi/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/java/util/zip/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/java/util/zip/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/accessibility/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/accessibility/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -22,9 +22,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </HEAD>
 <BODY BGCOLOR="#FFFFFF">
--- a/src/share/classes/javax/crypto/interfaces/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/crypto/interfaces/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -18,9 +18,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
--- a/src/share/classes/javax/crypto/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/crypto/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -18,9 +18,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
--- a/src/share/classes/javax/crypto/spec/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/crypto/spec/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -18,9 +18,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
--- a/src/share/classes/javax/imageio/event/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/imageio/event/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/imageio/metadata/doc-files/bmp_metadata.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/imageio/metadata/doc-files/bmp_metadata.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 <title>BMP Metadata Format Specification</title>
--- a/src/share/classes/javax/imageio/metadata/doc-files/gif_metadata.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/imageio/metadata/doc-files/gif_metadata.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 <title>GIF Metadata Format Specification</title>
--- a/src/share/classes/javax/imageio/metadata/doc-files/jpeg_metadata.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/imageio/metadata/doc-files/jpeg_metadata.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 <title>JPEG Metadata Format Specification and Usage Notes</title>
--- a/src/share/classes/javax/imageio/metadata/doc-files/png_metadata.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/imageio/metadata/doc-files/png_metadata.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 <title>PNG Metadata Format Specification</title>
--- a/src/share/classes/javax/imageio/metadata/doc-files/standard_metadata.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/imageio/metadata/doc-files/standard_metadata.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 <title>Standard Metadata Format Specification</title>
--- a/src/share/classes/javax/imageio/metadata/doc-files/wbmp_metadata.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/imageio/metadata/doc-files/wbmp_metadata.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 <title>WBMP Metadata Format Specification</title>
--- a/src/share/classes/javax/imageio/metadata/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/imageio/metadata/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/imageio/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/imageio/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/imageio/plugins/bmp/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/imageio/plugins/bmp/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/imageio/plugins/jpeg/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/imageio/plugins/jpeg/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/imageio/spi/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/imageio/spi/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/imageio/stream/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/imageio/stream/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/management/build.xml	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/management/build.xml	Wed Jun 16 14:07:47 2010 -0700
@@ -51,7 +51,7 @@
      -->
 
     <description>
-	Copyright 2006 Sun Microsystems, Inc.  All rights reserved. Use is subject to license terms.
+        Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
 
         Description: JMX API Version 1.4 - Source Code from Java SE 6
     </description>
--- a/src/share/classes/javax/management/loading/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/management/loading/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </head>
 <body bgcolor="white">
--- a/src/share/classes/javax/management/modelmbean/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/management/modelmbean/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </head>
 <body bgcolor="white">
--- a/src/share/classes/javax/management/monitor/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/management/monitor/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </head>
 <body bgcolor="white">
--- a/src/share/classes/javax/management/openmbean/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/management/openmbean/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </head>
 <body bgcolor="white">
--- a/src/share/classes/javax/management/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/management/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
         -->
     </head>
     <body bgcolor="white">
--- a/src/share/classes/javax/management/relation/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/management/relation/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </head>
 <body bgcolor="white">
--- a/src/share/classes/javax/management/remote/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/management/remote/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </head>
 <body bgcolor="white">
--- a/src/share/classes/javax/management/remote/rmi/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/management/remote/rmi/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </head>
 <body bgcolor="white">
--- a/src/share/classes/javax/management/timer/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/management/timer/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </head>
 <body bgcolor="white">
--- a/src/share/classes/javax/naming/directory/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/naming/directory/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </head>
 <body bgcolor="white">
--- a/src/share/classes/javax/naming/event/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/naming/event/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </head>
 <body bgcolor="white">
--- a/src/share/classes/javax/naming/ldap/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/naming/ldap/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
  
 -->
 </head>
--- a/src/share/classes/javax/naming/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/naming/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </head>
 <body bgcolor="white">
--- a/src/share/classes/javax/naming/spi/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/naming/spi/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </head>
 <body bgcolor="white">
--- a/src/share/classes/javax/net/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/net/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/net/ssl/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/net/ssl/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/print/attribute/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/print/attribute/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </head>
 <body bgcolor="white">
--- a/src/share/classes/javax/print/attribute/standard/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/print/attribute/standard/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </head>
 <body bgcolor="white">
--- a/src/share/classes/javax/print/event/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/print/event/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </head>
 <body bgcolor="white">
--- a/src/share/classes/javax/print/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/print/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </head>
 <body bgcolor="white">
--- a/src/share/classes/javax/rmi/ssl/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/rmi/ssl/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/script/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/script/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/security/auth/callback/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/security/auth/callback/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/security/auth/kerberos/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/security/auth/kerberos/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/security/auth/login/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/security/auth/login/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/security/auth/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/security/auth/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/security/auth/spi/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/security/auth/spi/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/security/auth/x500/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/security/auth/x500/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/security/cert/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/security/cert/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/security/sasl/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/security/sasl/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </head>
 <body bgcolor="white">
--- a/src/share/classes/javax/sound/midi/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/sound/midi/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/sound/midi/spi/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/sound/midi/spi/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/sound/sampled/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/sound/sampled/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/sound/sampled/spi/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/sound/sampled/spi/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/sql/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/sql/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/sql/rowset/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/sql/rowset/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -24,9 +24,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 
 -->
   <title>javax.sql.rowset Package</title>
--- a/src/share/classes/javax/sql/rowset/serial/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/sql/rowset/serial/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -27,9 +27,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 <title>javax.sql.rowset.serial</title>
 </head>
--- a/src/share/classes/javax/sql/rowset/spi/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/sql/rowset/spi/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -27,9 +27,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
   <title>javax.sql.rowset.spi</title>
    
--- a/src/share/classes/javax/swing/DefaultDesktopManager.java	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/swing/DefaultDesktopManager.java	Wed Jun 16 14:07:47 2010 -0700
@@ -26,16 +26,12 @@
 
 package javax.swing;
 
+import com.sun.awt.AWTUtilities;
+import sun.awt.AWTAccessor;
+import sun.awt.SunToolkit;
+
 import java.awt.*;
 import java.beans.PropertyVetoException;
-import java.beans.PropertyChangeEvent;
-import javax.swing.border.Border;
-import java.awt.event.ComponentListener;
-import java.awt.event.ComponentAdapter;
-import java.awt.event.ComponentEvent;
-
-import sun.awt.AWTAccessor;
-import sun.awt.SunToolkit;
 
 /** This is an implementation of the <code>DesktopManager</code>.
   * It currently implements the basic behaviors for managing
@@ -318,7 +314,10 @@
         dragMode = DEFAULT_DRAG_MODE;
         if (p != null) {
             String mode = (String)p.getClientProperty("JDesktopPane.dragMode");
-            if (mode != null && mode.equals("outline")) {
+            Window window = SwingUtilities.getWindowAncestor(f);
+            if (window != null && !AWTUtilities.isWindowOpaque(window)) {
+                dragMode = DEFAULT_DRAG_MODE;
+            } else if (mode != null && mode.equals("outline")) {
                 dragMode = OUTLINE_DRAG_MODE;
             } else if (mode != null && mode.equals("faster")
                     && f instanceof JInternalFrame
--- a/src/share/classes/javax/swing/JTable.java	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/swing/JTable.java	Wed Jun 16 14:07:47 2010 -0700
@@ -2583,10 +2583,8 @@
      * @see #convertColumnIndexToView
      */
     public int convertColumnIndexToModel(int viewColumnIndex) {
-        if (viewColumnIndex < 0) {
-            return viewColumnIndex;
-        }
-        return getColumnModel().getColumn(viewColumnIndex).getModelIndex();
+        return SwingUtilities2.convertColumnIndexToModel(
+                getColumnModel(), viewColumnIndex);
     }
 
     /**
@@ -2603,16 +2601,8 @@
      * @see #convertColumnIndexToModel
      */
     public int convertColumnIndexToView(int modelColumnIndex) {
-        if (modelColumnIndex < 0) {
-            return modelColumnIndex;
-        }
-        TableColumnModel cm = getColumnModel();
-        for (int column = 0; column < getColumnCount(); column++) {
-            if (cm.getColumn(column).getModelIndex() == modelColumnIndex) {
-                return column;
-            }
-        }
-        return -1;
+        return SwingUtilities2.convertColumnIndexToView(
+                getColumnModel(), modelColumnIndex);
     }
 
     /**
--- a/src/share/classes/javax/swing/border/MatteBorder.java	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/swing/border/MatteBorder.java	Wed Jun 16 14:07:47 2010 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, Oracle and/or its affiliates. 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
@@ -26,7 +26,6 @@
 
 import java.awt.Graphics;
 import java.awt.Insets;
-import java.awt.Rectangle;
 import java.awt.Component;
 import java.awt.Color;
 
@@ -133,63 +132,29 @@
             g.fillRect(width - insets.right, 0, insets.right, height - insets.bottom);
 
         } else if (tileIcon != null) {
-
             int tileW = tileIcon.getIconWidth();
             int tileH = tileIcon.getIconHeight();
-            int xpos, ypos, startx, starty;
-            Graphics cg;
-
-            // Paint top matte edge
-            cg = g.create();
-            cg.setClip(0, 0, width, insets.top);
-            for (ypos = 0; insets.top - ypos > 0; ypos += tileH) {
-                for (xpos = 0; width - xpos > 0; xpos += tileW) {
-                    tileIcon.paintIcon(c, cg, xpos, ypos);
-                }
-            }
-            cg.dispose();
-
-            // Paint left matte edge
-            cg = g.create();
-            cg.setClip(0, insets.top, insets.left, height - insets.top);
-            starty = insets.top - (insets.top%tileH);
-            startx = 0;
-            for (ypos = starty; height - ypos > 0; ypos += tileH) {
-                for (xpos = startx; insets.left - xpos > 0; xpos += tileW) {
-                    tileIcon.paintIcon(c, cg, xpos, ypos);
-                }
-            }
-            cg.dispose();
-
-            // Paint bottom matte edge
-            cg = g.create();
-            cg.setClip(insets.left, height - insets.bottom, width - insets.left, insets.bottom);
-            starty = (height - insets.bottom) - ((height - insets.bottom)%tileH);
-            startx = insets.left - (insets.left%tileW);
-            for (ypos = starty; height - ypos > 0; ypos += tileH) {
-                for (xpos = startx; width - xpos > 0; xpos += tileW) {
-                    tileIcon.paintIcon(c, cg, xpos, ypos);
-                }
-            }
-            cg.dispose();
-
-            // Paint right matte edge
-            cg = g.create();
-            cg.setClip(width - insets.right, insets.top, insets.right, height - insets.top - insets.bottom);
-            starty = insets.top - (insets.top%tileH);
-            startx = width - insets.right - ((width - insets.right)%tileW);
-            for (ypos = starty; height - ypos > 0; ypos += tileH) {
-                for (xpos = startx; width - xpos > 0; xpos += tileW) {
-                    tileIcon.paintIcon(c, cg, xpos, ypos);
-                }
-            }
-            cg.dispose();
+            paintEdge(c, g, 0, 0, width - insets.right, insets.top, tileW, tileH);
+            paintEdge(c, g, 0, insets.top, insets.left, height - insets.top, tileW, tileH);
+            paintEdge(c, g, insets.left, height - insets.bottom, width - insets.left, insets.bottom, tileW, tileH);
+            paintEdge(c, g, width - insets.right, 0, insets.right, height - insets.bottom, tileW, tileH);
         }
         g.translate(-x, -y);
         g.setColor(oldColor);
 
     }
 
+    private void paintEdge(Component c, Graphics g, int x, int y, int width, int height, int tileW, int tileH) {
+        g = g.create(x, y, width, height);
+        int sY = -(y % tileH);
+        for (x = -(x % tileW); x < width; x += tileW) {
+            for (y = sY; y < height; y += tileH) {
+                this.tileIcon.paintIcon(c, g, x, y);
+            }
+        }
+        g.dispose();
+    }
+
     /**
      * Reinitialize the insets parameter with this Border's current Insets.
      * @param c the component for which this border insets value applies
--- a/src/share/classes/javax/swing/border/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/swing/border/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/swing/colorchooser/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/swing/colorchooser/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 </head>
 <body bgcolor="white">
--- a/src/share/classes/javax/swing/event/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/swing/event/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/swing/filechooser/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/swing/filechooser/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/swing/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/swing/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -22,9 +22,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
         <META NAME="Author" Content="Eric Armstrong">
--- a/src/share/classes/javax/swing/plaf/basic/BasicTabbedPaneUI.java	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/swing/plaf/basic/BasicTabbedPaneUI.java	Wed Jun 16 14:07:47 2010 -0700
@@ -3524,7 +3524,13 @@
             }
             else if (name =="indexForTitle") {
                 calculatedBaseline = false;
-                updateHtmlViews((Integer)e.getNewValue());
+                Integer index = (Integer) e.getNewValue();
+                // remove the current index
+                // to let updateHtmlViews() insert the correct one
+                if (htmlViews != null) {
+                    htmlViews.removeElementAt(index);
+                }
+                updateHtmlViews(index);
             } else if (name == "tabLayoutPolicy") {
                 BasicTabbedPaneUI.this.uninstallUI(pane);
                 BasicTabbedPaneUI.this.installUI(pane);
--- a/src/share/classes/javax/swing/plaf/basic/BasicTableHeaderUI.java	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/swing/plaf/basic/BasicTableHeaderUI.java	Wed Jun 16 14:07:47 2010 -0700
@@ -98,15 +98,18 @@
         private Cursor otherCursor = resizeCursor;
 
         public void mouseClicked(MouseEvent e) {
+            if (!header.isEnabled()) {
+                return;
+            }
             if (e.getClickCount() % 2 == 1 &&
-                    SwingUtilities.isLeftMouseButton(e)){
+                    SwingUtilities.isLeftMouseButton(e)) {
                 JTable table = header.getTable();
                 RowSorter sorter;
                 if (table != null && (sorter = table.getRowSorter()) != null) {
                     int columnIndex = header.columnAtPoint(e.getPoint());
                     if (columnIndex != -1) {
                         columnIndex = table.convertColumnIndexToModel(
-                                            columnIndex);
+                                columnIndex);
                         sorter.toggleSortOrder(columnIndex);
                     }
                 }
@@ -140,6 +143,9 @@
         }
 
         public void mousePressed(MouseEvent e) {
+            if (!header.isEnabled()) {
+                return;
+            }
             header.setDraggedColumn(null);
             header.setResizingColumn(null);
             header.setDraggedDistance(0);
@@ -182,6 +188,9 @@
         }
 
         public void mouseMoved(MouseEvent e) {
+            if (!header.isEnabled()) {
+                return;
+            }
             if (canResize(getResizingColumn(e.getPoint()), header) !=
                 (header.getCursor() == resizeCursor)) {
                 swapCursor();
@@ -190,6 +199,9 @@
        }
 
         public void mouseDragged(MouseEvent e) {
+            if (!header.isEnabled()) {
+                return;
+            }
             int mouseX = e.getX();
 
             TableColumn resizingColumn  = header.getResizingColumn();
@@ -217,21 +229,23 @@
                 if (0 <= newColumnIndex && newColumnIndex < cm.getColumnCount()) {
                     int width = cm.getColumn(newColumnIndex).getWidth();
                     if (Math.abs(draggedDistance) > (width / 2)) {
-                        JTable table = header.getTable();
 
                         mouseXOffset = mouseXOffset + direction * width;
                         header.setDraggedDistance(draggedDistance - direction * width);
 
                         //Cache the selected column.
-                        int selectedIndex = table.convertColumnIndexToModel(
-                                                        getSelectedColumnIndex());
+                        int selectedIndex =
+                                SwingUtilities2.convertColumnIndexToModel(
+                                        header.getColumnModel(),
+                                        getSelectedColumnIndex());
 
                         //Now do the move.
                         cm.moveColumn(columnIndex, newColumnIndex);
 
                         //Update the selected index.
                         selectColumn(
-                            table.convertColumnIndexToView(selectedIndex),
+                            SwingUtilities2.convertColumnIndexToView(
+                                    header.getColumnModel(), selectedIndex),
                             false);
 
                         return;
@@ -244,6 +258,9 @@
         }
 
         public void mouseReleased(MouseEvent e) {
+            if (!header.isEnabled()) {
+                return;
+            }
             setDraggedDistance(0, viewIndexForColumn(header.getDraggedColumn()));
 
             header.setResizingColumn(null);
@@ -253,10 +270,16 @@
         }
 
         public void mouseEntered(MouseEvent e) {
+            if (!header.isEnabled()) {
+                return;
+            }
             updateRolloverColumn(e);
         }
 
         public void mouseExited(MouseEvent e) {
+            if (!header.isEnabled()) {
+                return;
+            }
             int oldRolloverColumn = rolloverColumn;
             rolloverColumn = -1;
             rolloverColumnUpdated(oldRolloverColumn, rolloverColumn);
--- a/src/share/classes/javax/swing/plaf/basic/BasicTextUI.java	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/swing/plaf/basic/BasicTextUI.java	Wed Jun 16 14:07:47 2010 -0700
@@ -779,20 +779,16 @@
         if (c instanceof JTextComponent) {
             editor = (JTextComponent) c;
 
+            // common case is background painted... this can
+            // easily be changed by subclasses or from outside
+            // of the component.
+            LookAndFeel.installProperty(editor, "opaque", Boolean.TRUE);
+            LookAndFeel.installProperty(editor, "autoscrolls", Boolean.TRUE);
+
             // install defaults
             installDefaults();
             installDefaults2();
 
-            // This is a workaround as these should not override what synth has
-            // set them to
-            if (! (this instanceof SynthUI)) {
-                // common case is background painted... this can
-                // easily be changed by subclasses or from outside
-                // of the component.
-                LookAndFeel.installProperty(editor, "opaque", Boolean.TRUE);
-                LookAndFeel.installProperty(editor, "autoscrolls", Boolean.TRUE);
-            }
-
             // attach to the model and editor
             editor.addPropertyChangeListener(updateHandler);
             Document doc = editor.getDocument();
--- a/src/share/classes/javax/swing/plaf/basic/BasicViewportUI.java	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/swing/plaf/basic/BasicViewportUI.java	Wed Jun 16 14:07:47 2010 -0700
@@ -56,8 +56,8 @@
     }
 
     public void uninstallUI(JComponent c) {
+        uninstallDefaults(c);
         super.uninstallUI(c);
-
     }
 
     protected void installDefaults(JComponent c) {
--- a/src/share/classes/javax/swing/plaf/basic/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/swing/plaf/basic/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/swing/plaf/metal/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/swing/plaf/metal/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/swing/plaf/multi/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/swing/plaf/multi/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/swing/plaf/nimbus/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/swing/plaf/nimbus/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/swing/plaf/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/swing/plaf/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/swing/plaf/synth/SynthTableUI.java	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/swing/plaf/synth/SynthTableUI.java	Wed Jun 16 14:07:47 2010 -0700
@@ -361,12 +361,14 @@
             cMax = table.getColumnCount()-1;
         }
 
-        // Paint the grid.
-        paintGrid(context, g, rMin, rMax, cMin, cMax);
-
         // Paint the cells.
         paintCells(context, g, rMin, rMax, cMin, cMax);
 
+        // Paint the grid.
+        // it is important to paint the grid after the cells, otherwise the grid will be overpainted
+        // because in Synth cell renderers are likely to be opaque
+        paintGrid(context, g, rMin, rMax, cMin, cMax);
+
         paintDropLines(context, g);
     }
 
--- a/src/share/classes/javax/swing/plaf/synth/SynthTextPaneUI.java	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/swing/plaf/synth/SynthTextPaneUI.java	Wed Jun 16 14:07:47 2010 -0700
@@ -72,7 +72,28 @@
     }
 
     /**
-     * @inheritDoc
+     * Installs the UI for a component.  This does the following
+     * things.
+     * <ol>
+     * <li>
+     * Sets opaqueness of the associated component according to its style,
+     * if the opaque property has not already been set by the client program.
+     * <li>
+     * Installs the default caret and highlighter into the
+     * associated component. These properties are only set if their
+     * current value is either {@code null} or an instance of
+     * {@link UIResource}.
+     * <li>
+     * Attaches to the editor and model.  If there is no
+     * model, a default one is created.
+     * <li>
+     * Creates the view factory and the view hierarchy used
+     * to represent the model.
+     * </ol>
+     *
+     * @param c the editor component
+     * @see BasicTextUI#installUI
+     * @see ComponentUI#installUI
      */
     @Override
     public void installUI(JComponent c) {
--- a/src/share/classes/javax/swing/plaf/synth/doc-files/componentProperties.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/swing/plaf/synth/doc-files/componentProperties.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 
 -->
 </head>
--- a/src/share/classes/javax/swing/plaf/synth/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/swing/plaf/synth/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 
 
 -->
--- a/src/share/classes/javax/swing/table/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/swing/table/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/swing/text/WrappedPlainView.java	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/swing/text/WrappedPlainView.java	Wed Jun 16 14:07:47 2010 -0700
@@ -24,8 +24,6 @@
  */
 package javax.swing.text;
 
-import java.util.Vector;
-import java.util.Properties;
 import java.awt.*;
 import java.lang.ref.SoftReference;
 import javax.swing.event.*;
@@ -236,9 +234,6 @@
         Segment segment = SegmentCache.getSharedSegment();
         loadText(segment, p0, p1);
         int currentWidth = getWidth();
-        if (currentWidth == Integer.MAX_VALUE) {
-            currentWidth = (int) getDefaultSpan(View.X_AXIS);
-        }
         if (wordWrap) {
             p = p0 + Utilities.getBreakLocation(segment, metrics,
                                                 tabBase, tabBase + currentWidth,
@@ -324,53 +319,6 @@
         tabSize = getTabSize() * metrics.charWidth('m');
     }
 
-    /**
-     * Return reasonable default values for the view dimensions.  The standard
-     * text terminal size 80x24 is pretty suitable for the wrapped plain view.
-     *
-     * The size should not be larger than the component housing the view's
-     * container.
-     */
-    private float getDefaultSpan(int axis) {
-         Container host = getContainer();
-         Component parent = null;
-
-         if (host != null) {
-            parent = host.getParent();
-         }
-
-         switch (axis) {
-            case View.X_AXIS:
-               int defaultWidth = 80 * metrics.getWidths()['M'];
-               int parentWidth = 0;
-
-               if (parent != null) {
-                  parentWidth = parent.getWidth();
-               }
-
-               if (defaultWidth > parentWidth) {
-                 return parentWidth;
-               }
-               return defaultWidth;
-
-            case View.Y_AXIS:
-               int defaultHeight = 24 * metrics.getHeight();
-               int parentHeight = 0;
-
-               if (parent != null) {
-                  parentHeight = parent.getHeight();
-               }
-
-               if (defaultHeight > parentHeight) {
-                 return parentHeight;
-               }
-               return defaultHeight;
-
-            default:
-                throw new IllegalArgumentException("Invalid axis: " + axis);
-        }
-    }
-
     // --- TabExpander methods ------------------------------------------
 
     /**
@@ -605,18 +553,14 @@
                 if (width == Integer.MAX_VALUE) {
                     // We have been initially set to MAX_VALUE, but we don't
                     // want this as our preferred.
-                    width = getDefaultSpan(axis);
+                    return 100f;
                 }
                 return width;
             case View.Y_AXIS:
-                if (getDocument().getLength() > 0) {
-                    if ((lineCount < 0) || widthChanging) {
-                        breakLines(getStartOffset());
-                    }
-                    return lineCount * metrics.getHeight();
-                } else {
-                    return getDefaultSpan(axis);
+                if (lineCount < 0 || widthChanging) {
+                    breakLines(getStartOffset());
                 }
+                return lineCount * metrics.getHeight();
             default:
                 throw new IllegalArgumentException("Invalid axis: " + axis);
             }
--- a/src/share/classes/javax/swing/text/html/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/swing/text/html/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
Binary file src/share/classes/javax/swing/text/html/parser/html32.bdtd has changed
--- a/src/share/classes/javax/swing/text/html/parser/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/swing/text/html/parser/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/swing/text/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/swing/text/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/swing/text/rtf/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/swing/text/rtf/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/swing/tree/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/swing/tree/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/swing/undo/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/swing/undo/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/xml/crypto/dom/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/xml/crypto/dom/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -20,9 +20,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/xml/crypto/dsig/dom/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/xml/crypto/dsig/dom/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -20,9 +20,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/xml/crypto/dsig/keyinfo/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/xml/crypto/dsig/keyinfo/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -20,9 +20,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/xml/crypto/dsig/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/xml/crypto/dsig/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -20,9 +20,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/xml/crypto/dsig/spec/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/xml/crypto/dsig/spec/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -20,9 +20,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/javax/xml/crypto/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/javax/xml/crypto/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -20,9 +20,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/org/ietf/jgss/package.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/org/ietf/jgss/package.html	Wed Jun 16 14:07:47 2010 -0700
@@ -21,9 +21,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- a/src/share/classes/overview-core.html	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/overview-core.html	Wed Jun 16 14:07:47 2010 -0700
@@ -22,9 +22,9 @@
 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.
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
 -->
 
 </head>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/sun/font/GlyphDisposedListener.java	Wed Jun 16 14:07:47 2010 -0700
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2010 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.font;
+
+import java.util.*;
+
+public interface GlyphDisposedListener {
+    public void glyphDisposed(ArrayList<Long> glyphs);
+}
--- a/src/share/classes/sun/font/StrikeCache.java	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/sun/font/StrikeCache.java	Wed Jun 16 14:07:47 2010 -0700
@@ -31,6 +31,7 @@
 import java.lang.ref.ReferenceQueue;
 import java.lang.ref.SoftReference;
 import java.lang.ref.WeakReference;
+import java.util.*;
 
 import sun.java2d.Disposer;
 import sun.java2d.pipe.BufferedContext;
@@ -66,6 +67,9 @@
 
     static ReferenceQueue refQueue = Disposer.getQueue();
 
+    static ArrayList<GlyphDisposedListener> disposeListeners = new ArrayList<GlyphDisposedListener>(1);
+
+
     /* Reference objects may have their referents cleared when GC chooses.
      * During application client start-up there is typically at least one
      * GC which causes the hotspot VM to clear soft (not just weak) references
@@ -108,6 +112,8 @@
     static int topLeftXOffset;
     static int topLeftYOffset;
     static int pixelDataOffset;
+    static int cacheCellOffset;
+    static int managedOffset;
     static long invisibleGlyphPtr;
 
     /* Native method used to return information used for unsafe
@@ -129,7 +135,7 @@
 
     static {
 
-        long[] nativeInfo = new long[11];
+        long[] nativeInfo = new long[13];
         getGlyphCacheDescription(nativeInfo);
         //Can also get address size from Unsafe class :-
         //nativeAddressSize = unsafe.addressSize();
@@ -144,6 +150,9 @@
         topLeftYOffset    = (int)nativeInfo[8];
         pixelDataOffset   = (int)nativeInfo[9];
         invisibleGlyphPtr = nativeInfo[10];
+        cacheCellOffset = (int) nativeInfo[11];
+        managedOffset = (int) nativeInfo[12];
+
         if (nativeAddressSize < 4) {
             throw new InternalError("Unexpected address size for font data: " +
                                     nativeAddressSize);
@@ -195,10 +204,10 @@
 
     private static final void doDispose(FontStrikeDisposer disposer) {
         if (disposer.intGlyphImages != null) {
-            freeIntMemory(disposer.intGlyphImages,
+            freeCachedIntMemory(disposer.intGlyphImages,
                     disposer.pScalerContext);
         } else if (disposer.longGlyphImages != null) {
-            freeLongMemory(disposer.longGlyphImages,
+            freeCachedLongMemory(disposer.longGlyphImages,
                     disposer.pScalerContext);
         } else if (disposer.segIntGlyphImages != null) {
             /* NB Now making multiple JNI calls in this case.
@@ -207,7 +216,7 @@
              */
             for (int i=0; i<disposer.segIntGlyphImages.length; i++) {
                 if (disposer.segIntGlyphImages[i] != null) {
-                    freeIntMemory(disposer.segIntGlyphImages[i],
+                    freeCachedIntMemory(disposer.segIntGlyphImages[i],
                             disposer.pScalerContext);
                     /* native will only free the scaler context once */
                     disposer.pScalerContext = 0L;
@@ -218,19 +227,19 @@
              * for a strike that never was asked to rasterise a glyph.
              */
             if (disposer.pScalerContext != 0L) {
-                freeIntMemory(new int[0], disposer.pScalerContext);
+                freeCachedIntMemory(new int[0], disposer.pScalerContext);
             }
         } else if (disposer.segLongGlyphImages != null) {
             for (int i=0; i<disposer.segLongGlyphImages.length; i++) {
                 if (disposer.segLongGlyphImages[i] != null) {
-                    freeLongMemory(disposer.segLongGlyphImages[i],
+                    freeCachedLongMemory(disposer.segLongGlyphImages[i],
                             disposer.pScalerContext);
                     disposer.pScalerContext = 0L;
                     disposer.segLongGlyphImages[i] = null;
                 }
             }
             if (disposer.pScalerContext != 0L) {
-                freeLongMemory(new long[0], disposer.pScalerContext);
+                freeCachedLongMemory(new long[0], disposer.pScalerContext);
             }
         } else if (disposer.pScalerContext != 0L) {
             /* Rarely a strike may have been created that never cached
@@ -238,9 +247,9 @@
              * context.
              */
             if (longAddresses()) {
-                freeLongMemory(new long[0], disposer.pScalerContext);
+                freeCachedLongMemory(new long[0], disposer.pScalerContext);
             } else {
-                freeIntMemory(new int[0], disposer.pScalerContext);
+                freeCachedIntMemory(new int[0], disposer.pScalerContext);
             }
         }
     }
@@ -304,6 +313,68 @@
     private static native void freeIntMemory(int[] glyphPtrs, long pContext);
     private static native void freeLongMemory(long[] glyphPtrs, long pContext);
 
+    private static void freeCachedIntMemory(int[] glyphPtrs, long pContext) {
+        synchronized(disposeListeners) {
+            if (disposeListeners.size() > 0) {
+                ArrayList<Long> gids = null;
+
+                for (int i = 0; i < glyphPtrs.length; i++) {
+                    if (glyphPtrs[i] != 0 && unsafe.getByte(glyphPtrs[i] + managedOffset) == 0
+                            && unsafe.getInt(glyphPtrs[i] + cacheCellOffset) != 0) {
+
+                        if (gids == null) {
+                            gids = new ArrayList<Long>();
+                        }
+                        gids.add((long) glyphPtrs[i]);
+                    }
+                }
+
+                if (gids != null) {
+                    notifyDisposeListeners(gids);
+                }
+            }
+        }
+
+        freeIntMemory(glyphPtrs, pContext);
+    }
+
+    private static void  freeCachedLongMemory(long[] glyphPtrs, long pContext) {
+        synchronized(disposeListeners) {
+        if (disposeListeners.size() > 0)  {
+                ArrayList<Long> gids = null;
+
+                for (int i=0; i < glyphPtrs.length; i++) {
+                    if (glyphPtrs[i] != 0
+                            && unsafe.getByte(glyphPtrs[i] + managedOffset) == 0
+                            && unsafe.getInt(glyphPtrs[i] + cacheCellOffset) != 0) {
+
+                        if (gids == null) {
+                            gids = new ArrayList<Long>();
+                        }
+                        gids.add((long) glyphPtrs[i]);
+                    }
+                }
+
+                if (gids != null) {
+                    notifyDisposeListeners(gids);
+                }
+        }
+        }
+
+        freeLongMemory(glyphPtrs, pContext);
+    }
+
+    public static void addGlyphDisposedListener(GlyphDisposedListener listener) {
+        synchronized(disposeListeners) {
+            disposeListeners.add(listener);
+        }
+    }
+
+    private static void notifyDisposeListeners(ArrayList<Long> glyphs) {
+        for (GlyphDisposedListener listener : disposeListeners) {
+            listener.glyphDisposed(glyphs);
+        }
+    }
 
     public static Reference getStrikeRef(FontStrike strike) {
         return getStrikeRef(strike, cacheRefTypeWeak);
--- a/src/share/classes/sun/font/SunFontManager.java	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/sun/font/SunFontManager.java	Wed Jun 16 14:07:47 2010 -0700
@@ -73,7 +73,9 @@
                 return(name.startsWith(".ttf", offset) ||
                        name.startsWith(".TTF", offset) ||
                        name.startsWith(".ttc", offset) ||
-                       name.startsWith(".TTC", offset));
+                       name.startsWith(".TTC", offset) ||
+                       name.startsWith(".otf", offset) ||
+                       name.startsWith(".OTF", offset));
             }
         }
     }
@@ -108,7 +110,9 @@
                     name.startsWith(".ttf", offset) ||
                     name.startsWith(".TTF", offset) ||
                     name.startsWith(".ttc", offset) ||
-                    name.startsWith(".TTC", offset);
+                    name.startsWith(".TTC", offset) ||
+                    name.startsWith(".otf", offset) ||
+                    name.startsWith(".OTF", offset);
                 if (isTT) {
                     return true;
                 } else if (noType1Font) {
--- a/src/share/classes/sun/java2d/pipe/BufferedPaints.java	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/sun/java2d/pipe/BufferedPaints.java	Wed Jun 16 14:07:47 2010 -0700
@@ -307,7 +307,7 @@
      * linear RGB space.  Copied directly from the
      * MultipleGradientPaintContext class.
      */
-    private static int convertSRGBtoLinearRGB(int color) {
+    public static int convertSRGBtoLinearRGB(int color) {
         float input, output;
 
         input = color / 255.0f;
--- a/src/share/classes/sun/java2d/pipe/RenderBuffer.java	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/sun/java2d/pipe/RenderBuffer.java	Wed Jun 16 14:07:47 2010 -0700
@@ -117,6 +117,11 @@
         curAddress = baseAddress;
     }
 
+    public final RenderBuffer skip(long numBytes) {
+        curAddress += numBytes;
+        return this;
+    }
+
     /**
      * putByte() methods...
      */
--- a/src/share/classes/sun/java2d/pisces/META-INF/services/sun.java2d.pipe.RenderingEngine	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/sun/java2d/pisces/META-INF/services/sun.java2d.pipe.RenderingEngine	Wed Jun 16 14:07:47 2010 -0700
@@ -1,2 +1,5 @@
+# Jules Rendering Engine module
+sun.java2d.jules.JulesRenderingEngine
+
 #  Pisces Rendering Engine module
-sun.java2d.pisces.PiscesRenderingEngine
+sun.java2d.pisces.PiscesRenderingEngine
\ No newline at end of file
--- a/src/share/classes/sun/nio/cs/standard-charsets	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/sun/nio/cs/standard-charsets	Wed Jun 16 14:07:47 2010 -0700
@@ -35,7 +35,7 @@
 # which is lazy initialized.
 
 # This year should only change if the generated source is modified.
-copyright 2000
+copyright 2000, 2007,
 package sun.nio.cs
 class StandardCharsets
 
--- a/src/share/classes/sun/swing/SwingUtilities2.java	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/sun/swing/SwingUtilities2.java	Wed Jun 16 14:07:47 2010 -0700
@@ -44,6 +44,8 @@
 import javax.swing.text.DefaultHighlighter;
 import javax.swing.text.DefaultCaret;
 import javax.swing.table.TableCellRenderer;
+import javax.swing.table.TableColumnModel;
+
 import sun.swing.PrintColorUIResource;
 import sun.swing.ImageIconUIResource;
 import sun.print.ProxyPrintGraphics;
@@ -1807,4 +1809,54 @@
                                          boolean three) {
         return liesIn(rect, p, false, false, three);
     }
+
+    /**
+     * Maps the index of the column in the view at
+     * {@code viewColumnIndex} to the index of the column
+     * in the table model.  Returns the index of the corresponding
+     * column in the model.  If {@code viewColumnIndex}
+     * is less than zero, returns {@code viewColumnIndex}.
+     *
+     * @param cm the table model
+     * @param   viewColumnIndex     the index of the column in the view
+     * @return  the index of the corresponding column in the model
+     *
+     * @see JTable#convertColumnIndexToModel(int)
+     * @see javax.swing.plaf.basic.BasicTableHeaderUI
+     */
+    public static int convertColumnIndexToModel(TableColumnModel cm,
+                                                int viewColumnIndex) {
+        if (viewColumnIndex < 0) {
+            return viewColumnIndex;
+        }
+        return cm.getColumn(viewColumnIndex).getModelIndex();
+    }
+
+    /**
+     * Maps the index of the column in the {@code cm} at
+     * {@code modelColumnIndex} to the index of the column
+     * in the view.  Returns the index of the
+     * corresponding column in the view; returns {@code -1} if this column
+     * is not being displayed. If {@code modelColumnIndex} is less than zero,
+     * returns {@code modelColumnIndex}.
+     *
+     * @param cm the table model
+     * @param modelColumnIndex the index of the column in the model
+     * @return the index of the corresponding column in the view
+     *
+     * @see JTable#convertColumnIndexToView(int)
+     * @see javax.swing.plaf.basic.BasicTableHeaderUI
+     */
+    public static int convertColumnIndexToView(TableColumnModel cm,
+                                        int modelColumnIndex) {
+        if (modelColumnIndex < 0) {
+            return modelColumnIndex;
+        }
+        for (int column = 0; column < cm.getColumnCount(); column++) {
+            if (cm.getColumn(column).getModelIndex() == modelColumnIndex) {
+                return column;
+            }
+        }
+        return -1;
+    }
 }
--- a/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUIImpl.java	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/sun/swing/plaf/synth/SynthFileChooserUIImpl.java	Wed Jun 16 14:07:47 2010 -0700
@@ -788,7 +788,7 @@
             // for example /foo/bar/ becomes /foo/bar
             File canonical;
             try {
-                canonical = directory.getCanonicalFile();
+                canonical = ShellFolder.getNormalizedFile(directory);
             } catch (IOException e) {
                 // Maybe drive is not ready. Can't abort here.
                 canonical = directory;
--- a/src/share/classes/sun/swing/table/DefaultTableCellHeaderRenderer.java	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/classes/sun/swing/table/DefaultTableCellHeaderRenderer.java	Wed Jun 16 14:07:47 2010 -0700
@@ -24,6 +24,8 @@
  */
 package sun.swing.table;
 
+import sun.swing.DefaultLookup;
+
 import java.awt.Component;
 import java.awt.Color;
 import java.awt.FontMetrics;
@@ -31,12 +33,11 @@
 import java.awt.Insets;
 import java.awt.Point;
 import java.awt.Rectangle;
+import java.io.Serializable;
 import javax.swing.*;
 import javax.swing.plaf.UIResource;
 import javax.swing.border.Border;
 import javax.swing.table.*;
-import sun.swing.DefaultLookup;
-
 
 public class DefaultTableCellHeaderRenderer extends DefaultTableCellRenderer
         implements UIResource {
@@ -186,7 +187,7 @@
         return new Point(x, y);
     }
 
-    private class EmptyIcon implements Icon {
+    private class EmptyIcon implements Icon, Serializable {
         int width = 0;
         int height = 0;
         public void paintIcon(Component c, Graphics g, int x, int y) {}
--- a/src/share/native/sun/font/AccelGlyphCache.c	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/native/sun/font/AccelGlyphCache.c	Wed Jun 16 14:07:47 2010 -0700
@@ -325,6 +325,7 @@
     cellInfo->glyphInfo = glyph;
     cellInfo->nextGCI = glyph->cellInfo;
     glyph->cellInfo = cellInfo;
+    glyph->managed = MANAGED_GLYPH;
 }
 
 /**
--- a/src/share/native/sun/font/fontscalerdefs.h	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/native/sun/font/fontscalerdefs.h	Wed Jun 16 14:07:47 2010 -0700
@@ -84,15 +84,26 @@
 
 #define t2kScalarAverage(a, b) (((a) + (b)) / (t2kScalar)(2))
 
+  /* managed: 1 means the glyph has a hardware cached
+   * copy, and its freeing is managed by the the usual
+   * 2D disposer code.
+   * A value of 0 means its either unaccelerated (and so has no cellInfos)
+   * or we want to free this in a different way.
+   * The field uses previously unused padding, so doesn't enlarge
+   * the structure.
+   */
+#define UNMANAGED_GLYPH 0
+#define MANAGED_GLYPH   1
 typedef struct GlyphInfo {
     float        advanceX;
     float        advanceY;
     UInt16       width;
     UInt16       height;
     UInt16       rowBytes;
+    UInt8         managed;
     float        topLeftX;
     float        topLeftY;
-    struct _CacheCellInfo *cellInfo;
+    void         *cellInfo;
     UInt8        *image;
 } GlyphInfo;
 
--- a/src/share/native/sun/font/freetypeScaler.c	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/native/sun/font/freetypeScaler.c	Wed Jun 16 14:07:47 2010 -0700
@@ -782,6 +782,7 @@
         return ptr_to_jlong(glyphInfo);
     }
     glyphInfo->cellInfo  = NULL;
+    glyphInfo->managed   = UNMANAGED_GLYPH;
     glyphInfo->rowBytes  = width;
     glyphInfo->width     = width;
     glyphInfo->height    = height;
@@ -1130,7 +1131,7 @@
                     current_type = SEG_LINETO;
                 }
             } else if (FT_CURVE_TAG(outline->tags[i]) == FT_CURVE_TAG_CUBIC) {
-                /* Bit 1 is meaningful for ‘off’ points only.
+                /* Bit 1 is meaningful for 'off' points only.
                    If set, it indicates a third-order Bezier arc control
                    point; and a second-order control point if unset.  */
                 current_type = SEG_CUBICTO;
--- a/src/share/native/sun/font/sunFont.c	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/native/sun/font/sunFont.c	Wed Jun 16 14:07:47 2010 -0700
@@ -233,7 +233,8 @@
         for (i=0; i< len; i++) {
             if (ptrs[i] != 0) {
                 GlyphInfo *ginfo = (GlyphInfo *)ptrs[i];
-                if (ginfo->cellInfo != NULL) {
+                if (ginfo->cellInfo != NULL &&
+                    ginfo->managed == MANAGED_GLYPH) {
                     // invalidate this glyph's accelerated cache cell
                     AccelGlyphCache_RemoveAllCellInfos(ginfo);
                 }
@@ -264,7 +265,8 @@
         for (i=0; i< len; i++) {
             if (ptrs[i] != 0L) {
                 GlyphInfo *ginfo = (GlyphInfo *) jlong_to_ptr(ptrs[i]);
-                if (ginfo->cellInfo != NULL) {
+                if (ginfo->cellInfo != NULL &&
+                    ginfo->managed == MANAGED_GLYPH) {
                     AccelGlyphCache_RemoveAllCellInfos(ginfo);
                 }
                 free((void*)ginfo);
@@ -285,7 +287,7 @@
     GlyphInfo *info;
     size_t baseAddr;
 
-    if ((*env)->GetArrayLength(env, results) < 10) {
+    if ((*env)->GetArrayLength(env, results) < 13) {
         return;
     }
 
@@ -310,6 +312,9 @@
     nresults[8] = (size_t)&(info->topLeftY)-baseAddr;
     nresults[9] = (size_t)&(info->image)-baseAddr;
     nresults[10] = (jlong)(uintptr_t)info; /* invisible glyph */
+    nresults[11] = (size_t)&(info->cellInfo)-baseAddr;
+    nresults[12] = (size_t)&(info->managed)-baseAddr;
+
     (*env)->ReleasePrimitiveArrayCritical(env, results, nresults, 0);
 }
 
--- a/src/share/native/sun/java2d/opengl/OGLTextRenderer.c	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/share/native/sun/java2d/opengl/OGLTextRenderer.c	Wed Jun 16 14:07:47 2010 -0700
@@ -244,6 +244,7 @@
 OGLTR_AddToGlyphCache(GlyphInfo *glyph, jboolean rgbOrder)
 {
     GLenum pixelFormat;
+    CacheCellInfo *ccinfo;
 
     J2dTraceLn(J2D_TRACE_INFO, "OGLTR_AddToGlyphCache");
 
@@ -258,11 +259,12 @@
     }
 
     AccelGlyphCache_AddGlyph(glyphCache, glyph);
+    ccinfo = (CacheCellInfo *) glyph->cellInfo;
 
-    if (glyph->cellInfo != NULL) {
+    if (ccinfo != NULL) {
         // store glyph image in texture cell
         j2d_glTexSubImage2D(GL_TEXTURE_2D, 0,
-                            glyph->cellInfo->x, glyph->cellInfo->y,
+                            ccinfo->x, ccinfo->y,
                             glyph->width, glyph->height,
                             pixelFormat, GL_UNSIGNED_BYTE, glyph->image);
     }
@@ -668,7 +670,7 @@
         }
     }
 
-    cell = ginfo->cellInfo;
+    cell = (CacheCellInfo *) (ginfo->cellInfo);
     cell->timesRendered++;
 
     x1 = (jfloat)x;
@@ -871,7 +873,7 @@
         }
     }
 
-    cell = ginfo->cellInfo;
+    cell = (CacheCellInfo *) (ginfo->cellInfo);
     cell->timesRendered++;
 
     // location of the glyph in the destination's coordinate space
--- a/src/solaris/classes/sun/awt/X11/keysym2ucs.h	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/solaris/classes/sun/awt/X11/keysym2ucs.h	Wed Jun 16 14:07:47 2010 -0700
@@ -39,7 +39,7 @@
  */
 
 tojava /*
-tojava  * Copyright 2005-2009 Sun Microsystems, Inc.  All Rights Reserved.
+tojava  * Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
 tojava  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 tojava  *
 tojava  * This code is free software; you can redistribute it and/or modify it
--- a/src/solaris/classes/sun/awt/X11GraphicsDevice.java	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/solaris/classes/sun/awt/X11GraphicsDevice.java	Wed Jun 16 14:07:47 2010 -0700
@@ -39,6 +39,7 @@
 import java.util.HashMap;
 
 import sun.java2d.opengl.GLXGraphicsConfig;
+import sun.java2d.xr.XRGraphicsConfig;
 import sun.java2d.loops.SurfaceType;
 
 /**
@@ -152,6 +153,8 @@
             }
 
             boolean glxSupported = X11GraphicsEnvironment.isGLXAvailable();
+            boolean xrenderSupported = X11GraphicsEnvironment.isXRenderAvailable();
+
             boolean dbeSupported = isDBESupported();
             if (dbeSupported && doubleBufferVisuals == null) {
                 doubleBufferVisuals = new HashSet();
@@ -167,9 +170,15 @@
                     boolean doubleBuffer =
                         (dbeSupported &&
                          doubleBufferVisuals.contains(Integer.valueOf(visNum)));
-                    ret[i] = X11GraphicsConfig.getConfig(this, visNum, depth,
-                            getConfigColormap(i, screen),
-                            doubleBuffer);
+
+                    if (xrenderSupported) {
+                        ret[i] = XRGraphicsConfig.getConfig(this, visNum, depth,                                getConfigColormap(i, screen),
+                                doubleBuffer);
+                    } else {
+                       ret[i] = X11GraphicsConfig.getConfig(this, visNum, depth,
+                              getConfigColormap(i, screen),
+                              doubleBuffer);
+                    }
                 }
             }
             configs = ret;
@@ -243,9 +252,19 @@
                     doubleBuffer =
                         doubleBufferVisuals.contains(Integer.valueOf(visNum));
                 }
-                defaultConfig = X11GraphicsConfig.getConfig(this, visNum,
-                                                            depth, getConfigColormap(0, screen),
-                                                            doubleBuffer);
+
+                if (X11GraphicsEnvironment.isXRenderAvailable()) {
+                    if (X11GraphicsEnvironment.isXRenderVerbose()) {
+                        System.out.println("XRender pipeline enabled");
+                    }
+                    defaultConfig = XRGraphicsConfig.getConfig(this, visNum,
+                            depth, getConfigColormap(0, screen),
+                            doubleBuffer);
+                } else {
+                    defaultConfig = X11GraphicsConfig.getConfig(this, visNum,
+                                        depth, getConfigColormap(0, screen),
+                                        doubleBuffer);
+                }
             }
         }
     }
--- a/src/solaris/classes/sun/awt/X11GraphicsEnvironment.java	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/solaris/classes/sun/awt/X11GraphicsEnvironment.java	Wed Jun 16 14:07:47 2010 -0700
@@ -26,6 +26,7 @@
 package sun.awt;
 
 import java.awt.GraphicsDevice;
+
 import java.awt.Point;
 import java.awt.Rectangle;
 import java.io.BufferedReader;
@@ -51,6 +52,7 @@
 import sun.java2d.SurfaceManagerFactory;
 import sun.java2d.UnixSurfaceManagerFactory;
 import sun.util.logging.PlatformLogger;
+import sun.java2d.xr.XRSurfaceData;
 
 /**
  * This is an implementation of a GraphicsEnvironment object for the
@@ -92,6 +94,18 @@
                         }
                     }
 
+                    // Now check for XRender system property
+                    boolean xRenderRequested = false;
+                    String xProp = System.getProperty("sun.java2d.xrender");
+                        if (xProp != null) {
+                        if (xProp.equals("true") || xProp.equals("t")) {
+                            xRenderRequested = true;
+                        } else if (xProp.equals("True") || xProp.equals("T")) {
+                            xRenderRequested = true;
+                            xRenderVerbose = true;
+                        }
+                    }
+
                     // initialize the X11 display connection
                     initDisplay(glxRequested);
 
@@ -104,6 +118,19 @@
                                 "pipeline (GLX 1.3 not available)");
                         }
                     }
+
+                    // only attempt to initialize Xrender if it was requested
+                    if (xRenderRequested) {
+                        xRenderAvailable = initXRender();
+                        if (xRenderVerbose && !xRenderAvailable) {
+                            System.out.println(
+                                         "Could not enable XRender pipeline");
+                        }
+                    }
+
+                    if (xRenderAvailable) {
+                        XRSurfaceData.initXRSurfaceData();
+                    }
                 }
 
                 return null;
@@ -115,6 +142,7 @@
 
     }
 
+
     private static boolean glxAvailable;
     private static boolean glxVerbose;
 
@@ -128,6 +156,18 @@
         return glxVerbose;
     }
 
+    private static boolean xRenderVerbose;
+    private static boolean xRenderAvailable;
+
+    private static native boolean initXRender();
+    public static boolean isXRenderAvailable() {
+        return xRenderAvailable;
+    }
+
+    public static boolean isXRenderVerbose() {
+        return xRenderVerbose;
+    }
+
     /**
      * Checks if Shared Memory extension can be used.
      * Returns:
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/solaris/classes/sun/font/XRGlyphCache.java	Wed Jun 16 14:07:47 2010 -0700
@@ -0,0 +1,301 @@
+/*
+ * Copyright 2010 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.font;
+
+import java.io.*;
+import java.util.*;
+
+import sun.awt.*;
+import sun.java2d.xr.*;
+
+/**
+ * Glyph cache used by the XRender pipeline.
+ *
+ * @author Clemens Eisserer
+ */
+
+public class XRGlyphCache implements GlyphDisposedListener {
+    XRBackend con;
+    XRCompositeManager maskBuffer;
+    HashMap<MutableInteger, XRGlyphCacheEntry> cacheMap = new HashMap<MutableInteger, XRGlyphCacheEntry>(256);
+
+    int nextID = 1;
+    MutableInteger tmp = new MutableInteger(0);
+
+    int grayGlyphSet;
+    int lcdGlyphSet;
+
+    int time = 0;
+    int cachedPixels = 0;
+    static final int MAX_CACHED_PIXELS = 100000;
+
+    ArrayList<Integer> freeGlyphIDs = new ArrayList<Integer>(255);
+
+    static final boolean batchGlyphUpload = true; // Boolean.parseBoolean(System.getProperty("sun.java2d.xrender.batchGlyphUpload"));
+
+    public XRGlyphCache(XRCompositeManager maskBuf) {
+        this.con = maskBuf.getBackend();
+        this.maskBuffer = maskBuf;
+
+        grayGlyphSet = con.XRenderCreateGlyphSet(XRUtils.PictStandardA8);
+        lcdGlyphSet = con.XRenderCreateGlyphSet(XRUtils.PictStandardARGB32);
+
+        StrikeCache.addGlyphDisposedListener(this);
+    }
+
+    public void glyphDisposed(ArrayList<Long> glyphPtrList) {
+        try {
+            SunToolkit.awtLock();
+
+            ArrayList<Integer> glyphIDList = new ArrayList<Integer>(glyphPtrList.size());
+            for (long glyphPtr : glyphPtrList) {
+                glyphIDList.add(XRGlyphCacheEntry.getGlyphID(glyphPtr));
+            }
+            freeGlyphs(glyphIDList);
+        } finally {
+            SunToolkit.awtUnlock();
+        }
+    }
+
+    protected int getFreeGlyphID() {
+        if (freeGlyphIDs.size() > 0) {
+            int newID = freeGlyphIDs.remove(freeGlyphIDs.size() - 1);
+            ;
+            return newID;
+        }
+        return nextID++;
+    }
+
+    protected XRGlyphCacheEntry getEntryForPointer(long imgPtr) {
+        int id = XRGlyphCacheEntry.getGlyphID(imgPtr);
+
+        if (id == 0) {
+            return null;
+        }
+
+        tmp.setValue(id);
+        return cacheMap.get(tmp);
+    }
+
+    public XRGlyphCacheEntry[] cacheGlyphs(GlyphList glyphList) {
+        time++;
+
+        XRGlyphCacheEntry[] entries = new XRGlyphCacheEntry[glyphList.getNumGlyphs()];
+        long[] imgPtrs = glyphList.getImages();
+        ArrayList<XRGlyphCacheEntry> uncachedGlyphs = null;
+
+        for (int i = 0; i < glyphList.getNumGlyphs(); i++) {
+            XRGlyphCacheEntry glyph;
+
+            // Find uncached glyphs and queue them for upload
+            if ((glyph = getEntryForPointer(imgPtrs[i])) == null) {
+                glyph = new XRGlyphCacheEntry(imgPtrs[i], glyphList);
+                glyph.setGlyphID(getFreeGlyphID());
+                cacheMap.put(new MutableInteger(glyph.getGlyphID()), glyph);
+
+                if (uncachedGlyphs == null) {
+                    uncachedGlyphs = new ArrayList<XRGlyphCacheEntry>();
+                }
+                uncachedGlyphs.add(glyph);
+            }
+            glyph.setLastUsed(time);
+            entries[i] = glyph;
+        }
+
+        // Add glyphs to cache
+        if (uncachedGlyphs != null) {
+            uploadGlyphs(entries, uncachedGlyphs, glyphList, null);
+        }
+
+        return entries;
+    }
+
+    protected void uploadGlyphs(XRGlyphCacheEntry[] glyphs, ArrayList<XRGlyphCacheEntry> uncachedGlyphs, GlyphList gl, int[] glIndices) {
+        for (XRGlyphCacheEntry glyph : uncachedGlyphs) {
+            cachedPixels += glyph.getPixelCnt();
+        }
+
+        if (cachedPixels > MAX_CACHED_PIXELS) {
+            clearCache(glyphs);
+        }
+
+        boolean containsLCDGlyphs = containsLCDGlyphs(uncachedGlyphs);
+        List<XRGlyphCacheEntry>[] seperatedGlyphList = seperateGlyphTypes(uncachedGlyphs, containsLCDGlyphs);
+        List<XRGlyphCacheEntry> grayGlyphList = seperatedGlyphList[0];
+        List<XRGlyphCacheEntry> lcdGlyphList = seperatedGlyphList[1];
+
+        /*
+         * Some XServers crash when uploading multiple glyphs at once. TODO:
+         * Implement build-switch in local case for distributors who know their
+         * XServer is fixed
+         */
+        if (batchGlyphUpload) {
+            if (grayGlyphList != null && grayGlyphList.size() > 0) {
+                con.XRenderAddGlyphs(grayGlyphSet, gl, grayGlyphList, generateGlyphImageStream(grayGlyphList));
+            }
+            if (lcdGlyphList != null && lcdGlyphList.size() > 0) {
+                con.XRenderAddGlyphs(lcdGlyphSet, gl, lcdGlyphList, generateGlyphImageStream(lcdGlyphList));
+            }
+        } else {
+            ArrayList<XRGlyphCacheEntry> tmpList = new ArrayList<XRGlyphCacheEntry>(1);
+            tmpList.add(null);
+
+            for (XRGlyphCacheEntry entry : uncachedGlyphs) {
+                tmpList.set(0, entry);
+
+                if (entry.getGlyphSet() == grayGlyphSet) {
+                    con.XRenderAddGlyphs(grayGlyphSet, gl, tmpList, generateGlyphImageStream(tmpList));
+                } else {
+                    con.XRenderAddGlyphs(lcdGlyphSet, gl, tmpList, generateGlyphImageStream(tmpList));
+                }
+            }
+        }
+    }
+
+    /**
+     * Seperates lcd and grayscale glyphs queued for upload, and sets the
+     * appropriate glyphset for the cache entries.
+     */
+    protected List<XRGlyphCacheEntry>[] seperateGlyphTypes(List<XRGlyphCacheEntry> glyphList, boolean containsLCDGlyphs) {
+        ArrayList<XRGlyphCacheEntry> lcdGlyphs = null;
+        ArrayList<XRGlyphCacheEntry> grayGlyphs = null;
+
+        for (XRGlyphCacheEntry cacheEntry : glyphList) {
+            if (cacheEntry.isGrayscale(containsLCDGlyphs)) {
+                if (grayGlyphs == null) {
+                    grayGlyphs = new ArrayList<XRGlyphCacheEntry>(glyphList.size());
+                }
+                cacheEntry.setGlyphSet(grayGlyphSet);
+                grayGlyphs.add(cacheEntry);
+            } else {
+                if (lcdGlyphs == null) {
+                    lcdGlyphs = new ArrayList<XRGlyphCacheEntry>(glyphList.size());
+                }
+                cacheEntry.setGlyphSet(lcdGlyphSet);
+                lcdGlyphs.add(cacheEntry);
+            }
+        }
+
+        return new List[] { grayGlyphs, lcdGlyphs };
+    }
+
+    /**
+     * Copies the glyph-images into a continous buffer, required for uploading.
+     */
+    protected byte[] generateGlyphImageStream(List<XRGlyphCacheEntry> glyphList) {
+        boolean isLCDGlyph = glyphList.get(0).getGlyphSet() == lcdGlyphSet;
+
+        ByteArrayOutputStream stream = new ByteArrayOutputStream((isLCDGlyph ? 4 : 1) * 48 * glyphList.size());
+        for (XRGlyphCacheEntry cacheEntry : glyphList) {
+            cacheEntry.writePixelData(stream, isLCDGlyph);
+        }
+
+        return stream.toByteArray();
+    }
+
+    protected boolean containsLCDGlyphs(List<XRGlyphCacheEntry> entries) {
+        boolean containsLCDGlyphs = false;
+
+        for (XRGlyphCacheEntry entry : entries) {
+            containsLCDGlyphs = !(entry.getSourceRowBytes() == entry.getWidth());
+
+            if (containsLCDGlyphs) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    protected void clearCache(XRGlyphCacheEntry[] glyps) {
+        /*
+         * Glyph uploading is so slow anyway, we can afford some inefficiency
+         * here, as the cache should usually be quite small. TODO: Implement
+         * something not that stupid ;)
+         */
+        ArrayList<XRGlyphCacheEntry> cacheList = new ArrayList<XRGlyphCacheEntry>(cacheMap.values());
+        Collections.sort(cacheList, new Comparator<XRGlyphCacheEntry>() {
+            public int compare(XRGlyphCacheEntry e1, XRGlyphCacheEntry e2) {
+                return e2.getLastUsed() - e1.getLastUsed();
+            }
+        });
+
+        for (XRGlyphCacheEntry glyph : glyps) {
+            glyph.setPinned();
+        }
+
+        ArrayList<Integer> deleteGlyphList = new ArrayList<Integer>();
+        int pixelsToRelease = cachedPixels - MAX_CACHED_PIXELS;
+
+        for (int i = cacheList.size() - 1; i >= 0 && pixelsToRelease > 0; i--) {
+            XRGlyphCacheEntry entry = cacheList.get(i);
+
+            if (!entry.isPinned()) {
+                pixelsToRelease -= entry.getPixelCnt();
+                deleteGlyphList.add(new Integer(entry.getGlyphID()));
+            }
+        }
+
+        for (XRGlyphCacheEntry glyph : glyps) {
+            glyph.setUnpinned();
+        }
+
+        freeGlyphs(deleteGlyphList);
+    }
+
+    private void freeGlyphs(List<Integer> glyphIdList) {
+
+        freeGlyphIDs.addAll(glyphIdList);
+
+        GrowableIntArray removedLCDGlyphs = new GrowableIntArray(1, 1);
+        GrowableIntArray removedGrayscaleGlyphs = new GrowableIntArray(1, 1);
+
+        for (Integer glyphId : glyphIdList) {
+            tmp.setValue(glyphId.intValue());
+            XRGlyphCacheEntry entry = cacheMap.get(tmp);
+            cachedPixels -= entry.getPixelCnt();
+
+            int removedGlyphID = entry.getGlyphID();
+            tmp.setValue(removedGlyphID);
+            cacheMap.remove(tmp);
+
+            if (entry.getGlyphSet() == grayGlyphSet) {
+                removedGrayscaleGlyphs.addInt(removedGlyphID);
+            } else {
+                removedLCDGlyphs.addInt(removedGlyphID);
+            }
+
+            entry.setGlyphID(0);
+        }
+
+        if (removedGrayscaleGlyphs.getSize() > 0) {
+            con.XRenderFreeGlyphs(grayGlyphSet, removedGrayscaleGlyphs.getSizedArray());
+        }
+
+        if (removedLCDGlyphs.getSize() > 0) {
+            con.XRenderFreeGlyphs(lcdGlyphSet, removedLCDGlyphs.getSizedArray());
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/solaris/classes/sun/font/XRGlyphCacheEntry.java	Wed Jun 16 14:07:47 2010 -0700
@@ -0,0 +1,206 @@
+/*
+ * Copyright 2010 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.font;
+
+import java.io.*;
+
+/**
+ * Stores glyph-related data, used in the pure-java glyphcache.
+ *
+ * @author Clemens Eisserer
+ */
+
+public class XRGlyphCacheEntry {
+    long glyphInfoPtr;
+
+    int lastUsed;
+    boolean pinned;
+
+    int xOff;
+    int yOff;
+
+    int glyphSet;
+
+    public XRGlyphCacheEntry(long glyphInfoPtr, GlyphList gl) {
+        this.glyphInfoPtr = glyphInfoPtr;
+
+        /* TODO: Does it make sence to cache results? */
+        xOff = (int) Math.round(getXAdvance());
+        yOff = (int) Math.round(getYAdvance());
+    }
+
+    public int getXOff() {
+        return xOff;
+    }
+
+    public int getYOff() {
+        return yOff;
+    }
+
+    public void setGlyphSet(int glyphSet) {
+        this.glyphSet = glyphSet;
+    }
+
+    public int getGlyphSet() {
+        return glyphSet;
+    }
+
+    public static int getGlyphID(long glyphInfoPtr) {
+        return (int) StrikeCache.unsafe.getInt(glyphInfoPtr + StrikeCache.cacheCellOffset);
+    }
+
+    public static void setGlyphID(long glyphInfoPtr, int id) {
+        StrikeCache.unsafe.putInt(glyphInfoPtr + StrikeCache.cacheCellOffset, id);
+    }
+
+    public int getGlyphID() {
+        return getGlyphID(glyphInfoPtr);
+    }
+
+    public void setGlyphID(int id) {
+        setGlyphID(glyphInfoPtr, id);
+    }
+
+    public float getXAdvance() {
+        return StrikeCache.unsafe.getFloat(glyphInfoPtr + StrikeCache.xAdvanceOffset);
+    }
+
+    public float getYAdvance() {
+        return StrikeCache.unsafe.getFloat(glyphInfoPtr + StrikeCache.yAdvanceOffset);
+    }
+
+    public int getSourceRowBytes() {
+        return StrikeCache.unsafe.getShort(glyphInfoPtr + StrikeCache.rowBytesOffset);
+    }
+
+    public int getWidth() {
+        return StrikeCache.unsafe.getShort(glyphInfoPtr + StrikeCache.widthOffset);
+    }
+
+    public int getHeight() {
+        return StrikeCache.unsafe.getShort(glyphInfoPtr + StrikeCache.heightOffset);
+    }
+
+    public void writePixelData(ByteArrayOutputStream os, boolean uploadAsLCD) {
+        long pixelDataAddress;
+        if (StrikeCache.nativeAddressSize == 4) {
+            pixelDataAddress = 0xffffffff & StrikeCache.unsafe.getInt(glyphInfoPtr + StrikeCache.pixelDataOffset);
+        } else {
+            pixelDataAddress = StrikeCache.unsafe.getLong(glyphInfoPtr + StrikeCache.pixelDataOffset);
+        }
+        if (pixelDataAddress == 0L) {
+            return;
+        }
+
+        int width = getWidth();
+        int height = getHeight();
+        int rowBytes = getSourceRowBytes();
+        int paddedWidth = getPaddedWidth(uploadAsLCD);
+
+        if (!uploadAsLCD) {
+            for (int line = 0; line < height; line++) {
+                for(int x = 0; x < paddedWidth; x++) {
+                    if(x < width) {
+                        os.write(StrikeCache.unsafe.getByte(pixelDataAddress + (line * rowBytes + x)));
+                    }else {
+                         /*pad to multiple of 4 bytes per line*/
+                         os.write(0);
+                    }
+                }
+            }
+        } else {
+            for (int line = 0; line < height; line++) {
+                int rowStart = line * rowBytes;
+                int rowBytesWidth = width * 3;
+                int srcpix = 0;
+                while (srcpix < rowBytesWidth) {
+                    os.write(StrikeCache.unsafe.getByte
+                          (pixelDataAddress + (rowStart + srcpix + 2)));
+                    os.write(StrikeCache.unsafe.getByte
+                          (pixelDataAddress + (rowStart + srcpix + 1)));
+                    os.write(StrikeCache.unsafe.getByte
+                          (pixelDataAddress + (rowStart + srcpix + 0)));
+                    os.write(255);
+                    srcpix += 3;
+                }
+            }
+        }
+    }
+
+    public float getTopLeftXOffset() {
+        return StrikeCache.unsafe.getFloat(glyphInfoPtr + StrikeCache.topLeftXOffset);
+    }
+
+    public float getTopLeftYOffset() {
+        return StrikeCache.unsafe.getFloat(glyphInfoPtr + StrikeCache.topLeftYOffset);
+    }
+
+    public long getGlyphInfoPtr() {
+        return glyphInfoPtr;
+    }
+
+    public boolean isGrayscale(boolean listContainsLCDGlyphs) {
+        return getSourceRowBytes() == getWidth() && !(getWidth() == 0 && getHeight() == 0 && listContainsLCDGlyphs);
+    }
+
+    public int getPaddedWidth(boolean listContainsLCDGlyphs) {
+        int width = getWidth();
+        return isGrayscale(listContainsLCDGlyphs) ? (int) Math.ceil(width / 4.0) * 4 : width;
+    }
+
+    public int getDestinationRowBytes(boolean listContainsLCDGlyphs) {
+        boolean grayscale = isGrayscale(listContainsLCDGlyphs);
+        return grayscale ? getPaddedWidth(grayscale) : getWidth() * 4;
+    }
+
+    public int getGlyphDataLenth(boolean listContainsLCDGlyphs) {
+        return getDestinationRowBytes(listContainsLCDGlyphs) * getHeight();
+    }
+
+    public void setPinned() {
+        pinned = true;
+    }
+
+    public void setUnpinned() {
+        pinned = false;
+    }
+
+    public int getLastUsed() {
+        return lastUsed;
+    }
+
+    public void setLastUsed(int lastUsed) {
+        this.lastUsed = lastUsed;
+    }
+
+    public int getPixelCnt() {
+        return getWidth() * getHeight();
+    }
+
+    public boolean isPinned() {
+        return pinned;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/solaris/classes/sun/font/XRTextRenderer.java	Wed Jun 16 14:07:47 2010 -0700
@@ -0,0 +1,152 @@
+/*
+ * Copyright 2010 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.font;
+
+import sun.awt.*;
+import sun.java2d.SunGraphics2D;
+import sun.java2d.pipe.GlyphListPipe;
+import sun.java2d.xr.*;
+
+/**
+ * A delegate pipe of SG2D for drawing any text to a XRender surface
+ *
+ * @author Clemens Eisserer
+ */
+public class XRTextRenderer extends GlyphListPipe {
+
+    XRGlyphCache glyphCache;
+    XRCompositeManager maskBuffer;
+    XRBackend backend;
+
+    GrowableEltArray eltList;
+
+    public XRTextRenderer(XRCompositeManager buffer) {
+        glyphCache = new XRGlyphCache(buffer);
+        maskBuffer = buffer;
+        backend = buffer.getBackend();
+        eltList = new GrowableEltArray(64);
+    }
+
+    protected void drawGlyphList(SunGraphics2D sg2d, GlyphList gl) {
+        if (gl.getNumGlyphs() == 0) {
+            return;
+        }
+
+        try {
+            SunToolkit.awtLock();
+
+            XRSurfaceData x11sd = (XRSurfaceData) sg2d.surfaceData;
+            x11sd.validateAsDestination(null, sg2d.getCompClip());
+            x11sd.maskBuffer.validateCompositeState(sg2d.composite, sg2d.transform, sg2d.paint, sg2d);
+
+            float advX = gl.getX();
+            float advY = gl.getY();
+            int oldPosX = 0, oldPosY = 0;
+
+            if (gl.isSubPixPos()) {
+                advX += 0.1666667f;
+                advY += 0.1666667f;
+            } else {
+                advX += 0.5f;
+                advY += 0.5f;
+            }
+
+            XRGlyphCacheEntry[] cachedGlyphs = glyphCache.cacheGlyphs(gl);
+            boolean containsLCDGlyphs = false;
+            int activeGlyphSet = cachedGlyphs[0].getGlyphSet();
+
+            int eltIndex = -1;
+            gl.getBounds();
+            float[] positions = gl.getPositions();
+            for (int i = 0; i < gl.getNumGlyphs(); i++) {
+                gl.setGlyphIndex(i);
+                XRGlyphCacheEntry cacheEntry = cachedGlyphs[i];
+
+                eltList.getGlyphs().addInt(cacheEntry.getGlyphID());
+                int glyphSet = cacheEntry.getGlyphSet();
+
+                containsLCDGlyphs |= (glyphSet == glyphCache.lcdGlyphSet);
+
+                int posX = 0, posY = 0;
+                if (gl.usePositions()
+                        || (cacheEntry.getXAdvance() != ((float) cacheEntry.getXOff()) || cacheEntry.getYAdvance() != ((float) cacheEntry.getYOff()))
+                        || eltIndex < 0 || glyphSet != activeGlyphSet) {
+
+                    eltIndex = eltList.getNextIndex();
+                    eltList.setCharCnt(eltIndex, 1);
+                    activeGlyphSet = glyphSet;
+                    eltList.setGlyphSet(eltIndex, glyphSet);
+
+                    if (gl.usePositions()) {
+                        // /*In this case advX only stores rounding errors*/
+                        float x = positions[i * 2] + advX;
+                        float y = positions[i * 2 + 1] + advY;
+                        posX = (int) Math.floor(x);
+                        posY = (int) Math.floor(y);
+                        advX -= cacheEntry.getXOff();
+                        advY -= cacheEntry.getYOff();
+                    } else {
+                        /*
+                         * Calculate next glyph's position in the case of
+                         * relative positioning. In XRender we can only position
+                         * glyphs using integer coordinates, therefor we sum all
+                         * the advances up as float, and convert them to integer
+                         * later. This way rounding-error can be corrected, and
+                         * is required to be consistent with the software loops.
+                         */
+                        posX = (int) Math.floor(advX);
+                        posY = (int) Math.floor(advY);
+
+                        // Advance of ELT = difference between stored
+                        // relative
+                        // positioning information and required float.
+                        advX += (cacheEntry.getXAdvance() - cacheEntry.getXOff());
+                        advY += (cacheEntry.getYAdvance() - cacheEntry.getYOff());
+                    }
+                    /*
+                     * Offset of the current glyph is the difference to the last
+                     * glyph and this one
+                     */
+                    eltList.setXOff(eltIndex, (posX - oldPosX));
+                    eltList.setYOff(eltIndex, (posY - oldPosY));
+
+                    oldPosX = posX;
+                    oldPosY = posY;
+
+                } else {
+                    eltList.setCharCnt(eltIndex, eltList.getCharCnt(eltIndex) + 1);
+                }
+            }
+
+            int maskFormat = containsLCDGlyphs ? XRUtils.PictStandardARGB32 : XRUtils.PictStandardA8;
+            maskBuffer.compositeText(x11sd.picture, 0, maskFormat, eltList);
+
+            eltList.clear();
+        } finally {
+            SunToolkit.awtUnlock();
+        }
+    }
+}
--- a/src/solaris/classes/sun/java2d/UnixSurfaceManagerFactory.java	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/solaris/classes/sun/java2d/UnixSurfaceManagerFactory.java	Wed Jun 16 14:07:47 2010 -0700
@@ -33,6 +33,7 @@
 import sun.java2d.opengl.GLXGraphicsConfig;
 import sun.java2d.opengl.GLXVolatileSurfaceManager;
 import sun.java2d.x11.X11VolatileSurfaceManager;
+import sun.java2d.xr.*;
 
 /**
  * The SurfaceManagerFactory that creates VolatileSurfaceManager
@@ -54,9 +55,12 @@
                                                         Object context)
     {
         GraphicsConfiguration gc = vImg.getGraphicsConfig();
+
         if (gc instanceof GLXGraphicsConfig) {
             return new GLXVolatileSurfaceManager(vImg, context);
-        } else {
+        } else if(gc instanceof XRGraphicsConfig) {
+            return new XRVolatileSurfaceManager(vImg, context);
+        }else {
             return new X11VolatileSurfaceManager(vImg, context);
         }
     }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/solaris/classes/sun/java2d/jules/IdleTileCache.java	Wed Jun 16 14:07:47 2010 -0700
@@ -0,0 +1,109 @@
+/*
+ * Copyright 2010 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.java2d.jules;
+
+import java.util.*;
+
+public class IdleTileCache {
+    final static int IDLE_TILE_SYNC_GRANULARITY = 16;
+    final static ArrayList<JulesTile> idleBuffers = new ArrayList<JulesTile>();
+
+    ArrayList<JulesTile> idleTileWorkerCacheList = new ArrayList<JulesTile>();
+    ArrayList<JulesTile> idleTileConsumerCacheList =
+              new ArrayList<JulesTile>(IDLE_TILE_SYNC_GRANULARITY);
+
+    /**
+     * Return a cached Tile, if possible from cache.
+     * Allowed caller: Rasterizer/Producer-Thread
+     *
+     * @param: maxCache - Specify the maximum amount of tiles needed
+     */
+    public JulesTile getIdleTileWorker(int maxCache) {
+        /* Try to fetch idle tiles from the global cache list */
+        if (idleTileWorkerCacheList.size() == 0) {
+            idleTileWorkerCacheList.ensureCapacity(maxCache);
+
+            synchronized (idleBuffers) {
+                for (int i = 0; i < maxCache && idleBuffers.size() > 0; i++) {
+                    idleTileWorkerCacheList.add(
+                            idleBuffers.remove(idleBuffers.size() - 1));
+                }
+            }
+        }
+
+        if (idleTileWorkerCacheList.size() > 0) {
+            return idleTileWorkerCacheList.remove(idleTileWorkerCacheList.size() - 1);
+        }
+
+        return new JulesTile();
+    }
+
+    /**
+     * Release tile and allow it to be re-used by another thread. Allowed
+     *  Allowed caller: MaskBlit/Consumer-Thread
+     */
+    public void releaseTile(JulesTile tile) {
+        if (tile != null && tile.hasBuffer()) {
+            idleTileConsumerCacheList.add(tile);
+
+            if (idleTileConsumerCacheList.size() > IDLE_TILE_SYNC_GRANULARITY) {
+                synchronized (idleBuffers) {
+                    idleBuffers.addAll(idleTileConsumerCacheList);
+                }
+                idleTileConsumerCacheList.clear();
+            }
+        }
+    }
+
+    /**
+     * Releases thread-local tiles cached for use by the rasterizing thread.
+     * Allowed caller: Rasterizer/Producer-Thread
+     */
+    public void disposeRasterizerResources() {
+        releaseTiles(idleTileWorkerCacheList);
+    }
+
+    /**
+     * Releases thread-local tiles cached for performance reasons. Allowed
+     * Allowed caller: MaskBlit/Consumer-Thread
+     */
+    public void disposeConsumerResources() {
+        releaseTiles(idleTileConsumerCacheList);
+    }
+
+    /**
+     * Release a list of tiles and allow it to be re-used by another thread.
+     * Thread safe.
+     */
+    public void releaseTiles(List<JulesTile> tileList) {
+        if (tileList.size() > 0) {
+            synchronized (idleBuffers) {
+                idleBuffers.addAll(tileList);
+            }
+            tileList.clear();
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/solaris/classes/sun/java2d/jules/JulesAATileGenerator.java	Wed Jun 16 14:07:47 2010 -0700
@@ -0,0 +1,349 @@
+/*
+ * Copyright 2010 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.java2d.jules;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.util.concurrent.*;
+import sun.java2d.pipe.*;
+import sun.java2d.xr.*;
+
+public class JulesAATileGenerator implements AATileGenerator {
+    /* Threading stuff */
+    final static ExecutorService rasterThreadPool =
+                                          Executors.newCachedThreadPool();
+    final static int CPU_CNT = Runtime.getRuntime().availableProcessors();
+
+    final static boolean ENABLE_THREADING = false;
+    final static int THREAD_MIN = 16;
+    final static int THREAD_BEGIN = 16;
+
+    IdleTileCache tileCache;
+    TileWorker worker;
+    boolean threaded = false;
+    int rasterTileCnt;
+
+    /* Tiling */
+    final static int TILE_SIZE = 32;
+    final static int TILE_SIZE_FP = 32 << 16;
+    int left, right, top, bottom, width, height;
+    int leftFP, topFP;
+    int tileCnt, tilesX, tilesY;
+    int currTilePos = 0;
+    TrapezoidList traps;
+    TileTrapContainer[] tiledTrapArray;
+    JulesTile mainTile;
+
+    public JulesAATileGenerator(Shape s, AffineTransform at, Region clip,
+                                BasicStroke bs, boolean thin,
+                                boolean normalize, int[] bbox) {
+        JulesPathBuf buf = new JulesPathBuf();
+
+        if (bs == null) {
+            traps = buf.tesselateFill(s, at, clip);
+        } else {
+            traps = buf.tesselateStroke(s, bs, thin, false, true, at, clip);
+        }
+
+        calculateArea(bbox);
+        bucketSortTraps();
+        calculateTypicalAlpha();
+
+        threaded = ENABLE_THREADING &&
+                   rasterTileCnt >= THREAD_MIN && CPU_CNT >= 2;
+        if (threaded) {
+            tileCache = new IdleTileCache();
+            worker = new TileWorker(this, THREAD_BEGIN, tileCache);
+            rasterThreadPool.execute(worker);
+        }
+
+        mainTile = new JulesTile();
+    }
+
+    private static native long
+        rasterizeTrapezoidsNative(long pixmanImagePtr, int[] traps,
+                                  int[] trapPos, int trapCnt,
+                                  byte[] buffer, int xOff, int yOff);
+
+    private static native void freePixmanImgPtr(long pixmanImgPtr);
+
+    private void calculateArea(int[] bbox) {
+        tilesX = 0;
+        tilesY = 0;
+        tileCnt = 0;
+        bbox[0] = 0;
+        bbox[1] = 0;
+        bbox[2] = 0;
+        bbox[3] = 0;
+
+        if (traps.getSize() > 0) {
+            left = traps.getLeft();
+            right = traps.getRight();
+            top = traps.getTop();
+            bottom = traps.getBottom();
+            leftFP = left << 16;
+            topFP = top << 16;
+
+            bbox[0] = left;
+            bbox[1] = top;
+            bbox[2] = right;
+            bbox[3] = bottom;
+
+            width = right - left;
+            height = bottom - top;
+
+            if (width > 0 && height > 0) {
+                tilesX = (int) Math.ceil(((double) width) / TILE_SIZE);
+                tilesY = (int) Math.ceil(((double) height) / TILE_SIZE);
+                tileCnt = tilesY * tilesX;
+                tiledTrapArray = new TileTrapContainer[tileCnt];
+            } else {
+                // If there is no area touched by the traps, don't
+                // render them.
+                traps.setSize(0);
+            }
+        }
+    }
+
+
+    private void bucketSortTraps() {
+
+        for (int i = 0; i < traps.getSize(); i++) {
+            int top = traps.getTop(i) - XRUtils.XDoubleToFixed(this.top);
+            int bottom = traps.getBottom(i) - topFP;
+            int p1xLeft = traps.getP1XLeft(i) - leftFP;
+            int p2xLeft = traps.getP2XLeft(i) - leftFP;
+            int p1xRight = traps.getP1XRight(i) - leftFP;
+            int p2xRight = traps.getP2XRight(i) - leftFP;
+
+            int minLeft = Math.min(p1xLeft, p2xLeft);
+            int maxRight = Math.max(p1xRight, p2xRight);
+
+            maxRight = maxRight > 0 ? maxRight - 1 : maxRight;
+            bottom = bottom > 0 ? bottom - 1 : bottom;
+
+            int startTileY = top / TILE_SIZE_FP;
+            int endTileY = bottom / TILE_SIZE_FP;
+            int startTileX = minLeft / TILE_SIZE_FP;
+            int endTileX = maxRight / TILE_SIZE_FP;
+
+            for (int n = startTileY; n <= endTileY; n++) {
+
+                for (int m = startTileX; m <= endTileX; m++) {
+                    int trapArrayPos = n * tilesX + m;
+                    TileTrapContainer trapTileList = tiledTrapArray[trapArrayPos];
+                    if (trapTileList == null) {
+                        trapTileList = new TileTrapContainer(new GrowableIntArray(1, 16));
+                        tiledTrapArray[trapArrayPos] = trapTileList;
+                    }
+
+                    trapTileList.getTraps().addInt(i);
+                }
+            }
+        }
+    }
+
+    public void getAlpha(byte[] tileBuffer, int offset, int rowstride) {
+        JulesTile tile = null;
+
+        if (threaded) {
+            tile = worker.getPreRasterizedTile(currTilePos);
+        }
+
+        if (tile != null) {
+            System.arraycopy(tile.getImgBuffer(), 0,
+                             tileBuffer, 0, tileBuffer.length);
+            tileCache.releaseTile(tile);
+        } else {
+            mainTile.setImgBuffer(tileBuffer);
+            rasterizeTile(currTilePos, mainTile);
+        }
+
+        nextTile();
+    }
+
+    public void calculateTypicalAlpha() {
+        rasterTileCnt = 0;
+
+        for (int index = 0; index < tileCnt; index++) {
+
+            TileTrapContainer trapCont = tiledTrapArray[index];
+            if (trapCont != null) {
+                GrowableIntArray trapList = trapCont.getTraps();
+
+                int tileAlpha = 127;
+                if (trapList == null || trapList.getSize() == 0) {
+                    tileAlpha = 0;
+                } else if (doTrapsCoverTile(trapList, index)) {
+                    tileAlpha = 0xff;
+                }
+
+                if (tileAlpha == 127 || tileAlpha == 0xff) {
+                    rasterTileCnt++;
+                }
+
+                trapCont.setTileAlpha(tileAlpha);
+            }
+        }
+    }
+
+    /*
+     * Optimization for large fills. Foutunatly cairo does generate an y-sorted
+     * list of trapezoids. This makes it quite simple to check wether a tile is
+     * fully covered by traps by: - Checking wether the tile is fully covered by
+     * traps vertically (trap 2 starts where trap 1 ended) - Checking wether all
+     * traps cover the tile horizontally This also works, when a single tile
+     * coveres the whole tile.
+     */
+    protected boolean doTrapsCoverTile(GrowableIntArray trapList, int tileIndex) {
+
+        // Don't bother optimizing tiles with lots of traps, usually it won't
+        // succeed anyway.
+        if (trapList.getSize() > TILE_SIZE) {
+            return false;
+        }
+
+        int tileStartX = getXPos(tileIndex) * TILE_SIZE_FP + leftFP;
+        int tileStartY = getYPos(tileIndex) * TILE_SIZE_FP + topFP;
+        int tileEndX = tileStartX + TILE_SIZE_FP;
+        int tileEndY = tileStartY + TILE_SIZE_FP;
+
+        // Check wether first tile covers the beginning of the tile vertically
+        int firstTop = traps.getTop(trapList.getInt(0));
+        int firstBottom = traps.getBottom(trapList.getInt(0));
+        if (firstTop > tileStartY || firstBottom < tileStartY) {
+            return false;
+        }
+
+        // Initialize lastBottom with top, in order to pass the checks for the
+        // first iteration
+        int lastBottom = firstTop;
+
+        for (int i = 0; i < trapList.getSize(); i++) {
+            int trapPos = trapList.getInt(i);
+            if (traps.getP1XLeft(trapPos) > tileStartX ||
+                traps.getP2XLeft(trapPos) > tileStartX ||
+                traps.getP1XRight(trapPos) < tileEndX  ||
+                traps.getP2XRight(trapPos) < tileEndX  ||
+                 traps.getTop(trapPos) != lastBottom)
+            {
+                return false;
+            }
+            lastBottom = traps.getBottom(trapPos);
+        }
+
+        // When the last trap covered the tileEnd vertically, the tile is fully
+        // covered
+        return lastBottom >= tileEndY;
+    }
+
+    public int getTypicalAlpha() {
+        if (tiledTrapArray[currTilePos] == null) {
+            return 0;
+        } else {
+            return tiledTrapArray[currTilePos].getTileAlpha();
+        }
+    }
+
+    public void dispose() {
+        freePixmanImgPtr(mainTile.getPixmanImgPtr());
+
+        if (threaded) {
+            tileCache.disposeConsumerResources();
+            worker.disposeConsumerResources();
+        }
+    }
+
+    protected JulesTile rasterizeTile(int tileIndex, JulesTile tile) {
+        int tileOffsetX = left + getXPos(tileIndex) * TILE_SIZE;
+        int tileOffsetY = top + getYPos(tileIndex) * TILE_SIZE;
+        TileTrapContainer trapCont = tiledTrapArray[tileIndex];
+        GrowableIntArray trapList = trapCont.getTraps();
+
+        if (trapCont.getTileAlpha() == 127) {
+            long pixmanImgPtr =
+                 rasterizeTrapezoidsNative(tile.getPixmanImgPtr(),
+                                           traps.getTrapArray(),
+                                           trapList.getArray(),
+                                           trapList.getSize(),
+                                           tile.getImgBuffer(),
+                                           tileOffsetX, tileOffsetY);
+            tile.setPixmanImgPtr(pixmanImgPtr);
+        }
+
+        tile.setTilePos(tileIndex);
+        return tile;
+    }
+
+    protected int getXPos(int arrayPos) {
+        return arrayPos % tilesX;
+    }
+
+    protected int getYPos(int arrayPos) {
+        return arrayPos / tilesX;
+    }
+
+    public void nextTile() {
+        currTilePos++;
+    }
+
+    public int getTileHeight() {
+        return TILE_SIZE;
+    }
+
+    public int getTileWidth() {
+        return TILE_SIZE;
+    }
+
+    public int getTileCount() {
+        return tileCnt;
+    }
+
+    public TileTrapContainer getTrapContainer(int index) {
+        return tiledTrapArray[index];
+    }
+}
+
+class TileTrapContainer {
+    int tileAlpha;
+    GrowableIntArray traps;
+
+    public TileTrapContainer(GrowableIntArray traps) {
+        this.traps = traps;
+    }
+
+    public void setTileAlpha(int tileAlpha) {
+        this.tileAlpha = tileAlpha;
+    }
+
+    public int getTileAlpha() {
+        return tileAlpha;
+    }
+
+    public GrowableIntArray getTraps() {
+        return traps;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/solaris/classes/sun/java2d/jules/JulesPathBuf.java	Wed Jun 16 14:07:47 2010 -0700
@@ -0,0 +1,271 @@
+/*
+ * Copyright 2010 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.java2d.jules;
+
+import java.awt.*;
+import java.awt.geom.*;
+import sun.awt.X11GraphicsEnvironment;
+import sun.java2d.pipe.*;
+import sun.java2d.xr.*;
+
+public class JulesPathBuf {
+    static final double[] emptyDash = new double[0];
+
+    private static final byte CAIRO_PATH_OP_MOVE_TO = 0;
+    private static final byte CAIRO_PATH_OP_LINE_TO = 1;
+    private static final byte CAIRO_PATH_OP_CURVE_TO = 2;
+    private static final byte CAIRO_PATH_OP_CLOSE_PATH = 3;
+
+    private static final int  CAIRO_FILL_RULE_WINDING = 0;
+    private static final int CAIRO_FILL_RULE_EVEN_ODD = 1;
+
+    GrowablePointArray points = new GrowablePointArray(128);
+    GrowableByteArray ops = new GrowableByteArray(1, 128);
+    int[] xTrapArray = new int[512];
+
+    private static final boolean isCairoAvailable;
+
+    static {
+        isCairoAvailable =
+           java.security.AccessController.doPrivileged(
+                          new java.security.PrivilegedAction<Boolean>() {
+            public Boolean run() {
+                boolean loadSuccess = false;
+                if (X11GraphicsEnvironment.isXRenderAvailable()) {
+                    try {
+                        System.loadLibrary("jules");
+                        loadSuccess = true;
+                        if (X11GraphicsEnvironment.isXRenderVerbose()) {
+                            System.out.println(
+                                       "Xrender: INFO: Jules library loaded");
+                        }
+                    } catch (UnsatisfiedLinkError ex) {
+                        loadSuccess = false;
+                        if (X11GraphicsEnvironment.isXRenderVerbose()) {
+                            System.out.println(
+                                "Xrender: INFO: Jules library not installed.");
+                        }
+                    }
+                }
+                return Boolean.valueOf(loadSuccess);
+            }
+        });
+    }
+
+    public static boolean isCairoAvailable() {
+        return isCairoAvailable;
+    }
+
+    public TrapezoidList tesselateFill(Shape s, AffineTransform at, Region clip) {
+        int windingRule = convertPathData(s, at);
+        xTrapArray[0] = 0;
+
+        xTrapArray = tesselateFillNative(points.getArray(), ops.getArray(),
+                                         points.getSize(), ops.getSize(),
+                                         xTrapArray, xTrapArray.length,
+                                         getCairoWindingRule(windingRule),
+                                         clip.getLoX(), clip.getLoY(),
+                                         clip.getHiX(), clip.getHiY());
+
+        return new TrapezoidList(xTrapArray);
+    }
+
+    public TrapezoidList tesselateStroke(Shape s, BasicStroke bs, boolean thin,
+                                         boolean adjust, boolean antialias,
+                                         AffineTransform at, Region clip) {
+
+        float lw;
+        if (thin) {
+            if (antialias) {
+                lw = 0.5f;
+            } else {
+                lw = 1.0f;
+            }
+        } else {
+            lw = bs.getLineWidth();
+        }
+
+        convertPathData(s, at);
+
+        double[] dashArray = floatToDoubleArray(bs.getDashArray());
+        xTrapArray[0] = 0;
+
+        xTrapArray =
+             tesselateStrokeNative(points.getArray(), ops.getArray(),
+                                   points.getSize(), ops.getSize(),
+                                   xTrapArray, xTrapArray.length, lw,
+                                   bs.getEndCap(), bs.getLineJoin(),
+                                   bs.getMiterLimit(), dashArray,
+                                   dashArray.length, bs.getDashPhase(),
+                                   1, 0, 0, 0, 1, 0,
+                                   clip.getLoX(), clip.getLoY(),
+                                   clip.getHiX(), clip.getHiY());
+
+        return new TrapezoidList(xTrapArray);
+    }
+
+    protected double[] floatToDoubleArray(float[] dashArrayFloat) {
+        double[] dashArrayDouble = emptyDash;
+        if (dashArrayFloat != null) {
+            dashArrayDouble = new double[dashArrayFloat.length];
+
+            for (int i = 0; i < dashArrayFloat.length; i++) {
+                dashArrayDouble[i] = dashArrayFloat[i];
+            }
+        }
+
+        return dashArrayDouble;
+    }
+
+    protected int convertPathData(Shape s, AffineTransform at) {
+        PathIterator pi = s.getPathIterator(at);
+
+        double[] coords = new double[6];
+        double currX = 0;
+        double currY = 0;
+
+        while (!pi.isDone()) {
+            int curOp = pi.currentSegment(coords);
+
+            int pointIndex;
+            switch (curOp) {
+
+            case PathIterator.SEG_MOVETO:
+                ops.addByte(CAIRO_PATH_OP_MOVE_TO);
+                pointIndex = points.getNextIndex();
+                points.setX(pointIndex, DoubleToCairoFixed(coords[0]));
+                points.setY(pointIndex, DoubleToCairoFixed(coords[1]));
+                currX = coords[0];
+                currY = coords[1];
+                break;
+
+            case PathIterator.SEG_LINETO:
+                ops.addByte(CAIRO_PATH_OP_LINE_TO);
+                pointIndex = points.getNextIndex();
+                points.setX(pointIndex, DoubleToCairoFixed(coords[0]));
+                points.setY(pointIndex, DoubleToCairoFixed(coords[1]));
+                currX = coords[0];
+                currY = coords[1];
+                break;
+
+                /**
+                 *    q0 = p0
+                 *    q1 = (p0+2*p1)/3
+                 *    q2 = (p2+2*p1)/3
+                 *    q3 = p2
+                 */
+            case PathIterator.SEG_QUADTO:
+                double x1 = coords[0];
+                double y1 = coords[1];
+                double x2, y2;
+                double x3 = coords[2];
+                double y3 = coords[3];
+
+                x2 = x1 + (x3 - x1) / 3;
+                y2 = y1 + (y3 - y1) / 3;
+                x1 = currX + 2 * (x1 - currX) / 3;
+                y1 =currY + 2 * (y1 - currY) / 3;
+
+                ops.addByte(CAIRO_PATH_OP_CURVE_TO);
+                pointIndex = points.getNextIndex();
+                points.setX(pointIndex, DoubleToCairoFixed(x1));
+                points.setY(pointIndex, DoubleToCairoFixed(y1));
+                pointIndex = points.getNextIndex();
+                points.setX(pointIndex, DoubleToCairoFixed(x2));
+                points.setY(pointIndex, DoubleToCairoFixed(y2));
+                pointIndex = points.getNextIndex();
+                points.setX(pointIndex, DoubleToCairoFixed(x3));
+                points.setY(pointIndex, DoubleToCairoFixed(y3));
+                currX = x3;
+                currY = y3;
+                break;
+
+            case PathIterator.SEG_CUBICTO:
+                ops.addByte(CAIRO_PATH_OP_CURVE_TO);
+                pointIndex = points.getNextIndex();
+                points.setX(pointIndex, DoubleToCairoFixed(coords[0]));
+                points.setY(pointIndex, DoubleToCairoFixed(coords[1]));
+                pointIndex = points.getNextIndex();
+                points.setX(pointIndex, DoubleToCairoFixed(coords[2]));
+                points.setY(pointIndex, DoubleToCairoFixed(coords[3]));
+                pointIndex = points.getNextIndex();
+                points.setX(pointIndex, DoubleToCairoFixed(coords[4]));
+                points.setY(pointIndex, DoubleToCairoFixed(coords[5]));
+                currX = coords[4];
+                currY = coords[5];
+                break;
+
+            case PathIterator.SEG_CLOSE:
+                ops.addByte(CAIRO_PATH_OP_CLOSE_PATH);
+                break;
+            }
+
+            pi.next();
+        }
+
+        return pi.getWindingRule();
+    }
+
+    private static native int[]
+         tesselateStrokeNative(int[] pointArray, byte[] ops,
+                               int pointCnt, int opCnt,
+                               int[] xTrapArray, int xTrapArrayLength,
+                               double lineWidth, int lineCap, int lineJoin,
+                               double miterLimit, double[] dashArray,
+                               int dashCnt, double offset,
+                               double m00, double m01, double m02,
+                               double m10, double m11, double m12,
+                               int clipLowX, int clipLowY,
+                               int clipWidth, int clipHeight);
+
+    private static native int[]
+        tesselateFillNative(int[] pointArray, byte[] ops, int pointCnt,
+                            int opCnt, int[] xTrapArray, int xTrapArrayLength,
+                            int windingRule, int clipLowX, int clipLowY,                                    int clipWidth, int clipHeight);
+
+    public void clear() {
+        points.clear();
+        ops.clear();
+        xTrapArray[0] = 0;
+    }
+
+    private static int DoubleToCairoFixed(double dbl) {
+        return (int) (dbl * 256);
+    }
+
+    private static int getCairoWindingRule(int j2dWindingRule) {
+        switch(j2dWindingRule) {
+        case PathIterator.WIND_EVEN_ODD:
+            return CAIRO_FILL_RULE_EVEN_ODD;
+
+        case PathIterator.WIND_NON_ZERO:
+            return CAIRO_FILL_RULE_WINDING;
+
+            default:
+                throw new IllegalArgumentException("Illegal Java2D winding rule specified");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/solaris/classes/sun/java2d/jules/JulesRenderingEngine.java	Wed Jun 16 14:07:47 2010 -0700
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2010 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.java2d.jules;
+
+import java.awt.*;
+
+import java.awt.geom.*;
+import sun.java2d.pipe.*;
+import sun.java2d.pisces.*;
+
+public class JulesRenderingEngine extends PiscesRenderingEngine {
+
+    @Override
+    public AATileGenerator
+         getAATileGenerator(Shape s, AffineTransform at, Region clip,
+                            BasicStroke bs, boolean thin,
+                            boolean normalize, int[] bbox) {
+
+        if (JulesPathBuf.isCairoAvailable()) {
+            return new JulesAATileGenerator(s, at, clip, bs, thin,
+                                            normalize, bbox);
+        } else {
+            return super.getAATileGenerator(s, at, clip, bs, thin,
+                                            normalize, bbox);
+        }
+    }
+
+    public float getMinimumAAPenSize() {
+        return 0.5f;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/solaris/classes/sun/java2d/jules/JulesShapePipe.java	Wed Jun 16 14:07:47 2010 -0700
@@ -0,0 +1,102 @@
+/*
+ * Copyright 2010 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.java2d.jules;
+
+import java.awt.*;
+import sun.awt.*;
+import sun.java2d.*;
+import sun.java2d.pipe.*;
+import sun.java2d.xr.*;
+
+public class JulesShapePipe implements ShapeDrawPipe {
+
+    XRCompositeManager compMan;
+    JulesPathBuf buf = new JulesPathBuf();
+
+    public JulesShapePipe(XRCompositeManager compMan) {
+        this.compMan = compMan;
+    }
+
+    /**
+     * Common validate method, used by all XRRender functions to validate the
+     * destination context.
+     */
+    private final void validateSurface(SunGraphics2D sg2d) {
+        XRSurfaceData xrsd = (XRSurfaceData) sg2d.surfaceData;
+        xrsd.validateAsDestination(sg2d, sg2d.getCompClip());
+        xrsd.maskBuffer.validateCompositeState(sg2d.composite, sg2d.transform,
+                                               sg2d.paint, sg2d);
+    }
+
+    public void draw(SunGraphics2D sg2d, Shape s) {
+        try {
+            SunToolkit.awtLock();
+            validateSurface(sg2d);
+            XRSurfaceData xrsd = (XRSurfaceData) sg2d.surfaceData;
+
+            BasicStroke bs;
+
+            if (sg2d.stroke instanceof BasicStroke) {
+                bs = (BasicStroke) sg2d.stroke;
+            } else { //TODO: What happens in the case of a !BasicStroke??
+                s = sg2d.stroke.createStrokedShape(s);
+                bs = null;
+            }
+
+            boolean adjust =
+                (bs != null && sg2d.strokeHint != SunHints.INTVAL_STROKE_PURE);
+            boolean thin = (sg2d.strokeState <= SunGraphics2D.STROKE_THINDASHED);
+
+            TrapezoidList traps =
+                 buf.tesselateStroke(s, bs, thin, adjust, true,
+                                     sg2d.transform, sg2d.getCompClip());
+            compMan.XRCompositeTraps(xrsd.picture,
+                                     sg2d.transX, sg2d.transY, traps);
+
+            buf.clear();
+
+        } finally {
+            SunToolkit.awtUnlock();
+        }
+    }
+
+    public void fill(SunGraphics2D sg2d, Shape s) {
+        try {
+            SunToolkit.awtLock();
+            validateSurface(sg2d);
+
+            XRSurfaceData xrsd = (XRSurfaceData) sg2d.surfaceData;
+
+            TrapezoidList traps = buf.tesselateFill(s, sg2d.transform,
+                                                    sg2d.getCompClip());
+            compMan.XRCompositeTraps(xrsd.picture, 0, 0, traps);
+
+            buf.clear();
+        } finally {
+            SunToolkit.awtUnlock();
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/solaris/classes/sun/java2d/jules/JulesTile.java	Wed Jun 16 14:07:47 2010 -0700
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2010 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.java2d.jules;
+
+public class JulesTile {
+    byte[] imgBuffer;
+    long pixmanImgPtr = 0;
+    int tilePos;
+
+    public JulesTile() {
+    }
+
+    public byte[] getImgBuffer() {
+        if(imgBuffer == null) {
+            imgBuffer = new byte[1024];
+        }
+
+        return imgBuffer;
+    }
+
+    public long getPixmanImgPtr() {
+        return pixmanImgPtr;
+    }
+
+    public void setPixmanImgPtr(long pixmanImgPtr) {
+        this.pixmanImgPtr = pixmanImgPtr;
+    }
+
+    public boolean hasBuffer() {
+        return imgBuffer != null;
+    }
+
+    public int getTilePos() {
+        return tilePos;
+    }
+
+    public void setTilePos(int tilePos) {
+        this.tilePos = tilePos;
+    }
+
+    public void setImgBuffer(byte[] imgBuffer){
+        this.imgBuffer = imgBuffer;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/solaris/classes/sun/java2d/jules/TileWorker.java	Wed Jun 16 14:07:47 2010 -0700
@@ -0,0 +1,146 @@
+/*
+ * Copyright 2010 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.java2d.jules;
+
+import java.util.*;
+
+public class TileWorker implements Runnable {
+    final static int RASTERIZED_TILE_SYNC_GRANULARITY = 8;
+    final ArrayList<JulesTile> rasterizedTileConsumerCache =
+         new ArrayList<JulesTile>();
+    final LinkedList<JulesTile> rasterizedBuffers = new LinkedList<JulesTile>();
+
+    IdleTileCache tileCache;
+    JulesAATileGenerator tileGenerator;
+    int workerStartIndex;
+    volatile int consumerPos = 0;
+
+    /* Threading statistics */
+    int mainThreadCnt = 0;
+    int workerCnt = 0;
+    int doubled = 0;
+
+    public TileWorker(JulesAATileGenerator tileGenerator, int workerStartIndex, IdleTileCache tileCache) {
+        this.tileGenerator = tileGenerator;
+        this.workerStartIndex = workerStartIndex;
+        this.tileCache = tileCache;
+    }
+
+    public void run() {
+        ArrayList<JulesTile> tiles = new ArrayList<JulesTile>(16);
+
+        for (int i = workerStartIndex; i < tileGenerator.getTileCount(); i++) {
+            TileTrapContainer tile = tileGenerator.getTrapContainer(i);
+
+            if (tile != null && tile.getTileAlpha() == 127) {
+                JulesTile rasterizedTile =
+                      tileGenerator.rasterizeTile(i,
+                           tileCache.getIdleTileWorker(
+                               tileGenerator.getTileCount() - i - 1));
+                tiles.add(rasterizedTile);
+
+                if (tiles.size() > RASTERIZED_TILE_SYNC_GRANULARITY) {
+                    addRasterizedTiles(tiles);
+                    tiles.clear();
+                }
+            }
+
+            i = Math.max(i, consumerPos + RASTERIZED_TILE_SYNC_GRANULARITY / 2);
+        }
+        addRasterizedTiles(tiles);
+
+        tileCache.disposeRasterizerResources();
+    }
+
+    /**
+     * Returns a rasterized tile for the specified tilePos,
+     * or null if it isn't available.
+     * Allowed caller: MaskBlit/Consumer-Thread
+     */
+    public JulesTile getPreRasterizedTile(int tilePos) {
+        JulesTile tile = null;
+
+        if (rasterizedTileConsumerCache.size() == 0 &&
+            tilePos >= workerStartIndex)
+        {
+            synchronized (rasterizedBuffers) {
+                rasterizedTileConsumerCache.addAll(rasterizedBuffers);
+                rasterizedBuffers.clear();
+            }
+        }
+
+        while (tile == null && rasterizedTileConsumerCache.size() > 0) {
+            JulesTile t = rasterizedTileConsumerCache.get(0);
+
+            if (t.getTilePos() > tilePos) {
+                break;
+            }
+
+            if (t.getTilePos() < tilePos) {
+                tileCache.releaseTile(t);
+                doubled++;
+            }
+
+            if (t.getTilePos() <= tilePos) {
+                rasterizedTileConsumerCache.remove(0);
+            }
+
+            if (t.getTilePos() == tilePos) {
+                tile = t;
+            }
+        }
+
+        if (tile == null) {
+            mainThreadCnt++;
+
+            // If there are no tiles left, tell the producer the current
+            // position. This avoids producing tiles twice.
+            consumerPos = tilePos;
+        } else {
+            workerCnt++;
+        }
+
+        return tile;
+    }
+
+    private void addRasterizedTiles(ArrayList<JulesTile> tiles) {
+        synchronized (rasterizedBuffers) {
+            rasterizedBuffers.addAll(tiles);
+        }
+    }
+
+    /**
+     * Releases cached tiles.
+     * Allowed caller: MaskBlit/Consumer-Thread
+     */
+    public void disposeConsumerResources() {
+        synchronized (rasterizedBuffers) {
+            tileCache.releaseTiles(rasterizedBuffers);
+        }
+
+        tileCache.releaseTiles(rasterizedTileConsumerCache);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/solaris/classes/sun/java2d/jules/TrapezoidList.java	Wed Jun 16 14:07:47 2010 -0700
@@ -0,0 +1,110 @@
+/*
+ * Copyright 2010 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.java2d.jules;
+
+public class TrapezoidList {
+    public static final int TRAP_START_INDEX = 5;
+    public static final int TRAP_SIZE = 10;
+
+    int[] trapArray;
+
+    public TrapezoidList(int[] trapArray) {
+        this.trapArray = trapArray;
+    }
+
+    public final int[] getTrapArray() {
+        return trapArray;
+    }
+
+    public final int getSize() {
+        return trapArray[0];
+    }
+
+    public final void setSize(int size) {
+        trapArray[0] = 0;
+    }
+
+    public final int getLeft() {
+        return trapArray[1];
+    }
+
+    public final int getTop() {
+        return trapArray[2];
+    }
+
+    public final int getRight() {
+        return trapArray[3];
+    }
+
+    public final int getBottom() {
+        return trapArray[4];
+    }
+
+
+    private final int getTrapStartAddresse(int pos) {
+        return TRAP_START_INDEX + TRAP_SIZE * pos;
+    }
+
+    public final int getTop(int pos) {
+        return trapArray[getTrapStartAddresse(pos) + 0];
+    }
+
+    public final int getBottom(int pos) {
+        return trapArray[getTrapStartAddresse(pos) + 1];
+    }
+
+    public final int getP1XLeft(int pos) {
+        return trapArray[getTrapStartAddresse(pos) + 2];
+    }
+
+    public final int getP1YLeft(int pos) {
+        return trapArray[getTrapStartAddresse(pos) + 3];
+    }
+
+    public final int getP2XLeft(int pos) {
+        return trapArray[getTrapStartAddresse(pos) + 4];
+    }
+
+    public final int getP2YLeft(int pos) {
+        return trapArray[getTrapStartAddresse(pos) + 5];
+    }
+
+    public final int getP1XRight(int pos) {
+        return trapArray[getTrapStartAddresse(pos) + 6];
+    }
+
+    public final int getP1YRight(int pos) {
+        return trapArray[getTrapStartAddresse(pos) + 7];
+    }
+
+    public final int getP2XRight(int pos) {
+        return trapArray[getTrapStartAddresse(pos) + 8];
+    }
+
+    public final int getP2YRight(int pos) {
+        return trapArray[getTrapStartAddresse(pos) + 9];
+    }
+}
--- a/src/solaris/classes/sun/java2d/x11/X11SurfaceData.java	Wed Jun 16 12:40:22 2010 -0700
+++ b/src/solaris/classes/sun/java2d/x11/X11SurfaceData.java	Wed Jun 16 14:07:47 2010 -0700
@@ -46,6 +46,7 @@
 import sun.awt.SunToolkit;
 import sun.awt.X11ComponentPeer;
 import sun.awt.X11GraphicsConfig;
+import sun.awt.X11GraphicsEnvironment;
 import sun.awt.image.PixelConverter;
 import sun.font.X11TextRenderer;
 import sun.java2d.InvalidPipeException;
@@ -64,7 +65,7 @@
 import sun.java2d.pipe.TextPipe;
 import sun.java2d.pipe.Region;
 
-public abstract class X11SurfaceData extends SurfaceData {
+public abstract class X11SurfaceData extends XSurfaceData {
     X11ComponentPeer peer;
     X11GraphicsConfig graphicsConfig;
     private RenderLoops solidloops;
@@ -74,8 +75,6 @@
     private static native void initIDs(Class xorComp, boolean tryDGA);
     protected native void initSurface(int depth, int width, int height,
                                       long drawable);
-    native boolean isDrawableValid();
-    protected native void flushNativeSurface();
 
     public static final String
         DESC_INT_BGR_X11        = "Integer BGR Pixmap";
@@ -212,7 +211,8 @@
     protected static boolean dgaAvailable;
 
     static {
-        if (!GraphicsEnvironment.isHeadless()) {
+       if (!isX11SurfaceDataInitialized() &&
+           !GraphicsEnvironment.isHeadless()) {
             // If a screen magnifier is present, don't attempt to use DGA
             String magPresent = (String) java.security.AccessController.doPrivileged
                 (new sun.security.action.GetPropertyAction("javax.accessibility.screen_magnifier_present"));
@@ -245,7 +245,7 @@
                 X11PMBlitLoops.register();
                 X11PMBlitBgLoops.register();
             }
-        }
+       }
     }
 
     /**
@@ -432,11 +432,11 @@
                                         cm, drawable, transparency);
     }
 
-    /**
-     * Initializes the native Ops pointer.
-     */
-    private native void initOps(X11ComponentPeer peer,
-                                X11GraphicsConfig gc, int depth);
+//    /**
+//     * Initializes the native Ops pointer.
+//     */
+//    private native void initOps(X11ComponentPeer peer,
+//                                X11GraphicsConfig gc, int depth);
 
     protected X11SurfaceData(X11ComponentPeer peer,
                              X11GraphicsConfig gc,
@@ -613,8 +613,6 @@
         return sType;
     }
 
-    public native void setInvalid();
-
     public void invalidate() {
         if (isValid()) {
             setInvalid();
@@ -628,16 +626,9 @@
      * X11SurfaceData object.
      */
 
-    private static native long XCreateGC(long pXSData);
-    private static native void XResetClip(long xgc);
-    private static native void XSetClip(long xgc,
-                                        int lox, int loy, int hix, int hiy,
-                                        Region complexclip);
     private static native void XSetCopyMode(long xgc);
     private static native void XSetXorMode(long xgc);
     private static native void XSetForeground(long xgc, int pixel);
-    private static native void XSetGraphicsExposures(long xgc,
-                                                     boolean needExposures);
 
     private long xgc;
     private Region validatedClip;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/solaris/classes/sun/java2d/x11/XSurfaceData.java	Wed Jun 16 14:07:47 2010 -0700
@@ -0,0 +1,40 @@
+package sun.java2d.x11;
+
+import java.awt.image.*;
+
+import sun.awt.*;
+import sun.java2d.*;
+import sun.java2d.loops.*;
+import sun.java2d.pipe.*;
+
+public abstract class XSurfaceData extends SurfaceData {
+    static boolean isX11SurfaceDataInitialized = false;
+
+    public static boolean isX11SurfaceDataInitialized() {
+        return isX11SurfaceDataInitialized;
+    }
+
+    public static void setX11SurfaceDataInitialized() {
+        isX11SurfaceDataInitialized = true;
+    }
+
+    public XSurfaceData(SurfaceType surfaceType, ColorModel cm) {
+        super(surfaceType, cm);
+    }
+
+    protected native void initOps(X11ComponentPeer peer, X11GraphicsConfig gc, int depth);
+
+    protected static native long XCreateGC(long pXSData);
+
+    protected static native void XResetClip(long xgc);
+
+    protected static native void XSetClip(long xgc, int lox, int loy, int hix, int hiy, Region complexclip);
+
+    protected native void flushNativeSurface();
+
+    protected native boolean isDrawableValid();
+
+    protected native void setInvalid();
+
+    protected static native void XSetGraphicsExposures(long xgc, boolean needExposures);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/solaris/classes/sun/java2d/xr/DirtyRegion.java	Wed Jun 16 14:07:47 2010 -0700
@@ -0,0 +1,133 @@
+/*
+ * Copyright 2010 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.java2d.xr;
+
+import static java.lang.Math.min;
+import static java.lang.Math.max;
+import static sun.java2d.xr.MaskTileManager.MASK_SIZE;
+
+/**
+ * This class implements region tracking, used by the tiled-mask code.
+ *
+ * @author Clemens Eisserer
+ */
+
+public class DirtyRegion implements Cloneable {
+    int x, y, x2, y2;
+
+    public DirtyRegion() {
+        clear();
+    }
+
+    public void clear() {
+        x = Integer.MAX_VALUE;
+        y = Integer.MAX_VALUE;
+        x2 = Integer.MIN_VALUE;
+        y2 = Integer.MIN_VALUE;
+    }
+
+    public void growDirtyRegion(int x, int y, int x2, int y2) {
+        this.x = min(x, this.x);
+        this.y = min(y, this.y);
+        this.x2 = max(x2, this.x2);
+        this.y2 = max(y2, this.y2);
+    }
+
+    public int getWidth() {
+        return x2 - x;
+    }
+
+    public int getHeight() {
+        return y2 - y;
+    }
+
+    public void growDirtyRegionTileLimit(int x, int y, int x2, int y2) {
+        if (x < this.x) {
+            this.x = max(x, 0);
+        }
+        if (y < this.y) {
+            this.y = max(y, 0);
+        }
+        if (x2 > this.x2) {
+            this.x2 = min(x2, MASK_SIZE);
+        }
+        if (y2 > this.y2) {
+            this.y2 = min(y2, MASK_SIZE);
+        }
+    }
+
+    public static DirtyRegion combineRegion(DirtyRegion region1,
+                                            DirtyRegion region2) {
+        DirtyRegion region = new DirtyRegion();
+        region.x = min(region1.x, region2.x);
+        region.y = min(region1.y, region2.y);
+        region.x2 = max(region1.x2, region2.x2);
+        region.y2 = max(region1.y2, region2.y2);
+        return region;
+    }
+
+    public void setDirtyLineRegion(int x1, int y1, int x2, int y2) {
+        if (x1 < x2) {
+            this.x = x1;
+            this.x2 = x2;
+        } else {
+            this.x = x2;
+            this.x2 = x1;
+        }
+
+        if (y1 < y2) {
+            this.y = y1;
+            this.y2 = y2;
+        } else {
+            this.y = y2;
+            this.y2 = y1;
+        }
+    }
+
+    public void translate(int x, int y) {
+        if (this.x != Integer.MAX_VALUE) {
+            this.x += x;
+            this.x2 += x;
+            this.y += y;
+            this.y2 += y;
+        }
+    }
+
+    public String toString() {
+        return this.getClass().getName() +
+                "(x: " + x + ", y:" + y + ", x2:" + x2 + ", y2:" + y2 + ")";
+    }
+
+    public DirtyRegion cloneRegion() {
+        try {
+            return (DirtyRegion) clone();
+        } catch (CloneNotSupportedException ex) {
+            ex.printStackTrace();
+        }
+
+        return null;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/solaris/classes/sun/java2d/xr/GrowableByteArray.java	Wed Jun 16 14:07:47 2010 -0700
@@ -0,0 +1,127 @@
+/*
+ * Copyright 2010 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.java2d.xr;
+
+import java.util.*;
+
+/**
+ * Growable int array, designed to allow subclasses to emulate
+ * the behaviour of value types.
+ *
+ * @author Clemens Eisserer
+ */
+
+public class GrowableByteArray
+{
+
+        byte[] array;
+        int size;
+        int cellSize;
+
+        public GrowableByteArray(int cellSize, int initialSize)
+        {
+                array = new byte[initialSize];
+                size = 0;
+                this.cellSize = cellSize;
+        }
+
+        private int getNextCellIndex()
+        {
+                int oldSize = size;
+                size += cellSize;
+
+                if (size >= array.length)
+                {
+                        growArray();
+                }
+
+                return oldSize;
+        }
+
+        /**
+         * @return a direct reference to the backing array.
+         */
+        public byte[] getArray()
+        {
+                return array;
+        }
+
+        /**
+         * @return a copy of the backing array.
+         */
+        public byte[] getSizedArray()
+        {
+                return Arrays.copyOf(array, getSize());
+        }
+
+        public final int getByte(int index)
+        {
+                return array[getCellIndex(index)];
+        }
+
+        /**
+         * Returns the index of the next free cell,
+         * and grows the backing arrays if required.
+         */
+        public final int getNextIndex()
+        {
+                return getNextCellIndex() / cellSize;
+        }
+
+        protected final int getCellIndex(int cellIndex)
+        {
+                return cellSize * cellIndex;
+        }
+
+        public final void addByte(byte i)
+        {
+            int nextIndex = getNextIndex();
+            array[nextIndex] = i;
+        }
+
+        /**
+         * @return The number of stored cells.
+         */
+        public final int getSize()
+        {
+                return size / cellSize;
+        }
+
+        public void clear()
+        {
+                size = 0;
+        }
+
+        protected void growArray()
+        {
+                int newSize = Math.max(array.length * 2, 10);
+                byte[] oldArray = array;
+                array = new byte[newSize];
+
+                System.arraycopy(oldArray, 0, array, 0, oldArray.length);
+        }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/solaris/classes/sun/java2d/xr/GrowableEltArray.java	Wed Jun 16 14:07:47 2010 -0700
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2010 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.java2d.xr;
+
+/**
+ * Class to efficiently store glyph information for laid out glyphs,
+ * passed to native or java backend.
+ *
+ * @author Clemens Eisserer
+ */
+public class GrowableEltArray extends GrowableIntArray {
+    private static final int ELT_SIZE = 4;
+    GrowableIntArray glyphs;
+
+    public GrowableEltArray(int initialSize)
+    {
+        super(ELT_SIZE, initialSize);
+        glyphs = new GrowableIntArray(1, initialSize*8);
+    }
+
+    public final int getCharCnt(int index) {
+        return array[getCellIndex(index) + 0];
+    }
+
+    public final void setCharCnt(int index, int cnt) {
+        array[getCellIndex(index) + 0] = cnt;
+    }
+
+    public final int getXOff(int index) {
+        return array[getCellIndex(index) + 1];
+    }
+
+    public final void setXOff(int index, int xOff) {
+        array[getCellIndex(index) + 1] = xOff;
+    }
+
+    public final int getYOff(int index) {
+        return array[getCellIndex(index) + 2];
+    }
+
+    public final void setYOff(int index, int yOff) {
+        array[getCellIndex(index) + 2] = yOff;
+    }
+
+    public final int getGlyphSet(int index) {
+        return array[getCellIndex(index) + 3];
+    }
+
+    public final void setGlyphSet(int index, int glyphSet) {
+        array[getCellIndex(index) + 3] = glyphSet;
+    }
+
+    public GrowableIntArray getGlyphs() {
+        return glyphs;
+    }
+
+    public void clear() {
+        glyphs.clear();
+        super.clear();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/solaris/classes/sun/java2d/xr/GrowableIntArray.java	Wed Jun 16 14:07:47 2010 -0700
@@ -0,0 +1,114 @@
+/*
+ * Copyright 2010 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
+ * pub