提交 247c5f60 编写于 作者: L lana

Merge

......@@ -32,6 +32,8 @@ PACKAGE = com.sun.java.util.jar.pack
LIBRARY = unpack
PRODUCT = sun
PGRM = unpack200
JAVAC_MAX_WARNINGS=true
JAVAC_WARNINGS_FATAL=true
include $(BUILDDIR)/common/Defs.gmk
CPLUSPLUSLIBRARY=true
......
#
# Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2009, 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
......@@ -28,6 +28,8 @@
#
BUILDDIR = ../../..
SUBDIRS_MAKEFLAGS += JAVAC_MAX_WARNINGS=true
SUBDIRS_MAKEFLAGS += JAVAC_WARNINGS_FATAL=true
include $(BUILDDIR)/common/Defs.gmk
SUBDIRS = sctp
......
......@@ -31,7 +31,6 @@ BUILDDIR = ../../../..
PACKAGE = com.sun.nio.sctp
LIBRARY = sctp
PRODUCT = sun
#OTHER_JAVACFLAGS += -Xmaxwarns 1000 -Xlint
include $(BUILDDIR)/common/Defs.gmk
#
......
......@@ -116,12 +116,17 @@ ifeq ($(DEBUG_CLASSFILES),true)
JAVACFLAGS += -g
endif
ifeq ($(JAVAC_MAX_WARNINGS), true)
JAVACFLAGS += -Xlint:all
JAVAC_LINT_OPTIONS += -Xlint:all
endif
ifeq ($(JAVAC_WARNINGS_FATAL), true)
JAVACFLAGS += -Werror
endif
# TODO: Workaround for CR 7063027. Remove -path eventually.
JAVAC_LINT_OPTIONS += -Xlint:-path
JAVACFLAGS += $(JAVAC_LINT_OPTIONS)
#
# Some licensees do not get the Security Source bundles. We will
# fall back on the prebuilt jce.jar so that we can do a best
......@@ -211,16 +216,12 @@ endif
# The javac options supplied to the boot javac is limited. This compiler
# should only be used to build the 'make/tools' sources, which are not
# class files that end up in the classes directory.
ifeq ($(JAVAC_MAX_WARNINGS), true)
BOOT_JAVACFLAGS += -Xlint:all
endif
BOOT_JAVACFLAGS += $(JAVAC_LINT_OPTIONS)
ifeq ($(JAVAC_WARNINGS_FATAL), true)
BOOT_JAVACFLAGS += -Werror
endif
BOOT_SOURCE_LANGUAGE_VERSION = 6
BOOT_TARGET_CLASS_VERSION = 6
BOOT_JAVACFLAGS += -encoding ascii -source $(BOOT_SOURCE_LANGUAGE_VERSION) -target $(BOOT_TARGET_CLASS_VERSION)
BOOT_JAVACFLAGS += -encoding ascii
BOOT_JAR_JFLAGS += $(JAR_JFLAGS)
BOOT_JAVACFLAGS += $(NO_PROPRIETARY_API_WARNINGS)
......
......@@ -191,7 +191,7 @@ endif
# Generic
REQUIRED_ANT_VER = 1.7.1
REQUIRED_BOOT_VER = 1.6
REQUIRED_BOOT_VER = 1.7
REQUIRED_FREETYPE_VERSION = 2.3.0
REQUIRED_MAKE_VER = 3.81
REQUIRED_UNZIP_VER = 5.12
......
......@@ -30,21 +30,13 @@ FILES_c = \
k_sin.c \
k_tan.c \
e_acos.c \
e_acosh.c \
e_asin.c \
e_atan2.c \
e_atanh.c \
e_cosh.c \
e_exp.c \
e_fmod.c \
e_gamma.c \
e_gamma_r.c \
e_hypot.c \
e_j0.c \
e_j1.c \
e_jn.c \
e_lgamma.c \
e_lgamma_r.c \
e_log.c \
e_log10.c \
e_pow.c \
......@@ -54,21 +46,13 @@ FILES_c = \
e_sinh.c \
e_sqrt.c \
w_acos.c \
w_acosh.c \
w_asin.c \
w_atan2.c \
w_atanh.c \
w_cosh.c \
w_exp.c \
w_fmod.c \
w_gamma.c \
w_gamma_r.c \
w_hypot.c \
w_j0.c \
w_j1.c \
w_jn.c \
w_lgamma.c \
w_lgamma_r.c \
w_log.c \
w_log10.c \
w_pow.c \
......@@ -76,13 +60,11 @@ FILES_c = \
w_scalb.c \
w_sinh.c \
w_sqrt.c \
s_asinh.c \
s_atan.c \
s_cbrt.c \
s_ceil.c \
s_copysign.c \
s_cos.c \
s_erf.c \
s_expm1.c \
s_fabs.c \
s_finite.c \
......
......@@ -32,6 +32,8 @@ BUILDDIR = ../..
PACKAGE = java.lang
LIBRARY = java
PRODUCT = java
SUBDIRS_MAKEFLAGS += JAVAC_MAX_WARNINGS=true
SUBDIRS_MAKEFLAGS += JAVAC_WARNINGS_FATAL=true
include $(BUILDDIR)/common/Defs.gmk
# windows compiler flags
......
#
# Copyright (c) 1996, 2003, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 1996, 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
......@@ -27,6 +27,8 @@ BUILDDIR = ../..
PACKAGE = java.math
PRODUCT = sun
JAVAC_MAX_WARNINGS = true
JAVAC_WARNINGS_FATAL = true
include $(BUILDDIR)/common/Defs.gmk
#
......
......@@ -31,7 +31,8 @@ BUILDDIR = ../..
PACKAGE = java.nio
LIBRARY = nio
PRODUCT = java
OTHER_JAVACFLAGS += -Xmaxwarns 1000 -Xlint:serial -Werror
JAVAC_MAX_WARNINGS = true
JAVAC_WARNINGS_FATAL = true
include $(BUILDDIR)/common/Defs.gmk
NIO_SRC = $(SHARE_SRC)/classes/java/nio
......
#
# Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2003, 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
......@@ -31,7 +31,9 @@ BUILDDIR = ../..
PACKAGE = sun.nio
PRODUCT = sun
OTHER_JAVACFLAGS += -Xlint:serial,-deprecation -Werror
JAVAC_MAX_WARNINGS = false
JAVAC_LINT_OPTIONS = -Xlint:all,-deprecation
JAVAC_WARNINGS_FATAL = true
include $(BUILDDIR)/common/Defs.gmk
#
......
......@@ -25,22 +25,12 @@
# Properties for jprt
# At submit time, the release supplied will be in jprt.submit.release
# and will be one of the official release names defined in jprt.
# jprt supports property value expansion using ${property.name} syntax.
# This tells jprt what default release we want to build
jprt.tools.default.release=${jprt.submit.release}
# Release to build for
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
# Define the Windows we want (temporary)
jprt.my.windows.i586.jdk7b107=windows_i586_5.0
jprt.my.windows.i586.jdk7temp=windows_i586_5.0
jprt.my.windows.i586.jdk7=windows_i586_5.1
jprt.my.windows.i586=${jprt.my.windows.i586.${jprt.tools.default.release}}
# Standard list of jprt build targets for this source tree
jprt.build.targets= \
solaris_sparc_5.10-{product|fastdebug}, \
......@@ -49,7 +39,7 @@ jprt.build.targets= \
solaris_x64_5.10-{product|fastdebug}, \
linux_i586_2.6-{product|fastdebug}, \
linux_x64_2.6-{product|fastdebug}, \
${jprt.my.windows.i586}-{product|fastdebug}, \
windows_i586_5.1-{product|fastdebug}, \
windows_x64_5.2-{product|fastdebug}
# User can select the test set with jprt submit "-testset name" option
......@@ -63,7 +53,7 @@ jprt.vm.default.test.targets= \
solaris_x64_5.10-product-c2-jvm98, \
linux_i586_2.6-product-{c1|c2}-jvm98, \
linux_x64_2.6-product-c2-jvm98, \
${jprt.my.windows.i586}-product-c1-jvm98, \
windows_i586_5.1-product-c1-jvm98, \
windows_x64_5.2-product-c2-jvm98
# Select vm testlist to use (allow for testset to be empty too)
......@@ -80,7 +70,7 @@ jprt.make.rule.default.test.targets= \
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, \
${jprt.my.windows.i586}-product-c1-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, \
......@@ -89,7 +79,7 @@ jprt.make.rule.default.test.targets= \
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, \
${jprt.my.windows.i586}-product-c1-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, \
......@@ -98,7 +88,7 @@ jprt.make.rule.default.test.targets= \
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, \
${jprt.my.windows.i586}-product-c1-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, \
......@@ -107,7 +97,7 @@ jprt.make.rule.default.test.targets= \
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, \
${jprt.my.windows.i586}-product-c1-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, \
......@@ -116,7 +106,7 @@ jprt.make.rule.default.test.targets= \
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, \
${jprt.my.windows.i586}-product-c1-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, \
......@@ -125,7 +115,7 @@ jprt.make.rule.default.test.targets= \
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, \
${jprt.my.windows.i586}-product-c1-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, \
......@@ -134,7 +124,7 @@ jprt.make.rule.default.test.targets= \
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, \
${jprt.my.windows.i586}-product-c1-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, \
......@@ -143,7 +133,7 @@ jprt.make.rule.default.test.targets= \
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, \
${jprt.my.windows.i586}-product-c1-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, \
......@@ -152,7 +142,7 @@ jprt.make.rule.default.test.targets= \
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, \
${jprt.my.windows.i586}-product-c1-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, \
......@@ -161,7 +151,7 @@ jprt.make.rule.default.test.targets= \
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, \
${jprt.my.windows.i586}-product-c1-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, \
......@@ -170,7 +160,7 @@ jprt.make.rule.default.test.targets= \
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, \
${jprt.my.windows.i586}-product-c1-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, \
......@@ -179,7 +169,7 @@ jprt.make.rule.default.test.targets= \
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, \
${jprt.my.windows.i586}-product-c1-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, \
......@@ -188,7 +178,7 @@ jprt.make.rule.default.test.targets= \
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, \
${jprt.my.windows.i586}-product-c1-jdk_util, \
windows_i586_5.1-product-c1-jdk_util, \
windows_x64_5.2-product-c2-jdk_util
# All jdk test targets in test/Makefile (still no fastdebug & limited c2)
......@@ -202,7 +192,7 @@ jprt.make.rule.all.test.targets= \
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, \
${jprt.my.windows.i586}-product-c1-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, \
......@@ -211,7 +201,7 @@ jprt.make.rule.all.test.targets= \
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, \
${jprt.my.windows.i586}-product-c1-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, \
......@@ -220,7 +210,7 @@ jprt.make.rule.all.test.targets= \
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, \
${jprt.my.windows.i586}-product-c1-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, \
......@@ -229,7 +219,7 @@ jprt.make.rule.all.test.targets= \
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, \
${jprt.my.windows.i586}-product-c1-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, \
......@@ -238,7 +228,7 @@ jprt.make.rule.all.test.targets= \
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, \
${jprt.my.windows.i586}-product-c1-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, \
......@@ -247,7 +237,7 @@ jprt.make.rule.all.test.targets= \
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, \
${jprt.my.windows.i586}-product-c1-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, \
......@@ -256,7 +246,7 @@ jprt.make.rule.all.test.targets= \
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, \
${jprt.my.windows.i586}-product-c1-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, \
......@@ -265,7 +255,7 @@ jprt.make.rule.all.test.targets= \
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, \
${jprt.my.windows.i586}-product-c1-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_swing, \
......@@ -274,7 +264,7 @@ jprt.make.rule.all.test.targets= \
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, \
${jprt.my.windows.i586}-product-c1-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, \
......@@ -283,7 +273,7 @@ jprt.make.rule.all.test.targets= \
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, \
${jprt.my.windows.i586}-product-c1-jdk_tools2, \
windows_i586_5.1-product-c1-jdk_tools2, \
windows_x64_5.2-product-c2-jdk_tools2
# JCK test targets in test/Makefile (no fastdebug & limited c2, windows broken)
......
#
# Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2009, 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
......@@ -26,6 +26,8 @@
BUILDDIR = ../..
PACKAGE = sun.nio
PRODUCT = sun
SUBDIRS_MAKEFLAGS += JAVAC_MAX_WARNINGS=true
SUBDIRS_MAKEFLAGS += JAVAC_WARNINGS_FATAL=true
include $(BUILDDIR)/common/Defs.gmk
SUBDIRS = cs
......
......@@ -36,7 +36,9 @@ PRODUCT = sun
# This re-directs all the class files to a separate location
CLASSDESTDIR = $(TEMPDIR)/classes
OTHER_JAVACFLAGS += -Xlint:serial,-deprecation -Werror
JAVAC_MAX_WARNINGS = false
JAVAC_LINT_OPTIONS = -Xlint:all,-deprecation
JAVAC_WARNINGS_FATAL = true
include $(BUILDDIR)/common/Defs.gmk
#
......
......@@ -156,7 +156,7 @@ ifeq ($(NATIVE_ECC_AVAILABLE), true)
$(PKGDIR)/ECDSASignature.java \
$(PKGDIR)/ECKeyPairGenerator.java
JAVAHFLAGS += -classpath $(CLASSDESTDIR)
JAVAHFLAGS += -Xbootclasspath/p:$(CLASSDESTDIR)
#
# C and C++ files
......
......@@ -149,7 +149,7 @@ OTHER_INCLUDES += \
# Rules
#
CLASSDESTDIR = $(TEMPDIR)/classes
JAVAHFLAGS += -classpath $(CLASSDESTDIR)
JAVAHFLAGS += -Xbootclasspath/p:$(CLASSDESTDIR)
include $(BUILDDIR)/common/Mapfile-vers.gmk
......
......@@ -28,6 +28,8 @@
#
BUILDDIR = ..
SUBDIRS_MAKEFLAGS += JAVAC_MAX_WARNINGS=true JAVAC_WARNINGS_FATAL=true
include $(BUILDDIR)/common/Defs.gmk
# Note: freetypecheck is built by Sanity.gmk if needed
......
/*
* Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2005, 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
......@@ -114,8 +114,8 @@ public class BuildMetaIndex {
*/
out.println(jmi.getJarFileKind().getMarkerChar() + " " + filename);
for (Iterator<String> iter = index.iterator(); iter.hasNext(); ) {
out.println(iter.next());
for (String entry : index) {
out.println(entry);
}
}
......@@ -171,8 +171,7 @@ class JarMetaIndex {
* A hashmap contains a mapping from the prefix string to
* a hashset which contains a set of the second level of prefix string.
*/
private HashMap<String, HashSet<String>> knownPrefixMap = new
HashMap<String, HashSet<String>>();
private HashMap<String, HashSet<String>> knownPrefixMap = new HashMap<>();
/*
* We add maximum 5 second level entries to "sun", "java" and
......@@ -195,12 +194,12 @@ class JarMetaIndex {
if (indexSet == null) {
synchronized(this) {
if (indexSet == null) {
indexSet = new HashSet<String>();
Enumeration entries = jar.entries();
indexSet = new HashSet<>();
Enumeration<JarEntry> entries = jar.entries();
boolean containsOnlyClass = true;
boolean containsOnlyResource = true;
while (entries.hasMoreElements()) {
JarEntry entry = (JarEntry) entries.nextElement();
JarEntry entry = entries.nextElement();
String name = entry.getName();
/* We only look at the non-directory entry.
MANIFEST file is also skipped. */
......@@ -338,9 +337,7 @@ class JarMetaIndex {
/* Iterate through the hash map, add the second level package names
* to the indexSet if has any.
*/
for (Iterator<String> keysIterator = knownPrefixMap.keySet().iterator();
keysIterator.hasNext();) {
String key = keysIterator.next();
for (String key : knownPrefixMap.keySet()) {
HashSet<String> pkgSetStartsWithKey = knownPrefixMap.get(key);
int setSize = pkgSetStartsWithKey.size();
......@@ -353,9 +350,8 @@ class JarMetaIndex {
/* If the set contains less than MAX_PKGS_WITH_KNOWN_PREFIX, add
* them to the indexSet of the MetaIndex object.
*/
for (Iterator<String> secondPkgElements = pkgSetStartsWithKey.iterator();
secondPkgElements.hasNext();) {
indexSet.add(key + "/" + secondPkgElements.next());
for (String secondPkgElement : pkgSetStartsWithKey) {
indexSet.add(key + "/" + secondPkgElement);
}
}
} // end the outer "for"
......
/*
* Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 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
......@@ -36,7 +36,6 @@ import java.io.Writer;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
......@@ -223,18 +222,16 @@ public class CompileProperties {
if ( ok ) {
String packageName = inferPackageName(propertiesPath, outputPath);
System.out.println("inferred package name: " + packageName);
List<String> sortedKeys = new ArrayList<String>();
List<String> sortedKeys = new ArrayList<>();
for ( Object key : p.keySet() ) {
sortedKeys.add((String)key);
}
Collections.sort(sortedKeys);
Iterator keys = sortedKeys.iterator();
StringBuffer data = new StringBuffer();
while (keys.hasNext()) {
Object key = keys.next();
data.append(" { \"" + escape((String)key) + "\", \"" +
for (String key : sortedKeys) {
data.append(" { \"" + escape(key) + "\", \"" +
escape((String)p.get(key)) + "\" },\n");
}
......
/*
* Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 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
......@@ -164,7 +164,7 @@ public class DirDiff implements Runnable {
}
File[] currentGoldenDirs = null;
TreeSet goldDirSet = new TreeSet();
TreeSet<String> goldDirSet = new TreeSet<>();
if (goldenDir != null) {
currentGoldenDirs = goldenDir.listFiles();
for (int i=0; i<currentGoldenDirs.length; i++) {
......
/*
* Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 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
......@@ -63,9 +63,9 @@ class DTDBuilder extends DTD {
static PublicMapping mapping = null;
// Hash from name to Integer
private Hashtable namesHash = new Hashtable();
private Hashtable<String, Integer> namesHash = new Hashtable<>();
// Vector of all names
private Vector namesVector = new Vector();
private Vector<String> namesVector = new Vector<>();
/**
* Create a new DTD.
......@@ -87,15 +87,15 @@ class DTDBuilder extends DTD {
int numNames = namesVector.size();
out.writeShort((short) (namesVector.size()));
for (int i = 0; i < namesVector.size(); i++) {
String nm = (String) namesVector.elementAt(i);
String nm = namesVector.elementAt(i);
out.writeUTF(nm);
}
saveEntities(out);
out.writeShort((short) (elements.size()));
for (Enumeration e = elements.elements() ; e.hasMoreElements() ; ) {
saveElement(out, (Element)e.nextElement());
for (Enumeration<Element> e = elements.elements() ; e.hasMoreElements() ; ) {
saveElement(out, e.nextElement());
}
if (namesVector.size() != numNames) {
......@@ -106,21 +106,21 @@ class DTDBuilder extends DTD {
}
private void buildNamesTable() {
for (Enumeration e = entityHash.elements() ; e.hasMoreElements() ; ) {
Entity ent = (Entity) e.nextElement();
for (Enumeration<Entity> e = entityHash.elements() ; e.hasMoreElements() ; ) {
Entity ent = e.nextElement();
// Do even if not isGeneral(). That way, exclusions and inclusions
// will definitely have their element.
getNameId(ent.getName());
}
for (Enumeration e = elements.elements() ; e.hasMoreElements() ; ) {
Element el = (Element) e.nextElement();
for (Enumeration<Element> e = elements.elements() ; e.hasMoreElements() ; ) {
Element el = e.nextElement();
getNameId(el.getName());
for (AttributeList atts = el.getAttributes() ; atts != null ; atts = atts.getNext()) {
getNameId(atts.getName());
if (atts.getValue() != null) {
getNameId(atts.getValue());
}
Enumeration vals = atts.getValues();
Enumeration<?> vals = atts.getValues();
while (vals != null && vals.hasMoreElements()) {
String s = (String) vals.nextElement();
getNameId(s);
......@@ -133,9 +133,9 @@ class DTDBuilder extends DTD {
// The the id of a name from the list of names
//
private short getNameId(String name) {
Object o = namesHash.get(name);
Integer o = namesHash.get(name);
if (o != null) {
return (short) ((Integer) o).intValue();
return (short) o.intValue();
}
int i = namesVector.size();
namesVector.addElement(name);
......@@ -149,16 +149,16 @@ class DTDBuilder extends DTD {
*/
void saveEntities(DataOutputStream out) throws IOException {
int num = 0;
for (Enumeration e = entityHash.elements() ; e.hasMoreElements() ; ) {
Entity ent = (Entity) e.nextElement();
for (Enumeration<Entity> e = entityHash.elements() ; e.hasMoreElements() ; ) {
Entity ent = e.nextElement();
if (ent.isGeneral()) {
num++;
}
}
out.writeShort((short) num);
for (Enumeration e = entityHash.elements() ; e.hasMoreElements() ; ) {
Entity ent = (Entity) e.nextElement();
for (Enumeration<Entity> e = entityHash.elements() ; e.hasMoreElements() ; ) {
Entity ent = e.nextElement();
if (ent.isGeneral()) {
out.writeShort(getNameId(ent.getName()));
out.writeByte(ent.getType() & ~GENERAL);
......
/*
* Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 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
......@@ -48,7 +48,7 @@ import java.net.URL;
public final
class DTDInputStream extends FilterReader implements DTDConstants {
public DTD dtd;
public Stack stack = new Stack();
public Stack<Object> stack = new Stack<>();
public char str[] = new char[64];
public int replace = 0;
public int ln = 1;
......@@ -105,6 +105,7 @@ class DTDInputStream extends FilterReader implements DTDConstants {
* parameter entities.
* [60] 350:22
*/
@SuppressWarnings("fallthrough")
public int read() throws IOException {
switch (ch) {
case '%': {
......@@ -134,6 +135,7 @@ class DTDInputStream extends FilterReader implements DTDConstants {
switch (ch) {
case '\r':
ln++;
/* fall through */
case ';':
ch = in.read();
break;
......
/*
* Copyright (c) 1998, 2000, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 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
......@@ -87,7 +87,7 @@ class DTDParser implements DTDConstants {
return null;
}
return MessageFormat.format(prop, args);
return MessageFormat.format(prop, (Object[])args);
}
/**
......@@ -201,6 +201,7 @@ class DTDParser implements DTDConstants {
* Parse identifier. Uppercase characters are automatically
* folded to lowercase. Returns falsed if no identifier is found.
*/
@SuppressWarnings("fallthrough")
boolean parseIdentifier(boolean lower) throws IOException {
switch (ch) {
case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
......@@ -211,6 +212,7 @@ class DTDParser implements DTDConstants {
if (lower) {
ch = 'a' + (ch - 'A');
}
/* fall through */
case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
......@@ -233,6 +235,7 @@ class DTDParser implements DTDConstants {
* Parses name token. If <code>lower</code> is true, upper case letters
* are folded to lower case. Returns falsed if no token is found.
*/
@SuppressWarnings("fallthrough")
boolean parseNameToken(boolean lower) throws IOException {
boolean first = true;
......@@ -246,6 +249,7 @@ class DTDParser implements DTDConstants {
if (lower) {
ch = 'a' + (ch - 'A');
}
/* fall through */
case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
......@@ -271,8 +275,8 @@ class DTDParser implements DTDConstants {
/**
* Parse a list of identifiers.
*/
Vector parseIdentifierList(boolean lower) throws IOException {
Vector elems = new Vector();
Vector<String> parseIdentifierList(boolean lower) throws IOException {
Vector<String> elems = new Vector<>();
skipSpace();
switch (ch) {
case '(':
......@@ -507,7 +511,7 @@ class DTDParser implements DTDConstants {
* [116] 405:6
*/
void parseElementDeclaration() throws IOException {
Vector elems = parseIdentifierList(true);
Vector<String> elems = parseIdentifierList(true);
BitSet inclusions = null;
BitSet exclusions = null;
boolean omitStart = false;
......@@ -544,26 +548,26 @@ class DTDParser implements DTDConstants {
if ((type == MODEL) || (type == ANY)) {
if (ch == '-') {
ch = in.read();
Vector v = parseIdentifierList(true);
Vector<String> v = parseIdentifierList(true);
exclusions = new BitSet();
for (Enumeration e = v.elements() ; e.hasMoreElements() ;) {
exclusions.set(dtd.getElement((String)e.nextElement()).getIndex());
for (Enumeration<String> e = v.elements() ; e.hasMoreElements() ;) {
exclusions.set(dtd.getElement(e.nextElement()).getIndex());
}
}
if (ch == '+') {
ch = in.read();
Vector v = parseIdentifierList(true);
Vector<String> v = parseIdentifierList(true);
inclusions = new BitSet();
for (Enumeration e = v.elements() ; e.hasMoreElements() ;) {
inclusions.set(dtd.getElement((String)e.nextElement()).getIndex());
for (Enumeration<String> e = v.elements() ; e.hasMoreElements() ;) {
inclusions.set(dtd.getElement(e.nextElement()).getIndex());
}
}
}
expect('>');
if (in.replace == 0) {
for (Enumeration e = elems.elements() ; e.hasMoreElements() ;) {
dtd.defineElement((String)e.nextElement(), type, omitStart, omitEnd, content, exclusions, inclusions, null);
for (Enumeration<String> e = elems.elements() ; e.hasMoreElements() ;) {
dtd.defineElement(e.nextElement(), type, omitStart, omitEnd, content, exclusions, inclusions, null);
}
}
}
......@@ -582,7 +586,7 @@ class DTDParser implements DTDConstants {
error("invalid", "attribute value");
return;
}
atts.type = atts.name2type(getString(0));
atts.type = AttributeList.name2type(getString(0));
skipParameterSpace();
if (atts.type == NOTATION) {
atts.values = parseIdentifierList(true);
......@@ -593,6 +597,7 @@ class DTDParser implements DTDConstants {
* Parse an attribute value specification.
* [33] 331:1
*/
@SuppressWarnings("fallthrough")
String parseAttributeValueSpecification() throws IOException {
int delim = -1;
switch (ch) {
......@@ -627,6 +632,7 @@ class DTDParser implements DTDConstants {
ch = in.read();
return getString(0);
}
/* fall through */
default:
addString(ch & 0xFF);
......@@ -648,7 +654,7 @@ class DTDParser implements DTDConstants {
return;
}
skipParameterSpace();
atts.modifier = atts.name2type(getString(0));
atts.modifier = AttributeList.name2type(getString(0));
if (atts.modifier != FIXED) {
return;
}
......@@ -663,7 +669,7 @@ class DTDParser implements DTDConstants {
* REMIND: associated notation name
*/
void parseAttlistDeclaration() throws IOException {
Vector elems = parseIdentifierList(true);
Vector<String> elems = parseIdentifierList(true);
AttributeList attlist = null, atts = null;
while (parseIdentifier(true)) {
......@@ -685,8 +691,8 @@ class DTDParser implements DTDConstants {
expect('>');
if (in.replace == 0) {
for (Enumeration e = elems.elements() ; e.hasMoreElements() ;) {
dtd.defineAttributes((String)e.nextElement(), attlist);
for (Enumeration<String> e = elems.elements() ; e.hasMoreElements() ;) {
dtd.defineAttributes(e.nextElement(), attlist);
}
}
}
......@@ -810,6 +816,7 @@ class DTDParser implements DTDConstants {
/**
* Parse a section of the input upto EOF or ']'.
*/
@SuppressWarnings("fallthrough")
void parseSection() throws IOException {
while (true) {
switch (ch) {
......@@ -883,6 +890,7 @@ class DTDParser implements DTDConstants {
default:
char str[] = {(char)ch};
error("invalid.arg", "character", "'" + new String(str) + "' / " + ch);
/* fall through */
case ' ':
case '\t':
......
/*
* Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 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
......@@ -44,7 +44,7 @@ import java.util.Hashtable;
final class PublicMapping {
String baseStr;
Hashtable tab = new Hashtable();
Hashtable<String, String> tab = new Hashtable<>();
/**
* Create a mapping.
......@@ -103,6 +103,6 @@ final class PublicMapping {
*/
public String get(String id) {
// System.err.println(" id = "+id);
return (String) tab.get(id);
return tab.get(id);
}
}
/*
* Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 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
......@@ -66,7 +66,7 @@ class CharSet {
* A cache which is used to speed up parseString() whenever it is
* used to parse a description that has been parsed before
*/
private static Hashtable expressionCache = null;
private static Hashtable<String, CharSet> expressionCache = null;
/**
* Builds a CharSet based on a textual description. For the syntax of
......@@ -79,7 +79,7 @@ class CharSet {
// if "s" is in the expression cache, pull the result out
// of the expresison cache
if (expressionCache != null) {
result = (CharSet)expressionCache.get(s);
result = expressionCache.get(s);
}
// otherwise, use doParseString() to actually parse the string,
......@@ -87,7 +87,7 @@ class CharSet {
if (result == null) {
result = doParseString(s);
if (expressionCache == null) {
expressionCache = new Hashtable();
expressionCache = new Hashtable<>();
}
expressionCache.put(s, result);
}
......@@ -336,8 +336,8 @@ class CharSet {
* Returns a copy of CharSet's expression cache and sets CharSet's
* expression cache to empty.
*/
public static Hashtable releaseExpressionCache() {
Hashtable result = expressionCache;
public static Hashtable<String, CharSet> releaseExpressionCache() {
Hashtable<String, CharSet> result = expressionCache;
expressionCache = null;
return result;
}
......@@ -778,7 +778,7 @@ class CharSet {
* An Enumeration that can be used to extract the character ranges
* from a CharSet one at a time
*/
public class Enumeration implements java.util.Enumeration {
public class Enumeration implements java.util.Enumeration<int[]> {
/**
* Initializes a CharSet.Enumeration
*/
......@@ -798,7 +798,7 @@ class CharSet {
/**
* Returns the next range in the CarSet
*/
public Object nextElement() {
public int[] nextElement() {
int[] result = new int[2];
result[0] = chars[p++];
result[1] = chars[p++];
......
/*
* Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 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
......@@ -78,12 +78,12 @@ class DictionaryBasedBreakIteratorBuilder extends RuleBasedBreakIteratorBuilder
* contains "true" for every character category that includes a dictionary
* character.
*/
protected void buildCharCategories(Vector tempRuleList) {
protected void buildCharCategories(Vector<String> tempRuleList) {
super.buildCharCategories(tempRuleList);
categoryFlags = new boolean[categories.size()];
for (int i = 0; i < categories.size(); i++) {
CharSet cs = (CharSet)categories.elementAt(i);
CharSet cs = categories.elementAt(i);
if (!(cs.intersection(dictionaryChars).empty())) {
categoryFlags[i] = true;
}
......@@ -95,7 +95,7 @@ class DictionaryBasedBreakIteratorBuilder extends RuleBasedBreakIteratorBuilder
// the function above. This gives us a way to create a separate character
// category for the dictionary characters even when
// RuleBasedBreakIteratorBuilder isn't making a distinction.
protected void mungeExpressionList(Hashtable expressions) {
protected void mungeExpressionList(Hashtable<String, Object> expressions) {
expressions.put(dictionaryExpression, dictionaryChars);
}
......
/*
* Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 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
......@@ -91,9 +91,9 @@ public class GenerateBreakIteratorData {
try {
info = (ResourceBundle)Class.forName("sun.text.resources.BreakIteratorInfo" + localeName).newInstance();
Enumeration keys = info.getKeys();
Enumeration<String> keys = info.getKeys();
while (keys.hasMoreElements()) {
String key = (String)keys.nextElement();
String key = keys.nextElement();
if (key.equals("CharacterData")) {
generateDataFile(info.getString(key),
......
/*
* Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 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
......@@ -128,7 +128,7 @@ final class SupplementaryCharacterData {
int new_index = 0;
int loop_count = dataCount - 1;
long data = tempTable[old_index];
int start = (int)((long)(data>>32)) & CODEPOINT_MASK;
int start = (int)(data>>32) & CODEPOINT_MASK;
int end = (int)(data>>8) & CODEPOINT_MASK;
/*
......@@ -142,7 +142,7 @@ final class SupplementaryCharacterData {
newTempTable[new_index++] = composeEntry(start, (int)data);
for (int i = 0; i < loop_count; i++) {
data = tempTable[++old_index];
int nextStart = (int)((long)(data>>32)) & CODEPOINT_MASK;
int nextStart = (int)(data>>32) & CODEPOINT_MASK;
/*
* If the previous end code point is not equal to the previous start
......
/*
* Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 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
......@@ -1290,7 +1290,7 @@ OUTER: for (int i = 0; i < n; i += m) {
else if (bits == 32 || bits < 8)
result.append(hex8((int)val));
else {
result.append(hex16((long)val));
result.append(hex16(val));
if (!Csyntax)
result.append("L");
}
......
/*
* Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 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
......@@ -39,7 +39,7 @@ import java.lang.*;
* <p>
* @author John O'Conner
*/
public class SpecialCaseMap implements Comparable {
public class SpecialCaseMap implements Comparable<SpecialCaseMap> {
SpecialCaseMap() {
chSource = 0xFFFF;
......@@ -55,7 +55,7 @@ public class SpecialCaseMap implements Comparable {
*/
public static SpecialCaseMap[] readSpecFile(File file, int plane) throws FileNotFoundException {
ArrayList caseMaps = new ArrayList(150);
ArrayList<SpecialCaseMap> caseMaps = new ArrayList<>(150);
int count = 0;
BufferedReader f = new BufferedReader(new FileReader(file));
String line = null;
......@@ -69,7 +69,7 @@ public class SpecialCaseMap implements Comparable {
SpecialCaseMap item = parse(line.trim());
if (item != null) {
if(item.getCharSource() >> 16 < plane) continue;
if((int)(item.getCharSource() >> 16) > plane) break;
if(item.getCharSource() >> 16 > plane) break;
caseMaps.add(item);
++count;
}
......@@ -83,7 +83,7 @@ public class SpecialCaseMap implements Comparable {
}
/**
/**
* Given one line of a Unicode special casing data file as a String, parse the line
* and return a SpecialCaseMap object that contains the case mapping.
*
......@@ -177,25 +177,25 @@ public class SpecialCaseMap implements Comparable {
else return -1;
}
/*
/*
* Extracts and returns the high surrogate value from a UTF-32 code point.
* If argument is a BMP character, then it is converted to a char and returned;
* otherwise the high surrogate value is extracted.
* @param codePoint a UTF-32 codePoint with value greater than 0xFFFF.
* @return the high surrogate value that helps create <code>codePoint</code>; else
* the char representation of <code>codePoint</code> if it is a BMP character.
* @since 1.5
* @since 1.5
*/
static char getHighSurrogate(int codePoint) {
char high = (char)codePoint;
if (codePoint > 0xFFFF) {
high = (char)((codePoint - 0x10000)/0x0400 + 0xD800);
}
return high;
static char getHighSurrogate(int codePoint) {
char high = (char)codePoint;
if (codePoint > 0xFFFF) {
high = (char)((codePoint - 0x10000)/0x0400 + 0xD800);
}
return high;
}
/*
/*
* Extracts and returns the low surrogate value from a UTF-32 code point.
* If argument is a BMP character, then it is converted to a char and returned;
* otherwise the high surrogate value is extracted.
......@@ -204,29 +204,28 @@ public class SpecialCaseMap implements Comparable {
* the char representation of <code>codePoint</code> if it is a BMP character.
* @since 1.5
*/
static char getLowSurrogate(int codePoint) {
char low = (char)codePoint;
if(codePoint > 0xFFFF) {
low = (char)((codePoint - 0x10000)%0x0400 + 0xDC00);
}
return low;
static char getLowSurrogate(int codePoint) {
char low = (char)codePoint;
if(codePoint > 0xFFFF) {
low = (char)((codePoint - 0x10000)%0x0400 + 0xDC00);
}
return low;
}
static String hex6(int n) {
String str = Integer.toHexString(n & 0xFFFFFF).toUpperCase();
return "000000".substring(Math.min(6, str.length())) + str;
}
static String hex6(int n) {
String str = Integer.toHexString(n & 0xFFFFFF).toUpperCase();
return "000000".substring(Math.min(6, str.length())) + str;
}
static String hex6(char[] map){
StringBuffer buff = new StringBuffer();
int x=0;
buff.append(hex6(map[x++]));
while(x<map.length) {
buff.append(" " + hex6(map[x++]));
}
return buff.toString();
static String hex6(char[] map){
StringBuffer buff = new StringBuffer();
int x=0;
buff.append(hex6(map[x++]));
while(x<map.length) {
buff.append(" " + hex6(map[x++]));
}
return buff.toString();
}
void setCharSource(int ch) {
chSource = ch;
......@@ -302,56 +301,62 @@ public class SpecialCaseMap implements Comparable {
static String CONTEXT_MODERN = "MODERN";
static String CONTEXT_NONMODERN = "NON_MODERN";
public int compareTo(Object otherObject) {
SpecialCaseMap other = (SpecialCaseMap)otherObject;
if (chSource < other.chSource) {
public int compareTo(SpecialCaseMap otherObject) {
if (chSource < otherObject.chSource) {
return -1;
}
else if (chSource > other.chSource) {
else if (chSource > otherObject.chSource) {
return 1;
}
else return 0;
}
public boolean equals(Object o1) {
boolean bEqual = false;
if (0 == compareTo(o1)) {
bEqual = true;
}
if (this == o1) {
return true;
}
if (o1 == null || !(o1 instanceof SpecialCaseMap)) {
return false;
}
SpecialCaseMap other = (SpecialCaseMap)o1;
boolean bEqual = false;
if (0 == compareTo(other)) {
bEqual = true;
}
return bEqual;
}
public String toString() {
StringBuffer buff = new StringBuffer();
buff.append(hex6(getCharSource()));
buff.append("|" + hex6(lowerCaseMap));
buff.append("|" + hex6(upperCaseMap));
buff.append("|" + hex6(titleCaseMap));
buff.append("|" + context);
return buff.toString();
}
public String toString() {
StringBuffer buff = new StringBuffer();
buff.append(hex6(getCharSource()));
buff.append("|" + hex6(lowerCaseMap));
buff.append("|" + hex6(upperCaseMap));
buff.append("|" + hex6(titleCaseMap));
buff.append("|" + context);
return buff.toString();
}
public int hashCode() {
return (int)chSource;
}
public int hashCode() {
return chSource;
}
public static void main(String[] args) {
SpecialCaseMap[] spec = null;
if (args.length == 2 ) {
try {
File file = new File(args[0]);
int plane = Integer.parseInt(args[1]);
spec = SpecialCaseMap.readSpecFile(file, plane);
System.out.println("SpecialCaseMap[" + spec.length + "]:");
for (int x=0; x<spec.length; x++) {
System.out.println(spec[x].toString());
}
}
catch(Exception e) {
e.printStackTrace();
}
public static void main(String[] args) {
SpecialCaseMap[] spec = null;
if (args.length == 2 ) {
try {
File file = new File(args[0]);
int plane = Integer.parseInt(args[1]);
spec = SpecialCaseMap.readSpecFile(file, plane);
System.out.println("SpecialCaseMap[" + spec.length + "]:");
for (int x=0; x<spec.length; x++) {
System.out.println(spec[x].toString());
}
}
catch(Exception e) {
e.printStackTrace();
}
}
}
}
/*
* Copyright (c) 2002, 2004, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 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
......@@ -391,31 +391,31 @@ public class UnicodeSpec {
*/
public static UnicodeSpec[] readSpecFile(File file, int plane) throws FileNotFoundException {
ArrayList list = new ArrayList(3000);
ArrayList<UnicodeSpec> list = new ArrayList<>(3000);
UnicodeSpec[] result = null;
int count = 0;
BufferedReader f = new BufferedReader(new FileReader(file));
String line = null;
String line = null;
loop:
while(true) {
try {
line = f.readLine();
}
catch (IOException e) {
break loop;
}
break loop;
}
if (line == null) break loop;
UnicodeSpec item = parse(line.trim());
int specPlane = (int)(item.getCodePoint() >>> 16);
if (specPlane < plane) continue;
if (specPlane > plane) break;
int specPlane = item.getCodePoint() >>> 16;
if (specPlane < plane) continue;
if (specPlane > plane) break;
if (item != null) {
list.add(item);
list.add(item);
}
}
result = new UnicodeSpec[list.size()];
list.toArray(result);
result = new UnicodeSpec[list.size()];
list.toArray(result);
return result;
}
......
/*
* Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2001, 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
......@@ -250,10 +250,10 @@ public class GenerateCurrencyData {
return Integer.parseInt(numericCode);
}
static HashMap specialCaseMap = new HashMap();
static HashMap<String, Integer> specialCaseMap = new HashMap<>();
private static int makeSpecialCaseEntry(String currencyInfo) throws Exception {
Integer oldEntry = (Integer) specialCaseMap.get(currencyInfo);
Integer oldEntry = specialCaseMap.get(currencyInfo);
if (oldEntry != null) {
return oldEntry.intValue();
}
......
/*
* Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2004, 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
......@@ -51,15 +51,15 @@ public class Hasher {
boolean verbose = false;
List keys = new ArrayList(); // Key strings
List values = new ArrayList(); // Value expressions
String pkg = null; // Package prefix for generated class
String cln = null; // Name of generated class
String vtype = "String"; // Value type
int maxBits = 11; // lg table size
int maxDepth = 3; // Max chain depth
boolean inner = false; // Generating an inner class?
boolean empty = false; // Generating an empty table?
List<String> keys = new ArrayList<>(); // Key strings
List<String> values = new ArrayList<>(); // Value expressions
String pkg = null; // Package prefix for generated class
String cln = null; // Name of generated class
String vtype = "String"; // Value type
int maxBits = 11; // lg table size
int maxDepth = 3; // Max chain depth
boolean inner = false; // Generating an inner class?
boolean empty = false; // Generating an empty table?
void usage() {
err.println("usage: java Hasher [options] [[pkgName.]ClassName]");
......@@ -76,9 +76,9 @@ public class Hasher {
}
Hasher(String[] args) {
List as = Arrays.asList(args);
for (Iterator i = as.iterator(); i.hasNext();) {
String a = (String)i.next();
List<String> as = Arrays.asList(args);
for (Iterator<String> i = as.iterator(); i.hasNext();) {
String a = i.next();
if (a.equals("-e")) {
empty = true;
} else if (a.equals("-i")) {
......@@ -88,15 +88,15 @@ public class Hasher {
} else if (a.equals("-md")) {
if (!i.hasNext())
usage();
maxDepth = Integer.parseInt((String)i.next());
maxDepth = Integer.parseInt(i.next());
} else if (a.equals("-mb")) {
if (!i.hasNext())
usage();
maxBits = Integer.parseInt((String)i.next());
maxBits = Integer.parseInt(i.next());
} else if (a.equals("-t")) {
if (!i.hasNext())
usage();
vtype = (String)i.next();
vtype = i.next();
} else if (a.startsWith("-")) {
usage();
} else {
......@@ -153,8 +153,8 @@ public class Hasher {
int nw = keys.size();
for (int i = 0; i < nw; i++) {
String w = (String)keys.get(i);
String v = (String)values.get(i);
String w = keys.get(i);
String v = values.get(i);
int h = hash(w);
if (ht[h] == null)
ht[h] = new Object[] { w, v };
......@@ -217,7 +217,7 @@ public class Hasher {
if (verbose)
err.println();
for (int i = 0, n = keys.size(); i < n; i++) {
String w = (String)keys.get(i);
String w = keys.get(i);
String v = get(w);
if (verbose)
err.println(hash(w) + "\t" + w);
......
/*
* Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2005, 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
......@@ -43,7 +43,8 @@ public class JarSplit {
/* classlist[0] contains class file list
* classlist[1] contains non-class file list
*/
private static Vector<String>[] classlist = (Vector<String>[])(new Vector[2]);
@SuppressWarnings({ "unchecked", "rawtypes" })
private static Vector<String>[] classlist = new Vector[2];
/* The 2 class list name passed as arguments. */
private static String[] fileNamelist = new String[2];
......
/*
* Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 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
......@@ -30,14 +30,9 @@ import java.io.File;
import java.io.FileOutputStream;
import java.io.DataOutputStream;
import java.io.RandomAccessFile;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
import sun.util.calendar.ZoneInfoFile;
/**
......@@ -105,14 +100,13 @@ class Gen extends BackEnd {
/* if DST offset is 0, this means DST isn't used.
* (NOT: offset's index is 0.)
*/
if ((dstoffset =
((Integer)dstOffsets.get(i)).intValue()) == -1) {
if ((dstoffset = dstOffsets.get(i).intValue()) == -1) {
dstoffset = 0;
}
dos.writeLong((((Long)transitions.get(i)).longValue() << 12)
dos.writeLong((transitions.get(i).longValue() << 12)
| (dstoffset << 4)
| ((Integer)offsets.get(i)).intValue());
| offsets.get(i).intValue());
}
......
/*
* Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2001, 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
......@@ -31,12 +31,8 @@ import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
......@@ -189,7 +185,7 @@ class GenDoc extends BackEnd {
out.write(header1 + new Date() + header3 + zonename + header4);
out.write(body1 + "<FONT size=\"+2\"><B>" + zonename + "</B></FONT>");
LatitudeAndLongitude location = (LatitudeAndLongitude)mapList.get(zonename);
LatitudeAndLongitude location = mapList.get(zonename);
if (location != null) {
int deg, min, sec;
......@@ -608,12 +604,12 @@ class GenDoc extends BackEnd {
"<BR>\n\n" + "<TABLE BORDER=\"0\" WIDTH=\"100%\">\n" +
"<TR>\n<TD NOWRAP>\n");
Set aliasSet = a.keySet();
Set<String> aliasSet = a.keySet();
len = aliasSet.size();
Object aliasNames[] = aliasSet.toArray();
String aliasNames[] = aliasSet.toArray(new String[0]);
for (int i = 0; i < len; i++) {
displayNameList.put(transform((String)aliasNames[i]),
(String)aliasNames[i]);
displayNameList.put(transform(aliasNames[i]),
aliasNames[i]);
}
o = displayNameList.keySet().toArray();
......
/*
* Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 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
......@@ -26,7 +26,6 @@
package build.tools.javazic;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
......
/*
* Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 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
......@@ -26,9 +26,6 @@
package build.tools.javazic;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
......
/*
* Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 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
......@@ -29,10 +29,7 @@ import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
......@@ -51,22 +48,19 @@ class Simple extends BackEnd {
/**
* Zone records which are applied for given year.
*/
private static Map<String,ZoneRec> lastZoneRecs
= new HashMap<String,ZoneRec>();
private static Map<String,ZoneRec> lastZoneRecs = new HashMap<>();
/**
* Rule records which are applied for given year.
*/
private static Map<String,List<RuleRec>> lastRules
= new TreeMap<String,List<RuleRec>>();
private static Map<String,List<RuleRec>> lastRules = new TreeMap<>();
/**
* zone IDs sorted by their GMT offsets. If zone's GMT
* offset will change in the future, its last known offset is
* used.
*/
private SortedMap<Integer, Set<String>> zonesByOffset
= new TreeMap<Integer, Set<String>>();
private SortedMap<Integer, Set<String>> zonesByOffset = new TreeMap<>();
/**
* Sets last Rule records and Zone records for given timezone to
......@@ -86,7 +80,7 @@ class Simple extends BackEnd {
int lastKnownOffset = tz.getRawOffset();
Set<String> set = zonesByOffset.get(lastKnownOffset);
if (set == null) {
set = new TreeSet<String>();
set = new TreeSet<>();
zonesByOffset.put(lastKnownOffset, set);
}
set.add(zonename);
......@@ -101,16 +95,11 @@ class Simple extends BackEnd {
*/
int generateSrc(Mappings map) {
try {
String outputDir = Main.getOutputDir();
File outD = new File(outputDir);
if (!outputDir.endsWith(File.separator)) {
outputDir += outD.separator;
}
File outD = new File(Main.getOutputDir());
outD.mkdirs();
FileWriter fw =
new FileWriter(outputDir + "TimeZoneData.java", false);
new FileWriter(new File(outD, "TimeZoneData.java"), false);
BufferedWriter out = new BufferedWriter(fw);
out.write("import java.util.SimpleTimeZone;\n\n");
......
/*
* Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 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
......@@ -268,16 +268,16 @@ class Time {
if (index < time.length()) {
char c = time.charAt(index++);
if (c == 's') {
tm.setType(tm.STD);
tm.setType(Time.STD);
} else if (c == 'u' || c == 'g' || c == 'z') {
tm.setType(tm.UTC);
tm.setType(Time.UTC);
} else if (c == 'w') {
tm.setType(tm.WALL);
tm.setType(Time.WALL);
} else {
Main.panic("unknown time mode: "+c);
}
} else {
tm.setType(tm.WALL);
tm.setType(Time.WALL);
}
return tm;
}
......
/*
* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 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
......@@ -29,9 +29,7 @@ import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
......@@ -407,9 +405,9 @@ class Zoneinfo {
if (!zrec.hasUntil()) {
if (tz.getNTransitions() > 0) {
if (stdOffset == 0) {
tz.setDSTType(tz.X_DST);
tz.setDSTType(Timezone.X_DST);
} else {
tz.setDSTType(tz.LAST_DST);
tz.setDSTType(Timezone.LAST_DST);
}
long time = Time.getLocalTime(maxYear,
Month.JANUARY, 1, 0);
......@@ -419,7 +417,7 @@ class Zoneinfo {
tz.getDstOffsetIndex(stdOffset));
tz.addUsedRec(zrec);
} else {
tz.setDSTType(tz.NO_DST);
tz.setDSTType(Timezone.NO_DST);
}
break;
}
......@@ -527,7 +525,7 @@ class Zoneinfo {
if (year == endYear && !zrec.hasUntil()) {
if (tz.getNTransitions() > 0) {
// Assume that this Zone stopped DST
tz.setDSTType(tz.X_DST);
tz.setDSTType(Timezone.X_DST);
long time = Time.getLocalTime(maxYear, Month.JANUARY,
1, 0);
time -= zrec.getGmtOffset();
......@@ -536,7 +534,7 @@ class Zoneinfo {
tz.getDstOffsetIndex(0));
usedZone = true;
} else {
tz.setDSTType(tz.NO_DST);
tz.setDSTType(Timezone.NO_DST);
}
}
}
......@@ -552,8 +550,8 @@ class Zoneinfo {
}
}
if (tz.getDSTType() == tz.UNDEF_DST) {
tz.setDSTType(tz.DST);
if (tz.getDSTType() == Timezone.UNDEF_DST) {
tz.setDSTType(Timezone.DST);
}
tz.optimize();
tz.checksum();
......
/*
* Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 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
......@@ -25,7 +25,6 @@
package build.tools.jdwpgen;
import java.util.*;
import java.io.*;
class AbstractCommandNode extends AbstractNamedNode {
......@@ -35,8 +34,8 @@ class AbstractCommandNode extends AbstractNamedNode {
" Command</a> (" + nameNode.value() + ")</h5>");
writer.println(comment());
writer.println("<dl>");
for (Iterator it = components.iterator(); it.hasNext();) {
((Node)it.next()).document(writer);
for (Node node : components) {
node.document(writer);
}
writer.println("</dl>");
}
......
/*
* Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 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
......@@ -25,14 +25,13 @@
package build.tools.jdwpgen;
import java.util.*;
import java.io.*;
abstract class AbstractGroupNode extends AbstractTypeListNode {
void document(PrintWriter writer) {
for (Iterator it = components.iterator(); it.hasNext();) {
((Node)it.next()).document(writer);
for (Node node : components) {
node.document(writer);
}
}
......
/*
* Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 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
......@@ -38,10 +38,10 @@ abstract class AbstractNamedNode extends Node {
}
void prune() {
Iterator it = components.iterator();
Iterator<Node> it = components.iterator();
if (it.hasNext()) {
Node nameNode = (Node)it.next();
Node nameNode = it.next();
if (nameNode instanceof NameNode) {
this.nameNode = (NameNode)nameNode;
......@@ -64,8 +64,8 @@ abstract class AbstractNamedNode extends Node {
void document(PrintWriter writer) {
writer.println("<h4><a name=" + name + ">" + name +
" Command Set</a></h4>");
for (Iterator it = components.iterator(); it.hasNext();) {
((Node)it.next()).document(writer);
for (Node node : components) {
node.document(writer);
}
}
......@@ -90,8 +90,8 @@ abstract class AbstractNamedNode extends Node {
writer.print("class " + javaClassName());
writer.println(javaClassImplements() + " {");
genJavaClassSpecifics(writer, depth+1);
for (Iterator it = components.iterator(); it.hasNext();) {
((Node)it.next()).genJava(writer, depth+1);
for (Node node : components) {
node.genJava(writer, depth+1);
}
indent(writer, depth);
writer.println("}");
......
/*
* Copyright (c) 1998, 2002, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 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
......@@ -40,7 +40,7 @@ abstract class AbstractTypeListNode extends AbstractNamedNode {
void document(PrintWriter writer) {
writer.println("<dt>" + name() + " Data");
if (components.size() == 0) {
if (components.isEmpty()) {
writer.println("<dd>(None)");
} else {
writer.println("<dd><table border=1 cellpadding=3 cellspacing=0 width=\"90%\" summary=\"\"><tr>");
......@@ -49,24 +49,24 @@ abstract class AbstractTypeListNode extends AbstractNamedNode {
}
writer.println("<th width=\"15%\"><th width=\"65%\">");
writer.println("");
for (Iterator it = components.iterator(); it.hasNext();) {
((Node)it.next()).document(writer);
for (Node node : components) {
node.document(writer);
}
writer.println("</table>");
}
}
void genJavaClassBodyComponents(PrintWriter writer, int depth) {
for (Iterator it = components.iterator(); it.hasNext();) {
TypeNode tn = (TypeNode)it.next();
for (Node node : components) {
TypeNode tn = (TypeNode)node;
tn.genJavaDeclaration(writer, depth);
}
}
void genJavaReads(PrintWriter writer, int depth) {
for (Iterator it = components.iterator(); it.hasNext();) {
TypeNode tn = (TypeNode)it.next();
for (Node node : components) {
TypeNode tn = (TypeNode)node;
tn.genJavaRead(writer, depth, tn.name());
}
}
......@@ -88,7 +88,7 @@ abstract class AbstractTypeListNode extends AbstractNamedNode {
String javaParams() {
StringBuffer sb = new StringBuffer();
for (Iterator it = components.iterator(); it.hasNext();) {
for (Iterator<Node> it = components.iterator(); it.hasNext();) {
TypeNode tn = (TypeNode)it.next();
sb.append(tn.javaParam());
if (it.hasNext()) {
......@@ -99,8 +99,8 @@ abstract class AbstractTypeListNode extends AbstractNamedNode {
}
void genJavaWrites(PrintWriter writer, int depth) {
for (Iterator it = components.iterator(); it.hasNext();) {
TypeNode tn = (TypeNode)it.next();
for (Node node : components) {
TypeNode tn = (TypeNode)node;
tn.genJavaWrite(writer, depth, tn.name());
}
}
......@@ -111,8 +111,8 @@ abstract class AbstractTypeListNode extends AbstractNamedNode {
writer.println();
indent(writer, depth);
writer.println(className + "(" + javaParams() + ") {");
for (Iterator it = components.iterator(); it.hasNext();) {
TypeNode tn = (TypeNode)it.next();
for (Node node : components) {
TypeNode tn = (TypeNode)node;
indent(writer, depth+1);
writer.println("this." + tn.name() + " = " + tn.name() + ";");
}
......
/*
* Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 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
......@@ -100,7 +100,7 @@ class AltNode extends AbstractGroupNode implements TypeNode {
indent(writer, depth+1);
writer.print("return new " + select.name() + "(");
writer.print("ALT_ID, new " + javaClassName() + "(");
for (Iterator it = components.iterator(); it.hasNext();) {
for (Iterator<Node> it = components.iterator(); it.hasNext();) {
TypeNode tn = (TypeNode)it.next();
writer.print(tn.name());
if (it.hasNext()) {
......
/*
* Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 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
......@@ -25,7 +25,6 @@
package build.tools.jdwpgen;
import java.util.*;
import java.io.*;
class CommandSetNode extends AbstractNamedNode {
......@@ -43,8 +42,8 @@ class CommandSetNode extends AbstractNamedNode {
" Command Set</a> (" +
nameNode.value() + ")</h4>");
writer.println(comment());
for (Iterator it = components.iterator(); it.hasNext();) {
((Node)it.next()).document(writer);
for (Node node : components) {
node.document(writer);
}
}
......@@ -53,8 +52,8 @@ class CommandSetNode extends AbstractNamedNode {
writer.println(name() + "</a> Command Set (" +
nameNode.value() + ")");
writer.println("<ul>");
for (Iterator it = components.iterator(); it.hasNext();) {
((Node)it.next()).documentIndex(writer);
for (Node node : components) {
node.documentIndex(writer);
}
writer.println("</ul>");
}
......
/*
* Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 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
......@@ -33,14 +33,11 @@ class ConstantSetNode extends AbstractNamedNode {
/**
* The mapping between a constant and its value.
*/
protected static final Map<String, String> constantMap = new HashMap<String, String>();
protected static final Map<String, String> constantMap = new HashMap<>();
void prune() {
List<Node> addons = new ArrayList<Node>();
List<Node> addons = new ArrayList<>();
for (Iterator it = components.iterator(); it.hasNext(); ) {
Node node = (Node)it.next();
}
if (!addons.isEmpty()) {
components.addAll(addons);
}
......@@ -63,8 +60,8 @@ class ConstantSetNode extends AbstractNamedNode {
writer.println("<dd><table border=1 cellpadding=3 cellspacing=0 width=\"90%\" summary=\"\"><tr>");
writer.println("<th width=\"20%\"><th width=\"5%\"><th width=\"65%\">");
ConstantNode n;
for (Iterator it = components.iterator(); it.hasNext();) {
n = ((ConstantNode)it.next());
for (Node node : components) {
n = (ConstantNode)node;
writer.println("<a NAME=\"" + name + "_" + n.name + "\"></a>");
n.document(writer);
}
......
/*
* Copyright (c) 2001, 2002, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2001, 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
......@@ -25,7 +25,6 @@
package build.tools.jdwpgen;
import java.util.*;
import java.io.*;
class ErrorSetNode extends AbstractSimpleNode {
......@@ -41,12 +40,12 @@ class ErrorSetNode extends AbstractSimpleNode {
void document(PrintWriter writer) {
writer.println("<dt>" + "Error Data");
if (components.size() == 0) {
if (components.isEmpty()) {
writer.println("<dd>(None)");
} else {
writer.println("<dd><table border=1 cellpadding=3 cellspacing=0 width=\"90%\" summary=\"\">");
for (Iterator it = components.iterator(); it.hasNext();) {
((Node)it.next()).document(writer);
for (Node node : components) {
node.document(writer);
}
writer.println("</table>");
}
......
/*
* Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 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
......@@ -34,7 +34,7 @@ abstract class Node {
String kind;
List<Node> components;
int lineno;
List<String> commentList = new ArrayList<String>();
List<String> commentList = new ArrayList<>();
Node parent = null;
Context context = null;
......@@ -50,8 +50,8 @@ abstract class Node {
}
void parentAndExtractComments() {
for (Iterator it = components.iterator(); it.hasNext();) {
Node node = (Node)it.next();
for (Iterator<Node> it = components.iterator(); it.hasNext();) {
Node node = it.next();
if (node instanceof CommentNode) {
it.remove();
commentList.add(((CommentNode)node).text());
......@@ -63,16 +63,14 @@ abstract class Node {
}
void prune() {
for (Iterator it = components.iterator(); it.hasNext();) {
Node node = (Node)it.next();
for (Node node : components) {
node.prune();
}
}
void constrain(Context ctx) {
context = ctx;
for (Iterator it = components.iterator(); it.hasNext();) {
Node node = (Node)it.next();
for (Node node : components) {
constrainComponent(ctx, node);
}
}
......@@ -109,9 +107,9 @@ abstract class Node {
if (commentList.size() > 0) {
indent(writer, depth);
writer.println("/**");
for (Iterator it = commentList.iterator(); it.hasNext();) {
for (String comment : commentList) {
indent(writer, depth);
writer.println(" * " + (String)it.next());
writer.println(" * " + comment);
}
indent(writer, depth);
writer.println(" */");
......@@ -123,15 +121,13 @@ abstract class Node {
}
void genJava(PrintWriter writer, int depth) {
for (Iterator it = components.iterator(); it.hasNext();) {
Node node = (Node)it.next();
for (Node node : components) {
node.genJava(writer, depth);
}
}
void genCInclude(PrintWriter writer) {
for (Iterator it = components.iterator(); it.hasNext();) {
Node node = (Node)it.next();
for (Node node : components) {
node.genCInclude(writer);
}
}
......@@ -184,8 +180,7 @@ abstract class Node {
}
void genJavaPreDef(PrintWriter writer, int depth) {
for (Iterator it = components.iterator(); it.hasNext();) {
Node node = (Node)it.next();
for (Node node : components) {
node.genJavaPreDef(writer, depth);
}
}
......
/*
* Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 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
......@@ -48,8 +48,8 @@ class OutNode extends AbstractTypeListNode {
indent(writer, depth);
writer.print(
"static " + cmdName + " process(VirtualMachineImpl vm");
for (Iterator it = components.iterator(); it.hasNext();) {
TypeNode tn = (TypeNode)it.next();
for (Node node : components) {
TypeNode tn = (TypeNode)node;
writer.println(", ");
indent(writer, depth+5);
writer.print(tn.javaParam());
......@@ -59,8 +59,8 @@ class OutNode extends AbstractTypeListNode {
writer.println("throws JDWPException {");
indent(writer, depth+1);
writer.print("PacketStream ps = enqueueCommand(vm");
for (Iterator it = components.iterator(); it.hasNext();) {
TypeNode tn = (TypeNode)it.next();
for (Node node : components) {
TypeNode tn = (TypeNode)node;
writer.print(", ");
writer.print(tn.name());
}
......@@ -76,8 +76,8 @@ class OutNode extends AbstractTypeListNode {
indent(writer, depth);
writer.print(
"static PacketStream enqueueCommand(VirtualMachineImpl vm");
for (Iterator it = components.iterator(); it.hasNext();) {
TypeNode tn = (TypeNode)it.next();
for (Node node : components) {
TypeNode tn = (TypeNode)node;
writer.println(", ");
indent(writer, depth+5);
writer.print(tn.javaParam());
......
/*
* Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 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
......@@ -42,11 +42,11 @@ class RootNode extends AbstractNamedNode {
void document(PrintWriter writer) {
writer.println("<html><head><title>" + comment() + "</title></head>");
writer.println("<body bgcolor=\"white\">");
for (Iterator it = components.iterator(); it.hasNext();) {
((Node)it.next()).documentIndex(writer);
for (Node node : components) {
node.documentIndex(writer);
}
for (Iterator it = components.iterator(); it.hasNext();) {
((Node)it.next()).document(writer);
for (Node node : components) {
node.document(writer);
}
writer.println("</body></html>");
}
......
/*
* Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 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
......@@ -34,10 +34,10 @@ class SelectNode extends AbstractGroupNode implements TypeNode {
void prune() {
super.prune();
Iterator it = components.iterator();
Iterator<Node> it = components.iterator();
if (it.hasNext()) {
Node typeNode = (Node)it.next();
Node typeNode = it.next();
if (typeNode instanceof ByteTypeNode ||
typeNode instanceof IntTypeNode) {
......@@ -131,8 +131,8 @@ class SelectNode extends AbstractGroupNode implements TypeNode {
typeNode.genJavaRead(writer, depth, typeNode.name());
indent(writer, depth);
writer.println("switch (" + typeNode.name() + ") {");
for (Iterator it = components.iterator(); it.hasNext();) {
AltNode alt = (AltNode)it.next();
for (Node node : components) {
AltNode alt = (AltNode)node;
alt.genJavaReadsSelectCase(writer, depth+1, commonVar());
}
indent(writer, depth);
......
/*
* Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 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
......@@ -38,7 +38,7 @@ import java.util.jar.*;
public class MakeClasslist {
public static void main(String[] args) throws IOException {
List/*<String>*/ classes = new ArrayList();
List<String> classes = new ArrayList<>();
String origJavaHome = System.getProperty("java.home");
String javaHome = origJavaHome.toLowerCase();
if (javaHome.endsWith("jre")) {
......@@ -84,10 +84,9 @@ public class MakeClasslist {
}
}
Set/*<String>*/ seenClasses = new HashSet();
Set<String> seenClasses = new HashSet<>();
for (Iterator iter = classes.iterator(); iter.hasNext(); ) {
String str = (String) iter.next();
for (String str : seenClasses) {
if (seenClasses.add(str)) {
System.out.println(str);
}
......@@ -109,13 +108,13 @@ public class MakeClasslist {
// completePackage(seenClasses, rtJar, "java/lang");
}
private static void completePackage(Set seenClasses,
private static void completePackage(Set<String> seenClasses,
JarFile jar,
String packageName) {
int len = packageName.length();
Enumeration entries = jar.entries();
Enumeration<JarEntry> entries = jar.entries();
while (entries.hasMoreElements()) {
JarEntry entry = (JarEntry) entries.nextElement();
JarEntry entry = entries.nextElement();
String name = entry.getName();
if (name.startsWith(packageName) &&
name.endsWith(".class") &&
......
/*
* Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2001, 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
......@@ -246,7 +246,7 @@ public class StripProperties {
throws IOException {
BufferedWriter awriter;
awriter = new BufferedWriter(new OutputStreamWriter(out, "8859_1"));
for (Enumeration e = properties.keys(); e.hasMoreElements();) {
for (Enumeration<Object> e = properties.keys(); e.hasMoreElements();) {
String key = (String)e.nextElement();
String val = (String)properties.get(key);
key = saveConvert(key, true);
......
......@@ -27,6 +27,8 @@
#define _JLI_UTIL_H
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <jni.h>
void *JLI_MemAlloc(size_t size);
......@@ -58,6 +60,7 @@ int JLI_StrCCmp(const char *s1, const char* s2);
#define JLI_Snprintf _snprintf
#else
#include <unistd.h>
#include <strings.h>
#define JLI_StrCaseCmp(p1, p2) strcasecmp((p1), (p2))
#define JLI_StrNCaseCmp(p1, p2, p3) strncasecmp((p1), (p2), (p3))
#define JLI_Snprintf snprintf
......
/*
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 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
......@@ -45,7 +45,7 @@ import static com.sun.java.util.jar.pack.Constants.*;
* attribute layouts.
* @author John Rose
*/
class Attribute implements Comparable {
class Attribute implements Comparable<Attribute> {
// Attribute instance fields.
Layout def; // the name and format of this attr
......@@ -99,8 +99,7 @@ class Attribute implements Comparable {
return this == def.canon;
}
public int compareTo(Object o) {
Attribute that = (Attribute) o;
public int compareTo(Attribute that) {
return this.def.compareTo(that.def);
}
......@@ -447,7 +446,7 @@ class Attribute implements Comparable {
* and format. The formats are specified in a "little language".
*/
public static
class Layout implements Comparable {
class Layout implements Comparable<Layout> {
int ctype; // attribute context type, e.g., ATTR_CONTEXT_CODE
String name; // name of attribute
boolean hasRefs; // this kind of attr contains CP refs?
......@@ -540,8 +539,7 @@ class Attribute implements Comparable {
* 37 + layout.hashCode())
* 37 + ctype);
}
public int compareTo(Object o) {
Layout that = (Layout) o;
public int compareTo(Layout that) {
int r;
r = this.name.compareTo(that.name);
if (r != 0) return r;
......@@ -663,6 +661,8 @@ class Attribute implements Comparable {
public static
class FormatException extends IOException {
private static final long serialVersionUID = -2542243830788066513L;
private int ctype;
private String name;
String layout;
......
......@@ -1704,7 +1704,7 @@ class BandStructure {
for (int i = 0; i < ATTR_CONTEXT_LIMIT; i++) {
assert(attrIndexLimit[i] == 0);
attrIndexLimit[i] = 32; // just for the sake of predefs.
attrDefs.set(i, new ArrayList<Attribute.Layout>(Collections.nCopies(
attrDefs.set(i, new ArrayList<>(Collections.nCopies(
attrIndexLimit[i], (Attribute.Layout)null)));
}
......@@ -1892,7 +1892,7 @@ class BandStructure {
return testBit(archiveOptions, mask);
}
protected List getPredefinedAttrs(int ctype) {
protected List<Attribute.Layout> getPredefinedAttrs(int ctype) {
assert(attrIndexLimit[ctype] != 0);
List<Attribute.Layout> res = new ArrayList<>(attrIndexLimit[ctype]);
// Remove nulls and non-predefs.
......@@ -2649,7 +2649,7 @@ class BandStructure {
// Utilities for reallocating:
protected static Object[] realloc(Object[] a, int len) {
java.lang.Class elt = a.getClass().getComponentType();
java.lang.Class<?> elt = a.getClass().getComponentType();
Object[] na = (Object[]) java.lang.reflect.Array.newInstance(elt, len);
System.arraycopy(a, 0, na, 0, Math.min(a.length, len));
return na;
......
/*
* Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2001, 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
......@@ -52,7 +52,7 @@ class ClassReader {
long inPos;
DataInputStream in;
Map<Attribute.Layout, Attribute> attrDefs;
Map attrCommands;
Map<Attribute.Layout, String> attrCommands;
String unknownAttrCommand = "error";;
ClassReader(Class cls, InputStream in) throws IOException {
......@@ -82,7 +82,7 @@ class ClassReader {
this.attrDefs = attrDefs;
}
public void setAttrCommands(Map attrCommands) {
public void setAttrCommands(Map<Attribute.Layout, String> attrCommands) {
this.attrCommands = attrCommands;
}
......@@ -348,8 +348,8 @@ class ClassReader {
int length = readInt();
// See if there is a special command that applies.
if (attrCommands != null) {
Object lkey = Attribute.keyForLookup(ctype, name);
String cmd = (String) attrCommands.get(lkey);
Attribute.Layout lkey = Attribute.keyForLookup(ctype, name);
String cmd = attrCommands.get(lkey);
if (cmd != null) {
switch (cmd) {
case "pass":
......@@ -483,6 +483,8 @@ class ClassReader {
}
static class ClassFormatException extends IOException {
private static final long serialVersionUID = -3564121733989501833L;
public ClassFormatException(String message) {
super(message);
}
......
/*
* Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2001, 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
......@@ -36,7 +36,6 @@ import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Iterator;
import java.util.List;
import static com.sun.java.util.jar.pack.Constants.*;
/**
......@@ -165,14 +164,13 @@ class ClassWriter {
}
void writeMembers(boolean doMethods) throws IOException {
List mems;
List<? extends Class.Member> mems;
if (!doMethods)
mems = cls.getFields();
else
mems = cls.getMethods();
writeShort(mems.size());
for (Iterator i = mems.iterator(); i.hasNext(); ) {
Class.Member m = (Class.Member) i.next();
for (Class.Member m : mems) {
writeMember(m, doMethods);
}
}
......
/*
* Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2001, 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
......@@ -125,7 +125,7 @@ class Code extends Attribute.Holder {
return expandInstructionMap(getInsnMap());
}
void addFixups(Collection moreFixups) {
void addFixups(Collection<Fixups.Fixup> moreFixups) {
if (fixups == null) {
fixups = new Fixups(bytes);
}
......
/*
* Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2001, 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
......@@ -37,7 +37,7 @@ import static com.sun.java.util.jar.pack.Constants.*;
* varying degrees of length variability, and varying amounts of signed-ness.
* @author John Rose
*/
class Coding implements Comparable, CodingMethod, Histogram.BitMetric {
class Coding implements Comparable<Coding>, CodingMethod, Histogram.BitMetric {
/*
Coding schema for single integers, parameterized by (B,H,S):
......@@ -605,8 +605,7 @@ class Coding implements Comparable, CodingMethod, Histogram.BitMetric {
public int byteMin(int b) { return byteMin[b-1]; }
public int byteMax(int b) { return byteMax[b-1]; }
public int compareTo(Object x) {
Coding that = (Coding) x;
public int compareTo(Coding that) {
int dkey = this.del - that.del;
if (dkey == 0)
dkey = this.B - that.B;
......
/*
* Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2001, 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
......@@ -72,7 +72,7 @@ class ConstantPool {
return e;
}
/** Factory for literal constants (String, Integer, etc.). */
public static synchronized LiteralEntry getLiteralEntry(Comparable value) {
public static synchronized LiteralEntry getLiteralEntry(Comparable<?> value) {
Map<Object, LiteralEntry> literalEntries = Utils.getLiteralEntries();
LiteralEntry e = literalEntries.get(value);
if (e == null) {
......@@ -140,7 +140,7 @@ class ConstantPool {
/** Entries in the constant pool. */
public static abstract
class Entry implements Comparable {
class Entry implements Comparable<Object> {
protected final byte tag; // a CONSTANT_foo code
protected int valueHash; // cached hashCode
......@@ -257,7 +257,7 @@ class ConstantPool {
super(tag);
}
public abstract Comparable literalValue();
public abstract Comparable<?> literalValue();
}
public static
......@@ -280,15 +280,17 @@ class ConstantPool {
public int compareTo(Object o) {
int x = superCompareTo(o);
if (x == 0) {
x = ((Comparable)value).compareTo(((NumberEntry)o).value);
@SuppressWarnings("unchecked")
Comparable<Number> compValue = (Comparable<Number>)value;
x = compValue.compareTo(((NumberEntry)o).value);
}
return x;
}
public Number numberValue() {
return value;
}
public Comparable literalValue() {
return (Comparable) value;
public Comparable<?> literalValue() {
return (Comparable<?>) value;
}
public String stringValue() {
return value.toString();
......@@ -319,7 +321,7 @@ class ConstantPool {
}
return x;
}
public Comparable literalValue() {
public Comparable<?> literalValue() {
return ref.stringValue();
}
public String stringValue() {
......@@ -728,7 +730,7 @@ class ConstantPool {
/** An Index is a mapping between CP entries and small integers. */
public static final
class Index extends AbstractList {
class Index extends AbstractList<Entry> {
protected String debugName;
protected Entry[] cpMap;
protected boolean flattenSigs;
......@@ -758,7 +760,7 @@ class ConstantPool {
public int size() {
return cpMap.length;
}
public Object get(int i) {
public Entry get(int i) {
return cpMap[i];
}
public Entry getEntry(int i) {
......@@ -803,13 +805,7 @@ class ConstantPool {
assert(index >= 0);
return index;
}
public boolean contains(Object e) {
return findIndexOf((Entry)e) >= 0;
}
public int indexOf(Object e) {
return findIndexOf((Entry)e);
}
public int lastIndexOf(Object e) {
public int lastIndexOf(Entry e) {
return indexOf(e);
}
......@@ -862,14 +858,14 @@ class ConstantPool {
indexValue[probe] = i;
}
}
public Object[] toArray(Object[] a) {
public Entry[] toArray(Entry[] a) {
int sz = size();
if (a.length < sz) return super.toArray(a);
System.arraycopy(cpMap, 0, a, 0, sz);
if (a.length > sz) a[sz] = null;
return a;
}
public Object[] toArray() {
public Entry[] toArray() {
return toArray(new Entry[size()]);
}
public Object clone() {
......
/*
* Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2001, 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
......@@ -153,11 +153,11 @@ class Constants {
public static final int NO_MODTIME = 0; // null modtime value
// some comstantly empty containers
public final static int[] noInts = {};
public final static byte[] noBytes = {};
public final static Object[] noValues = {};
public final static String[] noStrings = {};
public final static List emptyList = Arrays.asList(noValues);
public final static int[] noInts = {};
public final static byte[] noBytes = {};
public final static Object[] noValues = {};
public final static String[] noStrings = {};
public final static List<Object> emptyList = Arrays.asList(noValues);
// meta-coding
public final static int
......
/*
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 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
......@@ -42,7 +42,7 @@ import java.util.Iterator;
*
* @author John Rose
*/
final class Fixups extends AbstractCollection {
final class Fixups extends AbstractCollection<Fixups.Fixup> {
byte[] bytes; // the subject of the relocations
int head; // desc locating first reloc
int tail; // desc locating last reloc
......@@ -66,11 +66,11 @@ final class Fixups extends AbstractCollection {
// If there are no bytes, all descs are kept in bigDescs.
this((byte[])null);
}
Fixups(byte[] bytes, Collection fixups) {
Fixups(byte[] bytes, Collection<Fixup> fixups) {
this(bytes);
addAll(fixups);
}
Fixups(Collection fixups) {
Fixups(Collection<Fixup> fixups) {
this((byte[])null);
addAll(fixups);
}
......@@ -108,8 +108,7 @@ final class Fixups extends AbstractCollection {
public void clear() {
if (bytes != null) {
// Clean the bytes:
for (Iterator i = iterator(); i.hasNext(); ) {
Fixup fx = (Fixup) i.next();
for (Fixup fx : this) {
//System.out.println("clean "+fx);
storeIndex(fx.location(), fx.format(), 0);
}
......@@ -124,15 +123,14 @@ final class Fixups extends AbstractCollection {
return bytes;
}
@SuppressWarnings("unchecked")
public void setBytes(byte[] newBytes) {
if (bytes == newBytes) return;
ArrayList old = null;
assert((old = new ArrayList(this)) != null);
ArrayList<Fixup> old = null;
assert((old = new ArrayList<>(this)) != null);
if (bytes == null || newBytes == null) {
// One or the other representations is deficient.
// Construct a checkpoint.
ArrayList save = new ArrayList(this);
ArrayList<Fixup> save = new ArrayList<>(this);
clear();
bytes = newBytes;
addAll(save);
......@@ -140,7 +138,7 @@ final class Fixups extends AbstractCollection {
// assume newBytes is some sort of bitwise copy of the old bytes
bytes = newBytes;
}
assert(old.equals(new ArrayList(this)));
assert(old.equals(new ArrayList<>(this)));
}
static final int LOC_SHIFT = 1;
......@@ -236,7 +234,7 @@ final class Fixups extends AbstractCollection {
/** Simple and necessary tuple to present each fixup. */
public static
class Fixup implements Comparable {
class Fixup implements Comparable<Fixup> {
int desc; // location and format of reloc
Entry entry; // which entry to plug into the bytes
Fixup(int desc, Entry entry) {
......@@ -254,9 +252,6 @@ final class Fixups extends AbstractCollection {
// Ordering depends only on location.
return this.location() - that.location();
}
public int compareTo(Object that) {
return compareTo((Fixup)that);
}
public boolean equals(Object x) {
if (!(x instanceof Fixup)) return false;
Fixup that = (Fixup) x;
......@@ -268,13 +263,13 @@ final class Fixups extends AbstractCollection {
}
private
class Itr implements Iterator {
class Itr implements Iterator<Fixup> {
int index = 0; // index into entries
int bigIndex = BIGSIZE+1; // index into bigDescs
int next = head; // desc pointing to next fixup
public boolean hasNext() { return index < size; }
public void remove() { throw new UnsupportedOperationException(); }
public Object next() {
public Fixup next() {
int thisIndex = index;
return new Fixup(nextDesc(), entries[thisIndex]);
}
......@@ -298,7 +293,7 @@ final class Fixups extends AbstractCollection {
}
}
public Iterator iterator() {
public Iterator<Fixup> iterator() {
return new Itr();
}
public void add(int location, int format, Entry entry) {
......@@ -308,11 +303,8 @@ final class Fixups extends AbstractCollection {
addDesc(f.desc, f.entry);
return true;
}
public boolean add(Object fixup) {
return add((Fixup) fixup);
}
@SuppressWarnings("unchecked")
public boolean addAll(Collection c) {
public boolean addAll(Collection<? extends Fixup> c) {
if (c instanceof Fixups) {
// Use knowledge of Itr structure to avoid building little structs.
Fixups that = (Fixups) c;
......@@ -453,8 +445,7 @@ final class Fixups extends AbstractCollection {
void finishRefs(ConstantPool.Index ix) {
if (isEmpty())
return;
for (Iterator i = iterator(); i.hasNext(); ) {
Fixup fx = (Fixup) i.next();
for (Fixup fx : this) {
int index = ix.indexOf(fx.entry);
//System.out.println("finish "+fx+" = "+index);
// Note that the iterator has already fetched the
......
/*
* Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2001, 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
......@@ -657,6 +657,8 @@ class Instruction {
}
}
static class FormatException extends IOException {
private static final long serialVersionUID = 3175572275651367015L;
FormatException(String message) {
super(message);
}
......
......@@ -292,7 +292,7 @@ class NativeUnpack {
}
ZipEntry z = new ZipEntry(name);
z.setTime( (long)mtime * 1000);
z.setTime(mtime * 1000);
if (size == 0) {
z.setMethod(ZipOutputStream.STORED);
......
/*
* Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2001, 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
......@@ -188,7 +188,7 @@ class Package {
}
public final
class Class extends Attribute.Holder implements Comparable {
class Class extends Attribute.Holder implements Comparable<Class> {
public Package getPackage() { return Package.this; }
// Optional file characteristics and data source (a "class stub")
......@@ -247,8 +247,7 @@ class Package {
}
// Note: equals and hashCode are identity-based.
public int compareTo(Object o) {
Class that = (Class)o;
public int compareTo(Class that) {
String n0 = this.getName();
String n1 = that.getName();
return n0.compareTo(n1);
......@@ -488,7 +487,7 @@ class Package {
}
public abstract
class Member extends Attribute.Holder implements Comparable {
class Member extends Attribute.Holder implements Comparable<Member> {
DescriptorEntry descriptor;
protected Member(int flags, DescriptorEntry descriptor) {
......@@ -549,7 +548,7 @@ class Package {
return descriptor.getLiteralTag();
}
public int compareTo(Object o) {
public int compareTo(Member o) {
Field that = (Field)o;
return this.order - that.order;
}
......@@ -582,7 +581,7 @@ class Package {
}
// Sort methods in a canonical order (by type, then by name).
public int compareTo(Object o) {
public int compareTo(Member o) {
Method that = (Method)o;
return this.getDescriptor().compareTo(that.getDescriptor());
}
......@@ -608,11 +607,10 @@ class Package {
public void trimToSize() {
super.trimToSize();
for (int isM = 0; isM <= 1; isM++) {
ArrayList members = (isM == 0) ? fields : methods;
ArrayList<? extends Member> members = (isM == 0) ? fields : methods;
if (members == null) continue;
members.trimToSize();
for (Iterator i = members.iterator(); i.hasNext(); ) {
Member m = (Member)i.next();
for (Member m : members) {
m.trimToSize();
}
}
......@@ -625,10 +623,9 @@ class Package {
if ("InnerClass".equals(attrName))
innerClasses = null;
for (int isM = 0; isM <= 1; isM++) {
ArrayList members = (isM == 0) ? fields : methods;
ArrayList<? extends Member> members = (isM == 0) ? fields : methods;
if (members == null) continue;
for (Iterator i = members.iterator(); i.hasNext(); ) {
Member m = (Member)i.next();
for (Member m : members) {
m.strip(attrName);
}
}
......@@ -641,10 +638,9 @@ class Package {
refs.add(superClass);
refs.addAll(Arrays.asList(interfaces));
for (int isM = 0; isM <= 1; isM++) {
ArrayList members = (isM == 0) ? fields : methods;
ArrayList<? extends Member> members = (isM == 0) ? fields : methods;
if (members == null) continue;
for (Iterator i = members.iterator(); i.hasNext(); ) {
Member m = (Member)i.next();
for (Member m : members) {
boolean ok = false;
try {
m.visitRefs(mode, refs);
......@@ -747,13 +743,13 @@ class Package {
return classStubs;
}
public final class File implements Comparable {
public final class File implements Comparable<File> {
String nameString; // true name of this file
Utf8Entry name;
int modtime = NO_MODTIME;
int options = 0; // random flag bits, such as deflate_hint
Class stubClass; // if this is a stub, here's the class
ArrayList prepend = new ArrayList(); // list of byte[]
ArrayList<byte[]> prepend = new ArrayList<>(); // list of byte[]
java.io.ByteArrayOutputStream append = new ByteArrayOutputStream();
File(Utf8Entry name) {
......@@ -798,8 +794,7 @@ class Package {
return nameString.hashCode();
}
// Simple alphabetic sort. PackageWriter uses a better comparator.
public int compareTo(Object o) {
File that = (File)o;
public int compareTo(File that) {
return this.nameString.compareTo(that.nameString);
}
public String toString() {
......@@ -834,8 +829,7 @@ class Package {
public long getFileLength() {
long len = 0;
if (prepend == null || append == null) return 0;
for (Iterator i = prepend.iterator(); i.hasNext(); ) {
byte[] block = (byte[]) i.next();
for (byte[] block : prepend) {
len += block.length;
}
len += append.size();
......@@ -843,8 +837,7 @@ class Package {
}
public void writeTo(OutputStream out) throws IOException {
if (prepend == null || append == null) return;
for (Iterator i = prepend.iterator(); i.hasNext(); ) {
byte[] block = (byte[]) i.next();
for (byte[] block : prepend) {
out.write(block);
}
append.writeTo(out);
......@@ -860,8 +853,7 @@ class Package {
InputStream in = new ByteArrayInputStream(append.toByteArray());
if (prepend.isEmpty()) return in;
List<InputStream> isa = new ArrayList<>(prepend.size()+1);
for (Iterator i = prepend.iterator(); i.hasNext(); ) {
byte[] bytes = (byte[]) i.next();
for (byte[] bytes : prepend) {
isa.add(new ByteArrayInputStream(bytes));
}
isa.add(in);
......@@ -926,7 +918,7 @@ class Package {
}
static
class InnerClass implements Comparable {
class InnerClass implements Comparable<InnerClass> {
final ClassEntry thisClass;
final ClassEntry outerClass;
final Utf8Entry name;
......@@ -977,8 +969,7 @@ class Package {
public int hashCode() {
return thisClass.hashCode();
}
public int compareTo(Object o) {
InnerClass that = (InnerClass)o;
public int compareTo(InnerClass that) {
return this.thisClass.compareTo(that.thisClass);
}
......@@ -1108,7 +1099,7 @@ class Package {
return ConstantPool.getUtf8Entry(s);
}
static LiteralEntry getRefLiteral(Comparable s) {
static LiteralEntry getRefLiteral(Comparable<?> s) {
return ConstantPool.getLiteralEntry(s);
}
......@@ -1199,7 +1190,6 @@ class Package {
// compress better. It also moves classes to the end of the
// file order. It also removes JAR directory entries, which
// are useless.
@SuppressWarnings("unchecked")
void reorderFiles(boolean keepClassOrder, boolean stripDirectories) {
// First reorder the classes, if that is allowed.
if (!keepClassOrder) {
......@@ -1226,10 +1216,8 @@ class Package {
// This keeps files of similar format near each other.
// Put class files at the end, keeping their fixed order.
// Be sure the JAR file's required manifest stays at the front. (4893051)
Collections.sort(files, new Comparator() {
public int compare(Object o0, Object o1) {
File r0 = (File) o0;
File r1 = (File) o1;
Collections.sort(files, new Comparator<File>() {
public int compare(File r0, File r1) {
// Get the file name.
String f0 = r0.nameString;
String f1 = r1.nameString;
......
......@@ -750,7 +750,7 @@ class PackageReader extends BandStructure {
file_options.readFrom(in);
file_bits.setInputStreamFrom(in);
Iterator nextClass = pkg.getClasses().iterator();
Iterator<Class> nextClass = pkg.getClasses().iterator();
// Compute file lengths before reading any file bits.
long totalFileLength = 0;
......@@ -790,14 +790,14 @@ class PackageReader extends BandStructure {
pkg.addFile(file);
if (file.isClassStub()) {
assert(file.getFileLength() == 0);
Class cls = (Class) nextClass.next();
Class cls = nextClass.next();
cls.initFile(file);
}
}
// Do the rest of the classes.
while (nextClass.hasNext()) {
Class cls = (Class) nextClass.next();
Class cls = nextClass.next();
cls.initFile(null); // implicitly initialize to a trivial one
cls.file.modtime = pkg.default_modtime;
}
......@@ -1006,14 +1006,14 @@ class PackageReader extends BandStructure {
if (k >= 0)
return k;
if (e.tag == CONSTANT_Utf8) {
Entry se = (Entry) utf8Signatures.get(e);
Entry se = utf8Signatures.get(e);
return pkg.cp.untypedIndexOf(se);
}
return -1;
}
Comparator<Entry> entryOutputOrder = new Comparator<Entry>() {
public int compare(Entry e0, Entry e1) {
public int compare(Entry e0, Entry e1) {
int k0 = getOutputIndex(e0);
int k1 = getOutputIndex(e1);
if (k0 >= 0 && k1 >= 0)
......@@ -1332,7 +1332,8 @@ class PackageReader extends BandStructure {
// classes, fields, methods, and codes.
// The holders is a global list, already collected,
// of attribute "customers".
void countAndReadAttrs(int ctype, Collection holders) throws IOException {
void countAndReadAttrs(int ctype, Collection<? extends Attribute.Holder> holders)
throws IOException {
// class_attr_bands:
// *class_flags :UNSIGNED5
// *class_attr_count :UNSIGNED5
......@@ -1386,7 +1387,8 @@ class PackageReader extends BandStructure {
// Read flags and count the attributes that are to be placed
// on the given holders.
void countAttrs(int ctype, Collection holders) throws IOException {
void countAttrs(int ctype, Collection<? extends Attribute.Holder> holders)
throws IOException {
// Here, xxx stands for one of class, field, method, code.
MultiBand xxx_attr_bands = attrBands[ctype];
long flagMask = attrFlagMask[ctype];
......@@ -1414,8 +1416,7 @@ class PackageReader extends BandStructure {
xxx_flags_lo.expectLength(holders.size());
xxx_flags_lo.readFrom(in);
assert((flagMask & overflowMask) == overflowMask);
for (Iterator i = holders.iterator(); i.hasNext(); ) {
Attribute.Holder h = (Attribute.Holder) i.next();
for (Attribute.Holder h : holders) {
int flags = xxx_flags_lo.getInt();
h.flags = flags;
if ((flags & overflowMask) != 0)
......@@ -1433,8 +1434,7 @@ class PackageReader extends BandStructure {
// (class/field/method/code), and also we accumulate (b) a total
// count for each attribute type.
int[] totalCounts = new int[defs.length];
for (Iterator i = holders.iterator(); i.hasNext(); ) {
Attribute.Holder h = (Attribute.Holder) i.next();
for (Attribute.Holder h : holders) {
assert(h.attributes == null);
// System.out.println("flags="+h.flags+" using fm="+flagMask);
long attrBits = ((h.flags & flagMask) << 32) >>> 32;
......@@ -1582,13 +1582,12 @@ class PackageReader extends BandStructure {
ATTR_CONTEXT_NAME[ctype]+" attribute");
}
@SuppressWarnings("unchecked")
void readAttrs(int ctype, Collection holders) throws IOException {
void readAttrs(int ctype, Collection<? extends Attribute.Holder> holders)
throws IOException {
// Decode band values into attributes.
Set<Attribute.Layout> sawDefs = new HashSet<>();
ByteArrayOutputStream buf = new ByteArrayOutputStream();
for (Iterator i = holders.iterator(); i.hasNext(); ) {
final Attribute.Holder h = (Attribute.Holder) i.next();
for (final Attribute.Holder h : holders) {
if (h.attributes == null) continue;
for (ListIterator<Attribute> j = h.attributes.listIterator(); j.hasNext(); ) {
Attribute a = j.next();
......
......@@ -720,7 +720,6 @@ class PackageWriter extends BandStructure {
Utils.log.info("Wrote "+numFiles+" resource files");
}
@SuppressWarnings("unchecked")
void collectAttributeLayouts() {
maxFlags = new int[ATTR_CONTEXT_LIMIT];
allLayouts = new FixedList<>(ATTR_CONTEXT_LIMIT);
......@@ -781,26 +780,27 @@ class PackageWriter extends BandStructure {
avHiBits &= (1L<<attrIndexLimit[i])-1;
int nextLoBit = 0;
Map<Attribute.Layout, int[]> defMap = allLayouts.get(i);
Map.Entry[] layoutsAndCounts = new Map.Entry[defMap.size()];
@SuppressWarnings({ "unchecked", "rawtypes" })
Map.Entry<Attribute.Layout, int[]>[] layoutsAndCounts =
new Map.Entry[defMap.size()];
defMap.entrySet().toArray(layoutsAndCounts);
// Sort by count, most frequent first.
// Predefs. participate in this sort, though it does not matter.
Arrays.sort(layoutsAndCounts, new Comparator<Object>() {
public int compare(Object o0, Object o1) {
Map.Entry e0 = (Map.Entry) o0;
Map.Entry e1 = (Map.Entry) o1;
Arrays.sort(layoutsAndCounts,
new Comparator<Map.Entry<Attribute.Layout, int[]>>() {
public int compare(Map.Entry<Attribute.Layout, int[]> e0,
Map.Entry<Attribute.Layout, int[]> e1) {
// Primary sort key is count, reversed.
int r = - ( ((int[])e0.getValue())[0]
- ((int[])e1.getValue())[0] );
int r = -(e0.getValue()[0] - e1.getValue()[0]);
if (r != 0) return r;
return ((Comparable)e0.getKey()).compareTo(e1.getKey());
return e0.getKey().compareTo(e1.getKey());
}
});
attrCounts[i] = new int[attrIndexLimit[i]+layoutsAndCounts.length];
for (int j = 0; j < layoutsAndCounts.length; j++) {
Map.Entry e = layoutsAndCounts[j];
Attribute.Layout def = (Attribute.Layout) e.getKey();
int count = ((int[])e.getValue())[0];
Map.Entry<Attribute.Layout, int[]> e = layoutsAndCounts[j];
Attribute.Layout def = e.getKey();
int count = e.getValue()[0];
int index;
Integer predefIndex = attrIndexTable.get(def);
if (predefIndex != null) {
......@@ -881,7 +881,6 @@ class PackageWriter extends BandStructure {
Attribute.Layout[] attrDefsWritten;
@SuppressWarnings("unchecked")
void writeAttrDefs() throws IOException {
List<Object[]> defList = new ArrayList<>();
for (int i = 0; i < ATTR_CONTEXT_LIMIT; i++) {
......@@ -906,20 +905,19 @@ class PackageWriter extends BandStructure {
int numAttrDefs = defList.size();
Object[][] defs = new Object[numAttrDefs][];
defList.toArray(defs);
Arrays.sort(defs, new Comparator() {
public int compare(Object o0, Object o1) {
Object[] a0 = (Object[]) o0;
Object[] a1 = (Object[]) o1;
Arrays.sort(defs, new Comparator<Object[]>() {
public int compare(Object[] a0, Object[] a1) {
// Primary sort key is attr def header.
@SuppressWarnings("unchecked")
int r = ((Comparable)a0[0]).compareTo(a1[0]);
if (r != 0) return r;
Object ind0 = attrIndexTable.get(a0[1]);
Object ind1 = attrIndexTable.get(a1[1]);
Integer ind0 = attrIndexTable.get(a0[1]);
Integer ind1 = attrIndexTable.get(a1[1]);
// Secondary sort key is attribute index.
// (This must be so, in order to keep overflow attr order.)
assert(ind0 != null);
assert(ind1 != null);
return ((Comparable)ind0).compareTo(ind1);
return ind0.compareTo(ind1);
}
});
attrDefsWritten = new Attribute.Layout[numAttrDefs];
......
/*
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 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
......@@ -69,8 +69,7 @@ public class PackerImpl extends TLGlobals implements Pack200.Packer {
* Get the set of options for the pack and unpack engines.
* @return A sorted association of option key strings to option values.
*/
@SuppressWarnings("unchecked")
public SortedMap properties() {
public SortedMap<String, String> properties() {
return props;
}
......@@ -157,7 +156,6 @@ public class PackerImpl extends TLGlobals implements Pack200.Packer {
// All the worker bees.....
// The packer worker.
@SuppressWarnings("unchecked")
private class DoPack {
final int verbose = props.getInteger(Utils.DEBUG_VERBOSE);
......@@ -199,9 +197,8 @@ public class PackerImpl extends TLGlobals implements Pack200.Packer {
};
for (int i = 0; i < ctypes.length; i++) {
String pfx = keys[i];
Map<Object, Object> map = props.prefixMap(pfx);
for (Object k : map.keySet()) {
String key = (String)k;
Map<String, String> map = props.prefixMap(pfx);
for (String key : map.keySet()) {
assert(key.startsWith(pfx));
String name = key.substring(pfx.length());
String layout = props.getProperty(key);
......
......@@ -27,7 +27,6 @@ package com.sun.java.util.jar.pack;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeEvent;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
......@@ -47,8 +46,8 @@ import java.util.jar.Pack200;
* Control block for publishing Pack200 options to the other classes.
*/
final class PropMap implements SortedMap<Object, Object> {
private final TreeMap<Object, Object> theMap = new TreeMap<>();;
final class PropMap implements SortedMap<String, String> {
private final TreeMap<String, String> theMap = new TreeMap<>();;
private final List<PropertyChangeListener> listenerList = new ArrayList<>(1);
void addListener(PropertyChangeListener listener) {
......@@ -68,12 +67,12 @@ final class PropMap implements SortedMap<Object, Object> {
}
// Override:
public Object put(Object key, Object value) {
Object oldValue = theMap.put(key, value);
public String put(String key, String value) {
String oldValue = theMap.put(key, value);
if (value != oldValue && !listenerList.isEmpty()) {
// Post the property change event.
PropertyChangeEvent event =
new PropertyChangeEvent(this, (String) key,
new PropertyChangeEvent(this, key,
oldValue, value);
for (PropertyChangeListener listener : listenerList) {
listener.propertyChange(event);
......@@ -85,7 +84,7 @@ final class PropMap implements SortedMap<Object, Object> {
// All this other stuff is private to the current package.
// Outide clients of Pack200 do not need to use it; they can
// get by with generic SortedMap functionality.
private static Map<Object, Object> defaultProps;
private static Map<String, String> defaultProps;
static {
Properties props = new Properties();
......@@ -141,7 +140,9 @@ final class PropMap implements SortedMap<Object, Object> {
}
}
defaultProps = (new HashMap<>(props)); // shrink to fit
@SuppressWarnings({"unchecked", "rawtypes"})
HashMap<String, String> temp = new HashMap(props); // shrink to fit
defaultProps = temp;
}
PropMap() {
......@@ -151,7 +152,7 @@ final class PropMap implements SortedMap<Object, Object> {
// Return a view of this map which includes only properties
// that begin with the given prefix. This is easy because
// the map is sorted, and has a subMap accessor.
SortedMap<Object, Object> prefixMap(String prefix) {
SortedMap<String, String> prefixMap(String prefix) {
int len = prefix.length();
if (len == 0)
return this;
......@@ -162,7 +163,7 @@ final class PropMap implements SortedMap<Object, Object> {
}
String getProperty(String s) {
return (String) get(s);
return get(s);
}
String getProperty(String s, String defaultVal) {
String val = getProperty(s);
......@@ -171,13 +172,13 @@ final class PropMap implements SortedMap<Object, Object> {
return val;
}
String setProperty(String s, String val) {
return (String) put(s, val);
return put(s, val);
}
// Get sequence of props for "prefix", and "prefix.*".
List getProperties(String prefix) {
Collection<Object> values = prefixMap(prefix).values();
List<Object> res = new ArrayList<>(values.size());
List<String> getProperties(String prefix) {
Collection<String> values = prefixMap(prefix).values();
List<String> res = new ArrayList<>(values.size());
res.addAll(values);
while (res.remove(null));
return res;
......@@ -241,8 +242,8 @@ final class PropMap implements SortedMap<Object, Object> {
}
void list(PrintWriter out) {
out.println("#"+Utils.PACK_ZIP_ARCHIVE_MARKER_COMMENT+"[");
Set defaults = defaultProps.entrySet();
for (Map.Entry e : theMap.entrySet()) {
Set<Map.Entry<String, String>> defaults = defaultProps.entrySet();
for (Map.Entry<String, String> e : theMap.entrySet()) {
if (defaults.contains(e)) continue;
out.println(" " + e.getKey() + " = " + e.getValue());
}
......@@ -270,18 +271,17 @@ final class PropMap implements SortedMap<Object, Object> {
}
@Override
public Object get(Object key) {
public String get(Object key) {
return theMap.get(key);
}
@Override
public Object remove(Object key) {
public String remove(Object key) {
return theMap.remove(key);
}
@Override
@SuppressWarnings("unchecked")
public void putAll(Map m) {
public void putAll(Map<? extends String, ? extends String> m) {
theMap.putAll(m);
}
......@@ -291,48 +291,47 @@ final class PropMap implements SortedMap<Object, Object> {
}
@Override
public Set<Object> keySet() {
public Set<String> keySet() {
return theMap.keySet();
}
@Override
public Collection<Object> values() {
public Collection<String> values() {
return theMap.values();
}
@Override
public Set<Map.Entry<Object, Object>> entrySet() {
public Set<Map.Entry<String, String>> entrySet() {
return theMap.entrySet();
}
@Override
@SuppressWarnings("unchecked")
public Comparator<Object> comparator() {
return (Comparator<Object>) theMap.comparator();
public Comparator<? super String> comparator() {
return theMap.comparator();
}
@Override
public SortedMap<Object, Object> subMap(Object fromKey, Object toKey) {
public SortedMap<String, String> subMap(String fromKey, String toKey) {
return theMap.subMap(fromKey, toKey);
}
@Override
public SortedMap<Object, Object> headMap(Object toKey) {
public SortedMap<String, String> headMap(String toKey) {
return theMap.headMap(toKey);
}
@Override
public SortedMap<Object, Object> tailMap(Object fromKey) {
public SortedMap<String, String> tailMap(String fromKey) {
return theMap.tailMap(fromKey);
}
@Override
public Object firstKey() {
public String firstKey() {
return theMap.firstKey();
}
@Override
public Object lastKey() {
public String lastKey() {
return theMap.lastKey();
}
}
/*
* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2010, 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
......@@ -67,7 +67,7 @@ class TLGlobals {
props = new PropMap();
}
SortedMap<Object, Object> getPropMap() {
SortedMap<String, String> getPropMap() {
return props;
}
......
......@@ -81,8 +81,7 @@ public class UnpackerImpl extends TLGlobals implements Pack200.Unpacker {
* Get the set of options for the pack and unpack engines.
* @return A sorted association of option key strings to option values.
*/
@SuppressWarnings("unchecked")
public SortedMap properties() {
public SortedMap<String, String> properties() {
return props;
}
......
......@@ -253,8 +253,8 @@ class Utils {
}
static void copyJarFile(JarFile in, JarOutputStream out) throws IOException {
byte[] buffer = new byte[1 << 14];
for (Enumeration e = in.entries(); e.hasMoreElements(); ) {
JarEntry je = (JarEntry) e.nextElement();
for (Enumeration<JarEntry> e = in.entries(); e.hasMoreElements(); ) {
JarEntry je = e.nextElement();
out.putNextEntry(je);
InputStream ein = in.getInputStream(je);
for (int nr; 0 < (nr = ein.read(buffer)); ) {
......
/*
* Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 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
......@@ -632,15 +632,17 @@ final class Filter {
}
}
// The complex filter types look like:
// "&(type=val)(type=val)"
// "|(type=val)(type=val)"
// "!(type=val)"
//
// The filtOffset[0] pointing to the '&', '|', or '!'.
//
private static void encodeComplexFilter(BerEncoder ber, byte[] filter,
int filterType, int filtOffset[], int filtEnd)
throws IOException, NamingException {
//
// We have a complex filter of type "&(type=val)(type=val)"
// with filtOffset[0] pointing to the &
//
if (dbg) {
dprint("encComplexFilter: ", filter, filtOffset[0], filtEnd);
dprint(", type: " + Integer.toString(filterType, 16));
......@@ -652,7 +654,7 @@ final class Filter {
ber.beginSeq(filterType);
int[] parens = findRightParen(filter, filtOffset, filtEnd);
encodeFilterList(ber, filter, parens[0], parens[1]);
encodeFilterList(ber, filter, filterType, parens[0], parens[1]);
ber.endSeq();
......@@ -706,7 +708,7 @@ final class Filter {
// Encode filter list of type "(filter1)(filter2)..."
//
private static void encodeFilterList(BerEncoder ber, byte[] filter,
int start, int end) throws IOException, NamingException {
int filterType, int start, int end) throws IOException, NamingException {
if (dbg) {
dprint("encFilterList: ", filter, start, end);
......@@ -714,12 +716,16 @@ final class Filter {
}
int filtOffset[] = new int[1];
for (filtOffset[0] = start; filtOffset[0] < end;
filtOffset[0]++) {
int listNumber = 0;
for (filtOffset[0] = start; filtOffset[0] < end; filtOffset[0]++) {
if (Character.isSpaceChar((char)filter[filtOffset[0]]))
continue;
if ((filterType == LDAP_FILTER_NOT) && (listNumber > 0)) {
throw new InvalidSearchFilterException(
"Filter (!) cannot be followed by more than one filters");
}
if (filter[filtOffset[0]] == '(') {
continue;
}
......@@ -733,6 +739,8 @@ final class Filter {
newfilter[0] = (byte)'(';
newfilter[len+1] = (byte)')';
encodeFilter(ber, newfilter, 0, newfilter.length);
listNumber++;
}
if (dbg) {
......
......@@ -31,7 +31,6 @@ import java.lang.reflect.Member;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Constructor;
import java.lang.reflect.GenericDeclaration;
import java.lang.reflect.Modifier;
import java.lang.reflect.Type;
import java.lang.reflect.TypeVariable;
......@@ -45,10 +44,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.LinkedList;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.Map;
import java.util.HashMap;
......@@ -56,7 +52,6 @@ import sun.misc.Unsafe;
import sun.reflect.ConstantPool;
import sun.reflect.Reflection;
import sun.reflect.ReflectionFactory;
import sun.reflect.SignatureIterator;
import sun.reflect.generics.factory.CoreReflectionFactory;
import sun.reflect.generics.factory.GenericsFactory;
import sun.reflect.generics.repository.ClassRepository;
......@@ -354,7 +349,8 @@ public final
});
cachedConstructor = c;
} catch (NoSuchMethodException e) {
throw new InstantiationException(getName());
throw (InstantiationException)
new InstantiationException(getName()).initCause(e);
}
}
Constructor<T> tmpConstructor = cachedConstructor;
......@@ -978,7 +974,8 @@ public final
descriptor = (String) enclosingInfo[2];
assert((name != null && descriptor != null) || name == descriptor);
} catch (ClassCastException cce) {
throw new InternalError("Invalid type in enclosing method information");
throw (InternalError)
new InternalError("Invalid type in enclosing method information").initCause(cce);
}
}
......@@ -1244,7 +1241,8 @@ public final
try {
return getName().substring(enclosingClass.getName().length());
} catch (IndexOutOfBoundsException ex) {
throw new InternalError("Malformed class name");
throw (InternalError)
new InternalError("Malformed class name").initCause(ex);
}
}
......@@ -2559,7 +2557,7 @@ public final
// Start by fetching public declared methods
MethodArray methods = new MethodArray();
{
Method[] tmp = privateGetDeclaredMethods(true);
Method[] tmp = privateGetDeclaredMethods(true);
methods.addAll(tmp);
}
// Now recur over superclass and direct superinterfaces.
......@@ -2909,6 +2907,7 @@ public final
return null;
}
// Doesn't use Boolean.getBoolean to avoid class init.
String val =
System.getProperty("sun.reflect.noCaches");
if (val != null && val.equals("true")) {
......@@ -2958,9 +2957,8 @@ public final
}
// These can happen when users concoct enum-like classes
// that don't comply with the enum spec.
catch (InvocationTargetException ex) { return null; }
catch (NoSuchMethodException ex) { return null; }
catch (IllegalAccessException ex) { return null; }
catch (InvocationTargetException | NoSuchMethodException |
IllegalAccessException ex) { return null; }
}
return enumConstants;
}
......
......@@ -50,34 +50,34 @@ import java.util.Random;
*
* <p>The quality of implementation specifications concern two
* properties, accuracy of the returned result and monotonicity of the
* method. Accuracy of the floating-point {@code Math} methods
* is measured in terms of <i>ulps</i>, units in the last place. For
* a given floating-point format, an ulp of a specific real number
* value is the distance between the two floating-point values
* bracketing that numerical value. When discussing the accuracy of a
* method as a whole rather than at a specific argument, the number of
* ulps cited is for the worst-case error at any argument. If a
* method always has an error less than 0.5 ulps, the method always
* returns the floating-point number nearest the exact result; such a
* method is <i>correctly rounded</i>. A correctly rounded method is
* generally the best a floating-point approximation can be; however,
* it is impractical for many floating-point methods to be correctly
* rounded. Instead, for the {@code Math} class, a larger error
* bound of 1 or 2 ulps is allowed for certain methods. Informally,
* with a 1 ulp error bound, when the exact result is a representable
* number, the exact result should be returned as the computed result;
* otherwise, either of the two floating-point values which bracket
* the exact result may be returned. For exact results large in
* magnitude, one of the endpoints of the bracket may be infinite.
* Besides accuracy at individual arguments, maintaining proper
* relations between the method at different arguments is also
* important. Therefore, most methods with more than 0.5 ulp errors
* are required to be <i>semi-monotonic</i>: whenever the mathematical
* function is non-decreasing, so is the floating-point approximation,
* likewise, whenever the mathematical function is non-increasing, so
* is the floating-point approximation. Not all approximations that
* have 1 ulp accuracy will automatically meet the monotonicity
* requirements.
* method. Accuracy of the floating-point {@code Math} methods is
* measured in terms of <i>ulps</i>, units in the last place. For a
* given floating-point format, an {@linkplain #ulp(double) ulp} of a
* specific real number value is the distance between the two
* floating-point values bracketing that numerical value. When
* discussing the accuracy of a method as a whole rather than at a
* specific argument, the number of ulps cited is for the worst-case
* error at any argument. If a method always has an error less than
* 0.5 ulps, the method always returns the floating-point number
* nearest the exact result; such a method is <i>correctly
* rounded</i>. A correctly rounded method is generally the best a
* floating-point approximation can be; however, it is impractical for
* many floating-point methods to be correctly rounded. Instead, for
* the {@code Math} class, a larger error bound of 1 or 2 ulps is
* allowed for certain methods. Informally, with a 1 ulp error bound,
* when the exact result is a representable number, the exact result
* should be returned as the computed result; otherwise, either of the
* two floating-point values which bracket the exact result may be
* returned. For exact results large in magnitude, one of the
* endpoints of the bracket may be infinite. Besides accuracy at
* individual arguments, maintaining proper relations between the
* method at different arguments is also important. Therefore, most
* methods with more than 0.5 ulp errors are required to be
* <i>semi-monotonic</i>: whenever the mathematical function is
* non-decreasing, so is the floating-point approximation, likewise,
* whenever the mathematical function is non-increasing, so is the
* floating-point approximation. Not all approximations that have 1
* ulp accuracy will automatically meet the monotonicity requirements.
*
* @author unascribed
* @author Joseph D. Darcy
......@@ -940,11 +940,11 @@ public final class Math {
}
/**
* Returns the size of an ulp of the argument. An ulp of a
* {@code double} value is the positive distance between this
* floating-point value and the {@code double} value next
* larger in magnitude. Note that for non-NaN <i>x</i>,
* <code>ulp(-<i>x</i>) == ulp(<i>x</i>)</code>.
* Returns the size of an ulp of the argument. An ulp, unit in
* the last place, of a {@code double} value is the positive
* distance between this floating-point value and the {@code
* double} value next larger in magnitude. Note that for non-NaN
* <i>x</i>, <code>ulp(-<i>x</i>) == ulp(<i>x</i>)</code>.
*
* <p>Special Cases:
* <ul>
......@@ -967,11 +967,11 @@ public final class Math {
}
/**
* Returns the size of an ulp of the argument. An ulp of a
* {@code float} value is the positive distance between this
* floating-point value and the {@code float} value next
* larger in magnitude. Note that for non-NaN <i>x</i>,
* <code>ulp(-<i>x</i>) == ulp(<i>x</i>)</code>.
* Returns the size of an ulp of the argument. An ulp, unit in
* the last place, of a {@code float} value is the positive
* distance between this floating-point value and the {@code
* float} value next larger in magnitude. Note that for non-NaN
* <i>x</i>, <code>ulp(-<i>x</i>) == ulp(<i>x</i>)</code>.
*
* <p>Special Cases:
* <ul>
......
......@@ -932,11 +932,11 @@ public final class StrictMath {
}
/**
* Returns the size of an ulp of the argument. An ulp of a
* {@code double} value is the positive distance between this
* floating-point value and the {@code double} value next
* larger in magnitude. Note that for non-NaN <i>x</i>,
* <code>ulp(-<i>x</i>) == ulp(<i>x</i>)</code>.
* Returns the size of an ulp of the argument. An ulp, unit in
* the last place, of a {@code double} value is the positive
* distance between this floating-point value and the {@code
* double} value next larger in magnitude. Note that for non-NaN
* <i>x</i>, <code>ulp(-<i>x</i>) == ulp(<i>x</i>)</code>.
*
* <p>Special Cases:
* <ul>
......@@ -959,11 +959,11 @@ public final class StrictMath {
}
/**
* Returns the size of an ulp of the argument. An ulp of a
* {@code float} value is the positive distance between this
* floating-point value and the {@code float} value next
* larger in magnitude. Note that for non-NaN <i>x</i>,
* <code>ulp(-<i>x</i>) == ulp(<i>x</i>)</code>.
* Returns the size of an ulp of the argument. An ulp, unit in
* the last place, of a {@code float} value is the positive
* distance between this floating-point value and the {@code
* float} value next larger in magnitude. Note that for non-NaN
* <i>x</i>, <code>ulp(-<i>x</i>) == ulp(<i>x</i>)</code>.
*
* <p>Special Cases:
* <ul>
......
/*
* 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 java.lang.reflect;
import java.lang.annotation.*;
import java.util.Map;
import sun.reflect.annotation.AnnotationParser;
import sun.reflect.generics.repository.ConstructorRepository;
import sun.reflect.generics.factory.CoreReflectionFactory;
import sun.reflect.generics.factory.GenericsFactory;
import sun.reflect.generics.scope.ConstructorScope;
/**
* A shared superclass for the common functionality of {@link Method}
* and {@link Constructor}.
*
* @since 1.8
*/
public abstract class Executable extends AccessibleObject
implements Member, GenericDeclaration {
/*
* Only grant package-visibility to the constructor.
*/
Executable() {}
/**
* Accessor method to allow code sharing
*/
abstract byte[] getAnnotationBytes();
/**
* Does the Executable have generic information.
*/
abstract boolean hasGenericInformation();
abstract ConstructorRepository getGenericInfo();
boolean equalParamTypes(Class<?>[] params1, Class<?>[] params2) {
/* Avoid unnecessary cloning */
if (params1.length == params2.length) {
for (int i = 0; i < params1.length; i++) {
if (params1[i] != params2[i])
return false;
}
return true;
}
return false;
}
Annotation[][] parseParameterAnnotations(byte[] parameterAnnotations) {
return AnnotationParser.parseParameterAnnotations(
parameterAnnotations,
sun.misc.SharedSecrets.getJavaLangAccess().
getConstantPool(getDeclaringClass()),
getDeclaringClass());
}
void separateWithCommas(Class<?>[] types, StringBuilder sb) {
for (int j = 0; j < types.length; j++) {
sb.append(Field.getTypeName(types[j]));
if (j < (types.length - 1))
sb.append(",");
}
}
void printModifiersIfNonzero(StringBuilder sb, int mask) {
int mod = getModifiers() & mask;
if (mod != 0) {
sb.append(Modifier.toString(mod)).append(' ');
}
}
String sharedToString(int modifierMask,
Class<?>[] parameterTypes,
Class<?>[] exceptionTypes) {
try {
StringBuilder sb = new StringBuilder();
printModifiersIfNonzero(sb, modifierMask);
specificToStringHeader(sb);
sb.append('(');
separateWithCommas(parameterTypes, sb);
sb.append(')');
if (exceptionTypes.length > 0) {
sb.append(" throws ");
separateWithCommas(exceptionTypes, sb);
}
return sb.toString();
} catch (Exception e) {
return "<" + e + ">";
}
}
/**
* Generate toString header information specific to a method or
* constructor.
*/
abstract void specificToStringHeader(StringBuilder sb);
String sharedToGenericString(int modifierMask) {
try {
StringBuilder sb = new StringBuilder();
printModifiersIfNonzero(sb, modifierMask);
TypeVariable<?>[] typeparms = getTypeParameters();
if (typeparms.length > 0) {
boolean first = true;
sb.append('<');
for(TypeVariable<?> typeparm: typeparms) {
if (!first)
sb.append(',');
// Class objects can't occur here; no need to test
// and call Class.getName().
sb.append(typeparm.toString());
first = false;
}
sb.append("> ");
}
specificToGenericStringHeader(sb);
sb.append('(');
Type[] params = getGenericParameterTypes();
for (int j = 0; j < params.length; j++) {
String param = (params[j] instanceof Class)?
Field.getTypeName((Class)params[j]):
(params[j].toString());
if (isVarArgs() && (j == params.length - 1)) // replace T[] with T...
param = param.replaceFirst("\\[\\]$", "...");
sb.append(param);
if (j < (params.length - 1))
sb.append(',');
}
sb.append(')');
Type[] exceptions = getGenericExceptionTypes();
if (exceptions.length > 0) {
sb.append(" throws ");
for (int k = 0; k < exceptions.length; k++) {
sb.append((exceptions[k] instanceof Class)?
((Class)exceptions[k]).getName():
exceptions[k].toString());
if (k < (exceptions.length - 1))
sb.append(',');
}
}
return sb.toString();
} catch (Exception e) {
return "<" + e + ">";
}
}
/**
* Generate toGenericString header information specific to a
* method or constructor.
*/
abstract void specificToGenericStringHeader(StringBuilder sb);
/**
* Returns the {@code Class} object representing the class or interface
* that declares the method represented by this executable object.
*/
public abstract Class<?> getDeclaringClass();
/**
* Returns the name of the executable represented by this object.
*/
public abstract String getName();
/**
* Returns the Java language {@linkplain Modifier modifiers} for
* the executable represented by this object.
*/
public abstract int getModifiers();
/**
* Returns an array of {@code TypeVariable} objects that represent the
* type variables declared by the generic declaration represented by this
* {@code GenericDeclaration} object, in declaration order. Returns an
* array of length 0 if the underlying generic declaration declares no type
* variables.
*
* @return an array of {@code TypeVariable} objects that represent
* the type variables declared by this generic declaration
* @throws GenericSignatureFormatError if the generic
* signature of this generic declaration does not conform to
* the format specified in
* <cite>The Java&trade; Virtual Machine Specification</cite>
*/
public abstract TypeVariable<?>[] getTypeParameters();
/**
* Returns an array of {@code Class} objects that represent the formal
* parameter types, in declaration order, of the executable
* represented by this object. Returns an array of length
* 0 if the underlying method takes no parameters.
*
* @return the parameter types for the method this object
* represents
*/
public abstract Class<?>[] getParameterTypes();
/**
* Returns an array of {@code Type} objects that represent the formal
* parameter types, in declaration order, of the method represented by
* this executable object. Returns an array of length 0 if the
* underlying method takes no parameters.
*
* <p>If a formal parameter type is a parameterized type,
* the {@code Type} object returned for it must accurately reflect
* the actual type parameters used in the source code.
*
* <p>If a formal parameter type is a type variable or a parameterized
* type, it is created. Otherwise, it is resolved.
*
* @return an array of {@code Type}s that represent the formal
* parameter types of the underlying method, in declaration order
* @throws GenericSignatureFormatError
* if the generic method signature does not conform to the format
* specified in
* <cite>The Java&trade; Virtual Machine Specification</cite>
* @throws TypeNotPresentException if any of the parameter
* types of the underlying method refers to a non-existent type
* declaration
* @throws MalformedParameterizedTypeException if any of
* the underlying method's parameter types refer to a parameterized
* type that cannot be instantiated for any reason
*/
public Type[] getGenericParameterTypes() {
if (hasGenericInformation())
return getGenericInfo().getParameterTypes();
else
return getParameterTypes();
}
/**
* Returns an array of {@code Class} objects that represent the
* types of exceptions declared to be thrown by the underlying
* executable represented by this object. Returns an array of
* length 0 if the executable declares no exceptions in its {@code
* throws} clause.
*
* @return the exception types declared as being thrown by the
* executable this object represents
*/
public abstract Class<?>[] getExceptionTypes();
/**
* Returns an array of {@code Type} objects that represent the
* exceptions declared to be thrown by this executable object.
* Returns an array of length 0 if the underlying executable declares
* no exceptions in its {@code throws} clause.
*
* <p>If an exception type is a type variable or a parameterized
* type, it is created. Otherwise, it is resolved.
*
* @return an array of Types that represent the exception types
* thrown by the underlying method
* @throws GenericSignatureFormatError
* if the generic method signature does not conform to the format
* specified in
* <cite>The Java&trade; Virtual Machine Specification</cite>
* @throws TypeNotPresentException if the underlying method's
* {@code throws} clause refers to a non-existent type declaration
* @throws MalformedParameterizedTypeException if
* the underlying method's {@code throws} clause refers to a
* parameterized type that cannot be instantiated for any reason
*/
public Type[] getGenericExceptionTypes() {
Type[] result;
if (hasGenericInformation() &&
((result = getGenericInfo().getExceptionTypes()).length > 0))
return result;
else
return getExceptionTypes();
}
/**
* Returns a string describing this {@code Executable}, including
* any type parameters.
*/
public abstract String toGenericString();
/**
* Returns {@code true} if this executable was declared to take a
* variable number of arguments; returns {@code false} otherwise.
*
* @return {@code true} if an only if this executable was declared
* to take a variable number of arguments.
*/
public boolean isVarArgs() {
return (getModifiers() & Modifier.VARARGS) != 0;
}
/**
* Returns {@code true} if this executable is a synthetic
* construct; returns {@code false} otherwise.
*
* @return true if and only if this executable is a synthetic
* construct as defined by
* <cite>The Java&trade; Language Specification</cite>.
*/
public boolean isSynthetic() {
return Modifier.isSynthetic(getModifiers());
}
/**
* Returns an array of arrays that represent the annotations on
* the formal parameters, in declaration order, of the executable
* represented by this object. (Returns an array of length zero if
* the underlying method is parameterless. If the executable has
* one or more parameters, a nested array of length zero is
* returned for each parameter with no annotations.) The
* annotation objects contained in the returned arrays are
* serializable. The caller of this method is free to modify the
* returned arrays; it will have no effect on the arrays returned
* to other callers.
*
* @return an array of arrays that represent the annotations on the formal
* parameters, in declaration order, of the exectuable represented by this
* object
*/
public abstract Annotation[][] getParameterAnnotations();
Annotation[][] sharedGetParameterAnnotations(Class<?>[] parameterTypes,
byte[] parameterAnnotations) {
int numParameters = parameterTypes.length;
if (parameterAnnotations == null)
return new Annotation[numParameters][0];
Annotation[][] result = parseParameterAnnotations(parameterAnnotations);
if (result.length != numParameters)
handleParameterNumberMismatch(result.length, numParameters);
return result;
}
abstract void handleParameterNumberMismatch(int resultLength, int numParameters);
/**
* {@inheritDoc}
* @throws NullPointerException {@inheritDoc}
*/
@SuppressWarnings("unchecked")
public <T extends Annotation> T getAnnotation(Class<T> annotationClass) {
if (annotationClass == null)
throw new NullPointerException();
return (T) declaredAnnotations().get(annotationClass);
}
/**
* {@inheritDoc}
*/
public Annotation[] getDeclaredAnnotations() {
return AnnotationParser.toArray(declaredAnnotations());
}
private transient Map<Class<? extends Annotation>, Annotation> declaredAnnotations;
private synchronized Map<Class<? extends Annotation>, Annotation> declaredAnnotations() {
if (declaredAnnotations == null) {
declaredAnnotations = AnnotationParser.parseAnnotations(
getAnnotationBytes(),
sun.misc.SharedSecrets.getJavaLangAccess().
getConstantPool(getDeclaringClass()),
getDeclaringClass());
}
return declaredAnnotations;
}
}
......@@ -176,13 +176,7 @@ class DatagramSocket implements java.io.Closeable {
public DatagramSocket() throws SocketException {
// create a datagram socket.
createImpl();
try {
bind(new InetSocketAddress(0));
} catch (SocketException se) {
throw se;
} catch(IOException e) {
throw new SocketException(e.getMessage());
}
bind(new InetSocketAddress(0));
}
/**
......
......@@ -716,7 +716,6 @@ class ServerSocket implements java.io.Closeable {
if (!isBound())
return "ServerSocket[unbound]";
return "ServerSocket[addr=" + impl.getInetAddress() +
",port=" + impl.getPort() +
",localport=" + impl.getLocalPort() + "]";
}
......
......@@ -248,6 +248,7 @@ public abstract class AsynchronousFileChannel
return provider.newAsynchronousFileChannel(file, options, executor, attrs);
}
@SuppressWarnings({ "unchecked", "rawtypes" }) // generic array construction
private static final FileAttribute<?>[] NO_ATTRIBUTES = new FileAttribute[0];
/**
......
......@@ -287,6 +287,7 @@ public abstract class FileChannel
return provider.newFileChannel(path, options, attrs);
}
@SuppressWarnings({ "unchecked", "rawtypes" }) // generic array construction
private static final FileAttribute<?>[] NO_ATTRIBUTES = new FileAttribute[0];
/**
......
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册