# HG changeset patch # User lana # Date 1324423675 28800 # Node ID 3192d89032b03efacab9a989c426c7a564939250 # Parent 02dcb305d387fd1fbc046d0db42be5c61c2e7e8c# Parent 3db172a5433cb5a435c3455e5aa1bcb403082072 Merge diff -r 02dcb305d387 -r 3192d89032b0 jdk/make/common/Rules.gmk --- a/jdk/make/common/Rules.gmk Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/make/common/Rules.gmk Tue Dec 20 15:27:55 2011 -0800 @@ -239,7 +239,7 @@ $(CAT) $<.filtered; \ $(ECHO) "# Running javac: $$numfiles files; in $(CURDIR)"; \ $(ECHO) $(JAVAC_CMD) -sourcepath "$(SOURCEPATH)" -d $(CLASSDESTDIR) @$<.filtered; \ - $(JAVAC_CMD) -sourcepath "$(SOURCEPATH)" -d $(CLASSDESTDIR) @$<.filtered; \ + $(JAVAC_CMD) -sourcepath "$(SOURCEPATH)" -d $(CLASSDESTDIR) @$<.filtered && \ $(ECHO) "# javac finished"; \ fi @$(java-vm-cleanup) diff -r 02dcb305d387 -r 3192d89032b0 jdk/make/jprt.properties --- a/jdk/make/jprt.properties Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/make/jprt.properties Tue Dec 20 15:27:55 2011 -0800 @@ -25,15 +25,15 @@ # Properties for jprt -# Release to build for +# Locked down to jdk8 jprt.tools.default.release=jdk8 # The different build flavors we want, we override here so we just get these 2 jprt.build.flavors=product,fastdebug # Standard list of jprt build targets for this source tree -jprt.build.targets= \ - solaris_sparc_5.10-{product|fastdebug}, \ +jprt.build.targets= \ + solaris_sparc_5.10-{product|fastdebug}, \ solaris_sparcv9_5.10-{product|fastdebug}, \ solaris_i586_5.10-{product|fastdebug}, \ solaris_x64_5.10-{product|fastdebug}, \ @@ -45,247 +45,59 @@ # User can select the test set with jprt submit "-testset name" option jprt.my.test.set=${jprt.test.set} -# Standard vm test target +# Test target list (no fastdebug & limited c2 testing) +jprt.my.test.target.set= \ + solaris_sparc_5.10-product-c1-TESTNAME, \ + solaris_sparcv9_5.10-product-c2-TESTNAME, \ + solaris_i586_5.10-product-c1-TESTNAME, \ + solaris_x64_5.10-product-c2-TESTNAME, \ + linux_i586_2.6-product-{c1|c2}-TESTNAME, \ + linux_x64_2.6-product-c2-TESTNAME, \ + windows_i586_5.1-product-c1-TESTNAME, \ + windows_x64_5.2-product-c2-TESTNAME + +# Default vm test targets (testset=default) jprt.vm.default.test.targets= \ - solaris_sparc_5.10-product-c1-jvm98, \ - solaris_sparcv9_5.10-product-c2-jvm98, \ - solaris_i586_5.10-product-c1-jvm98, \ - solaris_x64_5.10-product-c2-jvm98, \ - linux_i586_2.6-product-{c1|c2}-jvm98, \ - linux_x64_2.6-product-c2-jvm98, \ - windows_i586_5.1-product-c1-jvm98, \ - windows_x64_5.2-product-c2-jvm98 + ${jprt.my.test.target.set:TESTNAME=jvm98} -# Select vm testlist to use (allow for testset to be empty too) -jprt.vm.all.test.targets=${jprt.vm.default.test.targets} -jprt.vm..test.targets=${jprt.vm.default.test.targets} -jprt.test.targets=${jprt.vm.${jprt.my.test.set}.test.targets} - -# Default jdk test targets in test/Makefile (no fastdebug & limited c2) +# Default jdk test targets (testset=default) jprt.make.rule.default.test.targets= \ - \ - solaris_sparc_5.10-product-c1-jdk_beans1, \ - solaris_sparcv9_5.10-product-c2-jdk_beans1, \ - solaris_i586_5.10-product-c1-jdk_beans1, \ - solaris_x64_5.10-product-c2-jdk_beans1, \ - linux_i586_2.6-product-{c1|c2}-jdk_beans1, \ - linux_x64_2.6-product-c2-jdk_beans1, \ - windows_i586_5.1-product-c1-jdk_beans1, \ - windows_x64_5.2-product-c2-jdk_beans1, \ - \ - solaris_sparc_5.10-product-c1-jdk_io, \ - solaris_sparcv9_5.10-product-c2-jdk_io, \ - solaris_i586_5.10-product-c1-jdk_io, \ - solaris_x64_5.10-product-c2-jdk_io, \ - linux_i586_2.6-product-{c1|c2}-jdk_io, \ - linux_x64_2.6-product-c2-jdk_io, \ - windows_i586_5.1-product-c1-jdk_io, \ - windows_x64_5.2-product-c2-jdk_io, \ - \ - solaris_sparc_5.10-product-c1-jdk_lang, \ - solaris_sparcv9_5.10-product-c2-jdk_lang, \ - solaris_i586_5.10-product-c1-jdk_lang, \ - solaris_x64_5.10-product-c2-jdk_lang, \ - linux_i586_2.6-product-{c1|c2}-jdk_lang, \ - linux_x64_2.6-product-c2-jdk_lang, \ - windows_i586_5.1-product-c1-jdk_lang, \ - windows_x64_5.2-product-c2-jdk_lang, \ - \ - solaris_sparc_5.10-product-c1-jdk_math, \ - solaris_sparcv9_5.10-product-c2-jdk_math, \ - solaris_i586_5.10-product-c1-jdk_math, \ - solaris_x64_5.10-product-c2-jdk_math, \ - linux_i586_2.6-product-{c1|c2}-jdk_math, \ - linux_x64_2.6-product-c2-jdk_math, \ - windows_i586_5.1-product-c1-jdk_math, \ - windows_x64_5.2-product-c2-jdk_math, \ - \ - solaris_sparc_5.10-product-c1-jdk_misc, \ - solaris_sparcv9_5.10-product-c2-jdk_misc, \ - solaris_i586_5.10-product-c1-jdk_misc, \ - solaris_x64_5.10-product-c2-jdk_misc, \ - linux_i586_2.6-product-{c1|c2}-jdk_misc, \ - linux_x64_2.6-product-c2-jdk_misc, \ - windows_i586_5.1-product-c1-jdk_misc, \ - windows_x64_5.2-product-c2-jdk_misc, \ - \ - solaris_sparc_5.10-product-c1-jdk_net, \ - solaris_sparcv9_5.10-product-c2-jdk_net, \ - solaris_i586_5.10-product-c1-jdk_net, \ - solaris_x64_5.10-product-c2-jdk_net, \ - linux_i586_2.6-product-{c1|c2}-jdk_net, \ - linux_x64_2.6-product-c2-jdk_net, \ - windows_i586_5.1-product-c1-jdk_net, \ - windows_x64_5.2-product-c2-jdk_net, \ - \ - solaris_sparc_5.10-product-c1-jdk_nio1, \ - solaris_sparcv9_5.10-product-c2-jdk_nio1, \ - solaris_i586_5.10-product-c1-jdk_nio1, \ - solaris_x64_5.10-product-c2-jdk_nio1, \ - linux_i586_2.6-product-{c1|c2}-jdk_nio1, \ - linux_x64_2.6-product-c2-jdk_nio1, \ - windows_i586_5.1-product-c1-jdk_nio1, \ - windows_x64_5.2-product-c2-jdk_nio1, \ - \ - solaris_sparc_5.10-product-c1-jdk_nio2, \ - solaris_sparcv9_5.10-product-c2-jdk_nio2, \ - solaris_i586_5.10-product-c1-jdk_nio2, \ - solaris_x64_5.10-product-c2-jdk_nio2, \ - linux_i586_2.6-product-{c1|c2}-jdk_nio2, \ - linux_x64_2.6-product-c2-jdk_nio2, \ - windows_i586_5.1-product-c1-jdk_nio2, \ - windows_x64_5.2-product-c2-jdk_nio2, \ - \ - solaris_sparc_5.10-product-c1-jdk_nio3, \ - solaris_sparcv9_5.10-product-c2-jdk_nio3, \ - solaris_i586_5.10-product-c1-jdk_nio3, \ - solaris_x64_5.10-product-c2-jdk_nio3, \ - linux_i586_2.6-product-{c1|c2}-jdk_nio3, \ - linux_x64_2.6-product-c2-jdk_nio3, \ - windows_i586_5.1-product-c1-jdk_nio3, \ - windows_x64_5.2-product-c2-jdk_nio3, \ - \ - solaris_sparc_5.10-product-c1-jdk_security1, \ - solaris_sparcv9_5.10-product-c2-jdk_security1, \ - solaris_i586_5.10-product-c1-jdk_security1, \ - solaris_x64_5.10-product-c2-jdk_security1, \ - linux_i586_2.6-product-{c1|c2}-jdk_security1, \ - linux_x64_2.6-product-c2-jdk_security1, \ - windows_i586_5.1-product-c1-jdk_security1, \ - windows_x64_5.2-product-c2-jdk_security1, \ - \ - solaris_sparc_5.10-product-c1-jdk_text, \ - solaris_sparcv9_5.10-product-c2-jdk_text, \ - solaris_i586_5.10-product-c1-jdk_text, \ - solaris_x64_5.10-product-c2-jdk_text, \ - linux_i586_2.6-product-{c1|c2}-jdk_text, \ - linux_x64_2.6-product-c2-jdk_text, \ - windows_i586_5.1-product-c1-jdk_text, \ - windows_x64_5.2-product-c2-jdk_text, \ - \ - solaris_sparc_5.10-product-c1-jdk_tools1, \ - solaris_sparcv9_5.10-product-c2-jdk_tools1, \ - solaris_i586_5.10-product-c1-jdk_tools1, \ - solaris_x64_5.10-product-c2-jdk_tools1, \ - linux_i586_2.6-product-{c1|c2}-jdk_tools1, \ - linux_x64_2.6-product-c2-jdk_tools1, \ - windows_i586_5.1-product-c1-jdk_tools1, \ - windows_x64_5.2-product-c2-jdk_tools1, \ - \ - solaris_sparc_5.10-product-c1-jdk_util, \ - solaris_sparcv9_5.10-product-c2-jdk_util, \ - solaris_i586_5.10-product-c1-jdk_util, \ - solaris_x64_5.10-product-c2-jdk_util, \ - linux_i586_2.6-product-{c1|c2}-jdk_util, \ - linux_x64_2.6-product-c2-jdk_util, \ - windows_i586_5.1-product-c1-jdk_util, \ - windows_x64_5.2-product-c2-jdk_util + ${jprt.my.test.target.set:TESTNAME=jdk_beans1}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_io}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_lang}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_math}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_misc}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_net}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_nio1}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_nio2}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_nio3}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_security1}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_text}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_util} -# All jdk test targets in test/Makefile (still no fastdebug & limited c2) +# All vm test targets (testset=all) +jprt.vm.all.test.targets= \ + ${jprt.vm.default.test.targets}, \ + ${jprt.my.test.target.set:TESTNAME=runThese}, \ + ${jprt.my.test.target.set:TESTNAME=jbb_default} + +# All jdk test targets (testset=all) jprt.make.rule.all.test.targets= \ - \ - ${jprt.make.rule.default.test.targets}, \ - \ - solaris_sparc_5.10-product-c1-jdk_awt, \ - solaris_sparcv9_5.10-product-c2-jdk_awt, \ - solaris_i586_5.10-product-c1-jdk_awt, \ - solaris_x64_5.10-product-c2-jdk_awt, \ - linux_i586_2.6-product-{c1|c2}-jdk_awt, \ - linux_x64_2.6-product-c2-jdk_awt, \ - windows_i586_5.1-product-c1-jdk_awt, \ - windows_x64_5.2-product-c2-jdk_awt, \ - \ - solaris_sparc_5.10-product-c1-jdk_beans2, \ - solaris_sparcv9_5.10-product-c2-jdk_beans2, \ - solaris_i586_5.10-product-c1-jdk_beans2, \ - solaris_x64_5.10-product-c2-jdk_beans2, \ - linux_i586_2.6-product-{c1|c2}-jdk_beans2, \ - linux_x64_2.6-product-c2-jdk_beans2, \ - windows_i586_5.1-product-c1-jdk_beans2, \ - windows_x64_5.2-product-c2-jdk_beans2, \ - \ - solaris_sparc_5.10-product-c1-jdk_beans3, \ - solaris_sparcv9_5.10-product-c2-jdk_beans3, \ - solaris_i586_5.10-product-c1-jdk_beans3, \ - solaris_x64_5.10-product-c2-jdk_beans3, \ - linux_i586_2.6-product-{c1|c2}-jdk_beans3, \ - linux_x64_2.6-product-c2-jdk_beans3, \ - windows_i586_5.1-product-c1-jdk_beans3, \ - windows_x64_5.2-product-c2-jdk_beans3, \ - \ - solaris_sparc_5.10-product-c1-jdk_management1, \ - solaris_sparcv9_5.10-product-c2-jdk_management1, \ - solaris_i586_5.10-product-c1-jdk_management1, \ - solaris_x64_5.10-product-c2-jdk_management1, \ - linux_i586_2.6-product-{c1|c2}-jdk_management1, \ - linux_x64_2.6-product-c2-jdk_management1, \ - windows_i586_5.1-product-c1-jdk_management1, \ - windows_x64_5.2-product-c2-jdk_management1, \ - \ - solaris_sparc_5.10-product-c1-jdk_management2, \ - solaris_sparcv9_5.10-product-c2-jdk_management2, \ - solaris_i586_5.10-product-c1-jdk_management2, \ - solaris_x64_5.10-product-c2-jdk_management2, \ - linux_i586_2.6-product-{c1|c2}-jdk_management2, \ - linux_x64_2.6-product-c2-jdk_management2, \ - windows_i586_5.1-product-c1-jdk_management2, \ - windows_x64_5.2-product-c2-jdk_management2, \ - \ - solaris_sparc_5.10-product-c1-jdk_rmi, \ - solaris_sparcv9_5.10-product-c2-jdk_rmi, \ - solaris_i586_5.10-product-c1-jdk_rmi, \ - solaris_x64_5.10-product-c2-jdk_rmi, \ - linux_i586_2.6-product-{c1|c2}-jdk_rmi, \ - linux_x64_2.6-product-c2-jdk_rmi, \ - windows_i586_5.1-product-c1-jdk_rmi, \ - windows_x64_5.2-product-c2-jdk_rmi, \ - \ - solaris_sparc_5.10-product-c1-jdk_security2, \ - solaris_sparcv9_5.10-product-c2-jdk_security2, \ - solaris_i586_5.10-product-c1-jdk_security2, \ - solaris_x64_5.10-product-c2-jdk_security2, \ - linux_i586_2.6-product-{c1|c2}-jdk_security2, \ - linux_x64_2.6-product-c2-jdk_security2, \ - windows_i586_5.1-product-c1-jdk_security2, \ - windows_x64_5.2-product-c2-jdk_security2, \ - \ - solaris_sparc_5.10-product-c1-jdk_security3, \ - solaris_sparcv9_5.10-product-c2-jdk_security3, \ - solaris_i586_5.10-product-c1-jdk_security3, \ - solaris_x64_5.10-product-c2-jdk_security3, \ - linux_i586_2.6-product-{c1|c2}-jdk_security3, \ - linux_x64_2.6-product-c2-jdk_security3, \ - windows_i586_5.1-product-c1-jdk_security3, \ - windows_x64_5.2-product-c2-jdk_security3, \ - \ - solaris_sparc_5.10-product-c1-jdk_sound, \ - solaris_sparcv9_5.10-product-c2-jdk_sound, \ - solaris_i586_5.10-product-c1-jdk_sound, \ - solaris_x64_5.10-product-c2-jdk_sound, \ - linux_i586_2.6-product-{c1|c2}-jdk_sound, \ - linux_x64_2.6-product-c2-jdk_sound, \ - windows_i586_5.1-product-c1-jdk_sound, \ - windows_x64_5.2-product-c2-jdk_sound, \ - \ - solaris_sparc_5.10-product-c1-jdk_swing, \ - solaris_sparcv9_5.10-product-c2-jdk_swing, \ - solaris_i586_5.10-product-c1-jdk_swing, \ - solaris_x64_5.10-product-c2-jdk_swing, \ - linux_i586_2.6-product-{c1|c2}-jdk_swing, \ - linux_x64_2.6-product-c2-jdk_swing, \ - windows_i586_5.1-product-c1-jdk_swing, \ - windows_x64_5.2-product-c2-jdk_swing, \ - \ - solaris_sparc_5.10-product-c1-jdk_tools2, \ - solaris_sparcv9_5.10-product-c2-jdk_tools2, \ - solaris_i586_5.10-product-c1-jdk_tools2, \ - solaris_x64_5.10-product-c2-jdk_tools2, \ - linux_i586_2.6-product-{c1|c2}-jdk_tools2, \ - linux_x64_2.6-product-c2-jdk_tools2, \ - windows_i586_5.1-product-c1-jdk_tools2, \ - windows_x64_5.2-product-c2-jdk_tools2 + ${jprt.make.rule.default.test.targets}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_awt}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_beans2}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_beans3}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_management1}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_management2}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_rmi}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_security2}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_security3}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_sound}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_swing}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_tools1}, \ + ${jprt.my.test.target.set:TESTNAME=jdk_tools2} -# JCK test targets in test/Makefile (no fastdebug & limited c2, windows broken) +# JCK test targets in test/Makefile (no windows) jprt.my.jck.test.target.set= \ solaris_sparc_5.10-product-c1-JCK7TESTRULE, \ solaris_sparcv9_5.10-product-c2-JCK7TESTRULE, \ @@ -301,8 +113,10 @@ ${jprt.my.jck.test.target.set:JCK7TESTRULE=jck7compiler} # Select list to use (allow for testset to be empty too) -jprt.make.rule..test.targets=${jprt.make.rule.default.test.targets} -jprt.make.rule.test.targets=${jprt.make.rule.${jprt.my.test.set}.test.targets} +jprt.make.rule..test.targets=${jprt.make.rule.default.test.targets} +jprt.make.rule.test.targets=${jprt.make.rule.${jprt.my.test.set}.test.targets} +jprt.vm..test.targets=${jprt.vm.default.test.targets} +jprt.test.targets=${jprt.vm.${jprt.my.test.set}.test.targets} # Directories to be excluded from the source bundles jprt.bundle.exclude.src.dirs=build dist webrev diff -r 02dcb305d387 -r 3192d89032b0 jdk/make/tools/src/build/tools/jdwpgen/ArrayRegionTypeNode.java --- a/jdk/make/tools/src/build/tools/jdwpgen/ArrayRegionTypeNode.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/make/tools/src/build/tools/jdwpgen/ArrayRegionTypeNode.java Tue Dec 20 15:27:55 2011 -0800 @@ -35,7 +35,7 @@ } String javaType() { - return "List"; + return "List"; } public void genJavaWrite(PrintWriter writer, int depth, diff -r 02dcb305d387 -r 3192d89032b0 jdk/make/tools/src/build/tools/jdwpgen/OutNode.java --- a/jdk/make/tools/src/build/tools/jdwpgen/OutNode.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/make/tools/src/build/tools/jdwpgen/OutNode.java Tue Dec 20 15:27:55 2011 -0800 @@ -89,7 +89,7 @@ if (Main.genDebug) { indent(writer, depth+1); writer.println( - "if ((vm.traceFlags & vm.TRACE_SENDS) != 0) {"); + "if ((vm.traceFlags & VirtualMachineImpl.TRACE_SENDS) != 0) {"); indent(writer, depth+2); writer.print( "vm.printTrace(\"Sending Command(id=\" + ps.pkt.id + \") "); diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/jdi/AbsentInformationException.java --- a/jdk/src/share/classes/com/sun/jdi/AbsentInformationException.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/jdi/AbsentInformationException.java Tue Dec 20 15:27:55 2011 -0800 @@ -33,6 +33,7 @@ */ public class AbsentInformationException extends Exception { + private static final long serialVersionUID = 4988939309582416373L; public AbsentInformationException() { super(); diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/jdi/ClassNotLoadedException.java --- a/jdk/src/share/classes/com/sun/jdi/ClassNotLoadedException.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/jdi/ClassNotLoadedException.java Tue Dec 20 15:27:55 2011 -0800 @@ -69,6 +69,7 @@ */ public class ClassNotLoadedException extends Exception { + private static final long serialVersionUID = -6242978768444298722L; private String className; public ClassNotLoadedException(String className) { diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/jdi/ClassNotPreparedException.java --- a/jdk/src/share/classes/com/sun/jdi/ClassNotPreparedException.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/jdi/ClassNotPreparedException.java Tue Dec 20 15:27:55 2011 -0800 @@ -33,6 +33,7 @@ * @since 1.3 */ public class ClassNotPreparedException extends RuntimeException { + private static final long serialVersionUID = -6120698967144079642L; public ClassNotPreparedException() { super(); diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/jdi/IncompatibleThreadStateException.java --- a/jdk/src/share/classes/com/sun/jdi/IncompatibleThreadStateException.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/jdi/IncompatibleThreadStateException.java Tue Dec 20 15:27:55 2011 -0800 @@ -34,6 +34,7 @@ */ public class IncompatibleThreadStateException extends Exception { + private static final long serialVersionUID = 6199174323414551389L; public IncompatibleThreadStateException() { super(); diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/jdi/InconsistentDebugInfoException.java --- a/jdk/src/share/classes/com/sun/jdi/InconsistentDebugInfoException.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/jdi/InconsistentDebugInfoException.java Tue Dec 20 15:27:55 2011 -0800 @@ -35,6 +35,7 @@ * @since 1.3 */ public class InconsistentDebugInfoException extends RuntimeException { + private static final long serialVersionUID = 7964236415376861808L; public InconsistentDebugInfoException() { super(); } diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/jdi/InternalException.java --- a/jdk/src/share/classes/com/sun/jdi/InternalException.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/jdi/InternalException.java Tue Dec 20 15:27:55 2011 -0800 @@ -33,6 +33,7 @@ * @since 1.3 */ public class InternalException extends RuntimeException { + private static final long serialVersionUID = -9171606393104480607L; private int errorCode; public InternalException() { diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/jdi/InvalidCodeIndexException.java --- a/jdk/src/share/classes/com/sun/jdi/InvalidCodeIndexException.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/jdi/InvalidCodeIndexException.java Tue Dec 20 15:27:55 2011 -0800 @@ -36,6 +36,7 @@ */ @Deprecated public class InvalidCodeIndexException extends RuntimeException { + private static final long serialVersionUID = 7416010225133747805L; public InvalidCodeIndexException() { super(); } diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/jdi/InvalidLineNumberException.java --- a/jdk/src/share/classes/com/sun/jdi/InvalidLineNumberException.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/jdi/InvalidLineNumberException.java Tue Dec 20 15:27:55 2011 -0800 @@ -36,6 +36,7 @@ */ @Deprecated public class InvalidLineNumberException extends RuntimeException { + private static final long serialVersionUID = 4048709912372692875L; public InvalidLineNumberException() { super(); } diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/jdi/InvalidStackFrameException.java --- a/jdk/src/share/classes/com/sun/jdi/InvalidStackFrameException.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/jdi/InvalidStackFrameException.java Tue Dec 20 15:27:55 2011 -0800 @@ -33,6 +33,7 @@ * @since 1.3 */ public class InvalidStackFrameException extends RuntimeException { + private static final long serialVersionUID = -1919378296505827922L; public InvalidStackFrameException() { super(); } diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/jdi/InvalidTypeException.java --- a/jdk/src/share/classes/com/sun/jdi/InvalidTypeException.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/jdi/InvalidTypeException.java Tue Dec 20 15:27:55 2011 -0800 @@ -34,6 +34,7 @@ */ public class InvalidTypeException extends Exception { + private static final long serialVersionUID = 2256667231949650806L; public InvalidTypeException() { super(); diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/jdi/InvocationException.java --- a/jdk/src/share/classes/com/sun/jdi/InvocationException.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/jdi/InvocationException.java Tue Dec 20 15:27:55 2011 -0800 @@ -34,6 +34,7 @@ */ public class InvocationException extends Exception { + private static final long serialVersionUID = 6066780907971918568L; ObjectReference exception; public InvocationException(ObjectReference exception) diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/jdi/JDIPermission.java --- a/jdk/src/share/classes/com/sun/jdi/JDIPermission.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/jdi/JDIPermission.java Tue Dec 20 15:27:55 2011 -0800 @@ -79,7 +79,7 @@ */ public final class JDIPermission extends java.security.BasicPermission { - + private static final long serialVersionUID = -6988461416938786271L; /** * The JDIPermission class represents access rights to the * VirtualMachineManager diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/jdi/NativeMethodException.java --- a/jdk/src/share/classes/com/sun/jdi/NativeMethodException.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/jdi/NativeMethodException.java Tue Dec 20 15:27:55 2011 -0800 @@ -34,6 +34,7 @@ */ public class NativeMethodException extends RuntimeException { + private static final long serialVersionUID = 3924951669039469992L; public NativeMethodException() { super(); } diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/jdi/ObjectCollectedException.java --- a/jdk/src/share/classes/com/sun/jdi/ObjectCollectedException.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/jdi/ObjectCollectedException.java Tue Dec 20 15:27:55 2011 -0800 @@ -33,6 +33,7 @@ * @since 1.3 */ public class ObjectCollectedException extends RuntimeException { + private static final long serialVersionUID = -1928428056197269588L; public ObjectCollectedException() { super(); } diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/jdi/VMCannotBeModifiedException.java --- a/jdk/src/share/classes/com/sun/jdi/VMCannotBeModifiedException.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/jdi/VMCannotBeModifiedException.java Tue Dec 20 15:27:55 2011 -0800 @@ -33,6 +33,7 @@ * @since 1.5 */ public class VMCannotBeModifiedException extends UnsupportedOperationException { + private static final long serialVersionUID = -4063879815130164009L; public VMCannotBeModifiedException() { super(); } diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/jdi/VMDisconnectedException.java --- a/jdk/src/share/classes/com/sun/jdi/VMDisconnectedException.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/jdi/VMDisconnectedException.java Tue Dec 20 15:27:55 2011 -0800 @@ -35,6 +35,7 @@ */ public class VMDisconnectedException extends RuntimeException { + private static final long serialVersionUID = 2892975269768351637L; public VMDisconnectedException() { super(); } diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/jdi/VMMismatchException.java --- a/jdk/src/share/classes/com/sun/jdi/VMMismatchException.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/jdi/VMMismatchException.java Tue Dec 20 15:27:55 2011 -0800 @@ -34,6 +34,7 @@ * @since 1.3 */ public class VMMismatchException extends RuntimeException { + private static final long serialVersionUID = 289169358790459564L; public VMMismatchException() { super(); } diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/jdi/VMOutOfMemoryException.java --- a/jdk/src/share/classes/com/sun/jdi/VMOutOfMemoryException.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/jdi/VMOutOfMemoryException.java Tue Dec 20 15:27:55 2011 -0800 @@ -33,6 +33,7 @@ * @since 1.3 */ public class VMOutOfMemoryException extends RuntimeException { + private static final long serialVersionUID = 71504228548910686L; public VMOutOfMemoryException() { super(); } diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/jdi/connect/IllegalConnectorArgumentsException.java --- a/jdk/src/share/classes/com/sun/jdi/connect/IllegalConnectorArgumentsException.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/jdi/connect/IllegalConnectorArgumentsException.java Tue Dec 20 15:27:55 2011 -0800 @@ -38,6 +38,7 @@ */ public class IllegalConnectorArgumentsException extends Exception { + private static final long serialVersionUID = -3042212603611350941L; List names; /** diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/jdi/connect/TransportTimeoutException.java --- a/jdk/src/share/classes/com/sun/jdi/connect/TransportTimeoutException.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/jdi/connect/TransportTimeoutException.java Tue Dec 20 15:27:55 2011 -0800 @@ -55,7 +55,7 @@ * @since 1.5 */ public class TransportTimeoutException extends java.io.IOException { - + private static final long serialVersionUID = 4107035242623365074L; /** * Constructs a TransportTimeoutException with no detail * message. diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/jdi/connect/VMStartException.java --- a/jdk/src/share/classes/com/sun/jdi/connect/VMStartException.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/jdi/connect/VMStartException.java Tue Dec 20 15:27:55 2011 -0800 @@ -36,6 +36,7 @@ */ public class VMStartException extends Exception { + private static final long serialVersionUID = 6408644824640801020L; Process process; public VMStartException(Process process) { diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/jdi/connect/spi/ClosedConnectionException.java --- a/jdk/src/share/classes/com/sun/jdi/connect/spi/ClosedConnectionException.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/jdi/connect/spi/ClosedConnectionException.java Tue Dec 20 15:27:55 2011 -0800 @@ -46,7 +46,7 @@ * @since 1.5 */ public class ClosedConnectionException extends java.io.IOException { - + private static final long serialVersionUID = 3877032124297204774L; /** * Constructs a ClosedConnectionException with no detail * message. diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/jdi/request/DuplicateRequestException.java --- a/jdk/src/share/classes/com/sun/jdi/request/DuplicateRequestException.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/jdi/request/DuplicateRequestException.java Tue Dec 20 15:27:55 2011 -0800 @@ -33,6 +33,7 @@ */ public class DuplicateRequestException extends RuntimeException { + private static final long serialVersionUID = -3719784920313411060L; public DuplicateRequestException() { super(); diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/jdi/request/InvalidRequestStateException.java --- a/jdk/src/share/classes/com/sun/jdi/request/InvalidRequestStateException.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/jdi/request/InvalidRequestStateException.java Tue Dec 20 15:27:55 2011 -0800 @@ -36,6 +36,7 @@ * @since 1.3 */ public class InvalidRequestStateException extends RuntimeException { + private static final long serialVersionUID = -3774632428543322148L; public InvalidRequestStateException() { super(); diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/tools/jdi/ArrayReferenceImpl.java --- a/jdk/src/share/classes/com/sun/tools/jdi/ArrayReferenceImpl.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/tools/jdi/ArrayReferenceImpl.java Tue Dec 20 15:27:55 2011 -0800 @@ -70,8 +70,8 @@ } public Value getValue(int index) { - List list = getValues(index, 1); - return (Value)list.get(0); + List list = getValues(index, 1); + return list.get(0); } public List getValues() { diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/tools/jdi/ArrayTypeImpl.java --- a/jdk/src/share/classes/com/sun/tools/jdi/ArrayTypeImpl.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/tools/jdi/ArrayTypeImpl.java Tue Dec 20 15:27:55 2011 -0800 @@ -61,7 +61,7 @@ return findType(componentSignature()); } - void addVisibleMethods(Map map) { + void addVisibleMethods(Map map) { // arrays don't have methods } @@ -83,10 +83,10 @@ if (PacketStream.isObjectTag(tag)) { // It's a reference type JNITypeParser parser = new JNITypeParser(componentSignature()); - List list = vm.classesByName(parser.typeName()); - Iterator iter = list.iterator(); + List list = vm.classesByName(parser.typeName()); + Iterator iter = list.iterator(); while (iter.hasNext()) { - ReferenceType type = (ReferenceType)iter.next(); + ReferenceType type = iter.next(); ClassLoaderReference cl = type.classLoader(); if ((cl == null)? (classLoader() == null) : diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/tools/jdi/BooleanValueImpl.java --- a/jdk/src/share/classes/com/sun/tools/jdi/BooleanValueImpl.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/tools/jdi/BooleanValueImpl.java Tue Dec 20 15:27:55 2011 -0800 @@ -78,7 +78,7 @@ } public int intValue() { - return(int)((value)?1:0); + return (value)?1:0; } public long longValue() { @@ -90,7 +90,7 @@ } public double doubleValue() { - return(double)((value)?1.0:0.0); + return (value)?1.0:0.0; } public String toString() { diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/tools/jdi/CharValueImpl.java --- a/jdk/src/share/classes/com/sun/tools/jdi/CharValueImpl.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/tools/jdi/CharValueImpl.java Tue Dec 20 15:27:55 2011 -0800 @@ -75,7 +75,7 @@ } public char charValue() { - return(char)value; + return value; } public short shortValue() { diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/tools/jdi/ClassLoaderReferenceImpl.java --- a/jdk/src/share/classes/com/sun/tools/jdi/ClassLoaderReferenceImpl.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/tools/jdi/ClassLoaderReferenceImpl.java Tue Dec 20 15:27:55 2011 -0800 @@ -80,7 +80,7 @@ classes = Collections.unmodifiableList(classes); if (local != null) { local.visibleClasses = classes; - if ((vm.traceFlags & vm.TRACE_OBJREFS) != 0) { + if ((vm.traceFlags & VirtualMachine.TRACE_OBJREFS) != 0) { vm.printTrace(description() + " temporarily caching visible classes (count = " + classes.size() + ")"); @@ -95,9 +95,9 @@ Type findType(String signature) throws ClassNotLoadedException { List types = visibleClasses(); - Iterator iter = types.iterator(); + Iterator iter = types.iterator(); while (iter.hasNext()) { - ReferenceType type = (ReferenceType)iter.next(); + ReferenceType type = iter.next(); if (type.signature().equals(signature)) { return type; } diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/tools/jdi/ClassTypeImpl.java --- a/jdk/src/share/classes/com/sun/tools/jdi/ClassTypeImpl.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/tools/jdi/ClassTypeImpl.java Tue Dec 20 15:27:55 2011 -0800 @@ -76,7 +76,7 @@ List immediate = interfaces(); list.addAll(interfaces()); - Iterator iter = immediate.iterator(); + Iterator iter = immediate.iterator(); while (iter.hasNext()) { InterfaceTypeImpl interfaze = (InterfaceTypeImpl)iter.next(); interfaze.addSuperinterfaces(list); @@ -389,7 +389,7 @@ * overwrite them in the hash table */ - Iterator iter = interfaces().iterator(); + Iterator iter = interfaces().iterator(); while (iter.hasNext()) { InterfaceTypeImpl interfaze = (InterfaceTypeImpl)iter.next(); interfaze.addVisibleMethods(methodMap); @@ -411,7 +411,7 @@ return true; } else { List interfaces = interfaces(); - Iterator iter = interfaces.iterator(); + Iterator iter = interfaces.iterator(); while (iter.hasNext()) { InterfaceTypeImpl interfaze = (InterfaceTypeImpl)iter.next(); if (interfaze.isAssignableTo(type)) { diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/tools/jdi/ConcreteMethodImpl.java --- a/jdk/src/share/classes/com/sun/tools/jdi/ConcreteMethodImpl.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/tools/jdi/ConcreteMethodImpl.java Tue Dec 20 15:27:55 2011 -0800 @@ -192,7 +192,7 @@ return super.codeIndexToLineInfo(stratum, codeIndex); } - Iterator iter = lineLocations.iterator(); + Iterator iter = lineLocations.iterator(); /* * Treat code before the beginning of the first line table * entry as part of the first line. javac will generate @@ -221,9 +221,9 @@ List variables = getVariables(); List retList = new ArrayList(2); - Iterator iter = variables.iterator(); + Iterator iter = variables.iterator(); while(iter.hasNext()) { - LocalVariable variable = (LocalVariable)iter.next(); + LocalVariable variable = iter.next(); if (variable.name().equals(name)) { retList.add(variable); } @@ -235,9 +235,9 @@ List variables = getVariables(); List retList = new ArrayList(variables.size()); - Iterator iter = variables.iterator(); + Iterator iter = variables.iterator(); while(iter.hasNext()) { - LocalVariable variable = (LocalVariable)iter.next(); + LocalVariable variable = iter.next(); if (variable.isArgument()) { retList.add(variable); } @@ -291,7 +291,7 @@ SDE.LineStratum lastLineStratum = null; SDE.Stratum baseStratum = declaringType.stratum(SDE.BASE_STRATUM_NAME); - Iterator it = getBaseLocations().lineLocations.iterator(); + Iterator it = getBaseLocations().lineLocations.iterator(); while(it.hasNext()) { LocationImpl loc = (LocationImpl)it.next(); int baseLineNumber = loc.lineNumber(baseStratum); diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/tools/jdi/ConnectorImpl.java --- a/jdk/src/share/classes/com/sun/tools/jdi/ConnectorImpl.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/tools/jdi/ConnectorImpl.java Tue Dec 20 15:27:55 2011 -0800 @@ -47,9 +47,9 @@ public Map defaultArguments() { Map defaults = new java.util.LinkedHashMap(); - Collection values = defaultArguments.values(); + Collection values = defaultArguments.values(); - Iterator iter = values.iterator(); + Iterator iter = values.iterator(); while (iter.hasNext()) { ArgumentImpl argument = (ArgumentImpl)iter.next(); defaults.put(argument.name(), (Argument)argument.clone()); @@ -96,7 +96,7 @@ mustSpecify, list)); } - ArgumentImpl argument(String name, Map arguments) + ArgumentImpl argument(String name, Map arguments) throws IllegalConnectorArgumentsException { ArgumentImpl argument = (ArgumentImpl)arguments.get(name); @@ -130,7 +130,7 @@ public String toString() { String string = name() + " (defaults: "; - Iterator iter = defaultArguments().values().iterator(); + Iterator iter = defaultArguments().values().iterator(); boolean first = true; while (iter.hasNext()) { ArgumentImpl argument = (ArgumentImpl)iter.next(); @@ -222,7 +222,7 @@ class BooleanArgumentImpl extends ConnectorImpl.ArgumentImpl implements Connector.BooleanArgument { - + private static final long serialVersionUID = 1624542968639361316L; BooleanArgumentImpl(String name, String label, String description, boolean value, boolean mustSpecify) { @@ -277,7 +277,7 @@ class IntegerArgumentImpl extends ConnectorImpl.ArgumentImpl implements Connector.IntegerArgument { - + private static final long serialVersionUID = 763286081923797770L; private final int min; private final int max; @@ -378,7 +378,7 @@ class StringArgumentImpl extends ConnectorImpl.ArgumentImpl implements Connector.StringArgument { - + private static final long serialVersionUID = 7500484902692107464L; StringArgumentImpl(String name, String label, String description, String value, boolean mustSpecify) { @@ -396,7 +396,7 @@ class SelectedArgumentImpl extends ConnectorImpl.ArgumentImpl implements Connector.SelectedArgument { - + private static final long serialVersionUID = -5689584530908382517L; private final List choices; SelectedArgumentImpl(String name, String label, String description, diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/tools/jdi/DoubleValueImpl.java --- a/jdk/src/share/classes/com/sun/tools/jdi/DoubleValueImpl.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/tools/jdi/DoubleValueImpl.java Tue Dec 20 15:27:55 2011 -0800 @@ -101,7 +101,7 @@ } public double doubleValue() { - return(double)value; + return value; } byte checkedByteValue() throws InvalidTypeException { diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/tools/jdi/EventRequestManagerImpl.java --- a/jdk/src/share/classes/com/sun/tools/jdi/EventRequestManagerImpl.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/tools/jdi/EventRequestManagerImpl.java Tue Dec 20 15:27:55 2011 -0800 @@ -43,7 +43,7 @@ class EventRequestManagerImpl extends MirrorImpl implements EventRequestManager { - List[] requestLists; + List[] requestLists; private static int methodExitEventCmd = 0; static int JDWPtoJDISuspendPolicy(byte jdwpPolicy) { @@ -91,7 +91,7 @@ * access/modification should be protected by synchronizing on * the enclosing instance of EventRequestImpl. */ - List filters = new ArrayList(); + List filters = new ArrayList<>(); boolean isEnabled = false; boolean deleted = false; @@ -195,7 +195,6 @@ */ synchronized void set() { JDWP.EventRequest.Set.Modifier[] mods = - (JDWP.EventRequest.Set.Modifier[]) filters.toArray( new JDWP.EventRequest.Set.Modifier[filters.size()]); try { @@ -582,10 +581,10 @@ /* * Make sure this isn't a duplicate */ - List requests = stepRequests(); - Iterator iter = requests.iterator(); + List requests = stepRequests(); + Iterator iter = requests.iterator(); while (iter.hasNext()) { - StepRequest request = (StepRequest)iter.next(); + StepRequest request = iter.next(); if ((request != this) && request.isEnabled() && request.thread().equals(thread)) { @@ -735,7 +734,7 @@ } requestLists = new List[highest+1]; for (int i=0; i <= highest; i++) { - requestLists[i] = new ArrayList(); + requestLists[i] = new ArrayList<>(); } } @@ -852,7 +851,7 @@ public void deleteEventRequests(List eventRequests) { validateMirrors(eventRequests); // copy the eventRequests to avoid ConcurrentModificationException - Iterator iter = (new ArrayList(eventRequests)).iterator(); + Iterator iter = (new ArrayList<>(eventRequests)).iterator(); while (iter.hasNext()) { ((EventRequestImpl)iter.next()).delete(); } @@ -869,76 +868,76 @@ } public List stepRequests() { - return unmodifiableRequestList(JDWP.EventKind.SINGLE_STEP); + return (List)unmodifiableRequestList(JDWP.EventKind.SINGLE_STEP); } public List classPrepareRequests() { - return unmodifiableRequestList(JDWP.EventKind.CLASS_PREPARE); + return (List)unmodifiableRequestList(JDWP.EventKind.CLASS_PREPARE); } public List classUnloadRequests() { - return unmodifiableRequestList(JDWP.EventKind.CLASS_UNLOAD); + return (List)unmodifiableRequestList(JDWP.EventKind.CLASS_UNLOAD); } public List threadStartRequests() { - return unmodifiableRequestList(JDWP.EventKind.THREAD_START); + return (List)unmodifiableRequestList(JDWP.EventKind.THREAD_START); } public List threadDeathRequests() { - return unmodifiableRequestList(JDWP.EventKind.THREAD_DEATH); + return (List)unmodifiableRequestList(JDWP.EventKind.THREAD_DEATH); } public List exceptionRequests() { - return unmodifiableRequestList(JDWP.EventKind.EXCEPTION); + return (List)unmodifiableRequestList(JDWP.EventKind.EXCEPTION); } public List breakpointRequests() { - return unmodifiableRequestList(JDWP.EventKind.BREAKPOINT); + return (List)unmodifiableRequestList(JDWP.EventKind.BREAKPOINT); } public List accessWatchpointRequests() { - return unmodifiableRequestList(JDWP.EventKind.FIELD_ACCESS); + return (List)unmodifiableRequestList(JDWP.EventKind.FIELD_ACCESS); } public List modificationWatchpointRequests() { - return unmodifiableRequestList(JDWP.EventKind.FIELD_MODIFICATION); + return (List)unmodifiableRequestList(JDWP.EventKind.FIELD_MODIFICATION); } public List methodEntryRequests() { - return unmodifiableRequestList(JDWP.EventKind.METHOD_ENTRY); + return (List)unmodifiableRequestList(JDWP.EventKind.METHOD_ENTRY); } public List methodExitRequests() { - return unmodifiableRequestList( + return (List)unmodifiableRequestList( EventRequestManagerImpl.methodExitEventCmd); } public List monitorContendedEnterRequests() { - return unmodifiableRequestList(JDWP.EventKind.MONITOR_CONTENDED_ENTER); + return (List)unmodifiableRequestList(JDWP.EventKind.MONITOR_CONTENDED_ENTER); } public List monitorContendedEnteredRequests() { - return unmodifiableRequestList(JDWP.EventKind.MONITOR_CONTENDED_ENTERED); + return (List)unmodifiableRequestList(JDWP.EventKind.MONITOR_CONTENDED_ENTERED); } public List monitorWaitRequests() { - return unmodifiableRequestList(JDWP.EventKind.MONITOR_WAIT); + return (List)unmodifiableRequestList(JDWP.EventKind.MONITOR_WAIT); } public List monitorWaitedRequests() { - return unmodifiableRequestList(JDWP.EventKind.MONITOR_WAITED); + return (List)unmodifiableRequestList(JDWP.EventKind.MONITOR_WAITED); } public List vmDeathRequests() { - return unmodifiableRequestList(JDWP.EventKind.VM_DEATH); + return (List)unmodifiableRequestList(JDWP.EventKind.VM_DEATH); } - List unmodifiableRequestList(int eventCmd) { + List unmodifiableRequestList(int eventCmd) { return Collections.unmodifiableList(requestList(eventCmd)); } EventRequest request(int eventCmd, int requestId) { - List rl = requestList(eventCmd); + List rl = requestList(eventCmd); for (int i = rl.size() - 1; i >= 0; i--) { EventRequestImpl er = (EventRequestImpl)rl.get(i); if (er.id == requestId) { diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/tools/jdi/EventSetImpl.java --- a/jdk/src/share/classes/com/sun/tools/jdi/EventSetImpl.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/tools/jdi/EventSetImpl.java Tue Dec 20 15:27:55 2011 -0800 @@ -47,7 +47,7 @@ * that is on the queues are all for client requests. */ public class EventSetImpl extends ArrayList implements EventSet { - + private static final long serialVersionUID = -4857338819787924570L; private VirtualMachineImpl vm; // we implement Mirror private Packet pkt; private byte suspendPolicy; @@ -607,7 +607,7 @@ PacketStream ps = new PacketStream(vm, pkt); JDWP.Event.Composite compEvt = new JDWP.Event.Composite(vm, ps); suspendPolicy = compEvt.suspendPolicy; - if ((vm.traceFlags & vm.TRACE_EVENTS) != 0) { + if ((vm.traceFlags & VirtualMachine.TRACE_EVENTS) != 0) { switch(suspendPolicy) { case JDWP.SuspendPolicy.ALL: vm.printTrace("EventSet: SUSPEND_ALL"); @@ -626,7 +626,7 @@ ThreadReference fix6485605 = null; for (int i = 0; i < compEvt.events.length; i++) { EventImpl evt = createEvent(compEvt.events[i]); - if ((vm.traceFlags & vm.TRACE_EVENTS) != 0) { + if ((vm.traceFlags & VirtualMachine.TRACE_EVENTS) != 0) { try { vm.printTrace("Event: " + evt); } catch (VMDisconnectedException ee) { diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/tools/jdi/FloatValueImpl.java --- a/jdk/src/share/classes/com/sun/tools/jdi/FloatValueImpl.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/tools/jdi/FloatValueImpl.java Tue Dec 20 15:27:55 2011 -0800 @@ -97,7 +97,7 @@ } public float floatValue() { - return(float)value; + return value; } public double doubleValue() { diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/tools/jdi/GenericAttachingConnector.java --- a/jdk/src/share/classes/com/sun/tools/jdi/GenericAttachingConnector.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/tools/jdi/GenericAttachingConnector.java Tue Dec 20 15:27:55 2011 -0800 @@ -105,7 +105,7 @@ /** * Attach to a target VM using the specified address and Connector arguments. */ - public VirtualMachine attach(String address, Map args) + public VirtualMachine attach(String address, Map args) throws IOException, IllegalConnectorArgumentsException { String ts = argument(ARG_TIMEOUT, args).value(); diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/tools/jdi/IntegerValueImpl.java --- a/jdk/src/share/classes/com/sun/tools/jdi/IntegerValueImpl.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/tools/jdi/IntegerValueImpl.java Tue Dec 20 15:27:55 2011 -0800 @@ -83,7 +83,7 @@ } public int intValue() { - return(int)value; + return value; } public long longValue() { diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/tools/jdi/InterfaceTypeImpl.java --- a/jdk/src/share/classes/com/sun/tools/jdi/InterfaceTypeImpl.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/tools/jdi/InterfaceTypeImpl.java Tue Dec 20 15:27:55 2011 -0800 @@ -128,9 +128,9 @@ * list being built. */ List immediate = new ArrayList(superinterfaces()); - Iterator iter = immediate.iterator(); + Iterator iter = immediate.iterator(); while (iter.hasNext()) { - InterfaceType interfaze = (InterfaceType)iter.next(); + InterfaceType interfaze = iter.next(); if (list.contains(interfaze)) { iter.remove(); } diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/tools/jdi/InternalEventHandler.java --- a/jdk/src/share/classes/com/sun/tools/jdi/InternalEventHandler.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/tools/jdi/InternalEventHandler.java Tue Dec 20 15:27:55 2011 -0800 @@ -59,7 +59,7 @@ ClassUnloadEvent cuEvent = (ClassUnloadEvent)event; vm.removeReferenceType(cuEvent.classSignature()); - if ((vm.traceFlags & vm.TRACE_EVENTS) != 0) { + if ((vm.traceFlags & VirtualMachine.TRACE_EVENTS) != 0) { vm.printTrace("Handled Unload Event for " + cuEvent.classSignature()); } @@ -68,7 +68,7 @@ ((ReferenceTypeImpl)cpEvent.referenceType()) .markPrepared(); - if ((vm.traceFlags & vm.TRACE_EVENTS) != 0) { + if ((vm.traceFlags & VirtualMachine.TRACE_EVENTS) != 0) { vm.printTrace("Handled Prepare Event for " + cpEvent.referenceType().name()); } diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/tools/jdi/JDWPException.java --- a/jdk/src/share/classes/com/sun/tools/jdi/JDWPException.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/tools/jdi/JDWPException.java Tue Dec 20 15:27:55 2011 -0800 @@ -27,7 +27,7 @@ import com.sun.jdi.*; class JDWPException extends Exception { - + private static final long serialVersionUID = -6321344442751299874L; short errorCode; JDWPException(short errorCode) { diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/tools/jdi/LinkedHashMap.java --- a/jdk/src/share/classes/com/sun/tools/jdi/LinkedHashMap.java Tue Dec 20 15:26:23 2011 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,904 +0,0 @@ -/* - * Copyright (c) 1998, 2000, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ -package com.sun.tools.jdi; - -import java.io.*; -import java.util.*; - -/** - * Hash table based implementation of the Map interface. This implementation - * provides all of the optional Map operations, and permits null values and - * the null key. (HashMap is roughly equivalent to Hashtable, except that it - * is unsynchronized and permits nulls.) In addition, elements in the map are - * ordered and doubly linked together. - *

- * This implementation provides constant-time performance for the basic - * operations (get and put), assuming the the hash function disperses the - * elements properly among the buckets. Iteration over Collection views - * requires time proportional to its size (the number of key-value mappings) - * and returns elements in the order they are linked. In a HashMap the - * iteration would require time proportional to the capacity of the map - * plus the map size. - *

- * An instance of LinkedHashMap has two parameters that affect its efficiency: - * its capacity and its load factor. The load factor should be - * between 0.0 and 1.0. When the number of mappings in the LinkedHashMap exceeds - * the product of the load factor and the current capacity, the capacity is - * increased by calling the rehash method which requires time proportional - * to the number of key-value mappings in the map. Larger load factors - * use memory more efficiently, at the expense of larger expected time per - * lookup. - *

- * If many mappings are to be stored in a LinkedHashMap, creating it with a - * sufficiently large capacity will allow the mappings to be stored more - * efficiently than letting it perform automatic rehashing as needed to grow - * the table. - *

- * Note that this implementation is not synchronized. If - * multiple threads access a LinkedHashMap concurrently, and at least one of the - * threads modifies the LinkedHashMap structurally, it must be - * synchronized externally. (A structural modification is any operation that - * adds or deletes one or more mappings; merely changing the value associated - * with a key that is already contained in the Table is not a structural - * modification.) This is typically accomplished by synchronizing on some - * object that naturally encapsulates the LinkedHashMap. If no such object - * exists, the LinkedHashMap should be "wrapped" using the - * Collections.synchronizedSet method. This is best done at creation time, to - * prevent accidental unsynchronized access to the LinkedHashMap: - *

- *      Map m = Collections.synchronizedMap(new LinkedHashMap(...));
- * 
- *

- * The Iterators returned by the iterator methods of the Collections returned - * by all of LinkedHashMap's "collection view methods" are fail-fast: - * if the LinkedHashMap is structurally modified at any time after the Iterator - * is created, in any way except through the Iterator's own remove or add - * methods, the Iterator will throw a ConcurrentModificationException. Thus, - * in the face of concurrent modification, the Iterator fails quickly and - * cleanly, rather than risking arbitrary, non-deterministic behavior at an - * undetermined time in the future. - * - * @author Josh Bloch - * @author Arthur van Hoff - * @author Zhenghua Li - * @see Object#hashCode() - * @see java.util.Collection - * @see java.util.Map - * @see java.util.TreeMap - * @see java.util.Hashtable - * @see java.util.HashMap - */ - -import java.io.Serializable; - -public class LinkedHashMap extends AbstractMap implements Map, Serializable { - /** - * The hash table data. - */ - private transient Entry table[]; - - /** - * The head of the double linked list. - */ - private transient Entry header; - - /** - * The total number of mappings in the hash table. - */ - private transient int count; - - /** - * Rehashes the table when count exceeds this threshold. - */ - private int threshold; - - /** - * The load factor for the LinkedHashMap. - */ - private float loadFactor; - - /** - * The number of times this LinkedHashMap has been structurally modified - * Structural modifications are those that change the number of mappings in - * the LinkedHashMap or otherwise modify its internal structure (e.g., - * rehash). This field is used to make iterators on Collection-views of - * the LinkedHashMap fail-fast. (See ConcurrentModificationException). - */ - private transient int modCount = 0; - - /** - * Constructs a new, empty LinkedHashMap with the specified initial - * capacity and the specified load factor. - * - * @param initialCapacity the initial capacity of the LinkedHashMap. - * @param loadFactor a number between 0.0 and 1.0. - * @exception IllegalArgumentException if the initial capacity is less - * than or equal to zero, or if the load factor is less than - * or equal to zero. - */ - public LinkedHashMap(int initialCapacity, float loadFactor) { - if (initialCapacity < 0) - throw new IllegalArgumentException("Illegal Initial Capacity: "+ - initialCapacity); - if ((loadFactor > 1) || (loadFactor <= 0)) - throw new IllegalArgumentException("Illegal Load factor: "+ - loadFactor); - if (initialCapacity==0) - initialCapacity = 1; - this.loadFactor = loadFactor; - table = new Entry[initialCapacity]; - threshold = (int)(initialCapacity * loadFactor); - header = new Entry(-1, null, null, null); - header.before = header.after = header; - } - - /** - * Constructs a new, empty LinkedHashMap with the specified initial capacity - * and default load factor. - * - * @param initialCapacity the initial capacity of the LinkedHashMap. - */ - public LinkedHashMap(int initialCapacity) { - this(initialCapacity, 0.75f); - } - - /** - * Constructs a new, empty LinkedHashMap with a default capacity and load - * factor. - */ - public LinkedHashMap() { - this(101, 0.75f); - } - - /** - * Constructs a new LinkedHashMap with the same mappings as the given - * Map. The LinkedHashMap is created with a capacity of thrice the number - * of mappings in the given Map or 11 (whichever is greater), and a - * default load factor. - */ - public LinkedHashMap(Map t) { - this(Math.max(3*t.size(), 11), 0.75f); - putAll(t); - } - - /** - * Returns the number of key-value mappings in this Map. - */ - public int size() { - return count; - } - - /** - * Returns true if this Map contains no key-value mappings. - */ - public boolean isEmpty() { - return count == 0; - } - - /** - * Returns true if this LinkedHashMap maps one or more keys to the specified - * value. - * - * @param value value whose presence in this Map is to be tested. - */ - public boolean containsValue(Object value) { - if (value==null) { - for (Entry e = header.after; e != header; e = e.after) - if (e.value==null) - return true; - } else { - for (Entry e = header.after; e != header; e = e.after) - if (value.equals(e.value)) - return true; - } - return false; - } - - /** - * Returns true if this LinkedHashMap contains a mapping for the specified - * key. - * - * @param key key whose presence in this Map is to be tested. - */ - public boolean containsKey(Object key) { - Entry tab[] = table; - if (key != null) { - int hash = key.hashCode(); - int index = (hash & 0x7FFFFFFF) % tab.length; - for (Entry e = tab[index]; e != null; e = e.next) - if (e.hash==hash && e.key.equals(key)) - return true; - } else { - for (Entry e = tab[0]; e != null; e = e.next) - if (e.key==null) - return true; - } - - return false; - } - - /** - * Returns the value to which this LinkedHashMap maps the specified key. - * Returns null if the LinkedHashMap contains no mapping for this key. - * A return value of null does not necessarily indicate that the - * LinkedHashMap contains no mapping for the key; it's also possible that - * the LinkedHashMap explicitly maps the key to null. The containsKey - * operation may be used to distinguish these two cases. - * - * @param key key whose associated value is to be returned. - */ - public Object get(Object key) { - Entry e = getEntry(key); - return e==null ? null : e.value; - } - - /** - * Returns the entry associated with the specified key in the LinkedHashMap. - * Returns null if the LinkedHashMap contains no mapping for this key. - */ - private Entry getEntry(Object key) { - Entry tab[] = table; - - if (key != null) { - int hash = key.hashCode(); - int index = (hash & 0x7FFFFFFF) % tab.length; - for (Entry e = tab[index]; e != null; e = e.next) - if ((e.hash == hash) && e.key.equals(key)) - return e; - } else { - for (Entry e = tab[0]; e != null; e = e.next) - if (e.key==null) - return e; - } - - return null; - } - - /** - * Rehashes the contents of the LinkedHashMap into a LinkedHashMap with a - * larger capacity. This method is called automatically when the - * number of keys in the LinkedHashMap exceeds this LinkedHashMap's capacity - * and load factor. - */ - private void rehash() { - int oldCapacity = table.length; - Entry oldMap[] = table; - - int newCapacity = oldCapacity * 2 + 1; - Entry newMap[] = new Entry[newCapacity]; - - modCount++; - threshold = (int)(newCapacity * loadFactor); - table = newMap; - - for (Entry e = header.after; e != header; e = e.after) { - int index = (e.hash & 0x7FFFFFFF) % newCapacity; - e.next = newMap[index]; - newMap[index] = e; - } - } - - /** - * Remove an entry from the linked list. - */ - private void listRemove(Entry entry) { - if (entry == null) { - return; - } - entry.before.after = entry.after; - entry.after.before = entry.before; - } - - /** - * Add the specified entry before the specified existing entry to - * the linked list. - */ - private void listAddBefore(Entry entry, Entry existEntry) { - entry.after = existEntry; - entry.before = existEntry.before; - entry.before.after = entry; - entry.after.before = entry; - } - - /** - * Returns the position of the mapping for the specified key - * in the ordered map. - * - * @param key the specified key. - * @return index of the key mapping. - */ - public int indexOf(Object key) { - int i = 0; - if (key == null) { - for (Entry e = header.after; e != header; e = e.after, i++) - if (e.key == null) - return i; - } else { - for (Entry e = header.after; e != header; e = e.after, i++) - if(key.equals(e.key)) - return i; - } - return -1; - } - - /** - * Associates the specified value with the specified key in this - * LinkedHashMap. If the LinkedHashMap previously contained a mapping for - * this key, the old value is replaced and the position of this mapping - * entry in the double linked list remains the same. Otherwise, a new - * mapping entry is created and inserted into the list before the specified - * existing mapping entry. The method returns the previous value associated - * with the specified key, or null if there was no mapping for key. A null - * return can also indicate that the LinkedHashMap previously associated - * null with the specified key. - */ - private Object putAhead(Object key, Object value, Entry existEntry) { - // Makes sure the key is not already in the LinkedHashMap. - Entry tab[] = table; - int hash = 0; - int index = 0; - - if (key != null) { - hash = key.hashCode(); - index = (hash & 0x7FFFFFFF) % tab.length; - for (Entry e = tab[index] ; e != null ; e = e.next) { - if ((e.hash == hash) && e.key.equals(key)) { - Object old = e.value; - e.value = value; - return old; - } - } - } else { - for (Entry e = tab[0] ; e != null ; e = e.next) { - if (e.key == null) { - Object old = e.value; - e.value = value; - return old; - } - } - } - - modCount++; - if (count >= threshold) { - // Rehash the table if the threshold is exceeded - rehash(); - tab = table; - index = (hash & 0x7FFFFFFF) % tab.length; - } - - // Creates the new entry. - Entry e = new Entry(hash, key, value, tab[index]); - tab[index] = e; - listAddBefore(e, existEntry); - count++; - return null; - } - - /** - * Associates the specified value with the specified key in this - * LinkedHashMap and position the mapping at the specified index. - * If the LinkedHashMap previously contained a mapping for this key, - * the old value is replaced and the position of this mapping entry - * in the double linked list remains the same. Otherwise, a new mapping - * entry is created and inserted into the list at the specified - * position. - * - * @param index the position to put the key-value mapping. - * @param key key with which the specified value is to be associated. - * @param value value to be associated with the specified key. - * @return previous value associated with specified key, or null if there - * was no mapping for key. A null return can also indicate that - * the LinkedHashMap previously associated null with the specified - * key. - */ - public Object put(int index, Object key, Object value) { - if (index < 0 || index > count) - throw new IndexOutOfBoundsException(); - Entry e = header.after; - if (index == count) - return putAhead(key, value, header); //fast approach for append - else { - for (int i = 0; i < index; i++) - e = e.after; - return putAhead(key, value, e); - } - } - - - /** - * Associates the specified value with the specified key in this - * LinkedHashMap. If the LinkedHashMap previously contained a mapping for - * this key, the old value is replaced. The mapping entry is also appended - * to the end of the ordered linked list. - * - * @param key key with which the specified value is to be associated. - * @param value value to be associated with the specified key. - * @return previous value associated with specified key, or null if there - * was no mapping for key. A null return can also indicate that - * the LinkedHashMap previously associated null with the specified - * key. - */ - public Object put(Object key, Object value) { - return putAhead(key, value, header); - } - - /** - * Removes the mapping for this key from this LinkedHashMap if present. - * The mapping would also be removed from the double linked list. - * - * @param key key whose mapping is to be removed from the Map. - * @return previous value associated with specified key, or null if there - * was no mapping for key. A null return can also indicate that - * the LinkedHashMap previously associated null with the specified - * key. - */ - public Object remove(Object key) { - Entry tab[] = table; - - if (key != null) { - int hash = key.hashCode(); - int index = (hash & 0x7FFFFFFF) % tab.length; - - for (Entry e = tab[index], prev = null; e != null; - prev = e, e = e.next) { - if ((e.hash == hash) && e.key.equals(key)) { - modCount++; - if (prev != null) - prev.next = e.next; - else - tab[index] = e.next; - - count--; - Object oldValue = e.value; - e.value = null; - - listRemove(e); - return oldValue; - } - } - } else { - for (Entry e = tab[0], prev = null; e != null; - prev = e, e = e.next) { - if (e.key == null) { - modCount++; - if (prev != null) - prev.next = e.next; - else - tab[0] = e.next; - - count--; - Object oldValue = e.value; - e.value = null; - - listRemove(e); - return oldValue; - } - } - } - - return null; - } - - /** - * Copies all of the mappings from the specified Map to this LinkedHashMap - * These mappings will replace any mappings that this LinkedHashMap had for - * any of the keys currently in the specified Map. - * - * @param t Mappings to be stored in this Map. - */ - public void putAll(Map t) { - Iterator i = t.entrySet().iterator(); - while (i.hasNext()) { - Map.Entry e = (Map.Entry) i.next(); - put(e.getKey(), e.getValue()); - } - } - - /** - * Removes all mappings from this LinkedHashMap. - */ - public void clear() { - Entry tab[] = table; - modCount++; - for (int index = tab.length; --index >= 0; ) - tab[index] = null; - count = 0; - header.before = header.after = header; - } - - /** - * Returns a shallow copy of this LinkedHashMap. The keys and values - * themselves are not cloned. - */ - public Object clone() { - return new LinkedHashMap(this); - } - - // Views - - private transient Set keySet = null; - private transient Set entries = null; - private transient Collection values = null; - - /** - * Returns a Set view of the keys contained in this LinkedHashMap. The Set - * is backed by the LinkedHashMap, so changes to the LinkedHashMap are - * reflected in the Set, and vice-versa. The Set supports element removal, - * which removes the corresponding mapping from the LinkedHashMap, via the - * Iterator.remove, Set.remove, removeAll retainAll, and clear operations. - * It does not support the add or addAll operations. - */ - public Set keySet() { - if (keySet == null) { - keySet = new AbstractSet() { - public Iterator iterator() { - return new HashIterator(KEYS); - } - public int size() { - return count; - } - public boolean contains(Object o) { - return containsKey(o); - } - public boolean remove(Object o) { - return LinkedHashMap.this.remove(o) != null; - } - public void clear() { - LinkedHashMap.this.clear(); - } - }; - } - return keySet; - } - - /** - * Returns a Collection view of the values contained in this LinkedHashMap. - * The Collection is backed by the LinkedHashMap, so changes to the - * LinkedHashMap are reflected in the Collection, and vice-versa. The - * Collection supports element removal, which removes the corresponding - * mapping from the LinkedHashMap, via the Iterator.remove, - * Collection.remove, removeAll, retainAll and clear operations. It does - * not support the add or addAll operations. - */ - public Collection values() { - if (values==null) { - values = new AbstractCollection() { - public Iterator iterator() { - return new HashIterator(VALUES); - } - public int size() { - return count; - } - public boolean contains(Object o) { - return containsValue(o); - } - public void clear() { - LinkedHashMap.this.clear(); - } - }; - } - return values; - } - - /** - * Returns a Collection view of the mappings contained in this - * LinkedHashMap. Each element in the returned collection is a Map.Entry. - * The Collection is backed by the LinkedHashMap, so changes to the - * LinkedHashMap are reflected in the Collection, and vice-versa. The - * Collection supports element removal, which removes the corresponding - * mapping from the LinkedHashMap, via the Iterator.remove, - * Collection.remove, removeAll, retainAll and clear operations. It does - * not support the add or addAll operations. - * - * @see java.util.Map.Entry - */ - public Set entrySet() { - if (entries==null) { - entries = new AbstractSet() { - public Iterator iterator() { - return new HashIterator(ENTRIES); - } - - public boolean contains(Object o) { - if (!(o instanceof Map.Entry)) - return false; - Map.Entry entry = (Map.Entry)o; - Object key = entry.getKey(); - Entry tab[] = table; - int hash = (key==null ? 0 : key.hashCode()); - int index = (hash & 0x7FFFFFFF) % tab.length; - - for (Entry e = tab[index]; e != null; e = e.next) - if (e.hash==hash && e.equals(entry)) - return true; - return false; - } - - public boolean remove(Object o) { - if (!(o instanceof Map.Entry)) - return false; - Map.Entry entry = (Map.Entry)o; - Object key = entry.getKey(); - Entry tab[] = table; - int hash = (key==null ? 0 : key.hashCode()); - int index = (hash & 0x7FFFFFFF) % tab.length; - - for (Entry e = tab[index], prev = null; e != null; - prev = e, e = e.next) { - if (e.hash==hash && e.equals(entry)) { - modCount++; - if (prev != null) - prev.next = e.next; - else - tab[index] = e.next; - - count--; - e.value = null; - listRemove(e); - return true; - } - } - return false; - } - - public int size() { - return count; - } - - public void clear() { - LinkedHashMap.this.clear(); - } - }; - } - - return entries; - } - - /** - * Compares the specified Object with this Map for equality. - * Returns true if the given object is also a LinkedHashMap and the two - * Maps represent the same mappings in the same order. More formally, - * two Maps t1 and t2 represent the same mappings - * if t1.keySet().equals(t2.keySet()) and for every - * key k in t1.keySet(), - * (t1.get(k)==null ? t2.get(k)==null : t1.get(k).equals(t2.get(k))) - * . - *

- * This implementation first checks if the specified Object is this Map; - * if so it returns true. Then, it checks if the specified Object is - * a Map whose size is identical to the size of this Set; if not, it - * it returns false. If so, it iterates over this Map and the specified - * Map's entrySet() Collection, and checks that the specified Map contains - * each mapping that this Map contains at the same position. If the - * specified Map fails to contain such a mapping in the right order, false - * is returned. If the iteration completes, true is returned. - * - * @param o Object to be compared for equality with this Map. - * @return true if the specified Object is equal to this Map. - * - */ - public boolean equals(Object o) { - if (o == this) - return true; - - if (!(o instanceof LinkedHashMap)) - return false; - LinkedHashMap t = (LinkedHashMap) o; - if (t.size() != size()) - return false; - - Iterator i1 = entrySet().iterator(); - Iterator i2 = t.entrySet().iterator(); - - while (i1.hasNext()) { - Entry e1 = (Entry) i1.next(); - Entry e2 = (Entry) i2.next(); - - Object key1 = e1.getKey(); - Object value1 = e1.getValue(); - Object key2 = e2.getKey(); - Object value2 = e2.getValue(); - - if ((key1 == null ? key2 == null : key1.equals(key2)) && - (value1 == null ? value2 == null : value1.equals(value2))) { - continue; - } else { - return false; - } - } - return true; - } - - /** - * LinkedHashMap collision list entry. - */ - private static class Entry implements Map.Entry { - int hash; - Object key; - Object value; - Entry next; - - // These fields comprise the doubly linked list that is used for - // iteration. - Entry before, after; - - Entry(int hash, Object key, Object value, Entry next) { - this.hash = hash; - this.key = key; - this.value = value; - this.next = next; - } - - // Map.Entry Ops - - public Object getKey() { - return key; - } - - public Object getValue() { - return value; - } - - public Object setValue(Object value) { - Object oldValue = this.value; - this.value = value; - return oldValue; - } - - public boolean equals(Object o) { - if (!(o instanceof Map.Entry)) - return false; - Map.Entry e = (Map.Entry)o; - - return (key==null ? e.getKey()==null : key.equals(e.getKey())) && - (value==null ? e.getValue()==null : value.equals(e.getValue())); - } - - public int hashCode() { - return hash ^ (value==null ? 0 : value.hashCode()); - } - - public String toString() { - return key+"="+value; - } - } - - // Types of Iterators - private static final int KEYS = 0; - private static final int VALUES = 1; - private static final int ENTRIES = 2; - - private class HashIterator implements Iterator { - private Entry[] table = LinkedHashMap.this.table; - private Entry entry = null; - private Entry lastReturned = null; - private int type; - - /** - * The modCount value that the iterator believes that the backing - * List should have. If this expectation is violated, the iterator - * has detected concurrent modification. - */ - private int expectedModCount = modCount; - - HashIterator(int type) { - this.type = type; - this.entry = LinkedHashMap.this.header.after; - } - - public boolean hasNext() { - return entry != header; - } - - public Object next() { - if (modCount != expectedModCount) - throw new ConcurrentModificationException(); - if (entry == LinkedHashMap.this.header) - throw new NoSuchElementException(); - - Entry e = lastReturned = entry; - entry = e.after; - return type == KEYS ? e.key : (type == VALUES ? e.value : e); - } - - public void remove() { - if (lastReturned == null) - throw new IllegalStateException(); - if (modCount != expectedModCount) - throw new ConcurrentModificationException(); - - Entry[] tab = LinkedHashMap.this.table; - int index = (lastReturned.hash & 0x7FFFFFFF) % tab.length; - - for (Entry e = tab[index], prev = null; e != null; - prev = e, e = e.next) { - if (e == lastReturned) { - modCount++; - expectedModCount++; - if (prev == null) - tab[index] = e.next; - else - prev.next = e.next; - count--; - listRemove(e); - lastReturned = null; - return; - } - } - throw new ConcurrentModificationException(); - } - } - - /** - * Save the state of the LinkedHashMap to a stream (i.e., serialize it). - * The objects will be written out in the order they are linked - * in the list. - */ - private void writeObject(java.io.ObjectOutputStream s) - throws IOException - { - // Write out the threshold, loadfactor, and any hidden stuff - s.defaultWriteObject(); - - // Write out number of buckets - s.writeInt(table.length); - - // Write out size (number of Mappings) - s.writeInt(count); - - // Write out keys and values (alternating) - for (Entry e = header.after; e != header; e = e.after) { - s.writeObject(e.key); - s.writeObject(e.value); - } - } - - /** - * Reconstitute the LinkedHashMap from a stream (i.e., deserialize it). - */ - private void readObject(java.io.ObjectInputStream s) - throws IOException, ClassNotFoundException - { - // Read in the threshold, loadfactor, and any hidden stuff - s.defaultReadObject(); - - // Read in number of buckets and allocate the bucket array; - int numBuckets = s.readInt(); - table = new Entry[numBuckets]; - header = new Entry(-1, null, null, null); - header.before = header; - header.after = header; - - // Read in size (number of Mappings) - int size = s.readInt(); - - // Read the keys and values, and put the mappings in the LinkedHashMap - for (int i=0; i signatures = parser.argumentSignatures(); if (signatures.size() != argSize) { throw new IllegalArgumentException("Invalid argument count: expected " + diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/tools/jdi/MirrorImpl.java --- a/jdk/src/share/classes/com/sun/tools/jdi/MirrorImpl.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/tools/jdi/MirrorImpl.java Tue Dec 20 15:27:55 2011 -0800 @@ -83,8 +83,8 @@ * Throw NullPointerException on null mirrors. * Throw VMMismatchException on wrong VM. */ - void validateMirrors(Collection mirrors) { - Iterator iter = mirrors.iterator(); + void validateMirrors(Collection mirrors) { + Iterator iter = mirrors.iterator(); while (iter.hasNext()) { MirrorImpl mirror = (MirrorImpl)iter.next(); if (!vm.equals(mirror.vm)) { @@ -96,8 +96,8 @@ * Allow null mirrors. * Throw VMMismatchException on wrong VM. */ - void validateMirrorsOrNulls(Collection mirrors) { - Iterator iter = mirrors.iterator(); + void validateMirrorsOrNulls(Collection mirrors) { + Iterator iter = mirrors.iterator(); while (iter.hasNext()) { MirrorImpl mirror = (MirrorImpl)iter.next(); if ((mirror != null) && !vm.equals(mirror.vm)) { diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/tools/jdi/ObjectReferenceImpl.java --- a/jdk/src/share/classes/com/sun/tools/jdi/ObjectReferenceImpl.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/tools/jdi/ObjectReferenceImpl.java Tue Dec 20 15:27:55 2011 -0800 @@ -110,7 +110,7 @@ public boolean vmNotSuspended(VMAction action) { // make sure that cache and listener management are synchronized synchronized (vm.state()) { - if (cache != null && (vm.traceFlags & vm.TRACE_OBJREFS) != 0) { + if (cache != null && (vm.traceFlags & VirtualMachine.TRACE_OBJREFS) != 0) { vm.printTrace("Clearing temporary cache for " + description()); } disableCache(); @@ -163,8 +163,8 @@ public Value getValue(Field sig) { List list = new ArrayList(1); list.add(sig); - Map map = getValues(list); - return(Value)map.get(sig); + Map map = getValues(list); + return map.get(sig); } public Map getValues(List theFields) { @@ -487,7 +487,7 @@ info = JDWP.ObjectReference.MonitorInfo.process(vm, this); if (local != null) { local.monitorInfo = info; - if ((vm.traceFlags & vm.TRACE_OBJREFS) != 0) { + if ((vm.traceFlags & VirtualMachine.TRACE_OBJREFS) != 0) { vm.printTrace("ObjectReference " + uniqueID() + " temporarily caching monitor info"); } diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/tools/jdi/ProcessAttachingConnector.java --- a/jdk/src/share/classes/com/sun/tools/jdi/ProcessAttachingConnector.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/tools/jdi/ProcessAttachingConnector.java Tue Dec 20 15:27:55 2011 -0800 @@ -127,7 +127,7 @@ } else { if (lib.equals("dt_shmem")) { try { - Class c = Class.forName("com.sun.tools.jdi.SharedMemoryTransportService"); + Class c = Class.forName("com.sun.tools.jdi.SharedMemoryTransportService"); ts = (TransportService)c.newInstance(); } catch (Exception x) { } } diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/tools/jdi/RawCommandLineLauncher.java --- a/jdk/src/share/classes/com/sun/tools/jdi/RawCommandLineLauncher.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/tools/jdi/RawCommandLineLauncher.java Tue Dec 20 15:27:55 2011 -0800 @@ -53,7 +53,7 @@ super(); try { - Class c = Class.forName("com.sun.tools.jdi.SharedMemoryTransportService"); + Class c = Class.forName("com.sun.tools.jdi.SharedMemoryTransportService"); transportService = (TransportService)c.newInstance(); transport = new Transport() { public String name() { diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/tools/jdi/ReferenceTypeImpl.java --- a/jdk/src/share/classes/com/sun/tools/jdi/ReferenceTypeImpl.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/tools/jdi/ReferenceTypeImpl.java Tue Dec 20 15:27:55 2011 -0800 @@ -99,7 +99,7 @@ // Fetch all methods for the class, check performance impact // Needs no synchronization now, since methods() returns // unmodifiable local data - Iterator it = methods().iterator(); + Iterator it = methods().iterator(); while (it.hasNext()) { MethodImpl method = (MethodImpl)it.next(); if (method.ref() == ref) { @@ -113,7 +113,7 @@ // Fetch all fields for the class, check performance impact // Needs no synchronization now, since fields() returns // unmodifiable local data - Iterator it = fields().iterator(); + Iteratorit = fields().iterator(); while (it.hasNext()) { FieldImpl field = (FieldImpl)it.next(); if (field.ref() == ref) { @@ -385,7 +385,7 @@ /* Add inherited, visible fields */ List types = inheritedTypes(); - Iterator iter = types.iterator(); + Iterator iter = types.iterator(); while (iter.hasNext()) { /* * TO DO: Be defensive and check for cyclic interface inheritance @@ -419,7 +419,7 @@ /* Add inherited fields */ List types = inheritedTypes(); - Iterator iter = types.iterator(); + Iterator iter = types.iterator(); while (iter.hasNext()) { ReferenceTypeImpl type = (ReferenceTypeImpl)iter.next(); type.addAllFields(fieldList, typeSet); @@ -434,13 +434,10 @@ } public Field fieldByName(String fieldName) { - java.util.List searchList; - Field f; - - searchList = visibleFields(); + List searchList = visibleFields(); for (int i=0; i nestedTypes() { - List all = vm.allClasses(); + List all = vm.allClasses(); List nested = new ArrayList(); String outername = name(); int outerlen = outername.length(); - Iterator iter = all.iterator(); + Iterator iter = all.iterator(); while (iter.hasNext()) { - ReferenceType refType = (ReferenceType)iter.next(); + ReferenceType refType = iter.next(); String name = refType.name(); int len = name.length(); /* The separator is historically '$' but could also be '#' */ @@ -598,8 +595,8 @@ public Value getValue(Field sig) { List list = new ArrayList(1); list.add(sig); - Map map = getValues(list); - return(Value)map.get(sig); + Map map = getValues(list); + return map.get(sig); } @@ -847,7 +844,7 @@ SDE.Stratum stratum = stratum(stratumID); List list = new ArrayList(); // location list - for (Iterator iter = methods().iterator(); iter.hasNext(); ) { + for (Iterator iter = methods().iterator(); iter.hasNext(); ) { MethodImpl method = (MethodImpl)iter.next(); try { list.addAll( @@ -887,7 +884,7 @@ List list = new ArrayList(); - Iterator iter = methods.iterator(); + Iterator iter = methods.iterator(); while(iter.hasNext()) { MethodImpl method = (MethodImpl)iter.next(); // eliminate native and abstract to eliminate diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/tools/jdi/ShortValueImpl.java --- a/jdk/src/share/classes/com/sun/tools/jdi/ShortValueImpl.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/tools/jdi/ShortValueImpl.java Tue Dec 20 15:27:55 2011 -0800 @@ -79,7 +79,7 @@ } public short shortValue() { - return(short)value; + return value; } public int intValue() { diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/tools/jdi/SunCommandLineLauncher.java --- a/jdk/src/share/classes/com/sun/tools/jdi/SunCommandLineLauncher.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/tools/jdi/SunCommandLineLauncher.java Tue Dec 20 15:27:55 2011 -0800 @@ -64,7 +64,7 @@ * transport or the socket transport */ try { - Class c = Class.forName("com.sun.tools.jdi.SharedMemoryTransportService"); + Class c = Class.forName("com.sun.tools.jdi.SharedMemoryTransportService"); transportService = (TransportService)c.newInstance(); transport = new Transport() { public String name() { diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/tools/jdi/TargetVM.java --- a/jdk/src/share/classes/com/sun/tools/jdi/TargetVM.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/tools/jdi/TargetVM.java Tue Dec 20 15:27:55 2011 -0800 @@ -178,7 +178,7 @@ // Closing a queue causes a VMDisconnectEvent to // be put onto the queue. synchronized(eventQueues) { - Iterator iter = eventQueues.iterator(); + Iterator iter = eventQueues.iterator(); while (iter.hasNext()) { ((EventQueueImpl)iter.next()).close(); } @@ -187,9 +187,9 @@ // indirectly throw VMDisconnectedException to // command requesters. synchronized(waitingQueue) { - Iterator iter = waitingQueue.values().iterator(); + Iterator iter = waitingQueue.values().iterator(); while (iter.hasNext()) { - Packet packet = (Packet)iter.next(); + Packet packet = iter.next(); synchronized(packet) { packet.notify(); } @@ -252,7 +252,7 @@ void notifyDequeueEventSet() { int maxQueueSize = 0; synchronized(eventQueues) { - Iterator iter = eventQueues.iterator(); + Iterator iter = eventQueues.iterator(); while (iter.hasNext()) { EventQueueImpl queue = (EventQueueImpl)iter.next(); maxQueueSize = Math.max(maxQueueSize, queue.size()); @@ -265,7 +265,7 @@ int maxQueueSize = 0; synchronized(eventQueues) { - Iterator iter = eventQueues.iterator(); + Iterator iter = eventQueues.iterator(); while (iter.hasNext()) { EventQueueImpl queue = (EventQueueImpl)iter.next(); queue.enqueue(eventSet); diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/tools/jdi/ThreadAction.java --- a/jdk/src/share/classes/com/sun/tools/jdi/ThreadAction.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/tools/jdi/ThreadAction.java Tue Dec 20 15:27:55 2011 -0800 @@ -33,6 +33,7 @@ * with JDI events. */ class ThreadAction extends EventObject { + private static final long serialVersionUID = 5690763191100515283L; // Event ids /*static final int THREAD_SUSPENDED = 1;*/ static final int THREAD_RESUMABLE = 2; diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/tools/jdi/ThreadGroupReferenceImpl.java --- a/jdk/src/share/classes/com/sun/tools/jdi/ThreadGroupReferenceImpl.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/tools/jdi/ThreadGroupReferenceImpl.java Tue Dec 20 15:27:55 2011 -0800 @@ -118,7 +118,7 @@ .process(vm, this); if (local != null) { local.kids = kids; - if ((vm.traceFlags & vm.TRACE_OBJREFS) != 0) { + if ((vm.traceFlags & VirtualMachine.TRACE_OBJREFS) != 0) { vm.printTrace(description() + " temporarily caching children "); } diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/tools/jdi/ThreadReferenceImpl.java --- a/jdk/src/share/classes/com/sun/tools/jdi/ThreadReferenceImpl.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/tools/jdi/ThreadReferenceImpl.java Tue Dec 20 15:27:55 2011 -0800 @@ -240,7 +240,7 @@ public void stop(ObjectReference throwable) throws InvalidTypeException { validateMirror(throwable); // Verify that the given object is a Throwable instance - List list = vm.classesByName("java.lang.Throwable"); + List list = vm.classesByName("java.lang.Throwable"); ClassTypeImpl throwableClass = (ClassTypeImpl)list.get(0); if ((throwable == null) || !throwableClass.isAssignableFrom(throwable)) { @@ -296,10 +296,10 @@ try { StackFrame frame = frame(0); Location location = frame.location(); - List requests = vm.eventRequestManager().breakpointRequests(); - Iterator iter = requests.iterator(); + List requests = vm.eventRequestManager().breakpointRequests(); + Iterator iter = requests.iterator(); while (iter.hasNext()) { - BreakpointRequest request = (BreakpointRequest)iter.next(); + BreakpointRequest request = iter.next(); if (location.equals(request.location())) { return true; } @@ -352,8 +352,8 @@ } public StackFrame frame(int index) throws IncompatibleThreadStateException { - List list = privateFrames(index, 1); - return (StackFrame)list.get(0); + List list = privateFrames(index, 1); + return list.get(0); } /** @@ -447,7 +447,7 @@ snapshot.ownedMonitors = Arrays.asList( (ObjectReference[])JDWP.ThreadReference.OwnedMonitors. process(vm, this).owned); - if ((vm.traceFlags & vm.TRACE_OBJREFS) != 0) { + if ((vm.traceFlags & VirtualMachine.TRACE_OBJREFS) != 0) { vm.printTrace(description() + " temporarily caching owned monitors"+ " (count = " + snapshot.ownedMonitors.size() + ")"); @@ -475,7 +475,7 @@ process(vm, this).monitor; snapshot.triedCurrentContended = true; if ((snapshot.contendedMonitor != null) && - ((vm.traceFlags & vm.TRACE_OBJREFS) != 0)) { + ((vm.traceFlags & VirtualMachine.TRACE_OBJREFS) != 0)) { vm.printTrace(description() + " temporarily caching contended monitor"+ " (id = " + snapshot.contendedMonitor.uniqueID() + ")"); @@ -509,7 +509,7 @@ snapshot.ownedMonitorsInfo.add(mon); } - if ((vm.traceFlags & vm.TRACE_OBJREFS) != 0) { + if ((vm.traceFlags & VirtualMachine.TRACE_OBJREFS) != 0) { vm.printTrace(description() + " temporarily caching owned monitors"+ " (count = " + snapshot.ownedMonitorsInfo.size() + ")"); @@ -601,9 +601,9 @@ void removeListener(ThreadListener listener) { synchronized (vm.state()) { - Iterator iter = listeners.iterator(); + Iterator> iter = listeners.iterator(); while (iter.hasNext()) { - WeakReference ref = (WeakReference)iter.next(); + WeakReference ref = iter.next(); if (listener.equals(ref.get())) { iter.remove(); break; @@ -619,10 +619,10 @@ */ private void processThreadAction(ThreadAction action) { synchronized (vm.state()) { - Iterator iter = listeners.iterator(); + Iterator> iter = listeners.iterator(); while (iter.hasNext()) { - WeakReference ref = (WeakReference)iter.next(); - ThreadListener listener = (ThreadListener)ref.get(); + WeakReference ref = iter.next(); + ThreadListener listener = ref.get(); if (listener != null) { switch (action.id()) { case ThreadAction.THREAD_RESUMABLE: diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/tools/jdi/VMAction.java --- a/jdk/src/share/classes/com/sun/tools/jdi/VMAction.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/tools/jdi/VMAction.java Tue Dec 20 15:27:55 2011 -0800 @@ -33,6 +33,8 @@ * with JDI events. */ class VMAction extends EventObject { + private static final long serialVersionUID = -1701944679310296090L; + // Event ids static final int VM_SUSPENDED = 1; static final int VM_NOT_SUSPENDED = 2; diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/tools/jdi/VMState.java --- a/jdk/src/share/classes/com/sun/tools/jdi/VMState.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/tools/jdi/VMState.java Tue Dec 20 15:27:55 2011 -0800 @@ -34,7 +34,7 @@ private final VirtualMachineImpl vm; // Listeners - private final List listeners = new ArrayList(); // synchronized (this) + private final List> listeners = new ArrayList>(); // synchronized (this) private boolean notifyingListeners = false; // synchronized (this) /* @@ -129,7 +129,7 @@ */ synchronized void thaw(ThreadReference resumingThread) { if (cache != null) { - if ((vm.traceFlags & vm.TRACE_OBJREFS) != 0) { + if ((vm.traceFlags & VirtualMachine.TRACE_OBJREFS) != 0) { vm.printTrace("Clearing VM suspended cache"); } disableCache(); @@ -142,10 +142,10 @@ // Prevent recursion notifyingListeners = true; - Iterator iter = listeners.iterator(); + Iterator> iter = listeners.iterator(); while (iter.hasNext()) { - WeakReference ref = (WeakReference)iter.next(); - VMListener listener = (VMListener)ref.get(); + WeakReference ref = iter.next(); + VMListener listener = ref.get(); if (listener != null) { boolean keep = true; switch (action.id()) { @@ -178,9 +178,9 @@ } synchronized void removeListener(VMListener listener) { - Iterator iter = listeners.iterator(); + Iterator> iter = listeners.iterator(); while (iter.hasNext()) { - WeakReference ref = (WeakReference)iter.next(); + WeakReference ref = iter.next(); if (listener.equals(ref.get())) { iter.remove(); break; @@ -202,7 +202,7 @@ process(vm).threads); if (local != null) { local.threads = threads; - if ((vm.traceFlags & vm.TRACE_OBJREFS) != 0) { + if ((vm.traceFlags & VirtualMachine.TRACE_OBJREFS) != 0) { vm.printTrace("Caching all threads (count = " + threads.size() + ") while VM suspended"); } @@ -229,7 +229,7 @@ process(vm).groups); if (local != null) { local.groups = groups; - if ((vm.traceFlags & vm.TRACE_OBJREFS) != 0) { + if ((vm.traceFlags & VirtualMachine.TRACE_OBJREFS) != 0) { vm.printTrace( "Caching top level thread groups (count = " + groups.size() + ") while VM suspended"); diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/com/sun/tools/jdi/VirtualMachineImpl.java --- a/jdk/src/share/classes/com/sun/tools/jdi/VirtualMachineImpl.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/com/sun/tools/jdi/VirtualMachineImpl.java Tue Dec 20 15:27:55 2011 -0800 @@ -300,9 +300,9 @@ if (!canRedefineClasses()) { throw new UnsupportedOperationException(); } - Iterator it = classToBytes.entrySet().iterator(); + Iterator it = classToBytes.entrySet().iterator(); for (int i = 0; it.hasNext(); i++) { - Map.Entry entry = (Map.Entry)it.next(); + Map.Entry entry = (Map.Entry)it.next(); ReferenceTypeImpl refType = (ReferenceTypeImpl)entry.getKey(); validateMirror(refType); defs[i] = new JDWP.VirtualMachine.RedefineClasses @@ -801,7 +801,7 @@ * we can't differentiate here, we first remove all * matching classes from our cache... */ - Iterator iter = typesBySignature.iterator(); + Iterator iter = typesBySignature.iterator(); int matches = 0; while (iter.hasNext()) { ReferenceTypeImpl type = (ReferenceTypeImpl)iter.next(); @@ -833,7 +833,7 @@ if (typesByID == null) { return new ArrayList(0); } - Iterator iter = typesBySignature.iterator(); + Iterator iter = typesBySignature.iterator(); List list = new ArrayList(); while (iter.hasNext()) { ReferenceTypeImpl type = (ReferenceTypeImpl)iter.next(); @@ -1041,10 +1041,10 @@ } Type findBootType(String signature) throws ClassNotLoadedException { - List types = allClasses(); - Iterator iter = types.iterator(); + List types = allClasses(); + Iterator iter = types.iterator(); while (iter.hasNext()) { - ReferenceType type = (ReferenceType)iter.next(); + ReferenceType type = iter.next(); if ((type.classLoader() == null) && (type.signature().equals(signature))) { return type; @@ -1227,7 +1227,7 @@ } private void processQueue() { - Reference ref; + Reference ref; //if ((traceFlags & TRACE_OBJREFS) != 0) { // printTrace("Checking for softly reachable objects"); //} diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/lang/Boolean.java --- a/jdk/src/share/classes/java/lang/Boolean.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/lang/Boolean.java Tue Dec 20 15:27:55 2011 -0800 @@ -60,7 +60,8 @@ * * @since JDK1.1 */ - public static final Class TYPE = Class.getPrimitiveClass("boolean"); + @SuppressWarnings("unchecked") + public static final Class TYPE = (Class) Class.getPrimitiveClass("boolean"); /** * The value of the Boolean. diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/lang/Byte.java --- a/jdk/src/share/classes/java/lang/Byte.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/lang/Byte.java Tue Dec 20 15:27:55 2011 -0800 @@ -59,6 +59,7 @@ * The {@code Class} instance representing the primitive type * {@code byte}. */ + @SuppressWarnings("unchecked") public static final Class TYPE = (Class) Class.getPrimitiveClass("byte"); /** diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/lang/Character.java --- a/jdk/src/share/classes/java/lang/Character.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/lang/Character.java Tue Dec 20 15:27:55 2011 -0800 @@ -172,7 +172,7 @@ * @since 1.1 */ @SuppressWarnings("unchecked") - public static final Class TYPE = Class.getPrimitiveClass("char"); + public static final Class TYPE = (Class) Class.getPrimitiveClass("char"); /* * Normative general types diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/lang/CharacterName.java --- a/jdk/src/share/classes/java/lang/CharacterName.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/lang/CharacterName.java Tue Dec 20 15:27:55 2011 -0800 @@ -101,6 +101,8 @@ if (lookup[cp>>8] == null || (off = lookup[cp>>8][cp&0xff]) == 0) return null; - return new String(strPool, 0, off >>> 8, off & 0xff); // ASCII + @SuppressWarnings("deprecation") + String result = new String(strPool, 0, off >>> 8, off & 0xff); // ASCII + return result; } } diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/lang/Class.java --- a/jdk/src/share/classes/java/lang/Class.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/lang/Class.java Tue Dec 20 15:27:55 2011 -0800 @@ -631,6 +631,7 @@ * The Java™ Virtual Machine Specification * @since 1.5 */ + @SuppressWarnings("unchecked") public TypeVariable>[] getTypeParameters() { if (getGenericSignature() != null) return (TypeVariable>[])getGenericInfo().getTypeParameters(); @@ -1303,7 +1304,7 @@ return java.security.AccessController.doPrivileged( new java.security.PrivilegedAction[]>() { - public Class[] run() { + public Class[] run() { List> list = new ArrayList<>(); Class currentClass = Class.this; while (currentClass != null) { @@ -1315,7 +1316,7 @@ } currentClass = currentClass.getSuperclass(); } - return list.toArray(new Class[0]); + return list.toArray(new Class[0]); } }); } @@ -2150,7 +2151,7 @@ * Return the Virtual Machine's Class object for the named * primitive type. */ - static native Class getPrimitiveClass(String name); + static native Class getPrimitiveClass(String name); /* @@ -2395,7 +2396,9 @@ } // No cached value available; request value from VM if (isInterface()) { - res = new Constructor[0]; + @SuppressWarnings("unchecked") + Constructor[] temporaryRes = (Constructor[]) new Constructor[0]; + res = temporaryRes; } else { res = getDeclaredConstructors0(publicOnly); } @@ -2951,7 +2954,9 @@ return null; } }); - enumConstants = (T[])values.invoke(null); + @SuppressWarnings("unchecked") + T[] temporaryConstants = (T[])values.invoke(null); + enumConstants = temporaryConstants; } // These can happen when users concoct enum-like classes // that don't comply with the enum spec. @@ -2996,6 +3001,7 @@ * * @since 1.5 */ + @SuppressWarnings("unchecked") public T cast(Object obj) { if (obj != null && !isInstance(obj)) throw new ClassCastException(cannotCastMsg(obj)); @@ -3026,6 +3032,7 @@ * the class itself). * @since 1.5 */ + @SuppressWarnings("unchecked") public Class asSubclass(Class clazz) { if (clazz.isAssignableFrom(this)) return (Class) this; @@ -3037,6 +3044,7 @@ * @throws NullPointerException {@inheritDoc} * @since 1.5 */ + @SuppressWarnings("unchecked") public A getAnnotation(Class annotationClass) { if (annotationClass == null) throw new NullPointerException(); diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/lang/ClassLoader.java --- a/jdk/src/share/classes/java/lang/ClassLoader.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/lang/ClassLoader.java Tue Dec 20 15:27:55 2011 -0800 @@ -1167,7 +1167,8 @@ * @since 1.2 */ public Enumeration getResources(String name) throws IOException { - Enumeration[] tmp = new Enumeration[2]; + @SuppressWarnings("unchecked") + Enumeration[] tmp = (Enumeration[]) new Enumeration[2]; if (parent != null) { tmp[0] = parent.getResources(name); } else { diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/lang/ConditionalSpecialCasing.java --- a/jdk/src/share/classes/java/lang/ConditionalSpecialCasing.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/lang/ConditionalSpecialCasing.java Tue Dec 20 15:27:55 2011 -0800 @@ -92,15 +92,15 @@ }; // A hash table that contains the above entries - static Hashtable entryTable = new Hashtable(); + static Hashtable> entryTable = new Hashtable<>(); static { // create hashtable from the entry for (int i = 0; i < entry.length; i ++) { Entry cur = entry[i]; Integer cp = new Integer(cur.getCodePoint()); - HashSet set = (HashSet)entryTable.get(cp); + HashSet set = entryTable.get(cp); if (set == null) { - set = new HashSet(); + set = new HashSet(); } set.add(cur); entryTable.put(cp, set); @@ -151,13 +151,13 @@ } private static char[] lookUpTable(String src, int index, Locale locale, boolean bLowerCasing) { - HashSet set = (HashSet)entryTable.get(new Integer(src.codePointAt(index))); + HashSet set = entryTable.get(new Integer(src.codePointAt(index))); if (set != null) { - Iterator iter = set.iterator(); + Iterator iter = set.iterator(); String currentLang = locale.getLanguage(); while (iter.hasNext()) { - Entry entry = (Entry)iter.next(); + Entry entry = iter.next(); String conditionLang= entry.getLanguage(); if (((conditionLang == null) || (conditionLang.equals(currentLang))) && isConditionMet(src, index, locale, entry.getCondition())) { diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/lang/Double.java --- a/jdk/src/share/classes/java/lang/Double.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/lang/Double.java Tue Dec 20 15:27:55 2011 -0800 @@ -128,6 +128,7 @@ * * @since JDK1.1 */ + @SuppressWarnings("unchecked") public static final Class TYPE = (Class) Class.getPrimitiveClass("double"); /** @@ -715,7 +716,7 @@ * @return the {@code double} value represented by this object */ public double doubleValue() { - return (double)value; + return value; } /** diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/lang/EnumConstantNotPresentException.java --- a/jdk/src/share/classes/java/lang/EnumConstantNotPresentException.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/lang/EnumConstantNotPresentException.java Tue Dec 20 15:27:55 2011 -0800 @@ -36,6 +36,7 @@ * @see java.lang.reflect.AnnotatedElement * @since 1.5 */ +@SuppressWarnings("rawtypes") /* rawtypes are part of the public api */ public class EnumConstantNotPresentException extends RuntimeException { private static final long serialVersionUID = -6046998521960521108L; diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/lang/Float.java --- a/jdk/src/share/classes/java/lang/Float.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/lang/Float.java Tue Dec 20 15:27:55 2011 -0800 @@ -126,7 +126,8 @@ * * @since JDK1.1 */ - public static final Class TYPE = Class.getPrimitiveClass("float"); + @SuppressWarnings("unchecked") + public static final Class TYPE = (Class) Class.getPrimitiveClass("float"); /** * Returns a string representation of the {@code float} diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/lang/Integer.java --- a/jdk/src/share/classes/java/lang/Integer.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/lang/Integer.java Tue Dec 20 15:27:55 2011 -0800 @@ -68,6 +68,7 @@ * * @since JDK1.1 */ + @SuppressWarnings("unchecked") public static final Class TYPE = (Class) Class.getPrimitiveClass("int"); /** diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/lang/Long.java --- a/jdk/src/share/classes/java/lang/Long.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/lang/Long.java Tue Dec 20 15:27:55 2011 -0800 @@ -66,6 +66,7 @@ * * @since JDK1.1 */ + @SuppressWarnings("unchecked") public static final Class TYPE = (Class) Class.getPrimitiveClass("long"); /** @@ -734,7 +735,7 @@ * {@code long} value. */ public long longValue() { - return (long)value; + return value; } /** diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/lang/Short.java --- a/jdk/src/share/classes/java/lang/Short.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/lang/Short.java Tue Dec 20 15:27:55 2011 -0800 @@ -58,6 +58,7 @@ * The {@code Class} instance representing the primitive type * {@code short}. */ + @SuppressWarnings("unchecked") public static final Class TYPE = (Class) Class.getPrimitiveClass("short"); /** diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/lang/System.java --- a/jdk/src/share/classes/java/lang/System.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/lang/System.java Tue Dec 20 15:27:55 2011 -0800 @@ -1032,7 +1032,7 @@ */ @Deprecated public static void runFinalizersOnExit(boolean value) { - Runtime.getRuntime().runFinalizersOnExit(value); + Runtime.runFinalizersOnExit(value); } /** diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/lang/ThreadLocal.java --- a/jdk/src/share/classes/java/lang/ThreadLocal.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/lang/ThreadLocal.java Tue Dec 20 15:27:55 2011 -0800 @@ -144,8 +144,11 @@ ThreadLocalMap map = getMap(t); if (map != null) { ThreadLocalMap.Entry e = map.getEntry(this); - if (e != null) - return (T)e.value; + if (e != null) { + @SuppressWarnings("unchecked") + T result = (T)e.value; + return result; + } } return setInitialValue(); } @@ -268,11 +271,11 @@ * entry can be expunged from table. Such entries are referred to * as "stale entries" in the code that follows. */ - static class Entry extends WeakReference { + static class Entry extends WeakReference> { /** The value associated with this ThreadLocal. */ Object value; - Entry(ThreadLocal k, Object v) { + Entry(ThreadLocal k, Object v) { super(k); value = v; } @@ -325,7 +328,7 @@ * ThreadLocalMaps are constructed lazily, so we only create * one when we have at least one entry to put in it. */ - ThreadLocalMap(ThreadLocal firstKey, Object firstValue) { + ThreadLocalMap(ThreadLocal firstKey, Object firstValue) { table = new Entry[INITIAL_CAPACITY]; int i = firstKey.threadLocalHashCode & (INITIAL_CAPACITY - 1); table[i] = new Entry(firstKey, firstValue); @@ -348,7 +351,8 @@ for (int j = 0; j < len; j++) { Entry e = parentTable[j]; if (e != null) { - ThreadLocal key = e.get(); + @SuppressWarnings("unchecked") + ThreadLocal key = (ThreadLocal) e.get(); if (key != null) { Object value = key.childValue(e.value); Entry c = new Entry(key, value); @@ -372,7 +376,7 @@ * @param key the thread local object * @return the entry associated with key, or null if no such */ - private Entry getEntry(ThreadLocal key) { + private Entry getEntry(ThreadLocal key) { int i = key.threadLocalHashCode & (table.length - 1); Entry e = table[i]; if (e != null && e.get() == key) @@ -390,12 +394,12 @@ * @param e the entry at table[i] * @return the entry associated with key, or null if no such */ - private Entry getEntryAfterMiss(ThreadLocal key, int i, Entry e) { + private Entry getEntryAfterMiss(ThreadLocal key, int i, Entry e) { Entry[] tab = table; int len = tab.length; while (e != null) { - ThreadLocal k = e.get(); + ThreadLocal k = e.get(); if (k == key) return e; if (k == null) @@ -413,7 +417,7 @@ * @param key the thread local object * @param value the value to be set */ - private void set(ThreadLocal key, Object value) { + private void set(ThreadLocal key, Object value) { // We don't use a fast path as with get() because it is at // least as common to use set() to create new entries as @@ -427,7 +431,7 @@ for (Entry e = tab[i]; e != null; e = tab[i = nextIndex(i, len)]) { - ThreadLocal k = e.get(); + ThreadLocal k = e.get(); if (k == key) { e.value = value; @@ -449,7 +453,7 @@ /** * Remove the entry for key. */ - private void remove(ThreadLocal key) { + private void remove(ThreadLocal key) { Entry[] tab = table; int len = tab.length; int i = key.threadLocalHashCode & (len-1); @@ -479,7 +483,7 @@ * @param staleSlot index of the first stale entry encountered while * searching for key. */ - private void replaceStaleEntry(ThreadLocal key, Object value, + private void replaceStaleEntry(ThreadLocal key, Object value, int staleSlot) { Entry[] tab = table; int len = tab.length; @@ -501,7 +505,7 @@ for (int i = nextIndex(staleSlot, len); (e = tab[i]) != null; i = nextIndex(i, len)) { - ThreadLocal k = e.get(); + ThreadLocal k = e.get(); // If we find key, then we need to swap it // with the stale entry to maintain hash table order. @@ -563,7 +567,7 @@ for (i = nextIndex(staleSlot, len); (e = tab[i]) != null; i = nextIndex(i, len)) { - ThreadLocal k = e.get(); + ThreadLocal k = e.get(); if (k == null) { e.value = null; tab[i] = null; @@ -650,7 +654,7 @@ for (int j = 0; j < oldLen; ++j) { Entry e = oldTab[j]; if (e != null) { - ThreadLocal k = e.get(); + ThreadLocal k = e.get(); if (k == null) { e.value = null; // Help the GC } else { diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/lang/Void.java --- a/jdk/src/share/classes/java/lang/Void.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/lang/Void.java Tue Dec 20 15:27:55 2011 -0800 @@ -40,7 +40,8 @@ * The {@code Class} object representing the pseudo-type corresponding to * the keyword {@code void}. */ - public static final Class TYPE = Class.getPrimitiveClass("void"); + @SuppressWarnings("unchecked") + public static final Class TYPE = (Class) Class.getPrimitiveClass("void"); /* * The Void class cannot be instantiated. diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/net/HttpCookie.java --- a/jdk/src/share/classes/java/net/HttpCookie.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/net/HttpCookie.java Tue Dec 20 15:27:55 2011 -0800 @@ -72,6 +72,10 @@ private boolean httpOnly; // HttpOnly ... i.e. not accessible to scripts private int version = 1; // Version=1 ... RFC 2965 style + // The original header this cookie was consructed from, if it was + // constructed by parsing a header, otherwise null. + private final String header; + // Hold the creation time (in seconds) of the http cookie for later // expiration calculation private final long whenCreated; @@ -128,6 +132,10 @@ * @see #setVersion */ public HttpCookie(String name, String value) { + this(name, value, null /*header*/); + } + + private HttpCookie(String name, String value, String header) { name = name.trim(); if (name.length() == 0 || !isToken(name) || isReserved(name)) { throw new IllegalArgumentException("Illegal cookie name"); @@ -140,6 +148,7 @@ whenCreated = System.currentTimeMillis(); portlist = null; + this.header = header; } /** @@ -163,6 +172,15 @@ * if the header string is {@code null} */ public static List parse(String header) { + return parse(header, false); + } + + // Private version of parse() that will store the original header used to + // create the cookie, in the cookie itself. This can be useful for filtering + // Set-Cookie[2] headers, using the internal parsing logic defined in this + // class. + private static List parse(String header, boolean retainHeader) { + int version = guessCookieVersion(header); // if header start with set-cookie or set-cookie2, strip it off @@ -178,7 +196,7 @@ // so the parse logic is slightly different if (version == 0) { // Netscape draft cookie - HttpCookie cookie = parseInternal(header); + HttpCookie cookie = parseInternal(header, retainHeader); cookie.setVersion(0); cookies.add(cookie); } else { @@ -187,7 +205,7 @@ // it'll separate them with comma List cookieStrings = splitMultiCookies(header); for (String cookieStr : cookieStrings) { - HttpCookie cookie = parseInternal(cookieStr); + HttpCookie cookie = parseInternal(cookieStr, retainHeader); cookie.setVersion(1); cookies.add(cookie); } @@ -804,7 +822,8 @@ * @throws IllegalArgumentException * if header string violates the cookie specification */ - private static HttpCookie parseInternal(String header) + private static HttpCookie parseInternal(String header, + boolean retainHeader) { HttpCookie cookie = null; String namevaluePair = null; @@ -819,7 +838,13 @@ if (index != -1) { String name = namevaluePair.substring(0, index).trim(); String value = namevaluePair.substring(index + 1).trim(); - cookie = new HttpCookie(name, stripOffSurroundingQuote(value)); + if (retainHeader) + cookie = new HttpCookie(name, + stripOffSurroundingQuote(value), + header); + else + cookie = new HttpCookie(name, + stripOffSurroundingQuote(value)); } else { // no "=" in name-value pair; it's an error throw new IllegalArgumentException("Invalid cookie name-value pair"); @@ -972,6 +997,28 @@ } } + static { + sun.misc.SharedSecrets.setJavaNetHttpCookieAccess( + new sun.misc.JavaNetHttpCookieAccess() { + public List parse(String header) { + return HttpCookie.parse(header, true); + } + + public String header(HttpCookie cookie) { + return cookie.header; + } + } + ); + } + + /* + * Returns the original header this cookie was consructed from, if it was + * constructed by parsing a header, otherwise null. + */ + private String header() { + return header; + } + /* * Constructs a string representation of this cookie. The string format is * as Netscape spec, but without leading "Cookie:" token. diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/nio/file/spi/FileSystemProvider.java --- a/jdk/src/share/classes/java/nio/file/spi/FileSystemProvider.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/nio/file/spi/FileSystemProvider.java Tue Dec 20 15:27:55 2011 -0800 @@ -373,11 +373,13 @@ { if (options.length > 0) { for (OpenOption opt: options) { - if (opt != StandardOpenOption.READ) + // All OpenOption values except for APPEND and WRITE are allowed + if (opt == StandardOpenOption.APPEND || + opt == StandardOpenOption.WRITE) throw new UnsupportedOperationException("'" + opt + "' not allowed"); } } - return Channels.newInputStream(Files.newByteChannel(path)); + return Channels.newInputStream(Files.newByteChannel(path, options)); } /** diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/util/Locale.java --- a/jdk/src/share/classes/java/util/Locale.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/util/Locale.java Tue Dec 20 15:27:55 2011 -0800 @@ -737,10 +737,6 @@ */ public static Locale getDefault() { // do not synchronize this method - see 4071298 - // it's OK if more than one default locale happens to be created - if (defaultLocale == null) { - initDefault(); - } return defaultLocale; } @@ -762,16 +758,23 @@ */ public static Locale getDefault(Locale.Category category) { // do not synchronize this method - see 4071298 - // it's OK if more than one default locale happens to be created switch (category) { case DISPLAY: if (defaultDisplayLocale == null) { - initDefault(category); + synchronized(Locale.class) { + if (defaultDisplayLocale == null) { + defaultDisplayLocale = initDefault(category); + } + } } return defaultDisplayLocale; case FORMAT: if (defaultFormatLocale == null) { - initDefault(category); + synchronized(Locale.class) { + if (defaultFormatLocale == null) { + defaultFormatLocale = initDefault(category); + } + } } return defaultFormatLocale; default: @@ -780,7 +783,7 @@ return getDefault(); } - private static void initDefault() { + private static Locale initDefault() { String language, region, script, country, variant; language = AccessController.doPrivileged( new GetPropertyAction("user.language", "en")); @@ -806,16 +809,12 @@ variant = AccessController.doPrivileged( new GetPropertyAction("user.variant", "")); } - defaultLocale = getInstance(language, script, country, variant, null); + + return getInstance(language, script, country, variant, null); } - private static void initDefault(Locale.Category category) { - // make sure defaultLocale is initialized - if (defaultLocale == null) { - initDefault(); - } - - Locale defaultCategoryLocale = getInstance( + private static Locale initDefault(Locale.Category category) { + return getInstance( AccessController.doPrivileged( new GetPropertyAction(category.languageKey, defaultLocale.getLanguage())), AccessController.doPrivileged( @@ -825,15 +824,6 @@ AccessController.doPrivileged( new GetPropertyAction(category.variantKey, defaultLocale.getVariant())), null); - - switch (category) { - case DISPLAY: - defaultDisplayLocale = defaultCategoryLocale; - break; - case FORMAT: - defaultFormatLocale = defaultCategoryLocale; - break; - } } /** @@ -1916,9 +1906,9 @@ */ private transient volatile int hashCodeValue = 0; - private static Locale defaultLocale = null; - private static Locale defaultDisplayLocale = null; - private static Locale defaultFormatLocale = null; + private volatile static Locale defaultLocale = initDefault(); + private volatile static Locale defaultDisplayLocale = null; + private volatile static Locale defaultFormatLocale = null; /** * Return an array of the display names of the variant. diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/util/concurrent/ArrayBlockingQueue.java --- a/jdk/src/share/classes/java/util/concurrent/ArrayBlockingQueue.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/util/concurrent/ArrayBlockingQueue.java Tue Dec 20 15:27:55 2011 -0800 @@ -131,8 +131,9 @@ /** * Returns item at index i. */ + @SuppressWarnings("unchecked") final E itemAt(int i) { - return this.cast(items[i]); + return (E) items[i]; } /** @@ -162,7 +163,8 @@ */ private E extract() { final Object[] items = this.items; - E x = this.cast(items[takeIndex]); + @SuppressWarnings("unchecked") + E x = (E) items[takeIndex]; items[takeIndex] = null; takeIndex = inc(takeIndex); --count; @@ -647,7 +649,9 @@ int n = 0; int max = count; while (n < max) { - c.add(this.cast(items[i])); + @SuppressWarnings("unchecked") + E x = (E) items[i]; + c.add(x); items[i] = null; i = inc(i); ++n; @@ -684,7 +688,9 @@ int n = 0; int max = (maxElements < count) ? maxElements : count; while (n < max) { - c.add(this.cast(items[i])); + @SuppressWarnings("unchecked") + E x = (E) items[i]; + c.add(x); items[i] = null; i = inc(i); ++n; diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/util/concurrent/ConcurrentHashMap.java --- a/jdk/src/share/classes/java/util/concurrent/ConcurrentHashMap.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/util/concurrent/ConcurrentHashMap.java Tue Dec 20 15:27:55 2011 -0800 @@ -37,9 +37,6 @@ import java.util.concurrent.locks.*; import java.util.*; import java.io.Serializable; -import java.io.IOException; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; /** * A hash table supporting full concurrency of retrievals and @@ -228,7 +225,7 @@ static { try { UNSAFE = sun.misc.Unsafe.getUnsafe(); - Class k = HashEntry.class; + Class k = HashEntry.class; nextOffset = UNSAFE.objectFieldOffset (k.getDeclaredField("next")); } catch (Exception e) { @@ -433,7 +430,7 @@ int newCapacity = oldCapacity << 1; threshold = (int)(newCapacity * loadFactor); HashEntry[] newTable = - (HashEntry[]) new HashEntry[newCapacity]; + (HashEntry[]) new HashEntry[newCapacity]; int sizeMask = newCapacity - 1; for (int i = 0; i < oldCapacity ; i++) { HashEntry e = oldTable[i]; @@ -677,7 +674,7 @@ int cap = proto.table.length; float lf = proto.loadFactor; int threshold = (int)(cap * lf); - HashEntry[] tab = (HashEntry[])new HashEntry[cap]; + HashEntry[] tab = (HashEntry[])new HashEntry[cap]; if ((seg = (Segment)UNSAFE.getObjectVolatile(ss, u)) == null) { // recheck Segment s = new Segment(lf, threshold, tab); @@ -694,7 +691,7 @@ // Hash-based segment and entry accesses /** - * Get the segment for the given hash + * Gets the segment for the given hash code. */ @SuppressWarnings("unchecked") private Segment segmentForHash(int h) { @@ -703,7 +700,7 @@ } /** - * Gets the table entry for the given segment and hash + * Gets the table entry for the given segment and hash code. */ @SuppressWarnings("unchecked") static final HashEntry entryForHash(Segment seg, int h) { @@ -758,8 +755,8 @@ // create segments and segments[0] Segment s0 = new Segment(loadFactor, (int)(cap * loadFactor), - (HashEntry[])new HashEntry[cap]); - Segment[] ss = (Segment[])new Segment[ssize]; + (HashEntry[])new HashEntry[cap]); + Segment[] ss = (Segment[])new Segment[ssize]; UNSAFE.putOrderedObject(ss, SBASE, s0); // ordered write of segments[0] this.segments = ss; } @@ -916,6 +913,7 @@ * * @throws NullPointerException if the specified key is null */ + @SuppressWarnings("unchecked") public V get(Object key) { Segment s; // manually integrate access methods to reduce overhead HashEntry[] tab; @@ -1026,7 +1024,7 @@ * full compatibility with class {@link java.util.Hashtable}, * which supported this method prior to introduction of the * Java Collections framework. - + * * @param value a value to search for * @return true if and only if some key maps to the * value argument in this table as @@ -1262,7 +1260,7 @@ } /** - * Set nextEntry to first node of next non-empty table + * Sets nextEntry to first node of next non-empty table * (in backwards order, to simplify checks). */ final void advance() { @@ -1326,12 +1324,14 @@ final class WriteThroughEntry extends AbstractMap.SimpleEntry { + static final long serialVersionUID = 7249069246763182397L; + WriteThroughEntry(K k, V v) { super(k,v); } /** - * Set our entry's value and write through to the map. The + * Sets our entry's value and writes through to the map. The * value to return is somewhat arbitrary here. Since a * WriteThroughEntry does not necessarily track asynchronous * changes, the most recent "previous" value could be @@ -1427,15 +1427,16 @@ /* ---------------- Serialization Support -------------- */ /** - * Save the state of the ConcurrentHashMap instance to a - * stream (i.e., serialize it). + * Saves the state of the ConcurrentHashMap instance to a + * stream (i.e., serializes it). * @param s the stream * @serialData * the key (Object) and value (Object) * for each key-value mapping, followed by a null pair. * The key-value mappings are emitted in no particular order. */ - private void writeObject(java.io.ObjectOutputStream s) throws IOException { + private void writeObject(java.io.ObjectOutputStream s) + throws java.io.IOException { // force all segments for serialization compatibility for (int k = 0; k < segments.length; ++k) ensureSegment(k); @@ -1463,13 +1464,13 @@ } /** - * Reconstitute the ConcurrentHashMap instance from a - * stream (i.e., deserialize it). + * Reconstitutes the ConcurrentHashMap instance from a + * stream (i.e., deserializes it). * @param s the stream */ @SuppressWarnings("unchecked") private void readObject(java.io.ObjectInputStream s) - throws IOException, ClassNotFoundException { + throws java.io.IOException, ClassNotFoundException { s.defaultReadObject(); // Re-initialize segments to be minimally sized, and let grow. @@ -1479,7 +1480,7 @@ Segment seg = segments[k]; if (seg != null) { seg.threshold = (int)(cap * seg.loadFactor); - seg.table = (HashEntry[]) new HashEntry[cap]; + seg.table = (HashEntry[]) new HashEntry[cap]; } } @@ -1504,8 +1505,8 @@ int ss, ts; try { UNSAFE = sun.misc.Unsafe.getUnsafe(); - Class tc = HashEntry[].class; - Class sc = Segment[].class; + Class tc = HashEntry[].class; + Class sc = Segment[].class; TBASE = UNSAFE.arrayBaseOffset(tc); SBASE = UNSAFE.arrayBaseOffset(sc); ts = UNSAFE.arrayIndexScale(tc); diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/util/concurrent/ConcurrentLinkedDeque.java --- a/jdk/src/share/classes/java/util/concurrent/ConcurrentLinkedDeque.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/util/concurrent/ConcurrentLinkedDeque.java Tue Dec 20 15:27:55 2011 -0800 @@ -335,7 +335,7 @@ static { try { UNSAFE = sun.misc.Unsafe.getUnsafe(); - Class k = Node.class; + Class k = Node.class; prevOffset = UNSAFE.objectFieldOffset (k.getDeclaredField("prev")); itemOffset = UNSAFE.objectFieldOffset @@ -1457,7 +1457,7 @@ NEXT_TERMINATOR.prev = NEXT_TERMINATOR; try { UNSAFE = sun.misc.Unsafe.getUnsafe(); - Class k = ConcurrentLinkedDeque.class; + Class k = ConcurrentLinkedDeque.class; headOffset = UNSAFE.objectFieldOffset (k.getDeclaredField("head")); tailOffset = UNSAFE.objectFieldOffset diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/util/concurrent/ConcurrentLinkedQueue.java --- a/jdk/src/share/classes/java/util/concurrent/ConcurrentLinkedQueue.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/util/concurrent/ConcurrentLinkedQueue.java Tue Dec 20 15:27:55 2011 -0800 @@ -208,7 +208,7 @@ static { try { UNSAFE = sun.misc.Unsafe.getUnsafe(); - Class k = Node.class; + Class k = Node.class; itemOffset = UNSAFE.objectFieldOffset (k.getDeclaredField("item")); nextOffset = UNSAFE.objectFieldOffset @@ -823,7 +823,7 @@ static { try { UNSAFE = sun.misc.Unsafe.getUnsafe(); - Class k = ConcurrentLinkedQueue.class; + Class k = ConcurrentLinkedQueue.class; headOffset = UNSAFE.objectFieldOffset (k.getDeclaredField("head")); tailOffset = UNSAFE.objectFieldOffset diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/util/concurrent/ConcurrentSkipListMap.java --- a/jdk/src/share/classes/java/util/concurrent/ConcurrentSkipListMap.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/util/concurrent/ConcurrentSkipListMap.java Tue Dec 20 15:27:55 2011 -0800 @@ -35,7 +35,6 @@ package java.util.concurrent; import java.util.*; -import java.util.concurrent.atomic.*; /** * A scalable concurrent {@link ConcurrentNavigableMap} implementation. @@ -90,6 +89,7 @@ * @param the type of mapped values * @since 1.6 */ +@SuppressWarnings("unchecked") public class ConcurrentSkipListMap extends AbstractMap implements ConcurrentNavigableMap, Cloneable, @@ -352,11 +352,11 @@ private transient int randomSeed; /** Lazily initialized key set */ - private transient KeySet keySet; + private transient KeySet keySet; /** Lazily initialized entry set */ - private transient EntrySet entrySet; + private transient EntrySet entrySet; /** Lazily initialized values collection */ - private transient Values values; + private transient Values values; /** Lazily initialized descending key set */ private transient ConcurrentNavigableMap descendingMap; @@ -517,7 +517,7 @@ static { try { UNSAFE = sun.misc.Unsafe.getUnsafe(); - Class k = Node.class; + Class k = Node.class; valueOffset = UNSAFE.objectFieldOffset (k.getDeclaredField("value")); nextOffset = UNSAFE.objectFieldOffset @@ -597,7 +597,7 @@ static { try { UNSAFE = sun.misc.Unsafe.getUnsafe(); - Class k = Index.class; + Class k = Index.class; rightOffset = UNSAFE.objectFieldOffset (k.getDeclaredField("right")); } catch (Exception e) { @@ -933,7 +933,7 @@ * direction. */ level = max + 1; - Index[] idxs = (Index[])new Index[level+1]; + Index[] idxs = (Index[])new Index[level+1]; Index idx = null; for (int i = 1; i <= level; ++i) idxs[i] = idx = new Index(z, idx, null); @@ -1436,16 +1436,16 @@ * @return a shallow copy of this map */ public ConcurrentSkipListMap clone() { - ConcurrentSkipListMap clone = null; try { - clone = (ConcurrentSkipListMap) super.clone(); + @SuppressWarnings("unchecked") + ConcurrentSkipListMap clone = + (ConcurrentSkipListMap) super.clone(); + clone.initialize(); + clone.buildFromSorted(this); + return clone; } catch (CloneNotSupportedException e) { throw new InternalError(); } - - clone.initialize(); - clone.buildFromSorted(this); - return clone; } /** @@ -1507,7 +1507,7 @@ /* ---------------- Serialization -------------- */ /** - * Save the state of this map to a stream. + * Saves the state of this map to a stream (that is, serializes it). * * @serialData The key (Object) and value (Object) for each * key-value mapping represented by the map, followed by @@ -1532,7 +1532,9 @@ } /** - * Reconstitute the map from a stream. + * Reconstitutes the map from a stream (that is, deserializes it). + * + * @param s the stream */ private void readObject(final java.io.ObjectInputStream s) throws java.io.IOException, ClassNotFoundException { @@ -1755,13 +1757,13 @@ * @return a navigable set view of the keys in this map */ public NavigableSet keySet() { - KeySet ks = keySet; - return (ks != null) ? ks : (keySet = new KeySet(this)); + KeySet ks = keySet; + return (ks != null) ? ks : (keySet = new KeySet(this)); } public NavigableSet navigableKeySet() { - KeySet ks = keySet; - return (ks != null) ? ks : (keySet = new KeySet(this)); + KeySet ks = keySet; + return (ks != null) ? ks : (keySet = new KeySet(this)); } /** @@ -1783,8 +1785,8 @@ * reflect any modifications subsequent to construction. */ public Collection values() { - Values vs = values; - return (vs != null) ? vs : (values = new Values(this)); + Values vs = values; + return (vs != null) ? vs : (values = new Values(this)); } /** @@ -1812,8 +1814,8 @@ * sorted in ascending key order */ public Set> entrySet() { - EntrySet es = entrySet; - return (es != null) ? es : (entrySet = new EntrySet(this)); + EntrySet es = entrySet; + return (es != null) ? es : (entrySet = new EntrySet(this)); } public ConcurrentNavigableMap descendingMap() { @@ -2304,8 +2306,8 @@ static final class KeySet extends AbstractSet implements NavigableSet { - private final ConcurrentNavigableMap m; - KeySet(ConcurrentNavigableMap map) { m = map; } + private final ConcurrentNavigableMap m; + KeySet(ConcurrentNavigableMap map) { m = map; } public int size() { return m.size(); } public boolean isEmpty() { return m.isEmpty(); } public boolean contains(Object o) { return m.containsKey(o); } @@ -2319,11 +2321,11 @@ public E first() { return m.firstKey(); } public E last() { return m.lastKey(); } public E pollFirst() { - Map.Entry e = m.pollFirstEntry(); + Map.Entry e = m.pollFirstEntry(); return (e == null) ? null : e.getKey(); } public E pollLast() { - Map.Entry e = m.pollLastEntry(); + Map.Entry e = m.pollLastEntry(); return (e == null) ? null : e.getKey(); } public Iterator iterator() { @@ -2374,20 +2376,20 @@ return tailSet(fromElement, true); } public NavigableSet descendingSet() { - return new KeySet(m.descendingMap()); + return new KeySet(m.descendingMap()); } } static final class Values extends AbstractCollection { - private final ConcurrentNavigableMap m; - Values(ConcurrentNavigableMap map) { + private final ConcurrentNavigableMap m; + Values(ConcurrentNavigableMap map) { m = map; } public Iterator iterator() { if (m instanceof ConcurrentSkipListMap) - return ((ConcurrentSkipListMap)m).valueIterator(); + return ((ConcurrentSkipListMap)m).valueIterator(); else - return ((SubMap)m).valueIterator(); + return ((SubMap)m).valueIterator(); } public boolean isEmpty() { return m.isEmpty(); @@ -2421,14 +2423,14 @@ public boolean contains(Object o) { if (!(o instanceof Map.Entry)) return false; - Map.Entry e = (Map.Entry)o; + Map.Entry e = (Map.Entry)o; V1 v = m.get(e.getKey()); return v != null && v.equals(e.getValue()); } public boolean remove(Object o) { if (!(o instanceof Map.Entry)) return false; - Map.Entry e = (Map.Entry)o; + Map.Entry e = (Map.Entry)o; return m.remove(e.getKey(), e.getValue()); } @@ -2568,9 +2570,9 @@ if (lo == null) return m.findFirst(); else if (loInclusive) - return m.findNear(lo, m.GT|m.EQ); + return m.findNear(lo, GT|EQ); else - return m.findNear(lo, m.GT); + return m.findNear(lo, GT); } /** @@ -2581,9 +2583,9 @@ if (hi == null) return m.findLast(); else if (hiInclusive) - return m.findNear(hi, m.LT|m.EQ); + return m.findNear(hi, LT|EQ); else - return m.findNear(hi, m.LT); + return m.findNear(hi, LT); } /** @@ -2665,15 +2667,15 @@ */ private Map.Entry getNearEntry(K key, int rel) { if (isDescending) { // adjust relation for direction - if ((rel & m.LT) == 0) - rel |= m.LT; + if ((rel & LT) == 0) + rel |= LT; else - rel &= ~m.LT; + rel &= ~LT; } if (tooLow(key)) - return ((rel & m.LT) != 0) ? null : lowestEntry(); + return ((rel & LT) != 0) ? null : lowestEntry(); if (tooHigh(key)) - return ((rel & m.LT) != 0) ? highestEntry() : null; + return ((rel & LT) != 0) ? highestEntry() : null; for (;;) { Node n = m.findNear(key, rel); if (n == null || !inBounds(n.key)) @@ -2688,13 +2690,13 @@ // Almost the same as getNearEntry, except for keys private K getNearKey(K key, int rel) { if (isDescending) { // adjust relation for direction - if ((rel & m.LT) == 0) - rel |= m.LT; + if ((rel & LT) == 0) + rel |= LT; else - rel &= ~m.LT; + rel &= ~LT; } if (tooLow(key)) { - if ((rel & m.LT) == 0) { + if ((rel & LT) == 0) { ConcurrentSkipListMap.Node n = loNode(); if (isBeforeEnd(n)) return n.key; @@ -2702,7 +2704,7 @@ return null; } if (tooHigh(key)) { - if ((rel & m.LT) != 0) { + if ((rel & LT) != 0) { ConcurrentSkipListMap.Node n = hiNode(); if (n != null) { K last = n.key; @@ -2734,7 +2736,7 @@ public V get(Object key) { if (key == null) throw new NullPointerException(); K k = (K)key; - return ((!inBounds(k)) ? null : m.get(k)); + return (!inBounds(k)) ? null : m.get(k); } public V put(K key, V value) { @@ -2901,35 +2903,35 @@ /* ---------------- Relational methods -------------- */ public Map.Entry ceilingEntry(K key) { - return getNearEntry(key, (m.GT|m.EQ)); + return getNearEntry(key, GT|EQ); } public K ceilingKey(K key) { - return getNearKey(key, (m.GT|m.EQ)); + return getNearKey(key, GT|EQ); } public Map.Entry lowerEntry(K key) { - return getNearEntry(key, (m.LT)); + return getNearEntry(key, LT); } public K lowerKey(K key) { - return getNearKey(key, (m.LT)); + return getNearKey(key, LT); } public Map.Entry floorEntry(K key) { - return getNearEntry(key, (m.LT|m.EQ)); + return getNearEntry(key, LT|EQ); } public K floorKey(K key) { - return getNearKey(key, (m.LT|m.EQ)); + return getNearKey(key, LT|EQ); } public Map.Entry higherEntry(K key) { - return getNearEntry(key, (m.GT)); + return getNearEntry(key, GT); } public K higherKey(K key) { - return getNearKey(key, (m.GT)); + return getNearKey(key, GT); } public K firstKey() { @@ -2960,22 +2962,22 @@ public NavigableSet keySet() { KeySet ks = keySetView; - return (ks != null) ? ks : (keySetView = new KeySet(this)); + return (ks != null) ? ks : (keySetView = new KeySet(this)); } public NavigableSet navigableKeySet() { KeySet ks = keySetView; - return (ks != null) ? ks : (keySetView = new KeySet(this)); + return (ks != null) ? ks : (keySetView = new KeySet(this)); } public Collection values() { Collection vs = valuesView; - return (vs != null) ? vs : (valuesView = new Values(this)); + return (vs != null) ? vs : (valuesView = new Values(this)); } public Set> entrySet() { Set> es = entrySetView; - return (es != null) ? es : (entrySetView = new EntrySet(this)); + return (es != null) ? es : (entrySetView = new EntrySet(this)); } public NavigableSet descendingKeySet() { @@ -3109,7 +3111,7 @@ static { try { UNSAFE = sun.misc.Unsafe.getUnsafe(); - Class k = ConcurrentSkipListMap.class; + Class k = ConcurrentSkipListMap.class; headOffset = UNSAFE.objectFieldOffset (k.getDeclaredField("head")); } catch (Exception e) { diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/util/concurrent/ConcurrentSkipListSet.java --- a/jdk/src/share/classes/java/util/concurrent/ConcurrentSkipListSet.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/util/concurrent/ConcurrentSkipListSet.java Tue Dec 20 15:27:55 2011 -0800 @@ -35,7 +35,6 @@ package java.util.concurrent; import java.util.*; -import sun.misc.Unsafe; /** * A scalable concurrent {@link NavigableSet} implementation based on @@ -158,15 +157,15 @@ * @return a shallow copy of this set */ public ConcurrentSkipListSet clone() { - ConcurrentSkipListSet clone = null; try { - clone = (ConcurrentSkipListSet) super.clone(); - clone.setMap(new ConcurrentSkipListMap(m)); + @SuppressWarnings("unchecked") + ConcurrentSkipListSet clone = + (ConcurrentSkipListSet) super.clone(); + clone.setMap(new ConcurrentSkipListMap(m)); + return clone; } catch (CloneNotSupportedException e) { throw new InternalError(); } - - return clone; } /* ---------------- Set operations -------------- */ @@ -322,8 +321,8 @@ public boolean removeAll(Collection c) { // Override AbstractSet version to avoid unnecessary call to size() boolean modified = false; - for (Iterator i = c.iterator(); i.hasNext(); ) - if (remove(i.next())) + for (Object e : c) + if (remove(e)) modified = true; return modified; } @@ -468,7 +467,7 @@ * @return a reverse order view of this set */ public NavigableSet descendingSet() { - return new ConcurrentSkipListSet(m.descendingMap()); + return new ConcurrentSkipListSet(m.descendingMap()); } // Support for resetting map in clone @@ -481,7 +480,7 @@ static { try { UNSAFE = sun.misc.Unsafe.getUnsafe(); - Class k = ConcurrentSkipListSet.class; + Class k = ConcurrentSkipListSet.class; mapOffset = UNSAFE.objectFieldOffset (k.getDeclaredField("m")); } catch (Exception e) { diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/util/concurrent/CopyOnWriteArrayList.java --- a/jdk/src/share/classes/java/util/concurrent/CopyOnWriteArrayList.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/util/concurrent/CopyOnWriteArrayList.java Tue Dec 20 15:27:55 2011 -0800 @@ -36,7 +36,6 @@ package java.util.concurrent; import java.util.*; import java.util.concurrent.locks.*; -import sun.misc.Unsafe; /** * A thread-safe variant of {@link java.util.ArrayList} in which all mutative @@ -281,9 +280,11 @@ */ public Object clone() { try { - CopyOnWriteArrayList c = (CopyOnWriteArrayList)(super.clone()); - c.resetLock(); - return c; + @SuppressWarnings("unchecked") + CopyOnWriteArrayList clone = + (CopyOnWriteArrayList) super.clone(); + clone.resetLock(); + return clone; } catch (CloneNotSupportedException e) { // this shouldn't happen, since we are Cloneable throw new InternalError(); @@ -1330,7 +1331,7 @@ static { try { UNSAFE = sun.misc.Unsafe.getUnsafe(); - Class k = CopyOnWriteArrayList.class; + Class k = CopyOnWriteArrayList.class; lockOffset = UNSAFE.objectFieldOffset (k.getDeclaredField("lock")); } catch (Exception e) { diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/util/concurrent/DelayQueue.java --- a/jdk/src/share/classes/java/util/concurrent/DelayQueue.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/util/concurrent/DelayQueue.java Tue Dec 20 15:27:55 2011 -0800 @@ -531,7 +531,7 @@ // not just a .equals element. lock.lock(); try { - for (Iterator it = q.iterator(); it.hasNext(); ) { + for (Iterator it = q.iterator(); it.hasNext(); ) { if (it.next() == x) { it.remove(); return; diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/util/concurrent/Exchanger.java --- a/jdk/src/share/classes/java/util/concurrent/Exchanger.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/util/concurrent/Exchanger.java Tue Dec 20 15:27:55 2011 -0800 @@ -279,6 +279,7 @@ * into hole. This class cannot be parameterized as "V" because * of the use of non-V CANCEL sentinels. */ + @SuppressWarnings("serial") private static final class Node extends AtomicReference { /** The element offered by the Thread creating this node. */ public final Object item; @@ -303,6 +304,7 @@ * would improve throughput more than enough to outweigh using * extra space. */ + @SuppressWarnings("serial") private static final class Slot extends AtomicReference { // Improve likelihood of isolation on <= 64 byte cache lines long q0, q1, q2, q3, q4, q5, q6, q7, q8, q9, qa, qb, qc, qd, qe; @@ -616,13 +618,14 @@ * @throws InterruptedException if the current thread was * interrupted while waiting */ + @SuppressWarnings("unchecked") public V exchange(V x) throws InterruptedException { if (!Thread.interrupted()) { - Object v = doExchange((x == null) ? NULL_ITEM : x, false, 0); - if (v == NULL_ITEM) + Object o = doExchange((x == null) ? NULL_ITEM : x, false, 0); + if (o == NULL_ITEM) return null; - if (v != CANCEL) - return (V)v; + if (o != CANCEL) + return (V)o; Thread.interrupted(); // Clear interrupt status on IE throw } throw new InterruptedException(); @@ -670,15 +673,16 @@ * @throws TimeoutException if the specified waiting time elapses * before another thread enters the exchange */ + @SuppressWarnings("unchecked") public V exchange(V x, long timeout, TimeUnit unit) throws InterruptedException, TimeoutException { if (!Thread.interrupted()) { - Object v = doExchange((x == null) ? NULL_ITEM : x, + Object o = doExchange((x == null) ? NULL_ITEM : x, true, unit.toNanos(timeout)); - if (v == NULL_ITEM) + if (o == NULL_ITEM) return null; - if (v != CANCEL) - return (V)v; + if (o != CANCEL) + return (V)o; if (!Thread.interrupted()) throw new TimeoutException(); } diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/util/concurrent/ForkJoinPool.java --- a/jdk/src/share/classes/java/util/concurrent/ForkJoinPool.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/util/concurrent/ForkJoinPool.java Tue Dec 20 15:27:55 2011 -0800 @@ -2150,7 +2150,7 @@ int s; try { UNSAFE = sun.misc.Unsafe.getUnsafe(); - Class k = ForkJoinPool.class; + Class k = ForkJoinPool.class; ctlOffset = UNSAFE.objectFieldOffset (k.getDeclaredField("ctl")); stealCountOffset = UNSAFE.objectFieldOffset @@ -2163,7 +2163,7 @@ (k.getDeclaredField("scanGuard")); nextWorkerNumberOffset = UNSAFE.objectFieldOffset (k.getDeclaredField("nextWorkerNumber")); - Class a = ForkJoinTask[].class; + Class a = ForkJoinTask[].class; ABASE = UNSAFE.arrayBaseOffset(a); s = UNSAFE.arrayIndexScale(a); } catch (Exception e) { diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/util/concurrent/ForkJoinTask.java --- a/jdk/src/share/classes/java/util/concurrent/ForkJoinTask.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/util/concurrent/ForkJoinTask.java Tue Dec 20 15:27:55 2011 -0800 @@ -520,7 +520,7 @@ if (e == null || (ex = e.ex) == null) return null; if (e.thrower != Thread.currentThread().getId()) { - Class ec = ex.getClass(); + Class ec = ex.getClass(); try { Constructor noArgCtor = null; Constructor[] cs = ec.getConstructors();// public ctors only diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/util/concurrent/ForkJoinWorkerThread.java --- a/jdk/src/share/classes/java/util/concurrent/ForkJoinWorkerThread.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/util/concurrent/ForkJoinWorkerThread.java Tue Dec 20 15:27:55 2011 -0800 @@ -192,7 +192,7 @@ /** * The work-stealing queue array. Size must be a power of two. - * Initialized when started (as oposed to when constructed), to + * Initialized when started (as opposed to when constructed), to * improve memory locality. */ ForkJoinTask[] queue; @@ -360,7 +360,7 @@ */ protected void onStart() { queue = new ForkJoinTask[INITIAL_QUEUE_CAPACITY]; - int r = pool.workerSeedGenerator.nextInt(); + int r = ForkJoinPool.workerSeedGenerator.nextInt(); seed = (r == 0) ? 1 : r; // must be nonzero } @@ -846,7 +846,7 @@ (b = v.queueBase) != v.queueTop && (q = v.queue) != null && (i = (q.length - 1) & b) >= 0 && - q[i] == t) { + q[i] == t) { long u = (i << ASHIFT) + ABASE; if (v.queueBase == b && UNSAFE.compareAndSwapObject(q, u, t, null)) { @@ -984,7 +984,7 @@ int s; try { UNSAFE = sun.misc.Unsafe.getUnsafe(); - Class a = ForkJoinTask[].class; + Class a = ForkJoinTask[].class; ABASE = UNSAFE.arrayBaseOffset(a); s = UNSAFE.arrayIndexScale(a); } catch (Exception e) { diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/util/concurrent/LinkedTransferQueue.java --- a/jdk/src/share/classes/java/util/concurrent/LinkedTransferQueue.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/util/concurrent/LinkedTransferQueue.java Tue Dec 20 15:27:55 2011 -0800 @@ -330,8 +330,8 @@ * of less-contended queues. During spins threads check their * interrupt status and generate a thread-local random number * to decide to occasionally perform a Thread.yield. While - * yield has underdefined specs, we assume that might it help, - * and will not hurt in limiting impact of spinning on busy + * yield has underdefined specs, we assume that it might help, + * and will not hurt, in limiting impact of spinning on busy * systems. We also use smaller (1/2) spins for nodes that are * not known to be front but whose predecessors have not * blocked -- these "chained" spins avoid artifacts of @@ -542,7 +542,7 @@ static { try { UNSAFE = sun.misc.Unsafe.getUnsafe(); - Class k = Node.class; + Class k = Node.class; itemOffset = UNSAFE.objectFieldOffset (k.getDeclaredField("item")); nextOffset = UNSAFE.objectFieldOffset @@ -627,7 +627,7 @@ break; // unless slack < 2 } LockSupport.unpark(p.waiter); - return this.cast(item); + return LinkedTransferQueue.cast(item); } } Node n = p.next; @@ -705,7 +705,7 @@ if (item != e) { // matched // assert item != s; s.forgetContents(); // avoid garbage - return this.cast(item); + return LinkedTransferQueue.cast(item); } if ((w.isInterrupted() || (timed && nanos <= 0)) && s.casItem(e, s)) { // cancel @@ -786,7 +786,7 @@ Object item = p.item; if (p.isData) { if (item != null && item != p) - return this.cast(item); + return LinkedTransferQueue.cast(item); } else if (item == null) return null; @@ -1008,7 +1008,6 @@ return false; } - /** * Creates an initially empty {@code LinkedTransferQueue}. */ @@ -1045,7 +1044,8 @@ * return {@code false}. * * @return {@code true} (as specified by - * {@link BlockingQueue#offer(Object,long,TimeUnit) BlockingQueue.offer}) + * {@link java.util.concurrent.BlockingQueue#offer(Object,long,TimeUnit) + * BlockingQueue.offer}) * @throws NullPointerException if the specified element is null */ public boolean offer(E e, long timeout, TimeUnit unit) { @@ -1162,8 +1162,7 @@ if (c == this) throw new IllegalArgumentException(); int n = 0; - E e; - while ( (e = poll()) != null) { + for (E e; (e = poll()) != null;) { c.add(e); ++n; } @@ -1180,8 +1179,7 @@ if (c == this) throw new IllegalArgumentException(); int n = 0; - E e; - while (n < maxElements && (e = poll()) != null) { + for (E e; n < maxElements && (e = poll()) != null;) { c.add(e); ++n; } @@ -1288,7 +1286,8 @@ * {@code LinkedTransferQueue} is not capacity constrained. * * @return {@code Integer.MAX_VALUE} (as specified by - * {@link BlockingQueue#remainingCapacity()}) + * {@link java.util.concurrent.BlockingQueue#remainingCapacity() + * BlockingQueue.remainingCapacity}) */ public int remainingCapacity() { return Integer.MAX_VALUE; @@ -1320,7 +1319,8 @@ throws java.io.IOException, ClassNotFoundException { s.defaultReadObject(); for (;;) { - @SuppressWarnings("unchecked") E item = (E) s.readObject(); + @SuppressWarnings("unchecked") + E item = (E) s.readObject(); if (item == null) break; else @@ -1337,7 +1337,7 @@ static { try { UNSAFE = sun.misc.Unsafe.getUnsafe(); - Class k = LinkedTransferQueue.class; + Class k = LinkedTransferQueue.class; headOffset = UNSAFE.objectFieldOffset (k.getDeclaredField("head")); tailOffset = UNSAFE.objectFieldOffset diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/util/concurrent/Phaser.java --- a/jdk/src/share/classes/java/util/concurrent/Phaser.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/util/concurrent/Phaser.java Tue Dec 20 15:27:55 2011 -0800 @@ -1142,7 +1142,7 @@ static { try { UNSAFE = sun.misc.Unsafe.getUnsafe(); - Class k = Phaser.class; + Class k = Phaser.class; stateOffset = UNSAFE.objectFieldOffset (k.getDeclaredField("state")); } catch (Exception e) { diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/util/concurrent/PriorityBlockingQueue.java --- a/jdk/src/share/classes/java/util/concurrent/PriorityBlockingQueue.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/util/concurrent/PriorityBlockingQueue.java Tue Dec 20 15:27:55 2011 -0800 @@ -94,6 +94,7 @@ * @author Doug Lea * @param the type of elements held in this collection */ +@SuppressWarnings("unchecked") public class PriorityBlockingQueue extends AbstractQueue implements BlockingQueue, java.io.Serializable { private static final long serialVersionUID = 5595510919245408276L; @@ -168,7 +169,7 @@ * to maintain compatibility with previous versions * of this class. Non-null only during serialization/deserialization. */ - private PriorityQueue q; + private PriorityQueue q; /** * Creates a {@code PriorityBlockingQueue} with the default @@ -968,7 +969,7 @@ static { try { UNSAFE = sun.misc.Unsafe.getUnsafe(); - Class k = PriorityBlockingQueue.class; + Class k = PriorityBlockingQueue.class; allocationSpinLockOffset = UNSAFE.objectFieldOffset (k.getDeclaredField("allocationSpinLock")); } catch (Exception e) { diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/util/concurrent/ScheduledThreadPoolExecutor.java --- a/jdk/src/share/classes/java/util/concurrent/ScheduledThreadPoolExecutor.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/util/concurrent/ScheduledThreadPoolExecutor.java Tue Dec 20 15:27:55 2011 -0800 @@ -34,8 +34,10 @@ */ package java.util.concurrent; -import java.util.concurrent.atomic.*; -import java.util.concurrent.locks.*; +import static java.util.concurrent.TimeUnit.NANOSECONDS; +import java.util.concurrent.atomic.AtomicLong; +import java.util.concurrent.locks.Condition; +import java.util.concurrent.locks.ReentrantLock; import java.util.*; /** @@ -166,7 +168,7 @@ * Sequence number to break scheduling ties, and in turn to * guarantee FIFO order among tied entries. */ - private static final AtomicLong sequencer = new AtomicLong(0); + private static final AtomicLong sequencer = new AtomicLong(); /** * Returns current nanosecond time. @@ -231,7 +233,7 @@ } public long getDelay(TimeUnit unit) { - return unit.convert(time - now(), TimeUnit.NANOSECONDS); + return unit.convert(time - now(), NANOSECONDS); } public int compareTo(Delayed other) { @@ -249,8 +251,8 @@ else return 1; } - long d = (getDelay(TimeUnit.NANOSECONDS) - - other.getDelay(TimeUnit.NANOSECONDS)); + long d = (getDelay(NANOSECONDS) - + other.getDelay(NANOSECONDS)); return (d == 0) ? 0 : ((d < 0) ? -1 : 1); } @@ -424,7 +426,7 @@ * @throws IllegalArgumentException if {@code corePoolSize < 0} */ public ScheduledThreadPoolExecutor(int corePoolSize) { - super(corePoolSize, Integer.MAX_VALUE, 0, TimeUnit.NANOSECONDS, + super(corePoolSize, Integer.MAX_VALUE, 0, NANOSECONDS, new DelayedWorkQueue()); } @@ -441,7 +443,7 @@ */ public ScheduledThreadPoolExecutor(int corePoolSize, ThreadFactory threadFactory) { - super(corePoolSize, Integer.MAX_VALUE, 0, TimeUnit.NANOSECONDS, + super(corePoolSize, Integer.MAX_VALUE, 0, NANOSECONDS, new DelayedWorkQueue(), threadFactory); } @@ -458,7 +460,7 @@ */ public ScheduledThreadPoolExecutor(int corePoolSize, RejectedExecutionHandler handler) { - super(corePoolSize, Integer.MAX_VALUE, 0, TimeUnit.NANOSECONDS, + super(corePoolSize, Integer.MAX_VALUE, 0, NANOSECONDS, new DelayedWorkQueue(), handler); } @@ -479,7 +481,7 @@ public ScheduledThreadPoolExecutor(int corePoolSize, ThreadFactory threadFactory, RejectedExecutionHandler handler) { - super(corePoolSize, Integer.MAX_VALUE, 0, TimeUnit.NANOSECONDS, + super(corePoolSize, Integer.MAX_VALUE, 0, NANOSECONDS, new DelayedWorkQueue(), threadFactory, handler); } @@ -508,7 +510,7 @@ private long overflowFree(long delay) { Delayed head = (Delayed) super.getQueue().peek(); if (head != null) { - long headDelay = head.getDelay(TimeUnit.NANOSECONDS); + long headDelay = head.getDelay(NANOSECONDS); if (headDelay < 0 && (delay - headDelay < 0)) delay = Long.MAX_VALUE + headDelay; } @@ -616,7 +618,7 @@ * @throws NullPointerException {@inheritDoc} */ public void execute(Runnable command) { - schedule(command, 0, TimeUnit.NANOSECONDS); + schedule(command, 0, NANOSECONDS); } // Override AbstractExecutorService methods @@ -626,7 +628,7 @@ * @throws NullPointerException {@inheritDoc} */ public Future submit(Runnable task) { - return schedule(task, 0, TimeUnit.NANOSECONDS); + return schedule(task, 0, NANOSECONDS); } /** @@ -634,8 +636,7 @@ * @throws NullPointerException {@inheritDoc} */ public Future submit(Runnable task, T result) { - return schedule(Executors.callable(task, result), - 0, TimeUnit.NANOSECONDS); + return schedule(Executors.callable(task, result), 0, NANOSECONDS); } /** @@ -643,7 +644,7 @@ * @throws NullPointerException {@inheritDoc} */ public Future submit(Callable task) { - return schedule(task, 0, TimeUnit.NANOSECONDS); + return schedule(task, 0, NANOSECONDS); } /** @@ -831,8 +832,8 @@ */ private static final int INITIAL_CAPACITY = 16; - private RunnableScheduledFuture[] queue = - new RunnableScheduledFuture[INITIAL_CAPACITY]; + private RunnableScheduledFuture[] queue = + new RunnableScheduledFuture[INITIAL_CAPACITY]; private final ReentrantLock lock = new ReentrantLock(); private int size = 0; @@ -863,7 +864,7 @@ /** * Set f's heapIndex if it is a ScheduledFutureTask. */ - private void setIndex(RunnableScheduledFuture f, int idx) { + private void setIndex(RunnableScheduledFuture f, int idx) { if (f instanceof ScheduledFutureTask) ((ScheduledFutureTask)f).heapIndex = idx; } @@ -872,10 +873,10 @@ * Sift element added at bottom up to its heap-ordered spot. * Call only when holding lock. */ - private void siftUp(int k, RunnableScheduledFuture key) { + private void siftUp(int k, RunnableScheduledFuture key) { while (k > 0) { int parent = (k - 1) >>> 1; - RunnableScheduledFuture e = queue[parent]; + RunnableScheduledFuture e = queue[parent]; if (key.compareTo(e) >= 0) break; queue[k] = e; @@ -890,11 +891,11 @@ * Sift element added at top down to its heap-ordered spot. * Call only when holding lock. */ - private void siftDown(int k, RunnableScheduledFuture key) { + private void siftDown(int k, RunnableScheduledFuture key) { int half = size >>> 1; while (k < half) { int child = (k << 1) + 1; - RunnableScheduledFuture c = queue[child]; + RunnableScheduledFuture c = queue[child]; int right = child + 1; if (right < size && c.compareTo(queue[right]) > 0) c = queue[child = right]; @@ -959,7 +960,7 @@ setIndex(queue[i], -1); int s = --size; - RunnableScheduledFuture replacement = queue[s]; + RunnableScheduledFuture replacement = queue[s]; queue[s] = null; if (s != i) { siftDown(i, replacement); @@ -990,7 +991,7 @@ return Integer.MAX_VALUE; } - public RunnableScheduledFuture peek() { + public RunnableScheduledFuture peek() { final ReentrantLock lock = this.lock; lock.lock(); try { @@ -1003,7 +1004,7 @@ public boolean offer(Runnable x) { if (x == null) throw new NullPointerException(); - RunnableScheduledFuture e = (RunnableScheduledFuture)x; + RunnableScheduledFuture e = (RunnableScheduledFuture)x; final ReentrantLock lock = this.lock; lock.lock(); try { @@ -1045,9 +1046,9 @@ * holding lock. * @param f the task to remove and return */ - private RunnableScheduledFuture finishPoll(RunnableScheduledFuture f) { + private RunnableScheduledFuture finishPoll(RunnableScheduledFuture f) { int s = --size; - RunnableScheduledFuture x = queue[s]; + RunnableScheduledFuture x = queue[s]; queue[s] = null; if (s != 0) siftDown(0, x); @@ -1055,12 +1056,12 @@ return f; } - public RunnableScheduledFuture poll() { + public RunnableScheduledFuture poll() { final ReentrantLock lock = this.lock; lock.lock(); try { - RunnableScheduledFuture first = queue[0]; - if (first == null || first.getDelay(TimeUnit.NANOSECONDS) > 0) + RunnableScheduledFuture first = queue[0]; + if (first == null || first.getDelay(NANOSECONDS) > 0) return null; else return finishPoll(first); @@ -1069,16 +1070,16 @@ } } - public RunnableScheduledFuture take() throws InterruptedException { + public RunnableScheduledFuture take() throws InterruptedException { final ReentrantLock lock = this.lock; lock.lockInterruptibly(); try { for (;;) { - RunnableScheduledFuture first = queue[0]; + RunnableScheduledFuture first = queue[0]; if (first == null) available.await(); else { - long delay = first.getDelay(TimeUnit.NANOSECONDS); + long delay = first.getDelay(NANOSECONDS); if (delay <= 0) return finishPoll(first); else if (leader != null) @@ -1102,21 +1103,21 @@ } } - public RunnableScheduledFuture poll(long timeout, TimeUnit unit) + public RunnableScheduledFuture poll(long timeout, TimeUnit unit) throws InterruptedException { long nanos = unit.toNanos(timeout); final ReentrantLock lock = this.lock; lock.lockInterruptibly(); try { for (;;) { - RunnableScheduledFuture first = queue[0]; + RunnableScheduledFuture first = queue[0]; if (first == null) { if (nanos <= 0) return null; else nanos = available.awaitNanos(nanos); } else { - long delay = first.getDelay(TimeUnit.NANOSECONDS); + long delay = first.getDelay(NANOSECONDS); if (delay <= 0) return finishPoll(first); if (nanos <= 0) @@ -1148,7 +1149,7 @@ lock.lock(); try { for (int i = 0; i < size; i++) { - RunnableScheduledFuture t = queue[i]; + RunnableScheduledFuture t = queue[i]; if (t != null) { queue[i] = null; setIndex(t, -1); @@ -1164,9 +1165,10 @@ * Return and remove first element only if it is expired. * Used only by drainTo. Call only when holding lock. */ - private RunnableScheduledFuture pollExpired() { - RunnableScheduledFuture first = queue[0]; - if (first == null || first.getDelay(TimeUnit.NANOSECONDS) > 0) + private RunnableScheduledFuture pollExpired() { + // assert lock.isHeldByCurrentThread(); + RunnableScheduledFuture first = queue[0]; + if (first == null || first.getDelay(NANOSECONDS) > 0) return null; return finishPoll(first); } @@ -1179,7 +1181,7 @@ final ReentrantLock lock = this.lock; lock.lock(); try { - RunnableScheduledFuture first; + RunnableScheduledFuture first; int n = 0; while ((first = pollExpired()) != null) { c.add(first); @@ -1201,7 +1203,7 @@ final ReentrantLock lock = this.lock; lock.lock(); try { - RunnableScheduledFuture first; + RunnableScheduledFuture first; int n = 0; while (n < maxElements && (first = pollExpired()) != null) { c.add(first); diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/util/concurrent/SynchronousQueue.java --- a/jdk/src/share/classes/java/util/concurrent/SynchronousQueue.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/util/concurrent/SynchronousQueue.java Tue Dec 20 15:27:55 2011 -0800 @@ -36,7 +36,6 @@ package java.util.concurrent; import java.util.concurrent.locks.*; -import java.util.concurrent.atomic.*; import java.util.*; /** @@ -163,7 +162,7 @@ /** * Shared internal API for dual stacks and queues. */ - abstract static class Transferer { + abstract static class Transferer { /** * Performs a put or take. * @@ -177,7 +176,7 @@ * the caller can distinguish which of these occurred * by checking Thread.interrupted. */ - abstract Object transfer(Object e, boolean timed, long nanos); + abstract E transfer(E e, boolean timed, long nanos); } /** The number of CPUs, for spin control */ @@ -206,7 +205,7 @@ static final long spinForTimeoutThreshold = 1000L; /** Dual stack */ - static final class TransferStack extends Transferer { + static final class TransferStack extends Transferer { /* * This extends Scherer-Scott dual stack algorithm, differing, * among other ways, by using "covering" nodes rather than @@ -286,7 +285,7 @@ static { try { UNSAFE = sun.misc.Unsafe.getUnsafe(); - Class k = SNode.class; + Class k = SNode.class; matchOffset = UNSAFE.objectFieldOffset (k.getDeclaredField("match")); nextOffset = UNSAFE.objectFieldOffset @@ -322,7 +321,8 @@ /** * Puts or takes an item. */ - Object transfer(Object e, boolean timed, long nanos) { + @SuppressWarnings("unchecked") + E transfer(E e, boolean timed, long nanos) { /* * Basic algorithm is to loop trying one of three actions: * @@ -363,7 +363,7 @@ } if ((h = head) != null && h.next == s) casHead(h, s.next); // help s's fulfiller - return (mode == REQUEST) ? m.item : s.item; + return (E) ((mode == REQUEST) ? m.item : s.item); } } else if (!isFulfilling(h.mode)) { // try to fulfill if (h.isCancelled()) // already cancelled @@ -379,7 +379,7 @@ SNode mn = m.next; if (m.tryMatch(s)) { casHead(s, mn); // pop both s and m - return (mode == REQUEST) ? m.item : s.item; + return (E) ((mode == REQUEST) ? m.item : s.item); } else // lost match s.casNext(m, mn); // help unlink } @@ -513,7 +513,7 @@ static { try { UNSAFE = sun.misc.Unsafe.getUnsafe(); - Class k = TransferStack.class; + Class k = TransferStack.class; headOffset = UNSAFE.objectFieldOffset (k.getDeclaredField("head")); } catch (Exception e) { @@ -523,7 +523,7 @@ } /** Dual Queue */ - static final class TransferQueue extends Transferer { + static final class TransferQueue extends Transferer { /* * This extends Scherer-Scott dual queue algorithm, differing, * among other ways, by using modes within nodes rather than @@ -583,7 +583,7 @@ static { try { UNSAFE = sun.misc.Unsafe.getUnsafe(); - Class k = QNode.class; + Class k = QNode.class; itemOffset = UNSAFE.objectFieldOffset (k.getDeclaredField("item")); nextOffset = UNSAFE.objectFieldOffset @@ -640,7 +640,8 @@ /** * Puts or takes an item. */ - Object transfer(Object e, boolean timed, long nanos) { + @SuppressWarnings("unchecked") + E transfer(E e, boolean timed, long nanos) { /* Basic algorithm is to loop trying to take either of * two actions: * @@ -703,7 +704,7 @@ s.item = s; s.waiter = null; } - return (x != null) ? x : e; + return (x != null) ? (E)x : e; } else { // complementary-mode QNode m = h.next; // node to fulfill @@ -720,7 +721,7 @@ advanceHead(h, m); // successfully fulfilled LockSupport.unpark(m.waiter); - return (x != null) ? x : e; + return (x != null) ? (E)x : e; } } } @@ -734,7 +735,7 @@ * @param nanos timeout value * @return matched item, or s if cancelled */ - Object awaitFulfill(QNode s, Object e, boolean timed, long nanos) { + Object awaitFulfill(QNode s, E e, boolean timed, long nanos) { /* Same idea as TransferStack.awaitFulfill */ long lastTime = timed ? System.nanoTime() : 0; Thread w = Thread.currentThread(); @@ -827,7 +828,7 @@ static { try { UNSAFE = sun.misc.Unsafe.getUnsafe(); - Class k = TransferQueue.class; + Class k = TransferQueue.class; headOffset = UNSAFE.objectFieldOffset (k.getDeclaredField("head")); tailOffset = UNSAFE.objectFieldOffset @@ -847,7 +848,7 @@ * isn't a noticeable performance penalty for using volatile * instead of final here. */ - private transient volatile Transferer transferer; + private transient volatile Transferer transferer; /** * Creates a SynchronousQueue with nonfair access policy. @@ -863,7 +864,7 @@ * access; otherwise the order is unspecified. */ public SynchronousQueue(boolean fair) { - transferer = fair ? new TransferQueue() : new TransferStack(); + transferer = fair ? new TransferQueue() : new TransferStack(); } /** @@ -922,9 +923,9 @@ * @throws InterruptedException {@inheritDoc} */ public E take() throws InterruptedException { - Object e = transferer.transfer(null, false, 0); + E e = transferer.transfer(null, false, 0); if (e != null) - return (E)e; + return e; Thread.interrupted(); throw new InterruptedException(); } @@ -939,9 +940,9 @@ * @throws InterruptedException {@inheritDoc} */ public E poll(long timeout, TimeUnit unit) throws InterruptedException { - Object e = transferer.transfer(null, true, unit.toNanos(timeout)); + E e = transferer.transfer(null, true, unit.toNanos(timeout)); if (e != null || !Thread.interrupted()) - return (E)e; + return e; throw new InterruptedException(); } @@ -953,7 +954,7 @@ * element is available. */ public E poll() { - return (E)transferer.transfer(null, true, 0); + return transferer.transfer(null, true, 0); } /** @@ -1065,8 +1066,19 @@ * * @return an empty iterator */ + @SuppressWarnings("unchecked") public Iterator iterator() { - return Collections.emptyIterator(); + return (Iterator) EmptyIterator.EMPTY_ITERATOR; + } + + // Replicated from a previous version of Collections + private static class EmptyIterator implements Iterator { + static final EmptyIterator EMPTY_ITERATOR + = new EmptyIterator(); + + public boolean hasNext() { return false; } + public E next() { throw new NoSuchElementException(); } + public void remove() { throw new IllegalStateException(); } } /** @@ -1103,8 +1115,7 @@ if (c == this) throw new IllegalArgumentException(); int n = 0; - E e; - while ( (e = poll()) != null) { + for (E e; (e = poll()) != null;) { c.add(e); ++n; } @@ -1123,8 +1134,7 @@ if (c == this) throw new IllegalArgumentException(); int n = 0; - E e; - while (n < maxElements && (e = poll()) != null) { + for (E e; n < maxElements && (e = poll()) != null;) { c.add(e); ++n; } @@ -1139,6 +1149,7 @@ * object is ever serialized or deserialized. */ + @SuppressWarnings("serial") static class WaitQueue implements java.io.Serializable { } static class LifoWaitQueue extends WaitQueue { private static final long serialVersionUID = -3633113410248163686L; @@ -1151,7 +1162,7 @@ private WaitQueue waitingConsumers; /** - * Save the state to a stream (that is, serialize it). + * Saves the state to a stream (that is, serializes it). * * @param s the stream */ @@ -1175,9 +1186,9 @@ throws java.io.IOException, ClassNotFoundException { s.defaultReadObject(); if (waitingProducers instanceof FifoWaitQueue) - transferer = new TransferQueue(); + transferer = new TransferQueue(); else - transferer = new TransferStack(); + transferer = new TransferStack(); } // Unsafe mechanics diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/util/jar/JarFile.java --- a/jdk/src/share/classes/java/util/jar/JarFile.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/util/jar/JarFile.java Tue Dec 20 15:27:55 2011 -0800 @@ -183,7 +183,7 @@ } else { man = new Manifest(super.getInputStream(manEntry)); } - manRef = new SoftReference(man); + manRef = new SoftReference<>(man); } } return man; @@ -233,13 +233,13 @@ * Returns an enumeration of the zip file entries. */ public Enumeration entries() { - final Enumeration enum_ = super.entries(); + final Enumeration enum_ = super.entries(); return new Enumeration() { public boolean hasMoreElements() { return enum_.hasMoreElements(); } public JarFileEntry nextElement() { - ZipEntry ze = (ZipEntry)enum_.nextElement(); + ZipEntry ze = enum_.nextElement(); return new JarFileEntry(ze); } }; @@ -608,7 +608,7 @@ } // screen out entries which are never signed - final Enumeration enum_ = super.entries(); + final Enumeration enum_ = super.entries(); return new Enumeration() { ZipEntry entry; @@ -618,7 +618,7 @@ return true; } while (enum_.hasMoreElements()) { - ZipEntry ze = (ZipEntry) enum_.nextElement(); + ZipEntry ze = enum_.nextElement(); if (JarVerifier.isSigningRelated(ze.getName())) { continue; } @@ -649,7 +649,7 @@ * JAR file has no signed content. Is there a non-signing * code source? */ - Enumeration unsigned = unsignedEntryNames(); + Enumeration unsigned = unsignedEntryNames(); if (unsigned.hasMoreElements()) { return new CodeSource[]{JarVerifier.getUnsignedCS(url)}; } else { @@ -658,7 +658,7 @@ } private Enumeration unsignedEntryNames() { - final Enumeration entries = entries(); + final Enumeration entries = entries(); return new Enumeration() { String name; @@ -673,7 +673,7 @@ } while (entries.hasMoreElements()) { String value; - ZipEntry e = (ZipEntry) entries.nextElement(); + ZipEntry e = entries.nextElement(); value = e.getName(); if (e.isDirectory() || JarVerifier.isSigningRelated(value)) { continue; @@ -726,11 +726,11 @@ } } - List getManifestDigests() { + List getManifestDigests() { ensureInitialization(); if (jv != null) { return jv.getManifestDigests(); } - return new ArrayList(); + return new ArrayList(); } } diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/util/jar/Manifest.java --- a/jdk/src/share/classes/java/util/jar/Manifest.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/util/jar/Manifest.java Tue Dec 20 15:27:55 2011 -0800 @@ -51,7 +51,7 @@ private Attributes attr = new Attributes(); // manifest entries - private Map entries = new HashMap(); + private Map entries = new HashMap<>(); /** * Constructs a new, empty Manifest. @@ -148,11 +148,11 @@ // Write out the main attributes for the manifest attr.writeMain(dos); // Now write out the pre-entry attributes - Iterator it = entries.entrySet().iterator(); + Iterator> it = entries.entrySet().iterator(); while (it.hasNext()) { - Map.Entry e = (Map.Entry)it.next(); + Map.Entry e = it.next(); StringBuffer buffer = new StringBuffer("Name: "); - String value = (String)e.getKey(); + String value = e.getKey(); if (value != null) { byte[] vb = value.getBytes("UTF8"); value = new String(vb, 0, 0, vb.length); @@ -161,7 +161,7 @@ buffer.append("\r\n"); make72Safe(buffer); dos.writeBytes(buffer.toString()); - ((Attributes)e.getValue()).write(dos); + e.getValue().write(dos); } dos.flush(); } diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/util/logging/LogManager.java --- a/jdk/src/share/classes/java/util/logging/LogManager.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/util/logging/LogManager.java Tue Dec 20 15:27:55 2011 -0800 @@ -179,10 +179,10 @@ cname = System.getProperty("java.util.logging.manager"); if (cname != null) { try { - Class clz = ClassLoader.getSystemClassLoader().loadClass(cname); + Class clz = ClassLoader.getSystemClassLoader().loadClass(cname); manager = (LogManager) clz.newInstance(); } catch (ClassNotFoundException ex) { - Class clz = Thread.currentThread().getContextClassLoader().loadClass(cname); + Class clz = Thread.currentThread().getContextClassLoader().loadClass(cname); manager = (LogManager) clz.newInstance(); } } @@ -200,8 +200,8 @@ // Adding the global Logger. Doing so in the Logger. // would deadlock with the LogManager.. - Logger.global.setLogManager(manager); - manager.addLogger(Logger.global); + Logger.getGlobal().setLogManager(manager); + manager.addLogger(Logger.getGlobal()); // We don't call readConfiguration() here, as we may be running // very early in the JVM startup sequence. Instead readConfiguration @@ -415,8 +415,8 @@ for (int i = 0; i < names.length; i++) { String word = names[i]; try { - Class clz = ClassLoader.getSystemClassLoader().loadClass(word); - Handler hdl = (Handler) clz.newInstance(); + Class clz = ClassLoader.getSystemClassLoader().loadClass(word); + Handler hdl = (Handler) clz.newInstance(); try { // Check if there is a property defining the // this handler's level. @@ -782,11 +782,11 @@ // responsibility to initialize the logging configuration, by // calling readConfiguration(InputStream) with a suitable stream. try { - Class clz = ClassLoader.getSystemClassLoader().loadClass(cname); + Class clz = ClassLoader.getSystemClassLoader().loadClass(cname); clz.newInstance(); return; } catch (ClassNotFoundException ex) { - Class clz = Thread.currentThread().getContextClassLoader().loadClass(cname); + Class clz = Thread.currentThread().getContextClassLoader().loadClass(cname); clz.newInstance(); return; } @@ -837,9 +837,9 @@ // the global handlers, if they haven't been initialized yet. initializedGlobalHandlers = true; } - Enumeration enum_ = getLoggerNames(); + Enumeration enum_ = getLoggerNames(); while (enum_.hasMoreElements()) { - String name = (String)enum_.nextElement(); + String name = enum_.nextElement(); resetLogger(name); } } @@ -926,7 +926,7 @@ for (int i = 0; i < names.length; i++) { String word = names[i]; try { - Class clz = ClassLoader.getSystemClassLoader().loadClass(word); + Class clz = ClassLoader.getSystemClassLoader().loadClass(word); clz.newInstance(); } catch (Exception ex) { System.err.println("Can't load config class \"" + word + "\""); @@ -1024,7 +1024,7 @@ String val = getProperty(name); try { if (val != null) { - Class clz = ClassLoader.getSystemClassLoader().loadClass(val); + Class clz = ClassLoader.getSystemClassLoader().loadClass(val); return (Filter) clz.newInstance(); } } catch (Exception ex) { @@ -1045,7 +1045,7 @@ String val = getProperty(name); try { if (val != null) { - Class clz = ClassLoader.getSystemClassLoader().loadClass(val); + Class clz = ClassLoader.getSystemClassLoader().loadClass(val); return (Formatter) clz.newInstance(); } } catch (Exception ex) { @@ -1163,7 +1163,7 @@ // Private method to be called when the configuration has // changed to apply any level settings to any pre-existing loggers. synchronized private void setLevelsOnExistingLoggers() { - Enumeration enum_ = props.propertyNames(); + Enumeration enum_ = props.propertyNames(); while (enum_.hasMoreElements()) { String key = (String)enum_.nextElement(); if (!key.endsWith(".level")) { diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/util/prefs/Preferences.java --- a/jdk/src/share/classes/java/util/prefs/Preferences.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/util/prefs/Preferences.java Tue Dec 20 15:27:55 2011 -0800 @@ -413,7 +413,7 @@ * @throws IllegalArgumentException if the package has node preferences * node associated with it. */ - private static String nodeName(Class c) { + private static String nodeName(Class c) { if (c.isArray()) throw new IllegalArgumentException( "Arrays have no associated preferences node."); diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/util/prefs/XmlSupport.java --- a/jdk/src/share/classes/java/util/prefs/XmlSupport.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/util/prefs/XmlSupport.java Tue Dec 20 15:27:55 2011 -0800 @@ -106,7 +106,7 @@ xmlRoot.setAttribute("type", (p.isUserNode() ? "user" : "system")); // Get bottom-up list of nodes from p to root, excluding root - List ancestors = new ArrayList(); + List ancestors = new ArrayList<>(); for (Preferences kid = p, dad = kid.parent(); dad != null; kid = dad, dad = kid.parent()) { @@ -116,7 +116,7 @@ for (int i=ancestors.size()-1; i >= 0; i--) { e.appendChild(doc.createElement("map")); e = (Element) e.appendChild(doc.createElement("node")); - e.setAttribute("name", ((Preferences)ancestors.get(i)).name()); + e.setAttribute("name", ancestors.get(i).name()); } putPreferencesInXml(e, doc, p, subTree); @@ -339,17 +339,17 @@ * @throws IOException if writing to the specified output stream * results in an IOException. */ - static void exportMap(OutputStream os, Map map) throws IOException { + static void exportMap(OutputStream os, Map map) throws IOException { Document doc = createPrefsDoc("map"); Element xmlMap = doc.getDocumentElement( ) ; xmlMap.setAttribute("MAP_XML_VERSION", MAP_XML_VERSION); - for (Iterator i = map.entrySet().iterator(); i.hasNext(); ) { - Map.Entry e = (Map.Entry) i.next(); + for (Iterator> i = map.entrySet().iterator(); i.hasNext(); ) { + Map.Entry e = i.next(); Element xe = (Element) xmlMap.appendChild(doc.createElement("entry")); - xe.setAttribute("key", (String) e.getKey()); - xe.setAttribute("value", (String) e.getValue()); + xe.setAttribute("key", e.getKey()); + xe.setAttribute("value", e.getValue()); } writeDoc(doc, os); @@ -368,7 +368,7 @@ * @throws InvalidPreferencesFormatException Data on input stream does not * constitute a valid XML document with the mandated document type. */ - static void importMap(InputStream is, Map m) + static void importMap(InputStream is, Map m) throws IOException, InvalidPreferencesFormatException { try { diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/util/regex/Pattern.java --- a/jdk/src/share/classes/java/util/regex/Pattern.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/util/regex/Pattern.java Tue Dec 20 15:27:55 2011 -0800 @@ -1583,13 +1583,26 @@ return; int j = i; i += 2; - int[] newtemp = new int[j + 2*(pLen-i) + 2]; + int[] newtemp = new int[j + 3*(pLen-i) + 2]; System.arraycopy(temp, 0, newtemp, 0, j); boolean inQuote = true; + boolean beginQuote = true; while (i < pLen) { int c = temp[i++]; - if (! ASCII.isAscii(c) || ASCII.isAlnum(c)) { + if (!ASCII.isAscii(c) || ASCII.isAlpha(c)) { + newtemp[j++] = c; + } else if (ASCII.isDigit(c)) { + if (beginQuote) { + /* + * A unicode escape \[0xu] could be before this quote, + * and we don't want this numeric char to processed as + * part of the escape. + */ + newtemp[j++] = '\\'; + newtemp[j++] = 'x'; + newtemp[j++] = '3'; + } newtemp[j++] = c; } else if (c != '\\') { if (inQuote) newtemp[j++] = '\\'; @@ -1606,12 +1619,16 @@ if (temp[i] == 'Q') { i++; inQuote = true; + beginQuote = true; + continue; } else { newtemp[j++] = c; if (i != pLen) newtemp[j++] = temp[i++]; } } + + beginQuote = false; } patternLength = j; diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/java/util/zip/ZipEntry.java --- a/jdk/src/share/classes/java/util/zip/ZipEntry.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/java/util/zip/ZipEntry.java Tue Dec 20 15:27:55 2011 -0800 @@ -281,6 +281,7 @@ * Converts DOS time to Java time (number of milliseconds since epoch). */ private static long dosToJavaTime(long dtime) { + @SuppressWarnings("deprecation") // Use of date constructor. Date d = new Date((int)(((dtime >> 25) & 0x7f) + 80), (int)(((dtime >> 21) & 0x0f) - 1), (int)((dtime >> 16) & 0x1f), @@ -293,6 +294,7 @@ /* * Converts Java time to DOS time. */ + @SuppressWarnings("deprecation") // Use of date methods private static long javaToDosTime(long time) { Date d = new Date(time); int year = d.getYear() + 1900; diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/javax/script/ScriptException.java --- a/jdk/src/share/classes/javax/script/ScriptException.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/javax/script/ScriptException.java Tue Dec 20 15:27:55 2011 -0800 @@ -36,6 +36,8 @@ */ public class ScriptException extends Exception { + private static final long serialVersionUID = 8265071037049225001L; + private String fileName; private int lineNumber; private int columnNumber; diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/javax/xml/crypto/NodeSetData.java --- a/jdk/src/share/classes/javax/xml/crypto/NodeSetData.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/javax/xml/crypto/NodeSetData.java Tue Dec 20 15:27:55 2011 -0800 @@ -52,5 +52,6 @@ * @return an Iterator over the nodes in this * NodeSetData in document order */ + @SuppressWarnings("rawtypes") Iterator iterator(); } diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/javax/xml/crypto/dom/DOMCryptoContext.java --- a/jdk/src/share/classes/javax/xml/crypto/dom/DOMCryptoContext.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/javax/xml/crypto/dom/DOMCryptoContext.java Tue Dec 20 15:27:55 2011 -0800 @@ -47,13 +47,13 @@ */ public class DOMCryptoContext implements XMLCryptoContext { - private HashMap nsMap = new HashMap(); - private HashMap idMap = new HashMap(); - private HashMap objMap = new HashMap(); + private HashMap nsMap = new HashMap<>(); + private HashMap idMap = new HashMap<>(); + private HashMap objMap = new HashMap<>(); private String baseURI; private KeySelector ks; private URIDereferencer dereferencer; - private HashMap propMap = new HashMap(); + private HashMap propMap = new HashMap<>(); private String defaultPrefix; /** @@ -73,7 +73,7 @@ if (namespaceURI == null) { throw new NullPointerException("namespaceURI cannot be null"); } - String prefix = (String) nsMap.get(namespaceURI); + String prefix = nsMap.get(namespaceURI); return (prefix != null ? prefix : defaultPrefix); } @@ -87,7 +87,7 @@ if (namespaceURI == null) { throw new NullPointerException("namespaceURI is null"); } - return (String) nsMap.put(namespaceURI, prefix); + return nsMap.put(namespaceURI, prefix); } public String getDefaultNamespacePrefix() { @@ -170,7 +170,7 @@ if (idValue == null) { throw new NullPointerException("idValue is null"); } - return (Element) idMap.get(idValue); + return idMap.get(idValue); } /** @@ -219,6 +219,7 @@ * * @return a read-only iterator over the set of mappings */ + @SuppressWarnings("rawtypes") public Iterator iterator() { return Collections.unmodifiableMap(idMap).entrySet().iterator(); } diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/javax/xml/crypto/dsig/Manifest.java --- a/jdk/src/share/classes/javax/xml/crypto/dsig/Manifest.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/javax/xml/crypto/dsig/Manifest.java Tue Dec 20 15:27:55 2011 -0800 @@ -86,5 +86,6 @@ * * @return an unmodifiable list of one or more References */ + @SuppressWarnings("rawtypes") List getReferences(); } diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/javax/xml/crypto/dsig/Reference.java --- a/jdk/src/share/classes/javax/xml/crypto/dsig/Reference.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/javax/xml/crypto/dsig/Reference.java Tue Dec 20 15:27:55 2011 -0800 @@ -85,6 +85,7 @@ * @return an unmodifiable list of Transforms * (may be empty but never null) */ + @SuppressWarnings("rawtypes") List getTransforms(); /** diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/javax/xml/crypto/dsig/SignatureProperties.java --- a/jdk/src/share/classes/javax/xml/crypto/dsig/SignatureProperties.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/javax/xml/crypto/dsig/SignatureProperties.java Tue Dec 20 15:27:55 2011 -0800 @@ -87,5 +87,6 @@ * @return an unmodifiable list of one or more * SignaturePropertys */ + @SuppressWarnings("rawtypes") List getProperties(); } diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/javax/xml/crypto/dsig/SignatureProperty.java --- a/jdk/src/share/classes/javax/xml/crypto/dsig/SignatureProperty.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/javax/xml/crypto/dsig/SignatureProperty.java Tue Dec 20 15:27:55 2011 -0800 @@ -91,5 +91,6 @@ * * @return an unmodifiable list of one or more XMLStructures */ + @SuppressWarnings("rawtypes") List getContent(); } diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/javax/xml/crypto/dsig/SignedInfo.java --- a/jdk/src/share/classes/javax/xml/crypto/dsig/SignedInfo.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/javax/xml/crypto/dsig/SignedInfo.java Tue Dec 20 15:27:55 2011 -0800 @@ -80,6 +80,7 @@ * * @return an unmodifiable list of one or more {@link Reference}s */ + @SuppressWarnings("rawtypes") List getReferences(); /** diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/javax/xml/crypto/dsig/TransformService.java --- a/jdk/src/share/classes/javax/xml/crypto/dsig/TransformService.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/javax/xml/crypto/dsig/TransformService.java Tue Dec 20 15:27:55 2011 -0800 @@ -157,9 +157,9 @@ if (mechanismType.equals("DOM")) { dom = true; } - List services = GetInstance.getServices("TransformService", algorithm); - for (Iterator t = services.iterator(); t.hasNext(); ) { - Service s = (Service)t.next(); + List services = GetInstance.getServices("TransformService", algorithm); + for (Iterator t = services.iterator(); t.hasNext(); ) { + Service s = t.next(); String value = s.getAttribute("MechanismType"); if ((value == null && dom) || (value != null && value.equals(mechanismType))) { @@ -277,7 +277,7 @@ + " mechanism not available"); } - private static class MechanismMapEntry implements Map.Entry { + private static class MechanismMapEntry implements Map.Entry { private final String mechanism; private final String algorithm; private final String key; @@ -290,19 +290,19 @@ if (!(o instanceof Map.Entry)) { return false; } - Map.Entry e = (Map.Entry) o; + Map.Entry e = (Map.Entry) o; return (getKey()==null ? e.getKey()==null : getKey().equals(e.getKey())) && (getValue()==null ? e.getValue()==null : getValue().equals(e.getValue())); } - public Object getKey() { + public String getKey() { return key; } - public Object getValue() { + public String getValue() { return mechanism; } - public Object setValue(Object value) { + public String setValue(String value) { throw new UnsupportedOperationException(); } public int hashCode() { diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/javax/xml/crypto/dsig/XMLObject.java --- a/jdk/src/share/classes/javax/xml/crypto/dsig/XMLObject.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/javax/xml/crypto/dsig/XMLObject.java Tue Dec 20 15:27:55 2011 -0800 @@ -100,6 +100,7 @@ * @return an unmodifiable list of XMLStructures (may be empty * but never null) */ + @SuppressWarnings("rawtypes") List getContent(); /** diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/javax/xml/crypto/dsig/XMLSignature.java --- a/jdk/src/share/classes/javax/xml/crypto/dsig/XMLSignature.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/javax/xml/crypto/dsig/XMLSignature.java Tue Dec 20 15:27:55 2011 -0800 @@ -136,6 +136,7 @@ * @return an unmodifiable list of XMLObjects (may be empty * but never null) */ + @SuppressWarnings("rawtypes") List getObjects(); /** diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/javax/xml/crypto/dsig/XMLSignatureFactory.java --- a/jdk/src/share/classes/javax/xml/crypto/dsig/XMLSignatureFactory.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/javax/xml/crypto/dsig/XMLSignatureFactory.java Tue Dec 20 15:27:55 2011 -0800 @@ -365,6 +365,7 @@ * @throws ClassCastException if any of the objects are not of * type XMLObject */ + @SuppressWarnings("rawtypes") public abstract XMLSignature newXMLSignature(SignedInfo si, KeyInfo ki, List objects, String id, String signatureValueId); @@ -398,6 +399,7 @@ * compliant * @throws NullPointerException if dm is null */ + @SuppressWarnings("rawtypes") public abstract Reference newReference(String uri, DigestMethod dm, List transforms, String type, String id); @@ -428,6 +430,7 @@ * @throws NullPointerException if dm or * digestValue is null */ + @SuppressWarnings("rawtypes") public abstract Reference newReference(String uri, DigestMethod dm, List transforms, String type, String id, byte[] digestValue); @@ -470,6 +473,7 @@ * appliedTransforms or result is * null */ + @SuppressWarnings("rawtypes") public abstract Reference newReference(String uri, DigestMethod dm, List appliedTransforms, Data result, List transforms, String type, String id); @@ -489,6 +493,7 @@ * @throws NullPointerException if any of the parameters * are null */ + @SuppressWarnings("rawtypes") public abstract SignedInfo newSignedInfo(CanonicalizationMethod cm, SignatureMethod sm, List references); @@ -507,6 +512,7 @@ * @throws NullPointerException if cm, sm, or * references are null */ + @SuppressWarnings("rawtypes") public abstract SignedInfo newSignedInfo(CanonicalizationMethod cm, SignatureMethod sm, List references, String id); @@ -524,6 +530,7 @@ * @throws ClassCastException if content contains any * entries that are not of type {@link XMLStructure} */ + @SuppressWarnings("rawtypes") public abstract XMLObject newXMLObject(List content, String id, String mimeType, String encoding); @@ -540,6 +547,7 @@ * @throws ClassCastException if references contains any * entries that are not of type {@link Reference} */ + @SuppressWarnings("rawtypes") public abstract Manifest newManifest(List references); /** @@ -556,6 +564,7 @@ * @throws ClassCastException if references contains any * entries that are not of type {@link Reference} */ + @SuppressWarnings("rawtypes") public abstract Manifest newManifest(List references, String id); /** @@ -574,6 +583,7 @@ * @throws ClassCastException if content contains any * entries that are not of type {@link XMLStructure} */ + @SuppressWarnings("rawtypes") public abstract SignatureProperty newSignatureProperty (List content, String target, String id); @@ -592,6 +602,7 @@ * @throws ClassCastException if properties contains any * entries that are not of type {@link SignatureProperty} */ + @SuppressWarnings("rawtypes") public abstract SignatureProperties newSignatureProperties (List properties, String id); diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/javax/xml/crypto/dsig/keyinfo/KeyInfo.java --- a/jdk/src/share/classes/javax/xml/crypto/dsig/keyinfo/KeyInfo.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/javax/xml/crypto/dsig/keyinfo/KeyInfo.java Tue Dec 20 15:27:55 2011 -0800 @@ -94,6 +94,7 @@ * in this KeyInfo. Never returns null or an * empty list. */ + @SuppressWarnings("rawtypes") List getContent(); /** diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/javax/xml/crypto/dsig/keyinfo/KeyInfoFactory.java --- a/jdk/src/share/classes/javax/xml/crypto/dsig/keyinfo/KeyInfoFactory.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/javax/xml/crypto/dsig/keyinfo/KeyInfoFactory.java Tue Dec 20 15:27:55 2011 -0800 @@ -305,6 +305,7 @@ * @throws ClassCastException if content contains any entries * that are not of type {@link XMLStructure} */ + @SuppressWarnings("rawtypes") public abstract KeyInfo newKeyInfo(List content); /** @@ -324,6 +325,7 @@ * @throws ClassCastException if content contains any entries * that are not of type {@link XMLStructure} */ + @SuppressWarnings("rawtypes") public abstract KeyInfo newKeyInfo(List content, String id); /** @@ -385,6 +387,7 @@ * @throws ClassCastException if other contains any * entries that are not of type {@link XMLStructure} */ + @SuppressWarnings("rawtypes") public abstract PGPData newPGPData(byte[] keyId, byte[] keyPacket, List other); @@ -408,6 +411,7 @@ * @throws ClassCastException if other contains any * entries that are not of type {@link XMLStructure} */ + @SuppressWarnings("rawtypes") public abstract PGPData newPGPData(byte[] keyPacket, List other); /** @@ -439,6 +443,7 @@ * @throws ClassCastException if transforms contains any * entries that are not of type {@link Transform} */ + @SuppressWarnings("rawtypes") public abstract RetrievalMethod newRetrievalMethod(String uri, String type, List transforms); @@ -464,6 +469,7 @@ * @throws ClassCastException if content contains any entries * that are not of one of the valid types mentioned above */ + @SuppressWarnings("rawtypes") public abstract X509Data newX509Data(List content); /** diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/javax/xml/crypto/dsig/keyinfo/PGPData.java --- a/jdk/src/share/classes/javax/xml/crypto/dsig/keyinfo/PGPData.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/javax/xml/crypto/dsig/keyinfo/PGPData.java Tue Dec 20 15:27:55 2011 -0800 @@ -112,5 +112,6 @@ * @return an unmodifiable list of XMLStructures (may be * empty, but never null) */ + @SuppressWarnings("rawtypes") List getExternalElements(); } diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/javax/xml/crypto/dsig/keyinfo/RetrievalMethod.java --- a/jdk/src/share/classes/javax/xml/crypto/dsig/keyinfo/RetrievalMethod.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/javax/xml/crypto/dsig/keyinfo/RetrievalMethod.java Tue Dec 20 15:27:55 2011 -0800 @@ -80,6 +80,7 @@ * @return an unmodifiable list of Transform objects (may be * empty but never null). */ + @SuppressWarnings("rawtypes") List getTransforms(); /** diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/javax/xml/crypto/dsig/keyinfo/X509Data.java --- a/jdk/src/share/classes/javax/xml/crypto/dsig/keyinfo/X509Data.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/javax/xml/crypto/dsig/keyinfo/X509Data.java Tue Dec 20 15:27:55 2011 -0800 @@ -109,5 +109,6 @@ * @return an unmodifiable list of the content in this X509Data * (never null or empty) */ + @SuppressWarnings("rawtypes") List getContent(); } diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/javax/xml/crypto/dsig/spec/ExcC14NParameterSpec.java --- a/jdk/src/share/classes/javax/xml/crypto/dsig/spec/ExcC14NParameterSpec.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/javax/xml/crypto/dsig/spec/ExcC14NParameterSpec.java Tue Dec 20 15:27:55 2011 -0800 @@ -59,7 +59,7 @@ */ public final class ExcC14NParameterSpec implements C14NMethodParameterSpec { - private List preList; + private List preList; /** * Indicates the default namespace ("#default"). @@ -71,7 +71,7 @@ * list. */ public ExcC14NParameterSpec() { - preList = Collections.EMPTY_LIST; + preList = Collections.emptyList(); } /** @@ -86,17 +86,22 @@ * @throws ClassCastException if any of the entries in the list are not * of type String */ + @SuppressWarnings("rawtypes") public ExcC14NParameterSpec(List prefixList) { if (prefixList == null) { throw new NullPointerException("prefixList cannot be null"); } - this.preList = new ArrayList(prefixList); - for (int i = 0, size = preList.size(); i < size; i++) { - if (!(preList.get(i) instanceof String)) { + List copy = new ArrayList<>((List)prefixList); + for (int i = 0, size = copy.size(); i < size; i++) { + if (!(copy.get(i) instanceof String)) { throw new ClassCastException("not a String"); } } - preList = Collections.unmodifiableList(preList); + + @SuppressWarnings("unchecked") + List temp = (List)copy; + + preList = Collections.unmodifiableList(temp); } /** @@ -109,6 +114,7 @@ * @return the inclusive namespace prefix list (may be empty but never * null) */ + @SuppressWarnings("rawtypes") public List getPrefixList() { return preList; } diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/javax/xml/crypto/dsig/spec/XPathFilter2ParameterSpec.java --- a/jdk/src/share/classes/javax/xml/crypto/dsig/spec/XPathFilter2ParameterSpec.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/javax/xml/crypto/dsig/spec/XPathFilter2ParameterSpec.java Tue Dec 20 15:27:55 2011 -0800 @@ -46,7 +46,7 @@ */ public final class XPathFilter2ParameterSpec implements TransformParameterSpec { - private final List xPathList; + private final List xPathList; /** * Creates an XPathFilter2ParameterSpec. @@ -59,11 +59,12 @@ * @throws NullPointerException if xPathList is * null */ + @SuppressWarnings("rawtypes") public XPathFilter2ParameterSpec(List xPathList) { if (xPathList == null) { throw new NullPointerException("xPathList cannot be null"); } - List xPathListCopy = new ArrayList(xPathList); + List xPathListCopy = new ArrayList<>((List)xPathList); if (xPathListCopy.isEmpty()) { throw new IllegalArgumentException("xPathList cannot be empty"); } @@ -74,7 +75,11 @@ ("xPathList["+i+"] is not a valid type"); } } - this.xPathList = Collections.unmodifiableList(xPathListCopy); + + @SuppressWarnings("unchecked") + List temp = (List)xPathListCopy; + + this.xPathList = Collections.unmodifiableList(temp); } /** @@ -86,6 +91,7 @@ * @return a List of XPathType objects * (never null or empty) */ + @SuppressWarnings("rawtypes") public List getXPathList() { return xPathList; } diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/javax/xml/crypto/dsig/spec/XPathFilterParameterSpec.java --- a/jdk/src/share/classes/javax/xml/crypto/dsig/spec/XPathFilterParameterSpec.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/javax/xml/crypto/dsig/spec/XPathFilterParameterSpec.java Tue Dec 20 15:27:55 2011 -0800 @@ -52,7 +52,7 @@ public final class XPathFilterParameterSpec implements TransformParameterSpec { private String xPath; - private Map nsMap; + private Map nsMap; /** * Creates an XPathFilterParameterSpec with the specified @@ -66,7 +66,7 @@ throw new NullPointerException(); } this.xPath = xPath; - this.nsMap = Collections.EMPTY_MAP; + this.nsMap = Collections.emptyMap(); } /** @@ -83,21 +83,26 @@ * @throws ClassCastException if any of the map's keys or entries are not * of type String */ + @SuppressWarnings("rawtypes") public XPathFilterParameterSpec(String xPath, Map namespaceMap) { if (xPath == null || namespaceMap == null) { throw new NullPointerException(); } this.xPath = xPath; - nsMap = new HashMap(namespaceMap); - Iterator entries = nsMap.entrySet().iterator(); + Map copy = new HashMap<>((Map)namespaceMap); + Iterator> entries = copy.entrySet().iterator(); while (entries.hasNext()) { - Map.Entry me = (Map.Entry) entries.next(); + Map.Entry me = entries.next(); if (!(me.getKey() instanceof String) || !(me.getValue() instanceof String)) { throw new ClassCastException("not a String"); } } - nsMap = Collections.unmodifiableMap(nsMap); + + @SuppressWarnings("unchecked") + Map temp = (Map)copy; + + nsMap = Collections.unmodifiableMap(temp); } /** @@ -120,6 +125,7 @@ * @return a Map of namespace prefixes to namespace URIs (may * be empty, but never null) */ + @SuppressWarnings("rawtypes") public Map getNamespaceMap() { return nsMap; } diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/javax/xml/crypto/dsig/spec/XPathType.java --- a/jdk/src/share/classes/javax/xml/crypto/dsig/spec/XPathType.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/javax/xml/crypto/dsig/spec/XPathType.java Tue Dec 20 15:27:55 2011 -0800 @@ -106,7 +106,7 @@ private final String expression; private final Filter filter; - private Map nsMap; + private Map nsMap; /** * Creates an XPathType instance with the specified XPath @@ -127,7 +127,7 @@ } this.expression = expression; this.filter = filter; - this.nsMap = Collections.EMPTY_MAP; + this.nsMap = Collections.emptyMap(); } /** @@ -147,21 +147,26 @@ * @throws ClassCastException if any of the map's keys or entries are * not of type String */ + @SuppressWarnings("rawtypes") public XPathType(String expression, Filter filter, Map namespaceMap) { this(expression, filter); if (namespaceMap == null) { throw new NullPointerException("namespaceMap cannot be null"); } - nsMap = new HashMap(namespaceMap); - Iterator entries = nsMap.entrySet().iterator(); + Map copy = new HashMap<>((Map)namespaceMap); + Iterator> entries = copy.entrySet().iterator(); while (entries.hasNext()) { - Map.Entry me = (Map.Entry) entries.next(); + Map.Entry me = entries.next(); if (!(me.getKey() instanceof String) || !(me.getValue() instanceof String)) { throw new ClassCastException("not a String"); } } - nsMap = Collections.unmodifiableMap(nsMap); + + @SuppressWarnings("unchecked") + Map temp = (Map)copy; + + nsMap = Collections.unmodifiableMap(temp); } /** @@ -193,6 +198,7 @@ * @return a Map of namespace prefixes to namespace URIs * (may be empty, but never null) */ + @SuppressWarnings("rawtypes") public Map getNamespaceMap() { return nsMap; } diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/sun/misc/JavaNetHttpCookieAccess.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/src/share/classes/sun/misc/JavaNetHttpCookieAccess.java Tue Dec 20 15:27:55 2011 -0800 @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package sun.misc; + +import java.net.HttpCookie; +import java.util.List; + +public interface JavaNetHttpCookieAccess { + /* + * Constructs cookies from Set-Cookie or Set-Cookie2 header string, + * retaining the original header String in the cookie itself. + */ + public List parse(String header); + + /* + * Returns the original header this cookie was consructed from, if it was + * constructed by parsing a header, otherwise null. + */ + public String header(HttpCookie cookie); +} + diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/sun/misc/SharedSecrets.java --- a/jdk/src/share/classes/sun/misc/SharedSecrets.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/sun/misc/SharedSecrets.java Tue Dec 20 15:27:55 2011 -0800 @@ -47,6 +47,7 @@ private static JavaLangAccess javaLangAccess; private static JavaIOAccess javaIOAccess; private static JavaNetAccess javaNetAccess; + private static JavaNetHttpCookieAccess javaNetHttpCookieAccess; private static JavaNioAccess javaNioAccess; private static JavaIOFileDescriptorAccess javaIOFileDescriptorAccess; private static JavaSecurityProtectionDomainAccess javaSecurityProtectionDomainAccess; @@ -81,6 +82,16 @@ return javaNetAccess; } + public static void setJavaNetHttpCookieAccess(JavaNetHttpCookieAccess a) { + javaNetHttpCookieAccess = a; + } + + public static JavaNetHttpCookieAccess getJavaNetHttpCookieAccess() { + if (javaNetHttpCookieAccess == null) + unsafe.ensureClassInitialized(java.net.HttpCookie.class); + return javaNetHttpCookieAccess; + } + public static void setJavaNioAccess(JavaNioAccess jna) { javaNioAccess = jna; } diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java --- a/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java Tue Dec 20 15:27:55 2011 -0800 @@ -32,6 +32,7 @@ import java.net.HttpRetryException; import java.net.PasswordAuthentication; import java.net.Authenticator; +import java.net.HttpCookie; import java.net.InetAddress; import java.net.UnknownHostException; import java.net.SocketTimeoutException; @@ -46,6 +47,8 @@ import java.net.CacheRequest; import java.net.Authenticator.RequestorType; import java.io.*; +import java.util.ArrayList; +import java.util.Collections; import java.util.Date; import java.util.Map; import java.util.List; @@ -2580,6 +2583,80 @@ return false; } + // constant strings represent set-cookie header names + private final static String SET_COOKIE = "set-cookie"; + private final static String SET_COOKIE2 = "set-cookie2"; + + /** + * Returns a filtered version of the given headers value. + * + * Note: The implementation currently only filters out HttpOnly cookies + * from Set-Cookie and Set-Cookie2 headers. + */ + private String filterHeaderField(String name, String value) { + if (value == null) + return null; + + if (SET_COOKIE.equalsIgnoreCase(name) || + SET_COOKIE2.equalsIgnoreCase(name)) { + // Filtering only if there is a cookie handler. [Assumption: the + // cookie handler will store/retrieve the HttpOnly cookies] + if (cookieHandler == null) + return value; + + sun.misc.JavaNetHttpCookieAccess access = + sun.misc.SharedSecrets.getJavaNetHttpCookieAccess(); + StringBuilder retValue = new StringBuilder(); + List cookies = access.parse(value); + boolean multipleCookies = false; + for (HttpCookie cookie : cookies) { + // skip HttpOnly cookies + if (cookie.isHttpOnly()) + continue; + if (multipleCookies) + retValue.append(','); // RFC 2965, comma separated + retValue.append(access.header(cookie)); + multipleCookies = true; + } + + return retValue.length() == 0 ? null : retValue.toString(); + } + + return value; + } + + // Cache the filtered response headers so that they don't need + // to be generated for every getHeaderFields() call. + private Map> filteredHeaders; // null + + private Map> getFilteredHeaderFields() { + if (filteredHeaders != null) + return filteredHeaders; + + filteredHeaders = new HashMap<>(); + Map> headers; + + if (cachedHeaders != null) + headers = cachedHeaders.getHeaders(); + else + headers = responses.getHeaders(); + + for (Map.Entry> e: headers.entrySet()) { + String key = e.getKey(); + List values = e.getValue(), filteredVals = new ArrayList<>(); + for (String value : values) { + String fVal = filterHeaderField(key, value); + if (fVal != null) + filteredVals.add(fVal); + } + if (!filteredVals.isEmpty()) + filteredHeaders.put(key, + Collections.unmodifiableList(filteredVals)); + } + + return filteredHeaders; + } + /** * Gets a header field by name. Returns null if not known. * @param name the name of the header field @@ -2591,10 +2668,10 @@ } catch (IOException e) {} if (cachedHeaders != null) { - return cachedHeaders.findValue(name); + return filterHeaderField(name, cachedHeaders.findValue(name)); } - return responses.findValue(name); + return filterHeaderField(name, responses.findValue(name)); } /** @@ -2613,11 +2690,7 @@ getInputStream(); } catch (IOException e) {} - if (cachedHeaders != null) { - return cachedHeaders.getHeaders(); - } - - return responses.getHeaders(); + return getFilteredHeaderFields(); } /** @@ -2631,9 +2704,10 @@ } catch (IOException e) {} if (cachedHeaders != null) { - return cachedHeaders.getValue(n); + return filterHeaderField(cachedHeaders.getKey(n), + cachedHeaders.getValue(n)); } - return responses.getValue(n); + return filterHeaderField(responses.getKey(n), responses.getValue(n)); } /** diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/solaris/classes/java/lang/ProcessEnvironment.java --- a/jdk/src/solaris/classes/java/lang/ProcessEnvironment.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/solaris/classes/java/lang/ProcessEnvironment.java Tue Dec 20 15:27:55 2011 -0800 @@ -91,6 +91,7 @@ } /* Only for use by ProcessBuilder.environment() */ + @SuppressWarnings("unchecked") static Map environment() { return new StringEnvironment ((Map)(theEnvironment.clone())); diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/solaris/native/java/net/Inet4AddressImpl.c --- a/jdk/src/solaris/native/java/net/Inet4AddressImpl.c Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/solaris/native/java/net/Inet4AddressImpl.c Tue Dec 20 15:27:55 2011 -0800 @@ -367,11 +367,11 @@ sizeof(struct sockaddr)); if (n < 0 && errno != EINPROGRESS ) { #ifdef __linux__ - if (errno != EINVAL) + if (errno != EINVAL && errno != EHOSTUNREACH) /* * On some Linuxes, when bound to the loopback interface, sendto - * will fail and errno will be set to EINVAL. When that happens, - * don't throw an exception, just return false. + * will fail and errno will be set to EINVAL or EHOSTUNREACH. + * When that happens, don't throw an exception, just return false. */ #endif /*__linux__ */ NET_ThrowNew(env, errno, "Can't send ICMP packet"); @@ -525,10 +525,11 @@ case EADDRNOTAVAIL: /* address is not available on the remote machine */ #ifdef __linux__ case EINVAL: + case EHOSTUNREACH: /* * On some Linuxes, when bound to the loopback interface, connect - * will fail and errno will be set to EINVAL. When that happens, - * don't throw an exception, just return false. + * will fail and errno will be set to EINVAL or EHOSTUNREACH. + * When that happens, don't throw an exception, just return false. */ #endif /* __linux__ */ close(fd); diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/solaris/native/java/net/Inet6AddressImpl.c --- a/jdk/src/solaris/native/java/net/Inet6AddressImpl.c Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/solaris/native/java/net/Inet6AddressImpl.c Tue Dec 20 15:27:55 2011 -0800 @@ -502,11 +502,11 @@ n = sendto(fd, sendbuf, plen, 0, (struct sockaddr*) him, sizeof(struct sockaddr_in6)); if (n < 0 && errno != EINPROGRESS) { #ifdef __linux__ - if (errno != EINVAL) + if (errno != EINVAL && errno != EHOSTUNREACH) /* * On some Linuxes, when bound to the loopback interface, sendto - * will fail and errno will be set to EINVAL. When that happens, - * don't throw an exception, just return false. + * will fail and errno will be set to EINVAL or EHOSTUNREACH. + * When that happens, don't throw an exception, just return false. */ #endif /*__linux__ */ NET_ThrowNew(env, errno, "Can't send ICMP packet"); @@ -670,10 +670,11 @@ case EADDRNOTAVAIL: /* address is not available on the remote machine */ #ifdef __linux__ case EINVAL: + case EHOSTUNREACH: /* * On some Linuxes, when bound to the loopback interface, connect - * will fail and errno will be set to EINVAL. When that happens, - * don't throw an exception, just return false. + * will fail and errno will be set to EINVAL or EHOSTUNREACH. + * When that happens, don't throw an exception, just return false. */ #endif /* __linux__ */ close(fd); diff -r 02dcb305d387 -r 3192d89032b0 jdk/src/windows/classes/java/lang/ProcessEnvironment.java --- a/jdk/src/windows/classes/java/lang/ProcessEnvironment.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/src/windows/classes/java/lang/ProcessEnvironment.java Tue Dec 20 15:27:55 2011 -0800 @@ -68,6 +68,9 @@ final class ProcessEnvironment extends HashMap { + + private static final long serialVersionUID = -8017839552603542824L; + private static String validateName(String name) { // An initial `=' indicates a magic Windows variable name -- OK if (name.indexOf('=', 1) != -1 || @@ -144,6 +147,7 @@ }; } private static Map.Entry checkedEntry(Object o) { + @SuppressWarnings("unchecked") Map.Entry e = (Map.Entry) o; nonNullString(e.getKey()); nonNullString(e.getValue()); @@ -281,6 +285,7 @@ } // Only for use by ProcessBuilder.environment() + @SuppressWarnings("unchecked") static Map environment() { return (Map) theEnvironment.clone(); } diff -r 02dcb305d387 -r 3192d89032b0 jdk/test/Makefile --- a/jdk/test/Makefile Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/test/Makefile Tue Dec 20 15:27:55 2011 -0800 @@ -322,8 +322,8 @@ ################################################################ -# Default make rule (runs jtreg_tests) -all: jtreg_tests +# Default make rule (runs default jdk tests) +all: jdk_default @$(ECHO) "Testing completed successfully" # Prep for output @@ -422,6 +422,7 @@ # ------------------------------------------------------------------ # Batches of tests (somewhat arbitrary assigments to jdk_* targets) +JDK_DEFAULT_TARGETS = JDK_ALL_TARGETS = # Stable othervm testruns (minus items from PROBLEM_LIST) @@ -433,6 +434,7 @@ # Stable agentvm testruns (minus items from PROBLEM_LIST) JDK_ALL_TARGETS += jdk_beans1 +JDK_DEFAULT_TARGETS += jdk_beans1 jdk_beans1: $(call TestDirs, \ java/beans/beancontext java/beans/PropertyChangeSupport \ java/beans/Introspector java/beans/Performance \ @@ -459,11 +461,13 @@ # Stable agentvm testruns (minus items from PROBLEM_LIST) JDK_ALL_TARGETS += jdk_io +JDK_DEFAULT_TARGETS += jdk_io jdk_io: $(call TestDirs, java/io) $(call RunAgentvmBatch) # Stable agentvm testruns (minus items from PROBLEM_LIST) JDK_ALL_TARGETS += jdk_lang +JDK_DEFAULT_TARGETS += jdk_lang jdk_lang: $(call TestDirs, java/lang) $(call RunAgentvmBatch) @@ -485,11 +489,13 @@ # Stable agentvm testruns (minus items from PROBLEM_LIST) JDK_ALL_TARGETS += jdk_math +JDK_DEFAULT_TARGETS += jdk_math jdk_math: $(call TestDirs, java/math) $(call RunAgentvmBatch) # Stable agentvm testruns (minus items from PROBLEM_LIST) JDK_ALL_TARGETS += jdk_misc +JDK_DEFAULT_TARGETS += jdk_misc jdk_misc: $(call TestDirs, \ demo/jvmti demo/zipfs javax/naming javax/script \ javax/smartcardio com/sun/jndi com/sun/xml sun/misc) @@ -497,16 +503,19 @@ # Stable agentvm testruns (minus items from PROBLEM_LIST) JDK_ALL_TARGETS += jdk_net +JDK_DEFAULT_TARGETS += jdk_net jdk_net: $(call TestDirs, com/sun/net java/net sun/net) $(call RunAgentvmBatch) # Stable agentvm testruns (minus items from PROBLEM_LIST) JDK_ALL_TARGETS += jdk_nio1 +JDK_DEFAULT_TARGETS += jdk_nio1 jdk_nio1: $(call TestDirs, java/nio/file) $(call RunAgentvmBatch) # Stable agentvm testruns (minus items from PROBLEM_LIST) JDK_ALL_TARGETS += jdk_nio2 +JDK_DEFAULT_TARGETS += jdk_nio2 jdk_nio2: $(call TestDirs, java/nio/Buffer java/nio/ByteOrder \ java/nio/channels java/nio/MappedByteBuffer) $(call SharedLibraryPermissions,java/nio/channels) @@ -514,6 +523,7 @@ # Stable agentvm testruns (minus items from PROBLEM_LIST) JDK_ALL_TARGETS += jdk_nio3 +JDK_DEFAULT_TARGETS += jdk_nio3 jdk_nio3: $(call TestDirs, sun/nio) $(call RunAgentvmBatch) @@ -533,6 +543,7 @@ # Stable agentvm testruns (minus items from PROBLEM_LIST) JDK_ALL_TARGETS += jdk_security1 +JDK_DEFAULT_TARGETS += jdk_security1 jdk_security1: $(call TestDirs, java/security) $(call RunAgentvmBatch) @@ -566,6 +577,7 @@ # Stable agentvm testruns (minus items from PROBLEM_LIST) JDK_ALL_TARGETS += jdk_text +JDK_DEFAULT_TARGETS += jdk_text jdk_text: $(call TestDirs, java/text sun/text) $(call RunAgentvmBatch) @@ -589,15 +601,18 @@ # Stable agentvm testruns (minus items from PROBLEM_LIST) JDK_ALL_TARGETS += jdk_util +JDK_DEFAULT_TARGETS += jdk_util jdk_util: $(call TestDirs, java/util sun/util) $(call RunAgentvmBatch) # ------------------------------------------------------------------ +# Run default tests +jdk_default: $(JDK_DEFAULT_TARGETS) + @$(SummaryInfo) + # Run all tests -FILTER_OUT_LIST=jdk_awt jdk_rmi jdk_swing -JDK_ALL_STABLE_TARGETS := $(filter-out $(FILTER_OUT_LIST), $(JDK_ALL_TARGETS)) -jdk_all: $(JDK_ALL_STABLE_TARGETS) +jdk_all: $(JDK_ALL_TARGETS) @$(SummaryInfo) # These are all phony targets diff -r 02dcb305d387 -r 3192d89032b0 jdk/test/java/nio/file/Files/CustomOptions.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/java/nio/file/Files/CustomOptions.java Tue Dec 20 15:27:55 2011 -0800 @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 7087549 + * @summary Test custom options with newInputStream. + * @author Brandon Passanisi + * @library .. + * @build CustomOptions PassThroughFileSystem + */ + +import java.io.IOException; +import java.io.InputStream; +import java.net.URI; +import java.nio.file.*; +import java.nio.file.attribute.FileAttribute; +import java.nio.file.spi.FileSystemProvider; +import java.nio.channels.SeekableByteChannel; +import java.util.Collections; +import java.util.Set; +import java.util.Map; + +public class CustomOptions { + + // Create a custom option + static enum CustomOption implements OpenOption { + IGNORE, + } + + // number of times that IGNORE option is observed + static int ignoreCount; + + // A pass through provider that supports a custom open option + static class MyCustomProvider extends PassThroughFileSystem.PassThroughProvider { + public MyCustomProvider() { } + + @Override + public SeekableByteChannel newByteChannel(Path path, + Set options, + FileAttribute... attrs) + throws IOException + { + if (options.contains(CustomOption.IGNORE)) { + ignoreCount++; + options.remove(CustomOption.IGNORE); + } + return super.newByteChannel(path, options, attrs); + } + } + + public static void main(String[] args) throws Exception { + FileSystemProvider provider = new MyCustomProvider(); + Map env = Collections.emptyMap(); + URI uri = URI.create("pass:///"); + FileSystem fs = provider.newFileSystem(uri, env); + + // Create temp dir for testing + Path dir = TestUtil.createTemporaryDirectory(); + try { + + // Create temp file for testing + Path path = fs.getPath(dir.resolve("foo").toString()); + Files.createFile(path); + + // Test custom option + Files.newInputStream(path, CustomOption.IGNORE).close(); + if (ignoreCount != 1) + throw new RuntimeException("IGNORE option not passed through"); + + // Test null option + try { + Files.newInputStream(path, new OpenOption[] { null }).close(); + throw new RuntimeException("NullPointerException expected"); + } catch (NullPointerException ignore) { } + + // Test unsupported options + try { + Files.newInputStream(path, StandardOpenOption.WRITE).close(); + throw new RuntimeException("UnsupportedOperationException expected"); + } catch (UnsupportedOperationException uoe) { } + try { + Files.newInputStream(path, StandardOpenOption.APPEND).close(); + throw new RuntimeException("UnsupportedOperationException expected"); + } catch (UnsupportedOperationException uoe) { } + + } finally { + // Cleanup + TestUtil.removeAll(dir); + } + } +} diff -r 02dcb305d387 -r 3192d89032b0 jdk/test/java/util/Collections/EmptyIterator.java --- a/jdk/test/java/util/Collections/EmptyIterator.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/test/java/util/Collections/EmptyIterator.java Tue Dec 20 15:27:55 2011 -0800 @@ -35,8 +35,6 @@ void test(String[] args) throws Throwable { testEmptyCollection(Collections.emptyList()); testEmptyCollection(Collections.emptySet()); - testEmptyCollection(new java.util.concurrent. - SynchronousQueue()); testEmptyMap(Collections.emptyMap()); diff -r 02dcb305d387 -r 3192d89032b0 jdk/test/java/util/regex/RegExTest.java --- a/jdk/test/java/util/regex/RegExTest.java Tue Dec 20 15:26:23 2011 -0800 +++ b/jdk/test/java/util/regex/RegExTest.java Tue Dec 20 15:27:55 2011 -0800 @@ -32,7 +32,7 @@ * 4872664 4803179 4892980 4900747 4945394 4938995 4979006 4994840 4997476 * 5013885 5003322 4988891 5098443 5110268 6173522 4829857 5027748 6376940 * 6358731 6178785 6284152 6231989 6497148 6486934 6233084 6504326 6635133 - * 6350801 6676425 6878475 6919132 6931676 6948903 7014645 7039066 + * 6350801 6676425 6878475 6919132 6931676 6948903 6990617 7014645 7039066 */ import java.util.regex.*; @@ -50,6 +50,7 @@ private static Random generator = new Random(); private static boolean failure = false; private static int failCount = 0; + private static String firstFailure = null; /** * Main to interpret arguments and run several tests. @@ -133,15 +134,19 @@ hitEndTest(); toMatchResultTest(); surrogatesInClassTest(); + removeQEQuotingTest(); namedGroupCaptureTest(); nonBmpClassComplementTest(); unicodePropertiesTest(); unicodeHexNotationTest(); unicodeClassesTest(); - if (failure) - throw new RuntimeException("Failure in the RE handling."); - else + if (failure) { + throw new + RuntimeException("RegExTest failed, 1st failure: " + + firstFailure); + } else { System.err.println("OKAY: All tests passed."); + } } // Utility functions @@ -215,8 +220,14 @@ String paddedName = paddedNameBuffer.toString(); System.err.println(paddedName + ": " + (failCount==0 ? "Passed":"Failed("+failCount+")")); - if (failCount > 0) + if (failCount > 0) { failure = true; + + if (firstFailure == null) { + firstFailure = testName; + } + } + failCount = 0; } @@ -295,6 +306,22 @@ Matcher matcher = pattern.matcher("\ud834\udd22"); if (!matcher.find()) failCount++; + + report("Surrogate pair in Unicode escape"); + } + + // This is for bug6990617 + // Test if Pattern.RemoveQEQuoting works correctly if the octal unicode + // char encoding is only 2 or 3 digits instead of 4 and the first quoted + // char is an octal digit. + private static void removeQEQuotingTest() throws Exception { + Pattern pattern = + Pattern.compile("\\011\\Q1sometext\\E\\011\\Q2sometext\\E"); + Matcher matcher = pattern.matcher("\t1sometext\t2sometext"); + if (!matcher.find()) + failCount++; + + report("Remove Q/E Quoting"); } // This is for bug 4988891 diff -r 02dcb305d387 -r 3192d89032b0 jdk/test/sun/net/www/protocol/http/HttpOnly.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/sun/net/www/protocol/http/HttpOnly.java Tue Dec 20 15:27:55 2011 -0800 @@ -0,0 +1,242 @@ +/* + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +/** + * @test + * @bug 7095980 + * @summary Ensure HttpURLConnection (and supporting APIs) don't expose + * HttpOnly cookies + */ + +import java.io.IOException; +import java.net.CookieHandler; +import java.net.CookieManager; +import java.net.CookiePolicy; +import java.net.InetAddress; +import java.net.InetSocketAddress; +import java.net.URI; +import java.net.HttpURLConnection; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import com.sun.net.httpserver.Headers; +import com.sun.net.httpserver.HttpExchange; +import com.sun.net.httpserver.HttpHandler; +import com.sun.net.httpserver.HttpServer; + +/* + * 1) start the HTTP server + * 2) populate cookie store with HttpOnly cookies + * 3) make HTTP request that should contain HttpOnly cookies + * 4) check HttpOnly cookies received by server + * 5) server reply with Set-Cookie containing HttpOnly cookie + * 6) check HttpOnly cookies are not accessible from Http client + */ + +public class HttpOnly { + + static final String URI_PATH = "/xxyyzz/"; + static final int SESSION_ID = 12345; + + void test(String[] args) throws Exception { + HttpServer server = startHttpServer(); + CookieHandler previousHandler = CookieHandler.getDefault(); + try { + InetSocketAddress address = server.getAddress(); + URI uri = new URI("http://" + InetAddress.getLocalHost().getHostAddress() + + ":" + address.getPort() + URI_PATH); + populateCookieStore(uri); + doClient(uri); + } finally { + CookieHandler.setDefault(previousHandler); + server.stop(0); + } + } + + void populateCookieStore(URI uri) + throws IOException { + + CookieManager cm = new CookieManager(null, CookiePolicy.ACCEPT_ALL); + CookieHandler.setDefault(cm); + Map> header = new HashMap<>(); + List values = new ArrayList<>(); + values.add("JSESSIONID=" + SESSION_ID + "; version=1; Path=" + + URI_PATH +"; HttpOnly"); + values.add("CUSTOMER=WILE_E_COYOTE; version=1; Path=" + URI_PATH); + header.put("Set-Cookie", values); + cm.put(uri, header); + } + + void doClient(URI uri) throws Exception { + HttpURLConnection uc = (HttpURLConnection) uri.toURL().openConnection(); + int resp = uc.getResponseCode(); + check(resp == 200, + "Unexpected response code. Expected 200, got " + resp); + + // TEST 1: check getRequestProperty doesn't return the HttpOnly cookie + // In fact, that it doesn't return any automatically set cookies. + String cookie = uc.getRequestProperty("Cookie"); + check(cookie == null, + "Cookie header returned from getRequestProperty, value " + cookie); + + // TEST 2: check getRequestProperties doesn't return the HttpOnly cookie. + // In fact, that it doesn't return any automatically set cookies. + Map> reqHeaders = uc.getRequestProperties(); + Set>> entries = reqHeaders.entrySet(); + for (Map.Entry> entry : entries) { + String header = entry.getKey(); + check(!"Cookie".equalsIgnoreCase(header), + "Cookie header returned from getRequestProperties, value " + + entry.getValue()); + } + + // TEST 3: check getHeaderField doesn't return Set-Cookie with HttpOnly + String setCookie = uc.getHeaderField("Set-Cookie"); + if (setCookie != null) { + debug("Set-Cookie:" + setCookie); + check(!setCookie.toLowerCase().contains("httponly"), + "getHeaderField returned Set-Cookie header with HttpOnly, " + + "value = " + setCookie); + } + + // TEST 3.5: check getHeaderField doesn't return Set-Cookie2 with HttpOnly + String setCookie2 = uc.getHeaderField("Set-Cookie2"); + if (setCookie2 != null) { + debug("Set-Cookie2:" + setCookie2); + check(!setCookie2.toLowerCase().contains("httponly"), + "getHeaderField returned Set-Cookie2 header with HttpOnly, " + + "value = " + setCookie2); + } + + // TEST 4: check getHeaderFields doesn't return Set-Cookie + // or Set-Cookie2 headers with HttpOnly + Map> respHeaders = uc.getHeaderFields(); + Set>> respEntries = respHeaders.entrySet(); + for (Map.Entry> entry : respEntries) { + String header = entry.getKey(); + if ("Set-Cookie".equalsIgnoreCase(header)) { + List setCookieValues = entry.getValue(); + debug("Set-Cookie:" + setCookieValues); + for (String value : setCookieValues) + check(!value.toLowerCase().contains("httponly"), + "getHeaderFields returned Set-Cookie header with HttpOnly, " + + "value = " + value); + } + if ("Set-Cookie2".equalsIgnoreCase(header)) { + List setCookieValues = entry.getValue(); + debug("Set-Cookie2:" + setCookieValues); + for (String value : setCookieValues) + check(!value.toLowerCase().contains("httponly"), + "getHeaderFields returned Set-Cookie2 header with HttpOnly, " + + "value = " + value); + } + } + + // Now add some user set cookies into the mix. + uc = (HttpURLConnection) uri.toURL().openConnection(); + uc.addRequestProperty("Cookie", "CUSTOMER_ID=CHEGAR;"); + resp = uc.getResponseCode(); + check(resp == 200, + "Unexpected response code. Expected 200, got " + resp); + + // TEST 5: check getRequestProperty doesn't return the HttpOnly cookie + cookie = uc.getRequestProperty("Cookie"); + check(!cookie.toLowerCase().contains("httponly"), + "HttpOnly cookie returned from getRequestProperty, value " + cookie); + + // TEST 6: check getRequestProperties doesn't return the HttpOnly cookie. + reqHeaders = uc.getRequestProperties(); + entries = reqHeaders.entrySet(); + for (Map.Entry> entry : entries) { + String header = entry.getKey(); + if ("Cookie".equalsIgnoreCase(header)) { + for (String val : entry.getValue()) + check(!val.toLowerCase().contains("httponly"), + "HttpOnly cookie returned from getRequestProperties," + + " value " + val); + } + } + } + + // HTTP Server + HttpServer startHttpServer() throws IOException { + HttpServer httpServer = HttpServer.create(new InetSocketAddress(0), 0); + httpServer.createContext(URI_PATH, new SimpleHandler()); + httpServer.start(); + return httpServer; + } + + class SimpleHandler implements HttpHandler { + @Override + public void handle(HttpExchange t) throws IOException { + Headers reqHeaders = t.getRequestHeaders(); + + // some small sanity check + List cookies = reqHeaders.get("Cookie"); + for (String cookie : cookies) { + if (!cookie.contains("JSESSIONID") + || !cookie.contains("WILE_E_COYOTE")) + t.sendResponseHeaders(400, -1); + } + + // return some cookies so we can check getHeaderField(s) + Headers respHeaders = t.getResponseHeaders(); + List values = new ArrayList<>(); + values.add("ID=JOEBLOGGS; version=1; Path=" + URI_PATH); + values.add("NEW_JSESSIONID=" + (SESSION_ID+1) + "; version=1; Path=" + + URI_PATH +"; HttpOnly"); + values.add("NEW_CUSTOMER=WILE_E_COYOTE2; version=1; Path=" + URI_PATH); + respHeaders.put("Set-Cookie", values); + values = new ArrayList<>(); + values.add("COOKIE2_CUSTOMER=WILE_E_COYOTE2; version=1; Path=" + + URI_PATH); + respHeaders.put("Set-Cookie2", values); + values.add("COOKIE2_JSESSIONID=" + (SESSION_ID+100) + + "; version=1; Path=" + URI_PATH +"; HttpOnly"); + respHeaders.put("Set-Cookie2", values); + + t.sendResponseHeaders(200, -1); + t.close(); + } + } + + volatile int passed = 0, failed = 0; + boolean debug = false; + void pass() {passed++;} + void fail() {failed++;} + void fail(String msg) {System.err.println(msg); fail();} + void unexpected(Throwable t) {failed++; t.printStackTrace();} + void debug(String message) { if (debug) System.out.println(message); } + void check(boolean cond, String failMessage) {if (cond) pass(); else fail(failMessage);} + public static void main(String[] args) throws Throwable { + Class k = new Object(){}.getClass().getEnclosingClass(); + try {k.getMethod("instanceMain",String[].class) + .invoke( k.newInstance(), (Object) args);} + catch (Throwable e) {throw e.getCause();}} + public void instanceMain(String[] args) throws Throwable { + try {test(args);} catch (Throwable t) {unexpected(t);} + System.out.printf("%nPassed = %d, failed = %d%n%n", passed, failed); + if (failed > 0) throw new AssertionError("Some tests failed");} +} +