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