Merge
This commit is contained in:
commit
9f11366ec6
@ -282,3 +282,4 @@ cdcf2e599e42935c2d1d19a24bb19e808aeb43b5 jdk9-b36
|
||||
27c3345d6dce39a22c262f30bb1f0e0b00c3709e jdk9-b37
|
||||
d2d745313c81d1fc01f426983b9f784ab1f750e8 jdk9-b38
|
||||
ca6edf957fe1c6ea818530b503578e872cea7239 jdk9-b39
|
||||
f1ed1540da70a066527fd043413107e47721edbf jdk9-b40
|
||||
|
@ -44,7 +44,7 @@ BUILD_DEMOS =
|
||||
DEMO_SHARE_SRC := $(JDK_TOPDIR)/src/demo/share
|
||||
DEMO_CLOSED_SHARE_SRC := $(JDK_TOPDIR)/src/closed/demo/share
|
||||
DEMO_SOLARIS_SRC := $(JDK_TOPDIR)/src/demo/solaris
|
||||
DEMO_OS_API_SRC := $(JDK_TOPDIR)/src/demo/$(OPENJDK_TARGET_OS_API_DIR)
|
||||
DEMO_OS_TYPE_SRC := $(JDK_TOPDIR)/src/demo/$(OPENJDK_TARGET_OS_TYPE)
|
||||
VERSION_INFO_RESOURCE := $(JDK_TOPDIR)/src/java.base/windows/native/common/version.rc
|
||||
|
||||
##################################################################################################
|
||||
@ -214,13 +214,13 @@ define SetupJVMTIDemo
|
||||
# Param 2 = add these directories to the includes, default is agent_util
|
||||
# Param 3 = extra CFLAGS
|
||||
# Param 4 = C or C++ (defaults to C)
|
||||
# Param 5 = libs for posix
|
||||
# Param 5 = libs for unix
|
||||
# Param 6 = libs for windows
|
||||
# Param 7 = libs for solaris
|
||||
# Param 8 = libs for linux
|
||||
# Param 9 = extra directories with required sources
|
||||
BUILD_DEMO_JVMTI_$1_EXTRA_SRC := \
|
||||
$$(wildcard $(DEMO_OS_API_SRC)/jvmti/$1) \
|
||||
$$(wildcard $(DEMO_OS_TYPE_SRC)/jvmti/$1) \
|
||||
$$(wildcard $$(addprefix $(DEMO_SHARE_SRC)/jvmti/, $2)) \
|
||||
$9
|
||||
BUILD_DEMO_JVMTI_$1_EXTRA_SRC_EXCLUDE := \
|
||||
@ -257,7 +257,7 @@ define SetupJVMTIDemo
|
||||
LDFLAGS := $(filter-out -incremental:no -opt:ref, $(LDFLAGS_JDKLIB)), \
|
||||
LDFLAGS_macosx := $(call SET_EXECUTABLE_ORIGIN), \
|
||||
LDFLAGS_SUFFIX := $$($1_EXTRA_CXX), \
|
||||
LDFLAGS_SUFFIX_posix := $5, \
|
||||
LDFLAGS_SUFFIX_unix := $5, \
|
||||
LDFLAGS_SUFFIX_windows := $6, \
|
||||
LDFLAGS_SUFFIX_solaris := $7 -lc, \
|
||||
LDFLAGS_SUFFIX_linux := $8, \
|
||||
|
@ -656,7 +656,7 @@ endif
|
||||
SRC_ZIP_SRCS := $(wildcard \
|
||||
$(JDK_TOPDIR)/src/*/share/classes \
|
||||
$(JDK_TOPDIR)/src/*/$(OPENJDK_TARGET_OS)/classes \
|
||||
$(JDK_TOPDIR)/src/*/$(OPENJDK_TARGET_OS_API_DIR)/classes \
|
||||
$(JDK_TOPDIR)/src/*/$(OPENJDK_TARGET_OS_TYPE)/classes \
|
||||
$(LANGTOOLS_TOPDIR)/src/*/share/classes \
|
||||
$(CORBA_TOPDIR)/src/*/share/classes \
|
||||
$(JAXP_TOPDIR)/src/*/share/classes \
|
||||
@ -679,7 +679,7 @@ $(eval $(call SetupCopyFiles,COPY_LAUNCHER_SRC, \
|
||||
FILES := $(wildcard \
|
||||
$(JDK_TOPDIR)/src/java.base/share/native/launcher/* \
|
||||
$(JDK_TOPDIR)/src/java.base/share/native/libjli/* \
|
||||
$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_API_DIR)/native/libjli/java_md*)))
|
||||
$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjli/java_md*)))
|
||||
|
||||
LAUNCHER_ZIP_SRC := $(COPY_LAUNCHER_SRC)
|
||||
|
||||
|
@ -30,8 +30,8 @@ include MakeBase.gmk
|
||||
|
||||
################################################################################
|
||||
|
||||
# Put the libraries here. Different locations for different target apis.
|
||||
ifeq ($(OPENJDK_TARGET_OS_API), posix)
|
||||
# Put the libraries here. Different locations for different target OS types.
|
||||
ifeq ($(OPENJDK_TARGET_OS_TYPE), unix)
|
||||
INSTALL_LIBRARIES_HERE := $(JDK_OUTPUTDIR)/lib$(OPENJDK_TARGET_CPU_LIBDIR)
|
||||
HOTSPOT_LIB_DIR := $(HOTSPOT_DIST)/jre/lib$(OPENJDK_TARGET_CPU_LIBDIR)
|
||||
else
|
||||
|
@ -83,7 +83,7 @@ endif
|
||||
ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
JVMCFG_SRC := $(JDK_TOPDIR)/src/java.base/macosx/conf/$(JVMCFG_ARCH)/jvm.cfg
|
||||
else
|
||||
JVMCFG_SRC := $(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_API_DIR)/conf/$(JVMCFG_ARCH)/jvm.cfg
|
||||
JVMCFG_SRC := $(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/conf/$(JVMCFG_ARCH)/jvm.cfg
|
||||
endif
|
||||
JVMCFG_DIR := $(JDK_OUTPUTDIR)/lib$(OPENJDK_TARGET_CPU_LIBDIR)
|
||||
JVMCFG := $(JVMCFG_DIR)/jvm.cfg
|
||||
@ -190,7 +190,7 @@ $(JDK_OUTPUTDIR)/lib/net.properties: $(JDK_TOPDIR)/src/java.base/share/conf/net.
|
||||
NET_CONF_FILES += $(JDK_OUTPUTDIR)/lib/net.properties
|
||||
|
||||
ifeq ($(OPENJDK_TARGET_OS), solaris)
|
||||
$(JDK_OUTPUTDIR)/lib/sdp/sdp.conf.template: $(JDK_TOPDIR)/src/java.base/${OPENJDK_TARGET_OS_API_DIR}/conf/sdp/sdp.conf.template
|
||||
$(JDK_OUTPUTDIR)/lib/sdp/sdp.conf.template: $(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/conf/sdp/sdp.conf.template
|
||||
$(ECHO) $(LOG_INFO) Copying $(@F)
|
||||
$(call install-file)
|
||||
|
||||
|
@ -102,13 +102,13 @@ DESKTOP_CONF_FILES += $(PSFONTPROPFILE_TARGET_FILES)
|
||||
# Copy cursor.properties and cursors gif files to LIB_DST_DIR
|
||||
#
|
||||
ifneq ($(OPENJDK_TARGET_OS), macosx)
|
||||
OPENJDK_TARGET_OS_LIB_SRC := $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)/conf
|
||||
OPENJDK_TARGET_OS_LIB_SRC := $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/conf
|
||||
else
|
||||
OPENJDK_TARGET_OS_LIB_SRC := $(JDK_TOPDIR)/src/java.desktop/macosx/conf
|
||||
endif
|
||||
|
||||
CURSORS_DEST_DIR := $(LIB_DST_DIR)/images/cursors
|
||||
CURSORS_OPENJDK_TARGET_OS_LIB_SRC := $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)/conf/images/cursors
|
||||
CURSORS_OPENJDK_TARGET_OS_LIB_SRC := $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/conf/images/cursors
|
||||
|
||||
$(CURSORS_DEST_DIR)/cursors.properties: $(CURSORS_OPENJDK_TARGET_OS_LIB_SRC)/cursors.properties
|
||||
$(call install-file)
|
||||
|
@ -29,9 +29,9 @@ GENSRC_AWT_ICONS_TMP := $(JDK_OUTPUTDIR)/gensrc
|
||||
GENSRC_AWT_ICONS_DST := $(GENSRC_AWT_ICONS_TMP)/java.desktop/sun/awt/
|
||||
|
||||
ifdef OPENJDK
|
||||
X11_ICONS_PATH_PREFIX := $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)
|
||||
X11_ICONS_PATH_PREFIX := $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)
|
||||
else
|
||||
X11_ICONS_PATH_PREFIX := $(JDK_TOPDIR)/src/closed/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)
|
||||
X11_ICONS_PATH_PREFIX := $(JDK_TOPDIR)/src/closed/java.desktop/$(OPENJDK_TARGET_OS_TYPE)
|
||||
endif
|
||||
|
||||
GENSRC_AWT_ICONS_SRC += \
|
||||
|
@ -58,13 +58,15 @@ define SetupCompileProperties
|
||||
$1_CLASS := $3
|
||||
|
||||
# Convert .../src/<module>/share/classes/com/sun/tools/javac/resources/javac_zh_CN.properties
|
||||
# to .../langtools/gensrc/<module>/com/sun/tools/javac/resources/javac_zh_CN.java
|
||||
# to .../support/gensrc/<module>/com/sun/tools/javac/resources/javac_zh_CN.java
|
||||
# Strip away prefix and suffix, leaving for example only:
|
||||
# "<module>/share/classes/com/sun/tools/javac/resources/javac_zh_CN"
|
||||
$1_JAVAS := $$(patsubst $(JDK_TOPDIR)/src/%, \
|
||||
$(JDK_OUTPUTDIR)/gensrc/%, \
|
||||
$$(patsubst %.properties, %.java, \
|
||||
$$(subst /share/classes,, $$($1_SRCS))))
|
||||
$$(subst /$(OPENJDK_TARGET_OS)/classes,, \
|
||||
$$(subst /$(OPENJDK_TARGET_OS_TYPE)/classes,, \
|
||||
$$(subst /share/classes,, $$($1_SRCS))))))
|
||||
|
||||
# Generate the package dirs for the to be generated java files. Sort to remove
|
||||
# duplicates.
|
||||
|
@ -95,8 +95,8 @@ ifneq ($(COMPILE_TYPE), cross)
|
||||
-I$(JDK_TOPDIR)/src/java.base/share/native/include \
|
||||
-I$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_EXPORT_DIR)/native/include \
|
||||
-I$(JDK_TOPDIR)/src/java.base/share/native/libjava \
|
||||
-I$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_API_DIR)/native/libjava \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)/native/common/awt \
|
||||
-I$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjava \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/share/native/common/awt/debug \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/awt/image/cvutils \
|
||||
#
|
||||
|
@ -42,7 +42,7 @@ UNPACKEXE_SRC := $(JDK_TOPDIR)/src/jdk.runtime/share/native/common-unpack \
|
||||
$(JDK_TOPDIR)/src/jdk.runtime/share/native/unpack200
|
||||
UNPACKEXE_CFLAGS := -I$(JDK_TOPDIR)/src/jdk.runtime/share/native/common-unpack \
|
||||
-I$(JDK_TOPDIR)/src/java.base/share/native/libjava \
|
||||
-I$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_API_DIR)/native/libjava
|
||||
-I$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjava
|
||||
|
||||
ifeq ($(USE_EXTERNAL_LIBZ), true)
|
||||
UNPACKEXE_CFLAGS += -DSYSTEM_ZLIB
|
||||
@ -102,7 +102,7 @@ $(eval $(call SetupNativeCompilation,BUILD_UNPACKEXE, \
|
||||
MAPFILE := $(UNPACK_MAPFILE),\
|
||||
LDFLAGS := $(UNPACKEXE_ZIPOBJS), \
|
||||
LDFLAGS_windows := $(CXXFLAGS_JDKEXE), \
|
||||
LDFLAGS_posix := $(LDFLAGS_JDKEXE) $(LDFLAGS_CXX_JDK) \
|
||||
LDFLAGS_unix := $(LDFLAGS_JDKEXE) $(LDFLAGS_CXX_JDK) \
|
||||
$(call SET_SHARED_LIBRARY_NAME,$(LIBRARY_PREFIX)unpack$(SHARED_LIBRARY_SUFFIX)) \
|
||||
$(call SET_SHARED_LIBRARY_ORIGIN), \
|
||||
LDFLAGS_linux := -lc, \
|
||||
|
@ -62,7 +62,7 @@ endif
|
||||
LAUNCHER_SRC := $(JDK_TOPDIR)/src/java.base/share/native/launcher
|
||||
LAUNCHER_CFLAGS := -I$(JDK_TOPDIR)/src/java.base/share/native/launcher \
|
||||
-I$(JDK_TOPDIR)/src/java.base/share/native/libjli \
|
||||
-I$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_API_DIR)/native/libjli \
|
||||
-I$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjli \
|
||||
-I$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS)/native/libjli \
|
||||
#
|
||||
GLOBAL_VERSION_INFO_RESOURCE := $(JDK_TOPDIR)/src/java.base/windows/native/common/version.rc
|
||||
@ -71,10 +71,10 @@ MACOSX_PLIST_DIR := $(JDK_TOPDIR)/src/java.base/macosx/native/launcher
|
||||
# Until the shuffle is permanent, we can't add this in configure
|
||||
CFLAGS_JDKEXE := $(filter-out %javavm/export, $(CFLAGS_JDKEXE))
|
||||
CFLAGS_JDKEXE += -I$(JDK_TOPDIR)/src/java.base/share/native/include \
|
||||
-I$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_API_DIR)/native/include
|
||||
-I$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/include
|
||||
CXXFLAGS_JDKEXE := $(filter-out %javavm/export, $(CXXFLAGS_JDKEXE))
|
||||
CXXFLAGS_JDKEXE += -I$(JDK_TOPDIR)/src/java.base/share/native/include \
|
||||
-I$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_API_DIR)/native/include
|
||||
-I$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/include
|
||||
JAVA_MANIFEST := $(JDK_TOPDIR)/src/java.base/windows/native/launcher/java.manifest
|
||||
|
||||
define SetupLauncher
|
||||
@ -82,7 +82,7 @@ define SetupLauncher
|
||||
# Parameter 1 is the name of the launcher (java, javac, jar...)
|
||||
# Parameter 2 is extra CFLAGS
|
||||
# Parameter 3 is extra LDFLAGS
|
||||
# Parameter 4 is extra LDFLAGS_SUFFIX_posix
|
||||
# Parameter 4 is extra LDFLAGS_SUFFIX_unix
|
||||
# Parameter 5 is extra LDFLAGS_SUFFIX_windows
|
||||
# Parameter 6 is optional Windows JLI library (full path)
|
||||
# Parameter 7 is optional Windows resource (RC) flags
|
||||
@ -187,7 +187,7 @@ define SetupLauncher
|
||||
$(call SET_SHARED_LIBRARY_NAME,$(LIBRARY_PREFIX)$(SHARED_LIBRARY_SUFFIX)), \
|
||||
MAPFILE := $$($1_MAPFILE), \
|
||||
LDFLAGS_SUFFIX := $(LDFLAGS_JDKEXE_SUFFIX) $$($1_LDFLAGS_SUFFIX), \
|
||||
LDFLAGS_SUFFIX_posix := $4, \
|
||||
LDFLAGS_SUFFIX_unix := $4, \
|
||||
LDFLAGS_SUFFIX_windows := $$($1_WINDOWS_JLI_LIB) \
|
||||
$(JDK_OUTPUTDIR)/objs/libjava/java.lib advapi32.lib $5, \
|
||||
LDFLAGS_SUFFIX_linux := -L$(JDK_OUTPUTDIR)/lib$(OPENJDK_TARGET_CPU_LIBDIR)/jli -ljli $(LIBDL) -lc, \
|
||||
@ -231,4 +231,3 @@ ifdef OPENJDK
|
||||
else
|
||||
JAVA_RC_FLAGS += -i "$(JDK_TOPDIR)/src/closed/java.base/windows/native/launcher/icons"
|
||||
endif
|
||||
|
||||
|
@ -31,7 +31,7 @@ BUILD_LIBMLIB_SRC := $(JDK_TOPDIR)/src/java.desktop/share/native/libmlib_image \
|
||||
$(JDK_TOPDIR)/src/java.desktop/share/native/common/awt/medialib
|
||||
BUILD_LIBMLIB_CFLAGS := -D__USE_J2D_NAMES -D__MEDIALIB_OLD_NAMES \
|
||||
$(addprefix -I, $(BUILD_LIBMLIB_SRC)) \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)/native/libmlib_image
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libmlib_image
|
||||
|
||||
BUILD_LIBMLIB_LDLIBS :=
|
||||
BUILD_LIBMLIB_IMAGE_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libmlib_image/mapfile-vers
|
||||
@ -144,9 +144,9 @@ endif
|
||||
################################################################################
|
||||
|
||||
LIBAWT_DIRS := $(JDK_TOPDIR)/src/java.desktop/share/native/libawt \
|
||||
$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)/native/libawt \
|
||||
$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt \
|
||||
$(JDK_TOPDIR)/src/java.desktop/share/native/common/awt/debug \
|
||||
$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)/native/common/awt \
|
||||
$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \
|
||||
#
|
||||
|
||||
ifeq ($(OPENJDK_TARGET_OS), aix)
|
||||
@ -211,7 +211,7 @@ ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||
# Why does libawt need java.base headers?
|
||||
LIBAWT_CFLAGS += -I$(JDK_TOPDIR)/src/java.desktop/share/native/common/font \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/share/native/common/java2d/opengl \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)/native/common/java2d/opengl \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/java2d/opengl \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/windows/native/include \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/share/native/include \
|
||||
-I$(JDK_OUTPUTDIR)/gensrc_headers/java.base \
|
||||
@ -298,15 +298,15 @@ ifeq ($(findstring $(OPENJDK_TARGET_OS),windows macosx),)
|
||||
ifndef BUILD_HEADLESS_ONLY
|
||||
|
||||
LIBAWT_XAWT_DIRS := \
|
||||
$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)/native/libawt_xawt \
|
||||
$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)/native/libjawt \
|
||||
$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt_xawt \
|
||||
$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libjawt \
|
||||
$(JDK_TOPDIR)/src/java.desktop/share/native/common/awt/debug \
|
||||
$(JDK_TOPDIR)/src/java.desktop/share/native/common/awt/utility \
|
||||
$(JDK_TOPDIR)/src/java.desktop/share/native/common/font \
|
||||
$(JDK_TOPDIR)/src/java.desktop/share/native/common/java2d/opengl \
|
||||
$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)/native/common/java2d/opengl \
|
||||
$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)/native/common/java2d/x11 \
|
||||
$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)/native/common/awt \
|
||||
$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/java2d/opengl \
|
||||
$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/java2d/x11 \
|
||||
$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \
|
||||
#
|
||||
|
||||
LIBAWT_XAWT_EXCLUDES := medialib
|
||||
@ -315,15 +315,15 @@ ifeq ($(findstring $(OPENJDK_TARGET_OS),windows macosx),)
|
||||
-I$(JDK_OUTPUTDIR)/gensrc_headers/java.desktop \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/share/native/include \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS)/native/include \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)/native/include \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/include \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/java2d \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)/native/libawt/java2d \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt/java2d \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/java2d/loops \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/java2d/pipe \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/awt/image/cvutils \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/awt/image \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)/native/libsunwjdga \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)/native/common/font \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libsunwjdga \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/font \
|
||||
$(LIBJAVA_HEADER_FLAGS)
|
||||
#
|
||||
|
||||
@ -514,14 +514,14 @@ DESKTOP_LIBRARIES += $(BUILD_LIBJAVAJPEG)
|
||||
################################################################################
|
||||
|
||||
LIBFONTMANAGER_SRC := $(JDK_TOPDIR)/src/java.desktop/share/native/libfontmanager \
|
||||
$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)/native/libfontmanager
|
||||
$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libfontmanager
|
||||
LIBFONTMANAGER_CFLAGS := \
|
||||
$(addprefix -I, $(shell $(FIND) \
|
||||
$(LIBFONTMANAGER_SRC) \
|
||||
$(JDK_TOPDIR)/src/java.desktop/share/native/libawt \
|
||||
$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)/native/libawt \
|
||||
$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt \
|
||||
$(JDK_TOPDIR)/src/java.desktop/share/native/common \
|
||||
$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)/native/common -type d)) \
|
||||
$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common -type d)) \
|
||||
-I$(JDK_OUTPUTDIR)/gensrc_headers/java.desktop \
|
||||
$(LIBJAVA_HEADER_FLAGS) \
|
||||
#
|
||||
@ -542,7 +542,7 @@ ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||
LIBFONTMANAGER_EXCLUDE_FILES += X11FontScaler.c \
|
||||
X11TextRenderer.c
|
||||
LIBFONTMANAGER_OPTIMIZATION := HIGHEST
|
||||
LIBFONTMANAGER_CFLAGS += -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)/native/libawt/windows
|
||||
LIBFONTMANAGER_CFLAGS += -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt/windows
|
||||
else ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
LIBFONTMANAGER_EXCLUDE_FILES += X11FontScaler.c \
|
||||
X11TextRenderer.c \
|
||||
@ -606,12 +606,12 @@ DESKTOP_LIBRARIES += $(BUILD_LIBFONTMANAGER)
|
||||
################################################################################
|
||||
|
||||
ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||
LIBJAWT_SRC := $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)/native/libjawt
|
||||
LIBJAWT_CFLAGS := -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)/native/libawt/windows \
|
||||
LIBJAWT_SRC := $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libjawt
|
||||
LIBJAWT_CFLAGS := -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt/windows \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/share/native/common/awt/debug \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/java2d \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/awt/image/cvutils \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)/native/libawt/java2d/windows \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt/java2d/windows \
|
||||
-I$(JDK_OUTPUTDIR)/gensrc_headers/java.desktop \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/windows/native/include \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/share/native/include \
|
||||
@ -655,12 +655,12 @@ else # OPENJDK_TARGET_OS not windows
|
||||
ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
LIBJAWT_SRC := $(JDK_TOPDIR)/src/java.desktop/macosx/native/libjawt
|
||||
else
|
||||
LIBJAWT_SRC := $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)/native/libjawt
|
||||
LIBJAWT_SRC := $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libjawt
|
||||
endif
|
||||
LIBJAWT_CFLAGS := \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)/native/common/awt \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS)/native/include \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)/native/include \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/include \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/share/native/include \
|
||||
$(LIBJAVA_HEADER_FLAGS) \
|
||||
#
|
||||
@ -724,9 +724,9 @@ ifeq ($(BUILD_HEADLESS), true)
|
||||
ifeq ($(findstring $(OPENJDK_TARGET_OS), windows macosx),)
|
||||
|
||||
LIBAWT_HEADLESS_DIRS := $(JDK_TOPDIR)/src/java.desktop/unix/native/libawt_headless/awt \
|
||||
$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)/native/common/awt \
|
||||
$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)/native/common/java2d/opengl \
|
||||
$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)/native/common/java2d/x11 \
|
||||
$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \
|
||||
$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/java2d/opengl \
|
||||
$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/java2d/x11 \
|
||||
$(JDK_TOPDIR)/src/java.desktop/share/native/common/java2d/opengl \
|
||||
$(JDK_TOPDIR)/src/java.desktop/share/native/common/font \
|
||||
#
|
||||
@ -739,11 +739,11 @@ ifeq ($(BUILD_HEADLESS), true)
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/awt/image/cvutils \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/java2d/pipe \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/awt/image \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)/native/libawt/java2d \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt/java2d \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/share/native/common/font \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/share/native/common/awt/debug \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)/native/common/font \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)/native/libsunwjdga/ \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/font \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libsunwjdga/ \
|
||||
$(LIBJAVA_HEADER_FLAGS) \
|
||||
#
|
||||
|
||||
@ -817,7 +817,7 @@ ifndef BUILD_HEADLESS_ONLY
|
||||
endif
|
||||
|
||||
ifneq ($(OPENJDK_TARGET_OS), macosx)
|
||||
LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)/native/libsplashscreen
|
||||
LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libsplashscreen
|
||||
else
|
||||
LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/java.desktop/macosx/native/libsplashscreen
|
||||
endif
|
||||
@ -988,7 +988,7 @@ ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/macosx/native/libawt_lwawt/awt \
|
||||
-I$(JDK_TOPDIR)/src/java.desktop/macosx/native/libosxapp \
|
||||
-I$(JDK_TOPDIR)/src/java.base/share/native/libjava \
|
||||
-I$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_API_DIR)/native/libjava \
|
||||
-I$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjava \
|
||||
-I$(JDK_OUTPUTDIR)/gensrc_headers/java.desktop, \
|
||||
LDFLAGS := $(LDFLAGS_JDKLIB) \
|
||||
$(call SET_SHARED_LIBRARY_ORIGIN) \
|
||||
|
@ -99,7 +99,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBVERIFY, \
|
||||
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libverify/mapfile-vers, \
|
||||
LDFLAGS := $(LDFLAGS_JDKLIB) \
|
||||
$(call SET_SHARED_LIBRARY_ORIGIN), \
|
||||
LDFLAGS_SUFFIX_posix := -ljvm -lc, \
|
||||
LDFLAGS_SUFFIX_unix := -ljvm -lc, \
|
||||
LDFLAGS_SUFFIX_windows := jvm.lib, \
|
||||
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
|
||||
RC_FLAGS := $(RC_FLAGS) \
|
||||
@ -160,7 +160,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBJAVA, \
|
||||
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjava/mapfile-vers, \
|
||||
LDFLAGS := $(LDFLAGS_JDKLIB) \
|
||||
$(call SET_SHARED_LIBRARY_ORIGIN), \
|
||||
LDFLAGS_SUFFIX_posix := -ljvm -lverify, \
|
||||
LDFLAGS_SUFFIX_unix := -ljvm -lverify, \
|
||||
LDFLAGS_SUFFIX_solaris := -lsocket -lnsl -lscf $(LIBDL) $(BUILD_LIBFDLIBM) -lc, \
|
||||
LDFLAGS_SUFFIX_linux := $(LIBDL) $(BUILD_LIBFDLIBM), \
|
||||
LDFLAGS_SUFFIX_aix := $(LIBDL) $(BUILD_LIBFDLIBM) -lm,\
|
||||
@ -216,9 +216,9 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBZIP, \
|
||||
CFLAGS := $(CFLAGS_JDKLIB) \
|
||||
$(ZLIB_CPPFLAGS) \
|
||||
-I$(JDK_TOPDIR)/src/java.base/share/native/libjava \
|
||||
-I$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_API_DIR)/native/libjava \
|
||||
-I$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjava \
|
||||
-I$(JDK_OUTPUTDIR)/gensrc_headers/java.base, \
|
||||
CFLAGS_posix := $(BUILD_LIBZIP_MMAP) -UDEBUG, \
|
||||
CFLAGS_unix := $(BUILD_LIBZIP_MMAP) -UDEBUG, \
|
||||
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libzip/mapfile-vers, \
|
||||
REORDER := $(BUILD_LIBZIP_REORDER), \
|
||||
LDFLAGS := $(LDFLAGS_JDKLIB) \
|
||||
@ -247,7 +247,7 @@ BASE_LIBRARIES += $(BUILD_LIBZIP)
|
||||
##########################################################################################
|
||||
|
||||
BUILD_LIBJLI_SRC_DIRS := $(JDK_TOPDIR)/src/java.base/share/native/libjli \
|
||||
$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_API_DIR)/native/libjli
|
||||
$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjli
|
||||
|
||||
LIBJLI_CFLAGS := $(CFLAGS_JDKLIB)
|
||||
|
||||
@ -291,7 +291,7 @@ else ifneq ($(OPENJDK_TARGET_OS), macosx)
|
||||
|
||||
# if the architecture specific ergo file exists then
|
||||
# use it, else use the generic definitions from ergo.c
|
||||
ifneq ($(wildcard $(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_API_DIR)/native/libjli/$(ERGO_ARCH_FILE)), )
|
||||
ifneq ($(wildcard $(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjli/$(ERGO_ARCH_FILE)), )
|
||||
BUILD_LIBJLI_FILES += $(ERGO_ARCH_FILE)
|
||||
else # !ERGO_ARCH_FILE
|
||||
LIBJLI_CFLAGS += -DUSE_GENERIC_ERGO
|
||||
|
@ -28,7 +28,7 @@ include LibCommon.gmk
|
||||
################################################################################
|
||||
|
||||
LIBINSTRUMENT_SRC := $(JDK_TOPDIR)/src/java.instrument/share/native/libinstrument \
|
||||
$(JDK_TOPDIR)/src/java.instrument/$(OPENJDK_TARGET_OS_API_DIR)/native/libinstrument \
|
||||
$(JDK_TOPDIR)/src/java.instrument/$(OPENJDK_TARGET_OS_TYPE)/native/libinstrument \
|
||||
#
|
||||
LIBINSTRUMENT_CFLAGS := $(CFLAGS_JDKLIB) \
|
||||
$(addprefix -I, $(LIBINSTRUMENT_SRC)) \
|
||||
|
@ -31,7 +31,7 @@ $(eval $(call IncludeCustomExtension, jdk, lib/Lib-java.management.gmk))
|
||||
################################################################################
|
||||
|
||||
BUILD_LIBMANAGEMENT_SRC += $(JDK_TOPDIR)/src/java.management/share/native/libmanagement \
|
||||
$(JDK_TOPDIR)/src/java.management/$(OPENJDK_TARGET_OS_API_DIR)/native/libmanagement
|
||||
$(JDK_TOPDIR)/src/java.management/$(OPENJDK_TARGET_OS_TYPE)/native/libmanagement
|
||||
BUILD_LIBMANAGEMENT_CFLAGS := -I$(JDK_TOPDIR)/src/java.management/share/native/include \
|
||||
$(addprefix -I,$(BUILD_LIBMANAGEMENT_SRC)) \
|
||||
-I$(JDK_OUTPUTDIR)/gensrc_headers/java.management \
|
||||
|
@ -30,7 +30,7 @@ include LibCommon.gmk
|
||||
ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
LIBPREF_SRC_DIRS := $(JDK_TOPDIR)/src/java.prefs/macosx/native/libprefs
|
||||
else
|
||||
LIBPREF_SRC_DIRS := $(JDK_TOPDIR)/src/java.prefs/$(OPENJDK_TARGET_OS_API_DIR)/native/libprefs
|
||||
LIBPREF_SRC_DIRS := $(JDK_TOPDIR)/src/java.prefs/$(OPENJDK_TARGET_OS_TYPE)/native/libprefs
|
||||
endif
|
||||
|
||||
$(eval $(call SetupNativeCompilation,BUILD_LIBPREFS, \
|
||||
|
@ -29,7 +29,7 @@ include LibCommon.gmk
|
||||
|
||||
ifneq ($(OPENJDK_TARGET_OS), windows)
|
||||
LIBJ2GSS_SRC := $(JDK_TOPDIR)/src/java.security.jgss/share/native/libj2gss \
|
||||
$(JDK_TOPDIR)/src/java.security.jgss/$(OPENJDK_TARGET_OS_API_DIR)/native/libj2gss \
|
||||
$(JDK_TOPDIR)/src/java.security.jgss/$(OPENJDK_TARGET_OS_TYPE)/native/libj2gss \
|
||||
#
|
||||
|
||||
$(eval $(call SetupNativeCompilation,BUILD_LIBJ2GSS, \
|
||||
@ -58,7 +58,7 @@ ifneq ($(BUILD_CRYPTO), no)
|
||||
BUILD_LIBKRB5_NAME :=
|
||||
ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||
BUILD_LIBKRB5_NAME := w2k_lsa_auth
|
||||
BUILD_LIBKRB5_SRC := $(JDK_TOPDIR)/src/java.security.jgss/$(OPENJDK_TARGET_OS_API_DIR)/native/libw2k_lsa_auth
|
||||
BUILD_LIBKRB5_SRC := $(JDK_TOPDIR)/src/java.security.jgss/$(OPENJDK_TARGET_OS_TYPE)/native/libw2k_lsa_auth
|
||||
BUILD_LIBKRB5_LIBS := advapi32.lib Secur32.lib netapi32.lib kernel32.lib user32.lib \
|
||||
gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib \
|
||||
ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib
|
||||
|
@ -28,9 +28,9 @@ include LibCommon.gmk
|
||||
################################################################################
|
||||
|
||||
LIBJ2PCSC_SRC := $(JDK_TOPDIR)/src/java.smartcardio/share/native/libj2pcsc \
|
||||
$(JDK_TOPDIR)/src/java.smartcardio/$(OPENJDK_TARGET_OS_API_DIR)/native/libj2pcsc
|
||||
$(JDK_TOPDIR)/src/java.smartcardio/$(OPENJDK_TARGET_OS_TYPE)/native/libj2pcsc
|
||||
LIBJ2PCSC_CPPFLAGS := $(addprefix -I,$(LIBJ2PCSC_SRC)) \
|
||||
-I$(JDK_TOPDIR)/src/java.smartcardio/$(OPENJDK_TARGET_OS_API_DIR)/native/libj2pcsc/MUSCLE \
|
||||
-I$(JDK_TOPDIR)/src/java.smartcardio/$(OPENJDK_TARGET_OS_TYPE)/native/libj2pcsc/MUSCLE \
|
||||
-I$(JDK_OUTPUTDIR)/gensrc_headers/java.smartcardio
|
||||
|
||||
$(eval $(call SetupNativeCompilation,BUILD_LIBJ2PCSC, \
|
||||
@ -38,13 +38,13 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBJ2PCSC, \
|
||||
OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
|
||||
SRC := $(LIBJ2PCSC_SRC), \
|
||||
LANG := C, \
|
||||
CFLAGS_posix := -D__sun_jdk, \
|
||||
CFLAGS_unix := -D__sun_jdk, \
|
||||
OPTIMIZATION := LOW, \
|
||||
CFLAGS := $(CFLAGS_JDKLIB) $(LIBJ2PCSC_CPPFLAGS), \
|
||||
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libj2pcsc/mapfile-vers, \
|
||||
LDFLAGS := $(LDFLAGS_JDKLIB) \
|
||||
$(call SET_SHARED_LIBRARY_ORIGIN), \
|
||||
LDFLAGS_SUFFIX_posix := $(LIBDL), \
|
||||
LDFLAGS_SUFFIX_unix := $(LIBDL), \
|
||||
LDFLAGS_SUFFIX_windows := winscard.lib, \
|
||||
LDFLAGS_SUFFIX_solaris := -lc, \
|
||||
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
|
||||
|
@ -29,7 +29,7 @@ include LibCommon.gmk
|
||||
|
||||
ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||
|
||||
LIBSUNMSCAPI_SRC := $(JDK_TOPDIR)/src/jdk.crypto.mscapi/$(OPENJDK_TARGET_OS_API_DIR)/native/libsunmscapi
|
||||
LIBSUNMSCAPI_SRC := $(JDK_TOPDIR)/src/jdk.crypto.mscapi/$(OPENJDK_TARGET_OS_TYPE)/native/libsunmscapi
|
||||
|
||||
$(eval $(call SetupNativeCompilation,BUILD_LIBSUNMSCAPI, \
|
||||
LIBRARY := sunmscapi, \
|
||||
|
@ -28,7 +28,7 @@ include LibCommon.gmk
|
||||
################################################################################
|
||||
|
||||
LIBJ2PKCS11_SRC := $(JDK_TOPDIR)/src/jdk.crypto.pkcs11/share/native/libj2pkcs11 \
|
||||
$(JDK_TOPDIR)/src/jdk.crypto.pkcs11/$(OPENJDK_TARGET_OS_API_DIR)/native/libj2pkcs11
|
||||
$(JDK_TOPDIR)/src/jdk.crypto.pkcs11/$(OPENJDK_TARGET_OS_TYPE)/native/libj2pkcs11
|
||||
|
||||
$(eval $(call SetupNativeCompilation,BUILD_LIBJ2PKCS11, \
|
||||
LIBRARY := j2pkcs11, \
|
||||
@ -42,7 +42,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBJ2PKCS11, \
|
||||
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libj2pkcs11/mapfile-vers, \
|
||||
LDFLAGS := $(LDFLAGS_JDKLIB) \
|
||||
$(call SET_SHARED_LIBRARY_ORIGIN), \
|
||||
LDFLAGS_SUFFIX_posix := $(LIBDL), \
|
||||
LDFLAGS_SUFFIX_unix := $(LIBDL), \
|
||||
LDFLAGS_SUFFIX_solaris := -lc, \
|
||||
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
|
||||
RC_FLAGS := $(RC_FLAGS) \
|
||||
|
@ -30,7 +30,7 @@ include LibCommon.gmk
|
||||
ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||
|
||||
LIBDT_SHMEM_SRC := $(JDK_TOPDIR)/src/jdk.jdi/share/native/libdt_shmem \
|
||||
$(JDK_TOPDIR)/src/jdk.jdi/$(OPENJDK_TARGET_OS_API_DIR)/native/libdt_shmem \
|
||||
$(JDK_TOPDIR)/src/jdk.jdi/$(OPENJDK_TARGET_OS_TYPE)/native/libdt_shmem \
|
||||
#
|
||||
LIBDT_SHMEM_CPPFLAGS := -I$(INCLUDEDIR) -I$(JDK_OUTPUTDIR)/include/$(OPENJDK_TARGET_OS) \
|
||||
$(addprefix -I, $(LIBDT_SHMEM_SRC)) \
|
||||
|
@ -28,7 +28,7 @@ include LibCommon.gmk
|
||||
################################################################################
|
||||
|
||||
LIBDT_SOCKET_SRC := $(JDK_TOPDIR)/src/jdk.jdwp.agent/share/native/libdt_socket \
|
||||
$(JDK_TOPDIR)/src/jdk.jdwp.agent/$(OPENJDK_TARGET_OS_API_DIR)/native/libdt_socket
|
||||
$(JDK_TOPDIR)/src/jdk.jdwp.agent/$(OPENJDK_TARGET_OS_TYPE)/native/libdt_socket
|
||||
LIBDT_SOCKET_CPPFLAGS := \
|
||||
$(addprefix -I, $(LIBDT_SOCKET_SRC)) \
|
||||
-I$(JDK_TOPDIR)/src/jdk.jdwp.agent/share/native/libjdwp/export \
|
||||
@ -66,7 +66,7 @@ JDWP_LIBRARIES += $(BUILD_LIBDT_SOCKET)
|
||||
################################################################################
|
||||
|
||||
LIBJDWP_SRC := $(JDK_TOPDIR)/src/jdk.jdwp.agent/share/native/libjdwp \
|
||||
$(JDK_TOPDIR)/src/jdk.jdwp.agent/$(OPENJDK_TARGET_OS_API_DIR)/native/libjdwp
|
||||
$(JDK_TOPDIR)/src/jdk.jdwp.agent/$(OPENJDK_TARGET_OS_TYPE)/native/libjdwp
|
||||
LIBJDWP_CPPFLAGS := \
|
||||
-I$(JDK_TOPDIR)/src/jdk.jdwp.agent/share/native/libjdwp/export \
|
||||
-I$(JDK_TOPDIR)/src/jdk.jdwp.agent/share/native/include \
|
||||
|
@ -45,7 +45,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBUNPACK, \
|
||||
$(call SET_SHARED_LIBRARY_ORIGIN), \
|
||||
LDFLAGS_windows := -map:$(JDK_OUTPUTDIR)/objs/unpack.map -debug \
|
||||
jvm.lib $(WIN_JAVA_LIB), \
|
||||
LDFLAGS_SUFFIX_posix := -ljvm $(LIBCXX) -ljava -lc, \
|
||||
LDFLAGS_SUFFIX_unix := -ljvm $(LIBCXX) -ljava -lc, \
|
||||
OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libunpack, \
|
||||
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
|
||||
RC_FLAGS := $(RC_FLAGS) \
|
||||
@ -61,7 +61,7 @@ UNPACK_LIBRARIES += $(BUILD_LIBUNPACK)
|
||||
################################################################################
|
||||
|
||||
LIBJSDT_SRC := $(JDK_TOPDIR)/src/jdk.runtime/share/native/libjsdt \
|
||||
$(JDK_TOPDIR)/src/jdk.runtime/$(OPENJDK_TARGET_OS_API_DIR)/native/libjsdt
|
||||
$(JDK_TOPDIR)/src/jdk.runtime/$(OPENJDK_TARGET_OS_TYPE)/native/libjsdt
|
||||
|
||||
$(eval $(call SetupNativeCompilation,BUILD_LIBJSDT, \
|
||||
LIBRARY := jsdt, \
|
||||
|
@ -27,7 +27,7 @@ include LibCommon.gmk
|
||||
|
||||
################################################################################
|
||||
|
||||
ifeq ($(OPENJDK_TARGET_OS_API), posix)
|
||||
ifeq ($(OPENJDK_TARGET_OS_TYPE), unix)
|
||||
|
||||
ifeq (, $(filter $(OPENJDK_TARGET_OS), macosx aix))
|
||||
|
||||
@ -40,11 +40,11 @@ ifeq ($(OPENJDK_TARGET_OS_API), posix)
|
||||
$(eval $(call SetupNativeCompilation,BUILD_LIBSCTP, \
|
||||
LIBRARY := sctp, \
|
||||
OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
|
||||
SRC := $(JDK_TOPDIR)/src/jdk.sctp/$(OPENJDK_TARGET_OS_API_DIR)/native/libsctp, \
|
||||
SRC := $(JDK_TOPDIR)/src/jdk.sctp/$(OPENJDK_TARGET_OS_TYPE)/native/libsctp, \
|
||||
LANG := C, \
|
||||
OPTIMIZATION := LOW, \
|
||||
CFLAGS := $(CFLAGS_JDKLIB) \
|
||||
-I $(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_API_DIR)/native/libnio/ch \
|
||||
-I $(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libnio/ch \
|
||||
-I $(JDK_TOPDIR)/src/java.base/share/native/libnio/ch \
|
||||
$(addprefix -I, $(call FindSrcDirsForLib, java.base, net)) \
|
||||
$(LIBJAVA_HEADER_FLAGS) \
|
||||
@ -55,7 +55,7 @@ ifeq ($(OPENJDK_TARGET_OS_API), posix)
|
||||
LDFLAGS := $(LDFLAGS_JDKLIB) \
|
||||
$(call SET_SHARED_LIBRARY_ORIGIN), \
|
||||
LDFLAGS_SUFFIX_linux := -lpthread $(LIBDL) -ljava -ljvm, \
|
||||
LDFLAGS_SUFFIX_posix := -lnio -lnet, \
|
||||
LDFLAGS_SUFFIX_unix := -lnio -lnet, \
|
||||
LDFLAGS_SUFFIX_solaris := -lsocket -ljava -ljvm -lc, \
|
||||
LDFLAGS_SUFFIX_macosx := -ljava -ljvm, \
|
||||
OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libsctp, \
|
||||
|
@ -43,7 +43,7 @@ endif
|
||||
$(eval $(call SetupNativeCompilation,BUILD_LIBJAAS, \
|
||||
LIBRARY := $(LIBJAAS_NAME), \
|
||||
OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
|
||||
SRC := $(JDK_TOPDIR)/src/jdk.security.auth/$(OPENJDK_TARGET_OS_API_DIR)/native/libjaas, \
|
||||
SRC := $(JDK_TOPDIR)/src/jdk.security.auth/$(OPENJDK_TARGET_OS_TYPE)/native/libjaas, \
|
||||
LANG := C, \
|
||||
OPTIMIZATION := LOW, \
|
||||
CFLAGS := $(CFLAGS_JDKLIB) -I$(JDK_OUTPUTDIR)/gensrc_headers/jdk.security.auth, \
|
||||
|
@ -34,8 +34,8 @@ include Tools.gmk
|
||||
|
||||
GLOBAL_VERSION_INFO_RESOURCE := $(JDK_TOPDIR)/src/java.base/windows/native/common/version.rc
|
||||
|
||||
# Put the libraries here. Different locations for different target apis.
|
||||
ifeq ($(OPENJDK_TARGET_OS_API), posix)
|
||||
# Put the libraries here. Different locations for different target OS types.
|
||||
ifeq ($(OPENJDK_TARGET_OS_TYPE), unix)
|
||||
INSTALL_LIBRARIES_HERE := $(JDK_OUTPUTDIR)/lib$(OPENJDK_TARGET_CPU_LIBDIR)
|
||||
else
|
||||
INSTALL_LIBRARIES_HERE := $(JDK_OUTPUTDIR)/bin
|
||||
@ -63,7 +63,7 @@ endif
|
||||
# Param 2 - library name
|
||||
FindSrcDirsForLib = $(call uniq, $(wildcard \
|
||||
$(JDK_TOPDIR)/src/$(strip $1)/$(OPENJDK_TARGET_OS)/native/lib$(strip $2) \
|
||||
$(JDK_TOPDIR)/src/$(strip $1)/$(OPENJDK_TARGET_OS_API_DIR)/native/lib$(strip $2) \
|
||||
$(JDK_TOPDIR)/src/$(strip $1)/$(OPENJDK_TARGET_OS_TYPE)/native/lib$(strip $2) \
|
||||
$(JDK_TOPDIR)/src/$(strip $1)/share/native/lib$(strip $2)))
|
||||
|
||||
################################################################################
|
||||
|
@ -24,7 +24,7 @@
|
||||
#
|
||||
|
||||
LIBNET_SRC_DIRS := $(JDK_TOPDIR)/src/java.base/share/native/libnet \
|
||||
$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_API_DIR)/native/libnet
|
||||
$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libnet
|
||||
LIBNET_CFLAGS += -I$(JDK_OUTPUTDIR)/gensrc_headers/java.base \
|
||||
$(LIBJAVA_HEADER_FLAGS)
|
||||
|
||||
@ -77,4 +77,3 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBNET, \
|
||||
$(BUILD_LIBNET): $(BUILD_LIBJAVA)
|
||||
|
||||
BASE_LIBRARIES += $(BUILD_LIBNET)
|
||||
|
||||
|
@ -25,10 +25,10 @@
|
||||
|
||||
BUILD_LIBNIO_SRC := \
|
||||
$(JDK_TOPDIR)/src/java.base/share/native/libnio/ch \
|
||||
$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_API_DIR)/native/libnio \
|
||||
$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libnio \
|
||||
$(sort $(wildcard \
|
||||
$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_API_DIR)/native/libnio/ch \
|
||||
$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_API_DIR)/native/libnio/fs \
|
||||
$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libnio/ch \
|
||||
$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libnio/fs \
|
||||
$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS)/native/libnio/ch \
|
||||
$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS)/native/libnio/fs)) \
|
||||
#
|
||||
|
@ -25,7 +25,7 @@
|
||||
|
||||
LIBJSOUND_SRC_DIRS := \
|
||||
$(JDK_TOPDIR)/src/java.desktop/share/native/libjsound \
|
||||
$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_API_DIR)/native/libjsound \
|
||||
$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libjsound \
|
||||
#
|
||||
LIBJSOUND_CFLAGS := \
|
||||
-I$(JDK_OUTPUTDIR)/gensrc_headers/java.desktop \
|
||||
@ -165,7 +165,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBJSOUND, \
|
||||
-framework CoreServices -framework AudioUnit $(LIBCXX) \
|
||||
-framework CoreMIDI -framework AudioToolbox, \
|
||||
LDFLAGS_windows := $(WIN_JAVA_LIB) advapi32.lib winmm.lib, \
|
||||
LDFLAGS_SUFFIX_posix := -ljava -ljvm, \
|
||||
LDFLAGS_SUFFIX_unix := -ljava -ljvm, \
|
||||
LDFLAGS_SUFFIX_solaris := -lc, \
|
||||
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
|
||||
RC_FLAGS := $(RC_FLAGS) \
|
||||
|
@ -719,15 +719,15 @@ public final class Class<T> implements java.io.Serializable,
|
||||
|
||||
|
||||
/**
|
||||
* Returns the {@code Class} representing the superclass of the entity
|
||||
* (class, interface, primitive type or void) represented by this
|
||||
* {@code Class}. If this {@code Class} represents either the
|
||||
* Returns the {@code Class} representing the direct superclass of the
|
||||
* entity (class, interface, primitive type or void) represented by
|
||||
* this {@code Class}. If this {@code Class} represents either the
|
||||
* {@code Object} class, an interface, a primitive type, or void, then
|
||||
* null is returned. If this object represents an array class then the
|
||||
* {@code Class} object representing the {@code Object} class is
|
||||
* returned.
|
||||
*
|
||||
* @return the superclass of the class represented by this object.
|
||||
* @return the direct superclass of the class represented by this object
|
||||
*/
|
||||
public native Class<? super T> getSuperclass();
|
||||
|
||||
@ -758,7 +758,7 @@ public final class Class<T> implements java.io.Serializable,
|
||||
* @throws java.lang.reflect.MalformedParameterizedTypeException if the
|
||||
* generic superclass refers to a parameterized type that cannot be
|
||||
* instantiated for any reason
|
||||
* @return the superclass of the class represented by this object
|
||||
* @return the direct superclass of the class represented by this object
|
||||
* @since 1.5
|
||||
*/
|
||||
public Type getGenericSuperclass() {
|
||||
@ -798,15 +798,15 @@ public final class Class<T> implements java.io.Serializable,
|
||||
|
||||
|
||||
/**
|
||||
* Determines the interfaces implemented by the class or interface
|
||||
* Returns the interfaces directly implemented by the class or interface
|
||||
* represented by this object.
|
||||
*
|
||||
* <p> If this object represents a class, the return value is an array
|
||||
* containing objects representing all interfaces implemented by the
|
||||
* class. The order of the interface objects in the array corresponds to
|
||||
* the order of the interface names in the {@code implements} clause
|
||||
* of the declaration of the class represented by this object. For
|
||||
* example, given the declaration:
|
||||
* <p>If this object represents a class, the return value is an array
|
||||
* containing objects representing all interfaces directly implemented by
|
||||
* the class. The order of the interface objects in the array corresponds
|
||||
* to the order of the interface names in the {@code implements} clause of
|
||||
* the declaration of the class represented by this object. For example,
|
||||
* given the declaration:
|
||||
* <blockquote>
|
||||
* {@code class Shimmer implements FloorWax, DessertTopping { ... }}
|
||||
* </blockquote>
|
||||
@ -823,23 +823,23 @@ public final class Class<T> implements java.io.Serializable,
|
||||
* is the {@code Class} object that represents interface
|
||||
* {@code DessertTopping}.
|
||||
*
|
||||
* <p> If this object represents an interface, the array contains objects
|
||||
* representing all interfaces extended by the interface. The order of the
|
||||
* interface objects in the array corresponds to the order of the interface
|
||||
* names in the {@code extends} clause of the declaration of the
|
||||
* interface represented by this object.
|
||||
* <p>If this object represents an interface, the array contains objects
|
||||
* representing all interfaces directly extended by the interface. The
|
||||
* order of the interface objects in the array corresponds to the order of
|
||||
* the interface names in the {@code extends} clause of the declaration of
|
||||
* the interface represented by this object.
|
||||
*
|
||||
* <p> If this object represents a class or interface that implements no
|
||||
* <p>If this object represents a class or interface that implements no
|
||||
* interfaces, the method returns an array of length 0.
|
||||
*
|
||||
* <p> If this object represents a primitive type or void, the method
|
||||
* <p>If this object represents a primitive type or void, the method
|
||||
* returns an array of length 0.
|
||||
*
|
||||
* <p> If this {@code Class} object represents an array type, the
|
||||
* <p>If this {@code Class} object represents an array type, the
|
||||
* interfaces {@code Cloneable} and {@code java.io.Serializable} are
|
||||
* returned in that order.
|
||||
*
|
||||
* @return an array of interfaces implemented by this class.
|
||||
* @return an array of interfaces directly implemented by this class
|
||||
*/
|
||||
public Class<?>[] getInterfaces() {
|
||||
ReflectionData<T> rd = reflectionData();
|
||||
@ -873,29 +873,28 @@ public final class Class<T> implements java.io.Serializable,
|
||||
* for the semantics of the creation process for parameterized
|
||||
* types.
|
||||
*
|
||||
* <p> If this object represents a class, the return value is an
|
||||
* array containing objects representing all interfaces
|
||||
* implemented by the class. The order of the interface objects in
|
||||
* the array corresponds to the order of the interface names in
|
||||
* the {@code implements} clause of the declaration of the class
|
||||
* represented by this object. In the case of an array class, the
|
||||
* interfaces {@code Cloneable} and {@code Serializable} are
|
||||
* <p>If this object represents a class, the return value is an array
|
||||
* containing objects representing all interfaces directly implemented by
|
||||
* the class. The order of the interface objects in the array corresponds
|
||||
* to the order of the interface names in the {@code implements} clause of
|
||||
* the declaration of the class represented by this object.
|
||||
*
|
||||
* <p>If this object represents an interface, the array contains objects
|
||||
* representing all interfaces directly extended by the interface. The
|
||||
* order of the interface objects in the array corresponds to the order of
|
||||
* the interface names in the {@code extends} clause of the declaration of
|
||||
* the interface represented by this object.
|
||||
*
|
||||
* <p>If this object represents a class or interface that implements no
|
||||
* interfaces, the method returns an array of length 0.
|
||||
*
|
||||
* <p>If this object represents a primitive type or void, the method
|
||||
* returns an array of length 0.
|
||||
*
|
||||
* <p>If this {@code Class} object represents an array type, the
|
||||
* interfaces {@code Cloneable} and {@code java.io.Serializable} are
|
||||
* returned in that order.
|
||||
*
|
||||
* <p>If this object represents an interface, the array contains
|
||||
* objects representing all interfaces directly extended by the
|
||||
* interface. The order of the interface objects in the array
|
||||
* corresponds to the order of the interface names in the
|
||||
* {@code extends} clause of the declaration of the interface
|
||||
* represented by this object.
|
||||
*
|
||||
* <p>If this object represents a class or interface that
|
||||
* implements no interfaces, the method returns an array of length
|
||||
* 0.
|
||||
*
|
||||
* <p>If this object represents a primitive type or void, the
|
||||
* method returns an array of length 0.
|
||||
*
|
||||
* @throws java.lang.reflect.GenericSignatureFormatError
|
||||
* if the generic class signature does not conform to the format
|
||||
* specified in
|
||||
@ -905,7 +904,7 @@ public final class Class<T> implements java.io.Serializable,
|
||||
* @throws java.lang.reflect.MalformedParameterizedTypeException
|
||||
* if any of the generic superinterfaces refer to a parameterized
|
||||
* type that cannot be instantiated for any reason
|
||||
* @return an array of interfaces implemented by this class
|
||||
* @return an array of interfaces directly implemented by this class
|
||||
* @since 1.5
|
||||
*/
|
||||
public Type[] getGenericInterfaces() {
|
||||
|
@ -453,7 +453,7 @@ public class Object {
|
||||
"nanosecond timeout value out of range");
|
||||
}
|
||||
|
||||
if (nanos >= 500000 || (nanos != 0 && timeout == 0)) {
|
||||
if (nanos > 0) {
|
||||
timeout++;
|
||||
}
|
||||
|
||||
|
@ -867,15 +867,11 @@ assertEquals("[A, B, C]", (String) caToString2.invokeExact('A', "BC".toCharArray
|
||||
MethodType postSpreadType = asSpreaderChecks(arrayType, arrayLength);
|
||||
int arity = type().parameterCount();
|
||||
int spreadArgPos = arity - arrayLength;
|
||||
if (USE_LAMBDA_FORM_EDITOR) {
|
||||
MethodHandle afterSpread = this.asType(postSpreadType);
|
||||
BoundMethodHandle mh = afterSpread.rebind();
|
||||
LambdaForm lform = mh.editor().spreadArgumentsForm(1 + spreadArgPos, arrayType, arrayLength);
|
||||
MethodType preSpreadType = postSpreadType.replaceParameterTypes(spreadArgPos, arity, arrayType);
|
||||
return mh.copyWith(preSpreadType, lform);
|
||||
} else {
|
||||
return MethodHandleImpl.makeSpreadArguments(this, arrayType, spreadArgPos, arrayLength);
|
||||
}
|
||||
MethodHandle afterSpread = this.asType(postSpreadType);
|
||||
BoundMethodHandle mh = afterSpread.rebind();
|
||||
LambdaForm lform = mh.editor().spreadArgumentsForm(1 + spreadArgPos, arrayType, arrayLength);
|
||||
MethodType preSpreadType = postSpreadType.replaceParameterTypes(spreadArgPos, arity, arrayType);
|
||||
return mh.copyWith(preSpreadType, lform);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -996,23 +992,15 @@ assertEquals("[123]", (String) longsToString.invokeExact((long)123));
|
||||
public MethodHandle asCollector(Class<?> arrayType, int arrayLength) {
|
||||
asCollectorChecks(arrayType, arrayLength);
|
||||
int collectArgPos = type().parameterCount() - 1;
|
||||
if (USE_LAMBDA_FORM_EDITOR) {
|
||||
BoundMethodHandle mh = rebind();
|
||||
MethodType resultType = type().asCollectorType(arrayType, arrayLength);
|
||||
MethodHandle newArray = MethodHandleImpl.varargsArray(arrayType, arrayLength);
|
||||
LambdaForm lform = mh.editor().collectArgumentArrayForm(1 + collectArgPos, newArray);
|
||||
if (lform != null) {
|
||||
return mh.copyWith(resultType, lform);
|
||||
}
|
||||
lform = mh.editor().collectArgumentsForm(1 + collectArgPos, newArray.type().basicType());
|
||||
return mh.copyWithExtendL(resultType, lform, newArray);
|
||||
} else {
|
||||
MethodHandle target = this;
|
||||
if (arrayType != type().parameterType(collectArgPos))
|
||||
target = MethodHandleImpl.makePairwiseConvert(this, type().changeParameterType(collectArgPos, arrayType), true);
|
||||
MethodHandle collector = MethodHandleImpl.varargsArray(arrayType, arrayLength);
|
||||
return MethodHandles.collectArguments(target, collectArgPos, collector);
|
||||
BoundMethodHandle mh = rebind();
|
||||
MethodType resultType = type().asCollectorType(arrayType, arrayLength);
|
||||
MethodHandle newArray = MethodHandleImpl.varargsArray(arrayType, arrayLength);
|
||||
LambdaForm lform = mh.editor().collectArgumentArrayForm(1 + collectArgPos, newArray);
|
||||
if (lform != null) {
|
||||
return mh.copyWith(resultType, lform);
|
||||
}
|
||||
lform = mh.editor().collectArgumentsForm(1 + collectArgPos, newArray.type().basicType());
|
||||
return mh.copyWithExtendL(resultType, lform, newArray);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -191,11 +191,7 @@ import static java.lang.invoke.MethodHandles.Lookup.IMPL_LOOKUP;
|
||||
MethodType dstType = target.type();
|
||||
if (srcType == dstType)
|
||||
return target;
|
||||
if (USE_LAMBDA_FORM_EDITOR) {
|
||||
return makePairwiseConvertByEditor(target, srcType, strict, monobox);
|
||||
} else {
|
||||
return makePairwiseConvertIndirect(target, srcType, strict, monobox);
|
||||
}
|
||||
return makePairwiseConvertByEditor(target, srcType, strict, monobox);
|
||||
}
|
||||
|
||||
private static int countNonNull(Object[] array) {
|
||||
|
@ -45,23 +45,21 @@ import sun.misc.Unsafe;
|
||||
static final boolean DUMP_CLASS_FILES;
|
||||
static final boolean TRACE_INTERPRETER;
|
||||
static final boolean TRACE_METHOD_LINKAGE;
|
||||
static final boolean USE_LAMBDA_FORM_EDITOR;
|
||||
static final int COMPILE_THRESHOLD;
|
||||
static final int DONT_INLINE_THRESHOLD;
|
||||
static final int PROFILE_LEVEL;
|
||||
|
||||
static {
|
||||
final Object[] values = new Object[8];
|
||||
final Object[] values = new Object[7];
|
||||
AccessController.doPrivileged(new PrivilegedAction<Void>() {
|
||||
public Void run() {
|
||||
values[0] = Boolean.getBoolean("java.lang.invoke.MethodHandle.DEBUG_NAMES");
|
||||
values[1] = Boolean.getBoolean("java.lang.invoke.MethodHandle.DUMP_CLASS_FILES");
|
||||
values[2] = Boolean.getBoolean("java.lang.invoke.MethodHandle.TRACE_INTERPRETER");
|
||||
values[3] = Boolean.getBoolean("java.lang.invoke.MethodHandle.TRACE_METHOD_LINKAGE");
|
||||
values[4] = Boolean.getBoolean("java.lang.invoke.MethodHandle.USE_LF_EDITOR");
|
||||
values[5] = Integer.getInteger("java.lang.invoke.MethodHandle.COMPILE_THRESHOLD", 30);
|
||||
values[6] = Integer.getInteger("java.lang.invoke.MethodHandle.DONT_INLINE_THRESHOLD", 30);
|
||||
values[7] = Integer.getInteger("java.lang.invoke.MethodHandle.PROFILE_LEVEL", 0);
|
||||
values[4] = Integer.getInteger("java.lang.invoke.MethodHandle.COMPILE_THRESHOLD", 0);
|
||||
values[5] = Integer.getInteger("java.lang.invoke.MethodHandle.DONT_INLINE_THRESHOLD", 30);
|
||||
values[6] = Integer.getInteger("java.lang.invoke.MethodHandle.PROFILE_LEVEL", 0);
|
||||
return null;
|
||||
}
|
||||
});
|
||||
@ -69,10 +67,9 @@ import sun.misc.Unsafe;
|
||||
DUMP_CLASS_FILES = (Boolean) values[1];
|
||||
TRACE_INTERPRETER = (Boolean) values[2];
|
||||
TRACE_METHOD_LINKAGE = (Boolean) values[3];
|
||||
USE_LAMBDA_FORM_EDITOR = (Boolean) values[4];
|
||||
COMPILE_THRESHOLD = (Integer) values[5];
|
||||
DONT_INLINE_THRESHOLD = (Integer) values[6];
|
||||
PROFILE_LEVEL = (Integer) values[7];
|
||||
COMPILE_THRESHOLD = (Integer) values[4];
|
||||
DONT_INLINE_THRESHOLD = (Integer) values[5];
|
||||
PROFILE_LEVEL = (Integer) values[6];
|
||||
}
|
||||
|
||||
/** Tell if any of the debugging switches are turned on.
|
||||
|
@ -2103,115 +2103,65 @@ assert((int)twice.invokeExact(21) == 42);
|
||||
reorder = reorder.clone(); // get a private copy
|
||||
MethodType oldType = target.type();
|
||||
permuteArgumentChecks(reorder, newType, oldType);
|
||||
if (USE_LAMBDA_FORM_EDITOR) {
|
||||
// first detect dropped arguments and handle them separately
|
||||
int[] originalReorder = reorder;
|
||||
BoundMethodHandle result = target.rebind();
|
||||
LambdaForm form = result.form;
|
||||
int newArity = newType.parameterCount();
|
||||
// Normalize the reordering into a real permutation,
|
||||
// by removing duplicates and adding dropped elements.
|
||||
// This somewhat improves lambda form caching, as well
|
||||
// as simplifying the transform by breaking it up into steps.
|
||||
for (int ddIdx; (ddIdx = findFirstDupOrDrop(reorder, newArity)) != 0; ) {
|
||||
if (ddIdx > 0) {
|
||||
// We found a duplicated entry at reorder[ddIdx].
|
||||
// Example: (x,y,z)->asList(x,y,z)
|
||||
// permuted by [1*,0,1] => (a0,a1)=>asList(a1,a0,a1)
|
||||
// permuted by [0,1,0*] => (a0,a1)=>asList(a0,a1,a0)
|
||||
// The starred element corresponds to the argument
|
||||
// deleted by the dupArgumentForm transform.
|
||||
int srcPos = ddIdx, dstPos = srcPos, dupVal = reorder[srcPos];
|
||||
boolean killFirst = false;
|
||||
for (int val; (val = reorder[--dstPos]) != dupVal; ) {
|
||||
// Set killFirst if the dup is larger than an intervening position.
|
||||
// This will remove at least one inversion from the permutation.
|
||||
if (dupVal > val) killFirst = true;
|
||||
}
|
||||
if (!killFirst) {
|
||||
srcPos = dstPos;
|
||||
dstPos = ddIdx;
|
||||
}
|
||||
form = form.editor().dupArgumentForm(1 + srcPos, 1 + dstPos);
|
||||
assert (reorder[srcPos] == reorder[dstPos]);
|
||||
oldType = oldType.dropParameterTypes(dstPos, dstPos + 1);
|
||||
// contract the reordering by removing the element at dstPos
|
||||
int tailPos = dstPos + 1;
|
||||
System.arraycopy(reorder, tailPos, reorder, dstPos, reorder.length - tailPos);
|
||||
reorder = Arrays.copyOf(reorder, reorder.length - 1);
|
||||
} else {
|
||||
int dropVal = ~ddIdx, insPos = 0;
|
||||
while (insPos < reorder.length && reorder[insPos] < dropVal) {
|
||||
// Find first element of reorder larger than dropVal.
|
||||
// This is where we will insert the dropVal.
|
||||
insPos += 1;
|
||||
}
|
||||
Class<?> ptype = newType.parameterType(dropVal);
|
||||
form = form.editor().addArgumentForm(1 + insPos, BasicType.basicType(ptype));
|
||||
oldType = oldType.insertParameterTypes(insPos, ptype);
|
||||
// expand the reordering by inserting an element at insPos
|
||||
int tailPos = insPos + 1;
|
||||
reorder = Arrays.copyOf(reorder, reorder.length + 1);
|
||||
System.arraycopy(reorder, insPos, reorder, tailPos, reorder.length - tailPos);
|
||||
reorder[insPos] = dropVal;
|
||||
// first detect dropped arguments and handle them separately
|
||||
int[] originalReorder = reorder;
|
||||
BoundMethodHandle result = target.rebind();
|
||||
LambdaForm form = result.form;
|
||||
int newArity = newType.parameterCount();
|
||||
// Normalize the reordering into a real permutation,
|
||||
// by removing duplicates and adding dropped elements.
|
||||
// This somewhat improves lambda form caching, as well
|
||||
// as simplifying the transform by breaking it up into steps.
|
||||
for (int ddIdx; (ddIdx = findFirstDupOrDrop(reorder, newArity)) != 0; ) {
|
||||
if (ddIdx > 0) {
|
||||
// We found a duplicated entry at reorder[ddIdx].
|
||||
// Example: (x,y,z)->asList(x,y,z)
|
||||
// permuted by [1*,0,1] => (a0,a1)=>asList(a1,a0,a1)
|
||||
// permuted by [0,1,0*] => (a0,a1)=>asList(a0,a1,a0)
|
||||
// The starred element corresponds to the argument
|
||||
// deleted by the dupArgumentForm transform.
|
||||
int srcPos = ddIdx, dstPos = srcPos, dupVal = reorder[srcPos];
|
||||
boolean killFirst = false;
|
||||
for (int val; (val = reorder[--dstPos]) != dupVal; ) {
|
||||
// Set killFirst if the dup is larger than an intervening position.
|
||||
// This will remove at least one inversion from the permutation.
|
||||
if (dupVal > val) killFirst = true;
|
||||
}
|
||||
assert (permuteArgumentChecks(reorder, newType, oldType));
|
||||
if (!killFirst) {
|
||||
srcPos = dstPos;
|
||||
dstPos = ddIdx;
|
||||
}
|
||||
form = form.editor().dupArgumentForm(1 + srcPos, 1 + dstPos);
|
||||
assert (reorder[srcPos] == reorder[dstPos]);
|
||||
oldType = oldType.dropParameterTypes(dstPos, dstPos + 1);
|
||||
// contract the reordering by removing the element at dstPos
|
||||
int tailPos = dstPos + 1;
|
||||
System.arraycopy(reorder, tailPos, reorder, dstPos, reorder.length - tailPos);
|
||||
reorder = Arrays.copyOf(reorder, reorder.length - 1);
|
||||
} else {
|
||||
int dropVal = ~ddIdx, insPos = 0;
|
||||
while (insPos < reorder.length && reorder[insPos] < dropVal) {
|
||||
// Find first element of reorder larger than dropVal.
|
||||
// This is where we will insert the dropVal.
|
||||
insPos += 1;
|
||||
}
|
||||
Class<?> ptype = newType.parameterType(dropVal);
|
||||
form = form.editor().addArgumentForm(1 + insPos, BasicType.basicType(ptype));
|
||||
oldType = oldType.insertParameterTypes(insPos, ptype);
|
||||
// expand the reordering by inserting an element at insPos
|
||||
int tailPos = insPos + 1;
|
||||
reorder = Arrays.copyOf(reorder, reorder.length + 1);
|
||||
System.arraycopy(reorder, insPos, reorder, tailPos, reorder.length - tailPos);
|
||||
reorder[insPos] = dropVal;
|
||||
}
|
||||
assert (reorder.length == newArity); // a perfect permutation
|
||||
// Note: This may cache too many distinct LFs. Consider backing off to varargs code.
|
||||
form = form.editor().permuteArgumentsForm(1, reorder);
|
||||
if (newType == result.type() && form == result.internalForm())
|
||||
return result;
|
||||
return result.copyWith(newType, form);
|
||||
} else {
|
||||
// first detect dropped arguments and handle them separately
|
||||
MethodHandle originalTarget = target;
|
||||
int newArity = newType.parameterCount();
|
||||
for (int dropIdx; (dropIdx = findFirstDrop(reorder, newArity)) >= 0; ) {
|
||||
// dropIdx is missing from reorder; add it in at the end
|
||||
int oldArity = reorder.length;
|
||||
target = dropArguments(target, oldArity, newType.parameterType(dropIdx));
|
||||
reorder = Arrays.copyOf(reorder, oldArity + 1);
|
||||
reorder[oldArity] = dropIdx;
|
||||
}
|
||||
assert(target == originalTarget || permuteArgumentChecks(reorder, newType, target.type()));
|
||||
// Note: This may cache too many distinct LFs. Consider backing off to varargs code.
|
||||
BoundMethodHandle result = target.rebind();
|
||||
LambdaForm form = result.form.permuteArguments(1, reorder, basicTypes(newType.parameterList()));
|
||||
return result.copyWith(newType, form);
|
||||
}
|
||||
}
|
||||
|
||||
/** Return the first value in [0..newArity-1] that is not present in reorder. */
|
||||
private static int findFirstDrop(int[] reorder, int newArity) {
|
||||
final int BIT_LIMIT = 63; // max number of bits in bit mask
|
||||
if (newArity < BIT_LIMIT) {
|
||||
long mask = 0;
|
||||
for (int arg : reorder) {
|
||||
assert(arg < newArity);
|
||||
mask |= (1L << arg);
|
||||
}
|
||||
if (mask == (1L << newArity) - 1) {
|
||||
assert(Long.numberOfTrailingZeros(Long.lowestOneBit(~mask)) == newArity);
|
||||
return -1;
|
||||
}
|
||||
// find first zero
|
||||
long zeroBit = Long.lowestOneBit(~mask);
|
||||
int zeroPos = Long.numberOfTrailingZeros(zeroBit);
|
||||
assert(zeroPos < newArity);
|
||||
return zeroPos;
|
||||
} else {
|
||||
BitSet mask = new BitSet(newArity);
|
||||
for (int arg : reorder) {
|
||||
assert (arg < newArity);
|
||||
mask.set(arg);
|
||||
}
|
||||
int zeroPos = mask.nextClearBit(0);
|
||||
assert(zeroPos <= newArity);
|
||||
if (zeroPos == newArity)
|
||||
return -1;
|
||||
return zeroPos;
|
||||
assert (permuteArgumentChecks(reorder, newType, oldType));
|
||||
}
|
||||
assert (reorder.length == newArity); // a perfect permutation
|
||||
// Note: This may cache too many distinct LFs. Consider backing off to varargs code.
|
||||
form = form.editor().permuteArgumentsForm(1, reorder);
|
||||
if (newType == result.type() && form == result.internalForm())
|
||||
return result;
|
||||
return result.copyWith(newType, form);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -2502,13 +2452,9 @@ assertEquals("yz", (String) d0.invokeExact(123, "x", "y", "z"));
|
||||
if (dropped == 0) return target;
|
||||
BoundMethodHandle result = target.rebind();
|
||||
LambdaForm lform = result.form;
|
||||
if (USE_LAMBDA_FORM_EDITOR) {
|
||||
int insertFormArg = 1 + pos;
|
||||
for (Class<?> ptype : valueTypes) {
|
||||
lform = lform.editor().addArgumentForm(insertFormArg++, BasicType.basicType(ptype));
|
||||
}
|
||||
} else {
|
||||
lform = lform.addArguments(pos, valueTypes);
|
||||
int insertFormArg = 1 + pos;
|
||||
for (Class<?> ptype : valueTypes) {
|
||||
lform = lform.editor().addArgumentForm(insertFormArg++, BasicType.basicType(ptype));
|
||||
}
|
||||
result = result.copyWith(newType, lform);
|
||||
return result;
|
||||
@ -2659,18 +2605,14 @@ assertEquals("XY", (String) f2.invokeExact("x", "y")); // XY
|
||||
/*non-public*/ static
|
||||
MethodHandle filterArgument(MethodHandle target, int pos, MethodHandle filter) {
|
||||
filterArgumentChecks(target, pos, filter);
|
||||
if (USE_LAMBDA_FORM_EDITOR) {
|
||||
MethodType targetType = target.type();
|
||||
MethodType filterType = filter.type();
|
||||
BoundMethodHandle result = target.rebind();
|
||||
Class<?> newParamType = filterType.parameterType(0);
|
||||
LambdaForm lform = result.editor().filterArgumentForm(1 + pos, BasicType.basicType(newParamType));
|
||||
MethodType newType = targetType.changeParameterType(pos, newParamType);
|
||||
result = result.copyWithExtendL(newType, lform, filter);
|
||||
return result;
|
||||
} else {
|
||||
return MethodHandleImpl.makeCollectArguments(target, filter, pos, false);
|
||||
}
|
||||
MethodType targetType = target.type();
|
||||
MethodType filterType = filter.type();
|
||||
BoundMethodHandle result = target.rebind();
|
||||
Class<?> newParamType = filterType.parameterType(0);
|
||||
LambdaForm lform = result.editor().filterArgumentForm(1 + pos, BasicType.basicType(newParamType));
|
||||
MethodType newType = targetType.changeParameterType(pos, newParamType);
|
||||
result = result.copyWithExtendL(newType, lform, filter);
|
||||
return result;
|
||||
}
|
||||
|
||||
private static void filterArgumentsCheckArity(MethodHandle target, int pos, MethodHandle[] filters) {
|
||||
@ -2797,21 +2739,17 @@ assertEquals("[top, [[up, down, strange], charm], bottom]",
|
||||
public static
|
||||
MethodHandle collectArguments(MethodHandle target, int pos, MethodHandle filter) {
|
||||
MethodType newType = collectArgumentsChecks(target, pos, filter);
|
||||
if (USE_LAMBDA_FORM_EDITOR) {
|
||||
MethodType collectorType = filter.type();
|
||||
BoundMethodHandle result = target.rebind();
|
||||
LambdaForm lform;
|
||||
if (collectorType.returnType().isArray() && filter.intrinsicName() == Intrinsic.NEW_ARRAY) {
|
||||
lform = result.editor().collectArgumentArrayForm(1 + pos, filter);
|
||||
if (lform != null) {
|
||||
return result.copyWith(newType, lform);
|
||||
}
|
||||
MethodType collectorType = filter.type();
|
||||
BoundMethodHandle result = target.rebind();
|
||||
LambdaForm lform;
|
||||
if (collectorType.returnType().isArray() && filter.intrinsicName() == Intrinsic.NEW_ARRAY) {
|
||||
lform = result.editor().collectArgumentArrayForm(1 + pos, filter);
|
||||
if (lform != null) {
|
||||
return result.copyWith(newType, lform);
|
||||
}
|
||||
lform = result.editor().collectArgumentsForm(1 + pos, collectorType.basicType());
|
||||
return result.copyWithExtendL(newType, lform, filter);
|
||||
} else {
|
||||
return MethodHandleImpl.makeCollectArguments(target, filter, pos, false);
|
||||
}
|
||||
lform = result.editor().collectArgumentsForm(1 + pos, collectorType.basicType());
|
||||
return result.copyWithExtendL(newType, lform, filter);
|
||||
}
|
||||
|
||||
private static MethodType collectArgumentsChecks(MethodHandle target, int pos, MethodHandle filter) throws RuntimeException {
|
||||
@ -2890,16 +2828,12 @@ System.out.println((int) f0.invokeExact("x", "y")); // 2
|
||||
MethodType targetType = target.type();
|
||||
MethodType filterType = filter.type();
|
||||
filterReturnValueChecks(targetType, filterType);
|
||||
if (USE_LAMBDA_FORM_EDITOR) {
|
||||
BoundMethodHandle result = target.rebind();
|
||||
BasicType rtype = BasicType.basicType(filterType.returnType());
|
||||
LambdaForm lform = result.editor().filterReturnForm(rtype, false);
|
||||
MethodType newType = targetType.changeReturnType(filterType.returnType());
|
||||
result = result.copyWithExtendL(newType, lform, filter);
|
||||
return result;
|
||||
} else {
|
||||
return MethodHandleImpl.makeCollectArguments(filter, target, 0, false);
|
||||
}
|
||||
BoundMethodHandle result = target.rebind();
|
||||
BasicType rtype = BasicType.basicType(filterType.returnType());
|
||||
LambdaForm lform = result.editor().filterReturnForm(rtype, false);
|
||||
MethodType newType = targetType.changeReturnType(filterType.returnType());
|
||||
result = result.copyWithExtendL(newType, lform, filter);
|
||||
return result;
|
||||
}
|
||||
|
||||
private static void filterReturnValueChecks(MethodType targetType, MethodType filterType) throws RuntimeException {
|
||||
@ -2993,19 +2927,15 @@ assertEquals("boojum", (String) catTrace.invokeExact("boo", "jum"));
|
||||
MethodType targetType = target.type();
|
||||
MethodType combinerType = combiner.type();
|
||||
Class<?> rtype = foldArgumentChecks(foldPos, targetType, combinerType);
|
||||
if (USE_LAMBDA_FORM_EDITOR) {
|
||||
BoundMethodHandle result = target.rebind();
|
||||
boolean dropResult = (rtype == void.class);
|
||||
// Note: This may cache too many distinct LFs. Consider backing off to varargs code.
|
||||
LambdaForm lform = result.editor().foldArgumentsForm(1 + foldPos, dropResult, combinerType.basicType());
|
||||
MethodType newType = targetType;
|
||||
if (!dropResult)
|
||||
newType = newType.dropParameterTypes(foldPos, foldPos + 1);
|
||||
result = result.copyWithExtendL(newType, lform, combiner);
|
||||
return result;
|
||||
} else {
|
||||
return MethodHandleImpl.makeCollectArguments(target, combiner, foldPos, true);
|
||||
}
|
||||
BoundMethodHandle result = target.rebind();
|
||||
boolean dropResult = (rtype == void.class);
|
||||
// Note: This may cache too many distinct LFs. Consider backing off to varargs code.
|
||||
LambdaForm lform = result.editor().foldArgumentsForm(1 + foldPos, dropResult, combinerType.basicType());
|
||||
MethodType newType = targetType;
|
||||
if (!dropResult)
|
||||
newType = newType.dropParameterTypes(foldPos, foldPos + 1);
|
||||
result = result.copyWithExtendL(newType, lform, combiner);
|
||||
return result;
|
||||
}
|
||||
|
||||
private static Class<?> foldArgumentChecks(int foldPos, MethodType targetType, MethodType combinerType) {
|
||||
|
@ -198,7 +198,7 @@ public abstract class AbstractInterruptibleChannel
|
||||
blockedOn(null);
|
||||
Thread interrupted = this.interrupted;
|
||||
if (interrupted != null && interrupted == Thread.currentThread()) {
|
||||
interrupted = null;
|
||||
this.interrupted = null;
|
||||
throw new ClosedByInterruptException();
|
||||
}
|
||||
if (!completed && !open)
|
||||
|
@ -48,21 +48,18 @@ import java.text.AttributedCharacterIterator.Attribute;
|
||||
*/
|
||||
|
||||
public class AttributedString {
|
||||
|
||||
// since there are no vectors of int, we have to use arrays.
|
||||
// We allocate them in chunks of 10 elements so we don't have to allocate all the time.
|
||||
private static final int ARRAY_SIZE_INCREMENT = 10;
|
||||
|
||||
// field holding the text
|
||||
String text;
|
||||
|
||||
// fields holding run attribute information
|
||||
// run attributes are organized by run
|
||||
int runArraySize; // current size of the arrays
|
||||
int runCount; // actual number of runs, <= runArraySize
|
||||
int runStarts[]; // start index for each run
|
||||
Vector<Attribute> runAttributes[]; // vector of attribute keys for each run
|
||||
Vector<Object> runAttributeValues[]; // parallel vector of attribute values for each run
|
||||
// Fields holding run attribute information.
|
||||
// Run attributes are organized by run.
|
||||
// Arrays are always of equal lengths (the current capacity).
|
||||
// Since there are no vectors of int, we have to use arrays.
|
||||
private static final int INITIAL_CAPACITY = 10;
|
||||
int runCount; // actual number of runs, <= current capacity
|
||||
int[] runStarts; // start index for each run
|
||||
Vector<Attribute>[] runAttributes; // vector of attribute keys for each run
|
||||
Vector<Object>[] runAttributeValues; // parallel vector of attribute values for each run
|
||||
|
||||
/**
|
||||
* Constructs an AttributedString instance with the given
|
||||
@ -416,18 +413,17 @@ public class AttributedString {
|
||||
|
||||
private final void createRunAttributeDataVectors() {
|
||||
// use temporary variables so things remain consistent in case of an exception
|
||||
int newRunStarts[] = new int[ARRAY_SIZE_INCREMENT];
|
||||
int[] newRunStarts = new int[INITIAL_CAPACITY];
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
Vector<Attribute> newRunAttributes[] = (Vector<Attribute>[]) new Vector<?>[ARRAY_SIZE_INCREMENT];
|
||||
Vector<Attribute>[] newRunAttributes = (Vector<Attribute>[]) new Vector<?>[INITIAL_CAPACITY];
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
Vector<Object> newRunAttributeValues[] = (Vector<Object>[]) new Vector<?>[ARRAY_SIZE_INCREMENT];
|
||||
Vector<Object>[] newRunAttributeValues = (Vector<Object>[]) new Vector<?>[INITIAL_CAPACITY];
|
||||
|
||||
runStarts = newRunStarts;
|
||||
runAttributes = newRunAttributes;
|
||||
runAttributeValues = newRunAttributeValues;
|
||||
runArraySize = ARRAY_SIZE_INCREMENT;
|
||||
runCount = 1; // assume initial run starting at index 0
|
||||
}
|
||||
|
||||
@ -465,25 +461,22 @@ public class AttributedString {
|
||||
|
||||
// we'll have to break up a run
|
||||
// first, make sure we have enough space in our arrays
|
||||
if (runCount == runArraySize) {
|
||||
int newArraySize = runArraySize + ARRAY_SIZE_INCREMENT;
|
||||
int newRunStarts[] = new int[newArraySize];
|
||||
int currentCapacity = runStarts.length;
|
||||
if (runCount == currentCapacity) {
|
||||
// We need to resize - we grow capacity by 25%.
|
||||
int newCapacity = currentCapacity + (currentCapacity >> 2);
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
Vector<Attribute> newRunAttributes[] = (Vector<Attribute>[]) new Vector<?>[newArraySize];
|
||||
// use temporary variables so things remain consistent in case of an exception
|
||||
int[] newRunStarts =
|
||||
Arrays.copyOf(runStarts, newCapacity);
|
||||
Vector<Attribute>[] newRunAttributes =
|
||||
Arrays.copyOf(runAttributes, newCapacity);
|
||||
Vector<Object>[] newRunAttributeValues =
|
||||
Arrays.copyOf(runAttributeValues, newCapacity);
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
Vector<Object> newRunAttributeValues[] = (Vector<Object>[]) new Vector<?>[newArraySize];
|
||||
|
||||
for (int i = 0; i < runArraySize; i++) {
|
||||
newRunStarts[i] = runStarts[i];
|
||||
newRunAttributes[i] = runAttributes[i];
|
||||
newRunAttributeValues[i] = runAttributeValues[i];
|
||||
}
|
||||
runStarts = newRunStarts;
|
||||
runAttributes = newRunAttributes;
|
||||
runAttributeValues = newRunAttributeValues;
|
||||
runArraySize = newArraySize;
|
||||
}
|
||||
|
||||
// make copies of the attribute information of the old run that the new one used to be part of
|
||||
|
@ -2624,10 +2624,11 @@ public final class Formatter implements Closeable, Flushable {
|
||||
private boolean dt = false;
|
||||
private char c;
|
||||
|
||||
private int index(String s) {
|
||||
if (s != null) {
|
||||
private int index(String s, int start, int end) {
|
||||
if (start >= 0) {
|
||||
try {
|
||||
index = Integer.parseInt(s.substring(0, s.length() - 1));
|
||||
// skip the trailing '$'
|
||||
index = Integer.parseInt(s, start, end - 1, 10);
|
||||
} catch (NumberFormatException x) {
|
||||
assert(false);
|
||||
}
|
||||
@ -2648,11 +2649,11 @@ public final class Formatter implements Closeable, Flushable {
|
||||
return f;
|
||||
}
|
||||
|
||||
private int width(String s) {
|
||||
private int width(String s, int start, int end) {
|
||||
width = -1;
|
||||
if (s != null) {
|
||||
if (start >= 0) {
|
||||
try {
|
||||
width = Integer.parseInt(s);
|
||||
width = Integer.parseInt(s, start, end, 10);
|
||||
if (width < 0)
|
||||
throw new IllegalFormatWidthException(width);
|
||||
} catch (NumberFormatException x) {
|
||||
@ -2662,12 +2663,12 @@ public final class Formatter implements Closeable, Flushable {
|
||||
return width;
|
||||
}
|
||||
|
||||
private int precision(String s) {
|
||||
private int precision(String s, int start, int end) {
|
||||
precision = -1;
|
||||
if (s != null) {
|
||||
if (start >= 0) {
|
||||
try {
|
||||
// remove the '.'
|
||||
precision = Integer.parseInt(s.substring(1));
|
||||
// skip the leading '.'
|
||||
precision = Integer.parseInt(s, start + 1, end, 10);
|
||||
if (precision < 0)
|
||||
throw new IllegalFormatPrecisionException(precision);
|
||||
} catch (NumberFormatException x) {
|
||||
@ -2695,23 +2696,19 @@ public final class Formatter implements Closeable, Flushable {
|
||||
}
|
||||
|
||||
FormatSpecifier(String s, Matcher m) {
|
||||
int idx = 1;
|
||||
index(s, m.start(1), m.end(1));
|
||||
flags(s, m.start(2), m.end(2));
|
||||
width(s, m.start(3), m.end(3));
|
||||
precision(s, m.start(4), m.end(4));
|
||||
|
||||
index(m.group(idx++));
|
||||
flags(s, m.start(idx), m.end(idx++));
|
||||
width(m.group(idx++));
|
||||
precision(m.group(idx++));
|
||||
|
||||
int tTStart = m.start(idx);
|
||||
int tTEnd = m.end(idx++);
|
||||
if (tTStart != -1 && tTEnd != -1) {
|
||||
int tTStart = m.start(5);
|
||||
if (tTStart >= 0) {
|
||||
dt = true;
|
||||
if (tTStart == tTEnd - 1 && s.charAt(tTStart) == 'T') {
|
||||
if (s.charAt(tTStart) == 'T') {
|
||||
f.add(Flags.UPPERCASE);
|
||||
}
|
||||
}
|
||||
|
||||
conversion(s.charAt(m.start(idx)));
|
||||
conversion(s.charAt(m.start(6)));
|
||||
|
||||
if (dt)
|
||||
checkDateTime();
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1996, 2014, 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,9 +34,8 @@ import sun.nio.ch.DirectBuffer;
|
||||
* can be computed much faster.
|
||||
*
|
||||
* <p> Passing a {@code null} argument to a method in this class will cause
|
||||
* a {@link NullPointerException} to be thrown.
|
||||
* a {@link NullPointerException} to be thrown.</p>
|
||||
*
|
||||
* @see Checksum
|
||||
* @author David Connelly
|
||||
*/
|
||||
public
|
||||
@ -53,9 +52,8 @@ class Adler32 implements Checksum {
|
||||
/**
|
||||
* Updates the checksum with the specified byte (the low eight
|
||||
* bits of the argument b).
|
||||
*
|
||||
* @param b the byte to update the checksum with
|
||||
*/
|
||||
@Override
|
||||
public void update(int b) {
|
||||
adler = update(adler, b);
|
||||
}
|
||||
@ -63,11 +61,12 @@ class Adler32 implements Checksum {
|
||||
/**
|
||||
* Updates the checksum with the specified array of bytes.
|
||||
*
|
||||
* @throws ArrayIndexOutOfBoundsException
|
||||
* if {@code off} is negative, or {@code len} is negative,
|
||||
* or {@code off+len} is greater than the length of the
|
||||
* array {@code b}
|
||||
* @throws ArrayIndexOutOfBoundsException
|
||||
* if {@code off} is negative, or {@code len} is negative, or
|
||||
* {@code off+len} is negative or greater than the length of
|
||||
* the array {@code b}.
|
||||
*/
|
||||
@Override
|
||||
public void update(byte[] b, int off, int len) {
|
||||
if (b == null) {
|
||||
throw new NullPointerException();
|
||||
@ -78,29 +77,16 @@ class Adler32 implements Checksum {
|
||||
adler = updateBytes(adler, b, off, len);
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the checksum with the specified array of bytes.
|
||||
*
|
||||
* @param b the byte array to update the checksum with
|
||||
*/
|
||||
public void update(byte[] b) {
|
||||
adler = updateBytes(adler, b, 0, b.length);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Updates the checksum with the bytes from the specified buffer.
|
||||
*
|
||||
* The checksum is updated using
|
||||
* buffer.{@link java.nio.Buffer#remaining() remaining()}
|
||||
* bytes starting at
|
||||
* buffer.{@link java.nio.Buffer#position() position()}
|
||||
* Upon return, the buffer's position will be updated to its
|
||||
* limit; its limit will not have been changed.
|
||||
* The checksum is updated with the remaining bytes in the buffer, starting
|
||||
* at the buffer's position. Upon return, the buffer's position will be
|
||||
* updated to its limit; its limit will not have been changed.
|
||||
*
|
||||
* @param buffer the ByteBuffer to update the checksum with
|
||||
* @since 1.8
|
||||
*/
|
||||
@Override
|
||||
public void update(ByteBuffer buffer) {
|
||||
int pos = buffer.position();
|
||||
int limit = buffer.limit();
|
||||
@ -113,9 +99,12 @@ class Adler32 implements Checksum {
|
||||
} else if (buffer.hasArray()) {
|
||||
adler = updateBytes(adler, buffer.array(), pos + buffer.arrayOffset(), rem);
|
||||
} else {
|
||||
byte[] b = new byte[rem];
|
||||
buffer.get(b);
|
||||
adler = updateBytes(adler, b, 0, b.length);
|
||||
byte[] b = new byte[Math.min(buffer.remaining(), 4096)];
|
||||
while (buffer.hasRemaining()) {
|
||||
int length = Math.min(buffer.remaining(), b.length);
|
||||
buffer.get(b, 0, length);
|
||||
update(b, 0, length);
|
||||
}
|
||||
}
|
||||
buffer.position(limit);
|
||||
}
|
||||
@ -123,6 +112,7 @@ class Adler32 implements Checksum {
|
||||
/**
|
||||
* Resets the checksum to initial value.
|
||||
*/
|
||||
@Override
|
||||
public void reset() {
|
||||
adler = 1;
|
||||
}
|
||||
@ -130,6 +120,7 @@ class Adler32 implements Checksum {
|
||||
/**
|
||||
* Returns the checksum value.
|
||||
*/
|
||||
@Override
|
||||
public long getValue() {
|
||||
return (long)adler & 0xffffffffL;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1996, 2014, 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
|
||||
@ -32,9 +32,8 @@ import sun.nio.ch.DirectBuffer;
|
||||
* A class that can be used to compute the CRC-32 of a data stream.
|
||||
*
|
||||
* <p> Passing a {@code null} argument to a method in this class will cause
|
||||
* a {@link NullPointerException} to be thrown.
|
||||
* a {@link NullPointerException} to be thrown.</p>
|
||||
*
|
||||
* @see Checksum
|
||||
* @author David Connelly
|
||||
*/
|
||||
public
|
||||
@ -51,9 +50,8 @@ class CRC32 implements Checksum {
|
||||
/**
|
||||
* Updates the CRC-32 checksum with the specified byte (the low
|
||||
* eight bits of the argument b).
|
||||
*
|
||||
* @param b the byte to update the checksum with
|
||||
*/
|
||||
@Override
|
||||
public void update(int b) {
|
||||
crc = update(crc, b);
|
||||
}
|
||||
@ -61,11 +59,12 @@ class CRC32 implements Checksum {
|
||||
/**
|
||||
* Updates the CRC-32 checksum with the specified array of bytes.
|
||||
*
|
||||
* @throws ArrayIndexOutOfBoundsException
|
||||
* if {@code off} is negative, or {@code len} is negative,
|
||||
* or {@code off+len} is greater than the length of the
|
||||
* array {@code b}
|
||||
* @throws ArrayIndexOutOfBoundsException
|
||||
* if {@code off} is negative, or {@code len} is negative, or
|
||||
* {@code off+len} is negative or greater than the length of
|
||||
* the array {@code b}.
|
||||
*/
|
||||
@Override
|
||||
public void update(byte[] b, int off, int len) {
|
||||
if (b == null) {
|
||||
throw new NullPointerException();
|
||||
@ -77,27 +76,15 @@ class CRC32 implements Checksum {
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the CRC-32 checksum with the specified array of bytes.
|
||||
* Updates the CRC-32 checksum with the bytes from the specified buffer.
|
||||
*
|
||||
* @param b the array of bytes to update the checksum with
|
||||
*/
|
||||
public void update(byte[] b) {
|
||||
crc = updateBytes(crc, b, 0, b.length);
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the checksum with the bytes from the specified buffer.
|
||||
* The checksum is updated with the remaining bytes in the buffer, starting
|
||||
* at the buffer's position. Upon return, the buffer's position will be
|
||||
* updated to its limit; its limit will not have been changed.
|
||||
*
|
||||
* The checksum is updated using
|
||||
* buffer.{@link java.nio.Buffer#remaining() remaining()}
|
||||
* bytes starting at
|
||||
* buffer.{@link java.nio.Buffer#position() position()}
|
||||
* Upon return, the buffer's position will
|
||||
* be updated to its limit; its limit will not have been changed.
|
||||
*
|
||||
* @param buffer the ByteBuffer to update the checksum with
|
||||
* @since 1.8
|
||||
*/
|
||||
@Override
|
||||
public void update(ByteBuffer buffer) {
|
||||
int pos = buffer.position();
|
||||
int limit = buffer.limit();
|
||||
@ -110,9 +97,12 @@ class CRC32 implements Checksum {
|
||||
} else if (buffer.hasArray()) {
|
||||
crc = updateBytes(crc, buffer.array(), pos + buffer.arrayOffset(), rem);
|
||||
} else {
|
||||
byte[] b = new byte[rem];
|
||||
buffer.get(b);
|
||||
crc = updateBytes(crc, b, 0, b.length);
|
||||
byte[] b = new byte[Math.min(buffer.remaining(), 4096)];
|
||||
while (buffer.hasRemaining()) {
|
||||
int length = Math.min(buffer.remaining(), b.length);
|
||||
buffer.get(b, 0, length);
|
||||
update(b, 0, length);
|
||||
}
|
||||
}
|
||||
buffer.position(limit);
|
||||
}
|
||||
@ -120,6 +110,7 @@ class CRC32 implements Checksum {
|
||||
/**
|
||||
* Resets CRC-32 to initial value.
|
||||
*/
|
||||
@Override
|
||||
public void reset() {
|
||||
crc = 0;
|
||||
}
|
||||
@ -127,6 +118,7 @@ class CRC32 implements Checksum {
|
||||
/**
|
||||
* Returns CRC-32 value.
|
||||
*/
|
||||
@Override
|
||||
public long getValue() {
|
||||
return (long)crc & 0xffffffffL;
|
||||
}
|
||||
|
339
jdk/src/java.base/share/classes/java/util/zip/CRC32C.java
Normal file
339
jdk/src/java.base/share/classes/java/util/zip/CRC32C.java
Normal file
@ -0,0 +1,339 @@
|
||||
/*
|
||||
* Copyright (c) 2014, 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.util.zip;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.ByteOrder;
|
||||
import sun.misc.Unsafe;
|
||||
import sun.nio.ch.DirectBuffer;
|
||||
|
||||
/**
|
||||
* A class that can be used to compute the CRC-32C of a data stream.
|
||||
*
|
||||
* <p>
|
||||
* CRC-32C is defined in <a href="http://www.ietf.org/rfc/rfc3720.txt">RFC
|
||||
* 3720</a>: Internet Small Computer Systems Interface (iSCSI).
|
||||
* </p>
|
||||
*
|
||||
* <p>
|
||||
* Passing a {@code null} argument to a method in this class will cause a
|
||||
* {@link NullPointerException} to be thrown.
|
||||
* </p>
|
||||
*
|
||||
* @since 1.9
|
||||
*/
|
||||
public final class CRC32C implements Checksum {
|
||||
|
||||
/*
|
||||
* This CRC-32C implementation uses the 'slicing-by-8' algorithm described
|
||||
* in the paper "A Systematic Approach to Building High Performance
|
||||
* Software-Based CRC Generators" by Michael E. Kounavis and Frank L. Berry,
|
||||
* Intel Research and Development
|
||||
*/
|
||||
|
||||
/**
|
||||
* CRC-32C Polynomial
|
||||
*/
|
||||
private static final int CRC32C_POLY = 0x1EDC6F41;
|
||||
private static final int REVERSED_CRC32C_POLY = Integer.reverse(CRC32C_POLY);
|
||||
|
||||
private static final Unsafe UNSAFE = Unsafe.getUnsafe();
|
||||
|
||||
// Lookup tables
|
||||
// Lookup table for single byte calculations
|
||||
private static final int[] byteTable;
|
||||
// Lookup tables for bulk operations in 'slicing-by-8' algorithm
|
||||
private static final int[][] byteTables = new int[8][256];
|
||||
private static final int[] byteTable0 = byteTables[0];
|
||||
private static final int[] byteTable1 = byteTables[1];
|
||||
private static final int[] byteTable2 = byteTables[2];
|
||||
private static final int[] byteTable3 = byteTables[3];
|
||||
private static final int[] byteTable4 = byteTables[4];
|
||||
private static final int[] byteTable5 = byteTables[5];
|
||||
private static final int[] byteTable6 = byteTables[6];
|
||||
private static final int[] byteTable7 = byteTables[7];
|
||||
|
||||
static {
|
||||
// Generate lookup tables
|
||||
// High-order polynomial term stored in LSB of r.
|
||||
for (int index = 0; index < byteTables[0].length; index++) {
|
||||
int r = index;
|
||||
for (int i = 0; i < Byte.SIZE; i++) {
|
||||
if ((r & 1) != 0) {
|
||||
r = (r >>> 1) ^ REVERSED_CRC32C_POLY;
|
||||
} else {
|
||||
r >>>= 1;
|
||||
}
|
||||
}
|
||||
byteTables[0][index] = r;
|
||||
}
|
||||
|
||||
for (int index = 0; index < byteTables[0].length; index++) {
|
||||
int r = byteTables[0][index];
|
||||
|
||||
for (int k = 1; k < byteTables.length; k++) {
|
||||
r = byteTables[0][r & 0xFF] ^ (r >>> 8);
|
||||
byteTables[k][index] = r;
|
||||
}
|
||||
}
|
||||
|
||||
if (ByteOrder.nativeOrder() == ByteOrder.LITTLE_ENDIAN) {
|
||||
byteTable = byteTables[0];
|
||||
} else { // ByteOrder.BIG_ENDIAN
|
||||
byteTable = new int[byteTable0.length];
|
||||
System.arraycopy(byteTable0, 0, byteTable, 0, byteTable0.length);
|
||||
for (int[] table : byteTables) {
|
||||
for (int index = 0; index < table.length; index++) {
|
||||
table[index] = Integer.reverseBytes(table[index]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculated CRC-32C value
|
||||
*/
|
||||
private int crc = 0xFFFFFFFF;
|
||||
|
||||
/**
|
||||
* Creates a new CRC32C object.
|
||||
*/
|
||||
public CRC32C() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the CRC-32C checksum with the specified byte (the low eight bits
|
||||
* of the argument b).
|
||||
*/
|
||||
@Override
|
||||
public void update(int b) {
|
||||
crc = (crc >>> 8) ^ byteTable[(crc ^ (b & 0xFF)) & 0xFF];
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the CRC-32C checksum with the specified array of bytes.
|
||||
*
|
||||
* @throws ArrayIndexOutOfBoundsException
|
||||
* if {@code off} is negative, or {@code len} is negative, or
|
||||
* {@code off+len} is negative or greater than the length of
|
||||
* the array {@code b}.
|
||||
*/
|
||||
@Override
|
||||
public void update(byte[] b, int off, int len) {
|
||||
if (b == null) {
|
||||
throw new NullPointerException();
|
||||
}
|
||||
if (off < 0 || len < 0 || off > b.length - len) {
|
||||
throw new ArrayIndexOutOfBoundsException();
|
||||
}
|
||||
crc = updateBytes(crc, b, off, (off + len));
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the CRC-32C checksum with the bytes from the specified buffer.
|
||||
*
|
||||
* The checksum is updated with the remaining bytes in the buffer, starting
|
||||
* at the buffer's position. Upon return, the buffer's position will be
|
||||
* updated to its limit; its limit will not have been changed.
|
||||
*/
|
||||
@Override
|
||||
public void update(ByteBuffer buffer) {
|
||||
int pos = buffer.position();
|
||||
int limit = buffer.limit();
|
||||
assert (pos <= limit);
|
||||
int rem = limit - pos;
|
||||
if (rem <= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (buffer instanceof DirectBuffer) {
|
||||
crc = updateDirectByteBuffer(crc, ((DirectBuffer) buffer).address(),
|
||||
pos, limit);
|
||||
} else if (buffer.hasArray()) {
|
||||
crc = updateBytes(crc, buffer.array(), pos + buffer.arrayOffset(),
|
||||
limit + buffer.arrayOffset());
|
||||
} else {
|
||||
byte[] b = new byte[Math.min(buffer.remaining(), 4096)];
|
||||
while (buffer.hasRemaining()) {
|
||||
int length = Math.min(buffer.remaining(), b.length);
|
||||
buffer.get(b, 0, length);
|
||||
update(b, 0, length);
|
||||
}
|
||||
}
|
||||
buffer.position(limit);
|
||||
}
|
||||
|
||||
/**
|
||||
* Resets CRC-32C to initial value.
|
||||
*/
|
||||
@Override
|
||||
public void reset() {
|
||||
crc = 0xFFFFFFFF;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns CRC-32C value.
|
||||
*/
|
||||
@Override
|
||||
public long getValue() {
|
||||
return (~crc) & 0xFFFFFFFFL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the CRC-32C checksum with the specified array of bytes.
|
||||
*/
|
||||
private static int updateBytes(int crc, byte[] b, int off, int end) {
|
||||
|
||||
// Do only byte reads for arrays so short they can't be aligned
|
||||
// or if bytes are stored with a larger witdh than one byte.,%
|
||||
if (end - off >= 8 && Unsafe.ARRAY_BYTE_INDEX_SCALE == 1) {
|
||||
|
||||
// align on 8 bytes
|
||||
int alignLength
|
||||
= (8 - ((Unsafe.ARRAY_BYTE_BASE_OFFSET + off) & 0x7)) & 0x7;
|
||||
for (int alignEnd = off + alignLength; off < alignEnd; off++) {
|
||||
crc = (crc >>> 8) ^ byteTable[(crc ^ b[off]) & 0xFF];
|
||||
}
|
||||
|
||||
if (ByteOrder.nativeOrder() == ByteOrder.BIG_ENDIAN) {
|
||||
crc = Integer.reverseBytes(crc);
|
||||
}
|
||||
|
||||
// slicing-by-8
|
||||
for (; off < (end - Long.BYTES); off += Long.BYTES) {
|
||||
int firstHalf;
|
||||
int secondHalf;
|
||||
if (Unsafe.ADDRESS_SIZE == 4) {
|
||||
// On 32 bit platforms read two ints instead of a single 64bit long
|
||||
firstHalf = UNSAFE.getInt(b, Unsafe.ARRAY_BYTE_BASE_OFFSET + off);
|
||||
secondHalf = UNSAFE.getInt(b, Unsafe.ARRAY_BYTE_BASE_OFFSET + off
|
||||
+ Integer.BYTES);
|
||||
} else {
|
||||
long value = UNSAFE.getLong(b, Unsafe.ARRAY_BYTE_BASE_OFFSET + off);
|
||||
if (ByteOrder.nativeOrder() == ByteOrder.LITTLE_ENDIAN) {
|
||||
firstHalf = (int) value;
|
||||
secondHalf = (int) (value >>> 32);
|
||||
} else { // ByteOrder.BIG_ENDIAN
|
||||
firstHalf = (int) (value >>> 32);
|
||||
secondHalf = (int) value;
|
||||
}
|
||||
}
|
||||
crc ^= firstHalf;
|
||||
if (ByteOrder.nativeOrder() == ByteOrder.LITTLE_ENDIAN) {
|
||||
crc = byteTable7[crc & 0xFF]
|
||||
^ byteTable6[(crc >>> 8) & 0xFF]
|
||||
^ byteTable5[(crc >>> 16) & 0xFF]
|
||||
^ byteTable4[crc >>> 24]
|
||||
^ byteTable3[secondHalf & 0xFF]
|
||||
^ byteTable2[(secondHalf >>> 8) & 0xFF]
|
||||
^ byteTable1[(secondHalf >>> 16) & 0xFF]
|
||||
^ byteTable0[secondHalf >>> 24];
|
||||
} else { // ByteOrder.BIG_ENDIAN
|
||||
crc = byteTable0[secondHalf & 0xFF]
|
||||
^ byteTable1[(secondHalf >>> 8) & 0xFF]
|
||||
^ byteTable2[(secondHalf >>> 16) & 0xFF]
|
||||
^ byteTable3[secondHalf >>> 24]
|
||||
^ byteTable4[crc & 0xFF]
|
||||
^ byteTable5[(crc >>> 8) & 0xFF]
|
||||
^ byteTable6[(crc >>> 16) & 0xFF]
|
||||
^ byteTable7[crc >>> 24];
|
||||
}
|
||||
}
|
||||
|
||||
if (ByteOrder.nativeOrder() == ByteOrder.BIG_ENDIAN) {
|
||||
crc = Integer.reverseBytes(crc);
|
||||
}
|
||||
}
|
||||
|
||||
// Tail
|
||||
for (; off < end; off++) {
|
||||
crc = (crc >>> 8) ^ byteTable[(crc ^ b[off]) & 0xFF];
|
||||
}
|
||||
|
||||
return crc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the CRC-32C checksum reading from the specified address.
|
||||
*/
|
||||
private static int updateDirectByteBuffer(int crc, long address,
|
||||
int off, int end) {
|
||||
|
||||
// Do only byte reads for arrays so short they can't be aligned
|
||||
if (end - off >= 8) {
|
||||
|
||||
// align on 8 bytes
|
||||
int alignLength = (8 - (int) ((address + off) & 0x7)) & 0x7;
|
||||
for (int alignEnd = off + alignLength; off < alignEnd; off++) {
|
||||
crc = (crc >>> 8)
|
||||
^ byteTable[(crc ^ UNSAFE.getByte(address + off)) & 0xFF];
|
||||
}
|
||||
|
||||
if (ByteOrder.nativeOrder() == ByteOrder.BIG_ENDIAN) {
|
||||
crc = Integer.reverseBytes(crc);
|
||||
}
|
||||
|
||||
// slicing-by-8
|
||||
for (; off <= (end - Long.BYTES); off += Long.BYTES) {
|
||||
// Always reading two ints as reading a long followed by
|
||||
// shifting and casting was slower.
|
||||
int firstHalf = UNSAFE.getInt(address + off);
|
||||
int secondHalf = UNSAFE.getInt(address + off + Integer.BYTES);
|
||||
crc ^= firstHalf;
|
||||
if (ByteOrder.nativeOrder() == ByteOrder.LITTLE_ENDIAN) {
|
||||
crc = byteTable7[crc & 0xFF]
|
||||
^ byteTable6[(crc >>> 8) & 0xFF]
|
||||
^ byteTable5[(crc >>> 16) & 0xFF]
|
||||
^ byteTable4[crc >>> 24]
|
||||
^ byteTable3[secondHalf & 0xFF]
|
||||
^ byteTable2[(secondHalf >>> 8) & 0xFF]
|
||||
^ byteTable1[(secondHalf >>> 16) & 0xFF]
|
||||
^ byteTable0[secondHalf >>> 24];
|
||||
} else { // ByteOrder.BIG_ENDIAN
|
||||
crc = byteTable0[secondHalf & 0xFF]
|
||||
^ byteTable1[(secondHalf >>> 8) & 0xFF]
|
||||
^ byteTable2[(secondHalf >>> 16) & 0xFF]
|
||||
^ byteTable3[secondHalf >>> 24]
|
||||
^ byteTable4[crc & 0xFF]
|
||||
^ byteTable5[(crc >>> 8) & 0xFF]
|
||||
^ byteTable6[(crc >>> 16) & 0xFF]
|
||||
^ byteTable7[crc >>> 24];
|
||||
}
|
||||
}
|
||||
|
||||
if (ByteOrder.nativeOrder() == ByteOrder.BIG_ENDIAN) {
|
||||
crc = Integer.reverseBytes(crc);
|
||||
}
|
||||
}
|
||||
|
||||
// Tail
|
||||
for (; off < end; off++) {
|
||||
crc = (crc >>> 8)
|
||||
^ byteTable[(crc ^ UNSAFE.getByte(address + off)) & 0xFF];
|
||||
}
|
||||
|
||||
return crc;
|
||||
}
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1996, 1999, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1996, 2014, 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
|
||||
@ -22,16 +22,17 @@
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package java.util.zip;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
/**
|
||||
* An interface representing a data checksum.
|
||||
*
|
||||
* @author David Connelly
|
||||
* @author David Connelly
|
||||
*/
|
||||
public
|
||||
interface Checksum {
|
||||
public interface Checksum {
|
||||
|
||||
/**
|
||||
* Updates the current checksum with the specified byte.
|
||||
*
|
||||
@ -41,14 +42,89 @@ interface Checksum {
|
||||
|
||||
/**
|
||||
* Updates the current checksum with the specified array of bytes.
|
||||
*
|
||||
* @implSpec This default implementation is equal to calling
|
||||
* {@code update(b, 0, b.length)}.
|
||||
*
|
||||
* @param b the array of bytes to update the checksum with
|
||||
*
|
||||
* @throws NullPointerException
|
||||
* if {@code b} is {@code null}
|
||||
*
|
||||
* @since 1.9
|
||||
*/
|
||||
default public void update(byte[] b) {
|
||||
update(b, 0, b.length);
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the current checksum with the specified array of bytes.
|
||||
*
|
||||
* @param b the byte array to update the checksum with
|
||||
* @param off the start offset of the data
|
||||
* @param len the number of bytes to use for the update
|
||||
*/
|
||||
public void update(byte[] b, int off, int len);
|
||||
|
||||
/**
|
||||
* Updates the current checksum with the bytes from the specified buffer.
|
||||
*
|
||||
* The checksum is updated with the remaining bytes in the buffer, starting
|
||||
* at the buffer's position. Upon return, the buffer's position will be
|
||||
* updated to its limit; its limit will not have been changed.
|
||||
*
|
||||
* @apiNote For best performance with DirectByteBuffer and other ByteBuffer
|
||||
* implementations without a backing array implementers of this interface
|
||||
* should override this method.
|
||||
*
|
||||
* @implSpec The default implementation has the following behavior.<br>
|
||||
* For ByteBuffers backed by an accessible byte array.
|
||||
* <pre>{@code
|
||||
* update(buffer.array(),
|
||||
* buffer.position() + buffer.arrayOffset(),
|
||||
* buffer.remaining());
|
||||
* }</pre>
|
||||
* For ByteBuffers not backed by an accessible byte array.
|
||||
* <pre>{@code
|
||||
* byte[] b = new byte[Math.min(buffer.remaining(), 4096)];
|
||||
* while (buffer.hasRemaining()) {
|
||||
* int length = Math.min(buffer.remaining(), b.length);
|
||||
* buffer.get(b, 0, length);
|
||||
* update(b, 0, length);
|
||||
* }
|
||||
* }</pre>
|
||||
*
|
||||
* @param buffer the ByteBuffer to update the checksum with
|
||||
*
|
||||
* @throws NullPointerException
|
||||
* if {@code buffer} is {@code null}
|
||||
*
|
||||
* @since 1.9
|
||||
*/
|
||||
default public void update(ByteBuffer buffer) {
|
||||
int pos = buffer.position();
|
||||
int limit = buffer.limit();
|
||||
assert (pos <= limit);
|
||||
int rem = limit - pos;
|
||||
if (rem <= 0) {
|
||||
return;
|
||||
}
|
||||
if (buffer.hasArray()) {
|
||||
update(buffer.array(), pos + buffer.arrayOffset(), rem);
|
||||
} else {
|
||||
byte[] b = new byte[Math.min(buffer.remaining(), 4096)];
|
||||
while (buffer.hasRemaining()) {
|
||||
int length = Math.min(buffer.remaining(), b.length);
|
||||
buffer.get(b, 0, length);
|
||||
update(b, 0, length);
|
||||
}
|
||||
}
|
||||
buffer.position(limit);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the current checksum value.
|
||||
*
|
||||
* @return the current checksum value
|
||||
*/
|
||||
public long getValue();
|
||||
|
@ -0,0 +1,77 @@
|
||||
/*
|
||||
* Copyright (c) 1998, 2014, 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Provides classes for reading and writing the standard ZIP and GZIP file
|
||||
* formats. Also includes classes for compressing and decompressing data using
|
||||
* the DEFLATE compression algorithm, which is used by the ZIP and GZIP file
|
||||
* formats. Additionally, there are utility classes for computing the CRC-32,
|
||||
* CRC-32C and Adler-32 checksums of arbitrary input streams.
|
||||
*
|
||||
* <h2>Package Specification</h2>
|
||||
*
|
||||
* <ul>
|
||||
* <li><a href="http://www.info-zip.org/doc/appnote-19970311-iz.zip">
|
||||
* Info-ZIP Application Note 970311</a> - a detailed description of
|
||||
* the Info-ZIP format upon which the {@code java.util.zip} classes
|
||||
* are based.
|
||||
* <li><a name="zip64">An implementation may optionally support the
|
||||
* ZIP64(tm) format extensions defined by the</a>
|
||||
* <a href="http://www.pkware.com/documents/casestudies/APPNOTE.TXT">
|
||||
* PKWARE ZIP File Format Specification</a>. The ZIP64(tm) format
|
||||
* extensions are used to overcome the size limitations of the
|
||||
* original ZIP format.
|
||||
* <li><a name="lang_encoding">APPENDIX D of</a>
|
||||
* <a href="http://www.pkware.com/documents/casestudies/APPNOTE.TXT">
|
||||
* PKWARE ZIP File Format Specification</a> - Language Encoding Flag
|
||||
* (EFS) to encode ZIP entry filename and comment fields using UTF-8.
|
||||
* <li><a href="http://www.ietf.org/rfc/rfc1950.txt">
|
||||
* ZLIB Compressed Data Format Specification version 3.3</a>
|
||||
*
|
||||
* <a href="http://www.ietf.org/rfc/rfc1950.txt.pdf">(pdf)</a>
|
||||
* (RFC 1950)
|
||||
* <li><a href="http://www.ietf.org/rfc/rfc1951.txt">
|
||||
* DEFLATE Compressed Data Format Specification version 1.3</a>
|
||||
*
|
||||
* <a href="http://www.ietf.org/rfc/rfc1951.txt.pdf">(pdf)</a>
|
||||
* (RFC 1951)
|
||||
* <li><a href="http://www.ietf.org/rfc/rfc1952.txt">
|
||||
* GZIP file format specification version 4.3</a>
|
||||
*
|
||||
* <a href="http://www.ietf.org/rfc/rfc1952.txt.pdf">(pdf)</a>
|
||||
* (RFC 1952)
|
||||
* <li>CRC-32 checksum is described in RFC 1952 (above)
|
||||
* <li>CRC-32C checksum is described in
|
||||
* <a href="http://www.ietf.org/rfc/rfc3720.txt">Internet Small
|
||||
* Computer Systems Interface (iSCSI)</a>
|
||||
*
|
||||
* <a href="http://www.ietf.org/rfc/rfc3720.txt.pdf">(pdf)</a>
|
||||
* (RFC 3720)
|
||||
* <li>Adler-32 checksum is described in RFC 1950 (above)
|
||||
* </ul>
|
||||
*
|
||||
* @since 1.1
|
||||
*/
|
||||
package java.util.zip;
|
@ -1,88 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
<html>
|
||||
<head>
|
||||
<!--
|
||||
Copyright (c) 1998, 2012, 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.
|
||||
-->
|
||||
|
||||
</head>
|
||||
<body bgcolor="white">
|
||||
|
||||
Provides classes for reading and writing the standard ZIP and GZIP
|
||||
file formats. Also includes classes for compressing and decompressing
|
||||
data using the DEFLATE compression algorithm, which is used by the
|
||||
ZIP and GZIP file formats. Additionally, there are utility classes
|
||||
for computing the CRC-32 and Adler-32 checksums of arbitrary
|
||||
input streams.
|
||||
|
||||
|
||||
<h2>Package Specification</h2>
|
||||
|
||||
<ul>
|
||||
<li><a href="http://www.info-zip.org/doc/appnote-19970311-iz.zip">
|
||||
Info-ZIP Application Note 970311
|
||||
</a> - a detailed description of the Info-ZIP format upon which
|
||||
the <code>java.util.zip</code> classes are based.
|
||||
<li><a name="zip64">An implementation may optionally support the ZIP64(tm) format extensions
|
||||
defined by the </a>
|
||||
<a href="http://www.pkware.com/documents/casestudies/APPNOTE.TXT">
|
||||
PKWARE ZIP File Format Specification</a>. The ZIP64(tm) format extensions
|
||||
are used to overcome the size limitations of the original ZIP format.
|
||||
<li><a name="lang_encoding">APPENDIX D of </a><a href="http://www.pkware.com/documents/casestudies/APPNOTE.TXT">
|
||||
PKWARE ZIP File Format Specification</a> - Language Encoding Flag (EFS) to
|
||||
encode ZIP entry filename and comment fields using UTF-8.
|
||||
<li><a href="http://www.ietf.org/rfc/rfc1950.txt">
|
||||
ZLIB Compressed Data Format Specification version 3.3</a>
|
||||
|
||||
<a href="http://www.ietf.org/rfc/rfc1950.txt.pdf">(pdf)</a>
|
||||
(RFC 1950)
|
||||
<li><a href="http://www.ietf.org/rfc/rfc1951.txt">
|
||||
DEFLATE Compressed Data Format Specification version 1.3</a>
|
||||
|
||||
<a href="http://www.ietf.org/rfc/rfc1951.txt.pdf">(pdf)</a>
|
||||
(RFC 1951)
|
||||
<li><a href="http://www.ietf.org/rfc/rfc1952.txt">
|
||||
GZIP file format specification version 4.3</a>
|
||||
|
||||
<a href="http://www.ietf.org/rfc/rfc1952.txt.pdf">(pdf)</a>
|
||||
(RFC 1952)
|
||||
<li>CRC-32 checksum is described in RFC 1952 (above)
|
||||
<li>Adler-32 checksum is described in RFC 1950 (above)
|
||||
</ul>
|
||||
|
||||
|
||||
<!--
|
||||
<h2>Related Documentation</h2>
|
||||
|
||||
For overviews, tutorials, examples, guides, and tool documentation, please see:
|
||||
<ul>
|
||||
<li><a href="">##### REFER TO NON-SPEC DOCUMENTATION HERE #####</a>
|
||||
</ul>
|
||||
-->
|
||||
|
||||
@since 1.1
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
@ -42,8 +42,11 @@ public class ClassRepository extends GenericDeclRepository<ClassSignature> {
|
||||
|
||||
public static final ClassRepository NONE = ClassRepository.make("Ljava/lang/Object;", null);
|
||||
|
||||
private Type superclass; // caches the generic superclass info
|
||||
private Type[] superInterfaces; // caches the generic superinterface info
|
||||
/** The generic superclass info. Lazily initialized. */
|
||||
private volatile Type superclass;
|
||||
|
||||
/** The generic superinterface info. Lazily initialized. */
|
||||
private volatile Type[] superInterfaces;
|
||||
|
||||
// private, to enforce use of static factory
|
||||
private ClassRepository(String rawSig, GenericsFactory f) {
|
||||
@ -79,31 +82,34 @@ public class ClassRepository extends GenericDeclRepository<ClassSignature> {
|
||||
* with which the repository was created.
|
||||
*/
|
||||
|
||||
public Type getSuperclass(){
|
||||
public Type getSuperclass() {
|
||||
Type superclass = this.superclass;
|
||||
if (superclass == null) { // lazily initialize superclass
|
||||
Reifier r = getReifier(); // obtain visitor
|
||||
// Extract superclass subtree from AST and reify
|
||||
getTree().getSuperclass().accept(r);
|
||||
// extract result from visitor and cache it
|
||||
superclass = r.getResult();
|
||||
}
|
||||
this.superclass = superclass;
|
||||
}
|
||||
return superclass; // return cached result
|
||||
}
|
||||
|
||||
public Type[] getSuperInterfaces(){
|
||||
public Type[] getSuperInterfaces() {
|
||||
Type[] superInterfaces = this.superInterfaces;
|
||||
if (superInterfaces == null) { // lazily initialize super interfaces
|
||||
// first, extract super interface subtree(s) from AST
|
||||
TypeTree[] ts = getTree().getSuperInterfaces();
|
||||
// create array to store reified subtree(s)
|
||||
Type[] sis = new Type[ts.length];
|
||||
superInterfaces = new Type[ts.length];
|
||||
// reify all subtrees
|
||||
for (int i = 0; i < ts.length; i++) {
|
||||
Reifier r = getReifier(); // obtain visitor
|
||||
ts[i].accept(r);// reify subtree
|
||||
// extract result from visitor and store it
|
||||
sis[i] = r.getResult();
|
||||
superInterfaces[i] = r.getResult();
|
||||
}
|
||||
superInterfaces = sis; // cache overall result
|
||||
this.superInterfaces = superInterfaces;
|
||||
}
|
||||
return superInterfaces.clone(); // return cached result
|
||||
}
|
||||
|
@ -42,7 +42,8 @@ import sun.reflect.generics.visitor.Reifier;
|
||||
public abstract class GenericDeclRepository<S extends Signature>
|
||||
extends AbstractRepository<S> {
|
||||
|
||||
private TypeVariable<?>[] typeParams; // caches the formal type parameters
|
||||
/** The formal type parameters. Lazily initialized. */
|
||||
private volatile TypeVariable<?>[] typeParams;
|
||||
|
||||
protected GenericDeclRepository(String rawSig, GenericsFactory f) {
|
||||
super(rawSig, f);
|
||||
@ -55,8 +56,7 @@ public abstract class GenericDeclRepository<S extends Signature>
|
||||
* If the corresponding field is non-null, it is returned.
|
||||
* If not, it is created lazily. This is done by selecting the appropriate
|
||||
* part of the tree and transforming it into a reflective object
|
||||
* using a visitor.
|
||||
* a visitor, which is created by feeding it the factory
|
||||
* using a visitor, which is created by feeding it the factory
|
||||
* with which the repository was created.
|
||||
*/
|
||||
|
||||
@ -64,20 +64,21 @@ public abstract class GenericDeclRepository<S extends Signature>
|
||||
* Return the formal type parameters of this generic declaration.
|
||||
* @return the formal type parameters of this generic declaration
|
||||
*/
|
||||
public TypeVariable<?>[] getTypeParameters(){
|
||||
public TypeVariable<?>[] getTypeParameters() {
|
||||
TypeVariable<?>[] typeParams = this.typeParams;
|
||||
if (typeParams == null) { // lazily initialize type parameters
|
||||
// first, extract type parameter subtree(s) from AST
|
||||
FormalTypeParameter[] ftps = getTree().getFormalTypeParameters();
|
||||
// create array to store reified subtree(s)
|
||||
TypeVariable<?>[] tps = new TypeVariable<?>[ftps.length];
|
||||
typeParams = new TypeVariable<?>[ftps.length];
|
||||
// reify all subtrees
|
||||
for (int i = 0; i < ftps.length; i++) {
|
||||
Reifier r = getReifier(); // obtain visitor
|
||||
ftps[i].accept(r); // reify subtree
|
||||
// extract result from visitor and store it
|
||||
tps[i] = (TypeVariable<?>) r.getResult();
|
||||
typeParams[i] = (TypeVariable<?>) r.getResult();
|
||||
}
|
||||
typeParams = tps; // cache overall result
|
||||
this.typeParams = typeParams; // cache overall result
|
||||
}
|
||||
return typeParams.clone(); // return cached result
|
||||
}
|
||||
|
@ -42,7 +42,9 @@ public abstract class AbstractScope<D extends GenericDeclaration>
|
||||
implements Scope {
|
||||
|
||||
private final D recvr; // the declaration whose scope this instance represents
|
||||
private Scope enclosingScope; // the enclosing scope of this scope
|
||||
|
||||
/** The enclosing scope of this scope. Lazily initialized. */
|
||||
private volatile Scope enclosingScope;
|
||||
|
||||
/**
|
||||
* Constructor. Takes a reflective object whose scope the newly
|
||||
@ -71,7 +73,11 @@ public abstract class AbstractScope<D extends GenericDeclaration>
|
||||
* @return the enclosing scope
|
||||
*/
|
||||
protected Scope getEnclosingScope(){
|
||||
if (enclosingScope == null) {enclosingScope = computeEnclosingScope();}
|
||||
Scope enclosingScope = this.enclosingScope;
|
||||
if (enclosingScope == null) {
|
||||
enclosingScope = computeEnclosingScope();
|
||||
this.enclosingScope = enclosingScope;
|
||||
}
|
||||
return enclosingScope;
|
||||
}
|
||||
|
||||
|
@ -406,14 +406,17 @@ final class UNIXProcess extends Process {
|
||||
if (hasExited) return true;
|
||||
if (timeout <= 0) return false;
|
||||
|
||||
long timeoutAsNanos = unit.toNanos(timeout);
|
||||
long startTime = System.nanoTime();
|
||||
long rem = timeoutAsNanos;
|
||||
long remainingNanos = unit.toNanos(timeout);
|
||||
long deadline = System.nanoTime() + remainingNanos;
|
||||
|
||||
while (!hasExited && (rem > 0)) {
|
||||
wait(Math.max(TimeUnit.NANOSECONDS.toMillis(rem), 1));
|
||||
rem = timeoutAsNanos - (System.nanoTime() - startTime);
|
||||
}
|
||||
do {
|
||||
// Round up to next millisecond
|
||||
wait(TimeUnit.NANOSECONDS.toMillis(remainingNanos + 999_999L));
|
||||
if (hasExited) {
|
||||
return true;
|
||||
}
|
||||
remainingNanos = deadline - System.nanoTime();
|
||||
} while (remainingNanos > 0);
|
||||
return hasExited;
|
||||
}
|
||||
|
||||
|
@ -461,11 +461,21 @@ final class ProcessImpl extends Process {
|
||||
if (getExitCodeProcess(handle) != STILL_ACTIVE) return true;
|
||||
if (timeout <= 0) return false;
|
||||
|
||||
long msTimeout = unit.toMillis(timeout);
|
||||
long remainingNanos = unit.toNanos(timeout);
|
||||
long deadline = System.nanoTime() + remainingNanos ;
|
||||
|
||||
do {
|
||||
// Round up to next millisecond
|
||||
long msTimeout = TimeUnit.NANOSECONDS.toMillis(remainingNanos + 999_999L);
|
||||
waitForTimeoutInterruptibly(handle, msTimeout);
|
||||
if (Thread.interrupted())
|
||||
throw new InterruptedException();
|
||||
if (getExitCodeProcess(handle) != STILL_ACTIVE) {
|
||||
return true;
|
||||
}
|
||||
remainingNanos = deadline - System.nanoTime();
|
||||
} while (remainingNanos > 0);
|
||||
|
||||
waitForTimeoutInterruptibly(handle, msTimeout);
|
||||
if (Thread.interrupted())
|
||||
throw new InterruptedException();
|
||||
return (getExitCodeProcess(handle) != STILL_ACTIVE);
|
||||
}
|
||||
|
||||
|
@ -31,6 +31,7 @@ import java.util.*;
|
||||
import java.security.*;
|
||||
import java.lang.ref.ReferenceQueue;
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
import sun.misc.JavaAWTAccess;
|
||||
import sun.misc.SharedSecrets;
|
||||
|
||||
@ -100,6 +101,19 @@ import sun.misc.SharedSecrets;
|
||||
* Note that these Handlers may be created lazily, when they are
|
||||
* first used.
|
||||
*
|
||||
* <li>A property "<logger>.handlers.ensureCloseOnReset". This defines a
|
||||
* a boolean value. If "<logger>.handlers" is not defined or is empty,
|
||||
* this property is ignored. Otherwise it defaults to {@code true}. When the
|
||||
* value is {@code true}, the handlers associated with the logger are guaranteed
|
||||
* to be closed on {@linkplain #reset} and shutdown. This can be turned off
|
||||
* by explicitly setting "<logger>.handlers.ensureCloseOnReset=false" in
|
||||
* the configuration. Note that turning this property off causes the risk of
|
||||
* introducing a resource leak, as the logger may get garbage collected before
|
||||
* {@code reset()} is called, thus preventing its handlers from being closed
|
||||
* on {@code reset()}. In that case it is the responsibility of the application
|
||||
* to ensure that the handlers are closed before the logger is garbage
|
||||
* collected.
|
||||
*
|
||||
* <li>A property "<logger>.useParentHandlers". This defines a boolean
|
||||
* value. By default every logger calls its parent in addition to
|
||||
* handling the logging message itself, this often result in messages
|
||||
@ -169,6 +183,33 @@ public class LogManager {
|
||||
// True if JVM death is imminent and the exit hook has been called.
|
||||
private boolean deathImminent;
|
||||
|
||||
// This list contains the loggers for which some handlers have been
|
||||
// explicitly configured in the configuration file.
|
||||
// It prevents these loggers from being arbitrarily garbage collected.
|
||||
private static final class CloseOnReset {
|
||||
private final Logger logger;
|
||||
private CloseOnReset(Logger ref) {
|
||||
this.logger = Objects.requireNonNull(ref);
|
||||
}
|
||||
@Override
|
||||
public boolean equals(Object other) {
|
||||
return (other instanceof CloseOnReset) && ((CloseOnReset)other).logger == logger;
|
||||
}
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return System.identityHashCode(logger);
|
||||
}
|
||||
public Logger get() {
|
||||
return logger;
|
||||
}
|
||||
public static CloseOnReset create(Logger logger) {
|
||||
return new CloseOnReset(logger);
|
||||
}
|
||||
}
|
||||
private final CopyOnWriteArrayList<CloseOnReset> closeOnResetLoggers =
|
||||
new CopyOnWriteArrayList<>();
|
||||
|
||||
|
||||
private final Map<Object, Runnable> listeners =
|
||||
Collections.synchronizedMap(new IdentityHashMap<>());
|
||||
|
||||
@ -204,7 +245,6 @@ public class LogManager {
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// This private class is used as a shutdown hook.
|
||||
// It does a "reset" to close all open handlers.
|
||||
private class Cleaner extends Thread {
|
||||
@ -875,30 +915,39 @@ public class LogManager {
|
||||
@Override
|
||||
public Object run() {
|
||||
String names[] = parseClassNames(handlersPropertyName);
|
||||
for (String word : names) {
|
||||
final boolean ensureCloseOnReset = names.length > 0
|
||||
&& getBooleanProperty(handlersPropertyName + ".ensureCloseOnReset",true);
|
||||
|
||||
int count = 0;
|
||||
for (String type : names) {
|
||||
try {
|
||||
Class<?> clz = ClassLoader.getSystemClassLoader().loadClass(word);
|
||||
Class<?> clz = ClassLoader.getSystemClassLoader().loadClass(type);
|
||||
Handler hdl = (Handler) clz.newInstance();
|
||||
// Check if there is a property defining the
|
||||
// this handler's level.
|
||||
String levs = getProperty(word + ".level");
|
||||
String levs = getProperty(type + ".level");
|
||||
if (levs != null) {
|
||||
Level l = Level.findLevel(levs);
|
||||
if (l != null) {
|
||||
hdl.setLevel(l);
|
||||
} else {
|
||||
// Probably a bad level. Drop through.
|
||||
System.err.println("Can't set level for " + word);
|
||||
System.err.println("Can't set level for " + type);
|
||||
}
|
||||
}
|
||||
// Add this Handler to the logger
|
||||
logger.addHandler(hdl);
|
||||
if (++count == 1 && ensureCloseOnReset) {
|
||||
// add this logger to the closeOnResetLoggers list.
|
||||
closeOnResetLoggers.addIfAbsent(CloseOnReset.create(logger));
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
System.err.println("Can't load log handler \"" + word + "\"");
|
||||
System.err.println("Can't load log handler \"" + type + "\"");
|
||||
System.err.println("" + ex);
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
});
|
||||
@ -1233,8 +1282,15 @@ public class LogManager {
|
||||
|
||||
public void reset() throws SecurityException {
|
||||
checkPermission();
|
||||
List<CloseOnReset> persistent;
|
||||
synchronized (this) {
|
||||
props = new Properties();
|
||||
// make sure we keep the loggers persistent until reset is done.
|
||||
// Those are the loggers for which we previously created a
|
||||
// handler from the configuration, and we need to prevent them
|
||||
// from being gc'ed until those handlers are closed.
|
||||
persistent = new ArrayList<>(closeOnResetLoggers);
|
||||
closeOnResetLoggers.clear();
|
||||
// Since we are doing a reset we no longer want to initialize
|
||||
// the global handlers, if they haven't been initialized yet.
|
||||
initializedGlobalHandlers = true;
|
||||
@ -1249,6 +1305,7 @@ public class LogManager {
|
||||
}
|
||||
}
|
||||
}
|
||||
persistent.clear();
|
||||
}
|
||||
|
||||
// Private method to reset an individual target logger.
|
||||
|
@ -28,6 +28,7 @@ package sun.management;
|
||||
import java.util.*;
|
||||
import com.sun.management.VMOption;
|
||||
import com.sun.management.VMOption.Origin;
|
||||
import java.security.AccessController;
|
||||
|
||||
/**
|
||||
* Flag class is a helper class for constructing a VMOption.
|
||||
@ -115,6 +116,13 @@ class Flag {
|
||||
static synchronized native void setStringValue(String name, String value);
|
||||
|
||||
static {
|
||||
AccessController.doPrivileged(
|
||||
new java.security.PrivilegedAction<Void>() {
|
||||
public Void run() {
|
||||
System.loadLibrary("management");
|
||||
return null;
|
||||
}
|
||||
});
|
||||
initialize();
|
||||
}
|
||||
private static native void initialize();
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 2014, 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,9 +37,10 @@ import java.util.Iterator;
|
||||
*
|
||||
* @author Sean Mullan
|
||||
* @author JSR 105 Expert Group
|
||||
* @param <T> the type of nodes maintained by this set
|
||||
* @since 1.6
|
||||
*/
|
||||
public interface NodeSetData extends Data {
|
||||
public interface NodeSetData<T> extends Data, Iterable<T> {
|
||||
|
||||
/**
|
||||
* Returns a read-only iterator over the nodes contained in this
|
||||
@ -52,6 +53,5 @@ public interface NodeSetData extends Data {
|
||||
* @return an <code>Iterator</code> over the nodes in this
|
||||
* <code>NodeSetData</code> in document order
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
Iterator iterator();
|
||||
Iterator<T> iterator();
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 2014, 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,6 +33,7 @@ import javax.xml.crypto.XMLCryptoContext;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import org.w3c.dom.Element;
|
||||
|
||||
/**
|
||||
@ -219,8 +220,7 @@ public class DOMCryptoContext implements XMLCryptoContext {
|
||||
*
|
||||
* @return a read-only iterator over the set of mappings
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public Iterator iterator() {
|
||||
public Iterator<Map.Entry<String, Element>> iterator() {
|
||||
return Collections.unmodifiableMap(idMap).entrySet().iterator();
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 2014, 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,8 +51,8 @@ import java.util.List;
|
||||
*
|
||||
* <pre>
|
||||
* XMLSignatureFactory factory = XMLSignatureFactory.getInstance("DOM");
|
||||
* List references = Collections.singletonList(factory.newReference
|
||||
* ("#reference-1", DigestMethod.SHA1));
|
||||
* Reference ref = factory.newReference("#reference-1", DigestMethod.SHA1);
|
||||
* List<Reference> references = Collections.singletonList(ref);
|
||||
* Manifest manifest = factory.newManifest(references, "manifest-1");
|
||||
* </pre>
|
||||
*
|
||||
@ -86,6 +86,5 @@ public interface Manifest extends XMLStructure {
|
||||
*
|
||||
* @return an unmodifiable list of one or more <code>Reference</code>s
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
List getReferences();
|
||||
List<Reference> getReferences();
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 2014, 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
|
||||
@ -85,8 +85,7 @@ public interface Reference extends URIReference, XMLStructure {
|
||||
* @return an unmodifiable list of <code>Transform</code>s
|
||||
* (may be empty but never <code>null</code>)
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
List getTransforms();
|
||||
List<Transform> getTransforms();
|
||||
|
||||
/**
|
||||
* Returns the digest method of this <code>Reference</code>.
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 2014, 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,6 +87,5 @@ public interface SignatureProperties extends XMLStructure {
|
||||
* @return an unmodifiable list of one or more
|
||||
* <code>SignatureProperty</code>s
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
List getProperties();
|
||||
List<SignatureProperty> getProperties();
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 2014, 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,6 +91,5 @@ public interface SignatureProperty extends XMLStructure {
|
||||
*
|
||||
* @return an unmodifiable list of one or more <code>XMLStructure</code>s
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
List getContent();
|
||||
List<XMLStructure> getContent();
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 2014, 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
|
||||
@ -80,8 +80,7 @@ public interface SignedInfo extends XMLStructure {
|
||||
*
|
||||
* @return an unmodifiable list of one or more {@link Reference}s
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
List getReferences();
|
||||
List<Reference> getReferences();
|
||||
|
||||
/**
|
||||
* Returns the optional <code>Id</code> attribute of this
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 2014, 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
|
||||
@ -64,7 +64,8 @@ import javax.xml.crypto.XMLStructure;
|
||||
*
|
||||
* <pre>
|
||||
* XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM");
|
||||
* List content = Collections.singletonList(fac.newManifest(references)));
|
||||
* Manifest manifest = fac.newManifest(references);
|
||||
* List<XMLStructure> content = Collections.singletonList(manifest);
|
||||
* XMLObject object = factory.newXMLObject(content, "object-1", null, null);
|
||||
* </pre>
|
||||
*
|
||||
@ -100,8 +101,7 @@ public interface XMLObject extends XMLStructure {
|
||||
* @return an unmodifiable list of <code>XMLStructure</code>s (may be empty
|
||||
* but never <code>null</code>)
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
List getContent();
|
||||
List<XMLStructure> getContent();
|
||||
|
||||
/**
|
||||
* Returns the Id of this <code>XMLObject</code>.
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 2014, 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
|
||||
@ -136,8 +136,7 @@ public interface XMLSignature extends XMLStructure {
|
||||
* @return an unmodifiable list of <code>XMLObject</code>s (may be empty
|
||||
* but never <code>null</code>)
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
List getObjects();
|
||||
List<XMLObject> getObjects();
|
||||
|
||||
/**
|
||||
* Returns the optional Id of this <code>XMLSignature</code>.
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 2014, 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
|
||||
@ -365,9 +365,8 @@ public abstract class XMLSignatureFactory {
|
||||
* @throws ClassCastException if any of the <code>objects</code> are not of
|
||||
* type <code>XMLObject</code>
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public abstract XMLSignature newXMLSignature(SignedInfo si, KeyInfo ki,
|
||||
List objects, String id, String signatureValueId);
|
||||
List<? extends XMLObject> objects, String id, String signatureValueId);
|
||||
|
||||
/**
|
||||
* Creates a <code>Reference</code> with the specified URI and digest
|
||||
@ -399,9 +398,8 @@ public abstract class XMLSignatureFactory {
|
||||
* compliant
|
||||
* @throws NullPointerException if <code>dm</code> is <code>null</code>
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public abstract Reference newReference(String uri, DigestMethod dm,
|
||||
List transforms, String type, String id);
|
||||
List<? extends Transform> transforms, String type, String id);
|
||||
|
||||
/**
|
||||
* Creates a <code>Reference</code> with the specified parameters and
|
||||
@ -430,9 +428,9 @@ public abstract class XMLSignatureFactory {
|
||||
* @throws NullPointerException if <code>dm</code> or
|
||||
* <code>digestValue</code> is <code>null</code>
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public abstract Reference newReference(String uri, DigestMethod dm,
|
||||
List transforms, String type, String id, byte[] digestValue);
|
||||
List<? extends Transform> transforms, String type, String id,
|
||||
byte[] digestValue);
|
||||
|
||||
/**
|
||||
* Creates a <code>Reference</code> with the specified parameters.
|
||||
@ -473,10 +471,9 @@ public abstract class XMLSignatureFactory {
|
||||
* <code>appliedTransforms</code> or <code>result</code> is
|
||||
* <code>null</code>
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public abstract Reference newReference(String uri, DigestMethod dm,
|
||||
List appliedTransforms, Data result, List transforms, String type,
|
||||
String id);
|
||||
List<? extends Transform> appliedTransforms, Data result,
|
||||
List<? extends Transform> transforms, String type, String id);
|
||||
|
||||
/**
|
||||
* Creates a <code>SignedInfo</code> with the specified canonicalization
|
||||
@ -493,9 +490,8 @@ public abstract class XMLSignatureFactory {
|
||||
* @throws NullPointerException if any of the parameters
|
||||
* are <code>null</code>
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public abstract SignedInfo newSignedInfo(CanonicalizationMethod cm,
|
||||
SignatureMethod sm, List references);
|
||||
SignatureMethod sm, List<? extends Reference> references);
|
||||
|
||||
/**
|
||||
* Creates a <code>SignedInfo</code> with the specified parameters.
|
||||
@ -512,9 +508,8 @@ public abstract class XMLSignatureFactory {
|
||||
* @throws NullPointerException if <code>cm</code>, <code>sm</code>, or
|
||||
* <code>references</code> are <code>null</code>
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public abstract SignedInfo newSignedInfo(CanonicalizationMethod cm,
|
||||
SignatureMethod sm, List references, String id);
|
||||
SignatureMethod sm, List<? extends Reference> references, String id);
|
||||
|
||||
// Object factory methods
|
||||
/**
|
||||
@ -530,9 +525,8 @@ public abstract class XMLSignatureFactory {
|
||||
* @throws ClassCastException if <code>content</code> contains any
|
||||
* entries that are not of type {@link XMLStructure}
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public abstract XMLObject newXMLObject(List content, String id,
|
||||
String mimeType, String encoding);
|
||||
public abstract XMLObject newXMLObject(List<? extends XMLStructure> content,
|
||||
String id, String mimeType, String encoding);
|
||||
|
||||
/**
|
||||
* Creates a <code>Manifest</code> containing the specified
|
||||
@ -547,8 +541,7 @@ public abstract class XMLSignatureFactory {
|
||||
* @throws ClassCastException if <code>references</code> contains any
|
||||
* entries that are not of type {@link Reference}
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public abstract Manifest newManifest(List references);
|
||||
public abstract Manifest newManifest(List<? extends Reference> references);
|
||||
|
||||
/**
|
||||
* Creates a <code>Manifest</code> containing the specified
|
||||
@ -564,8 +557,8 @@ public abstract class XMLSignatureFactory {
|
||||
* @throws ClassCastException if <code>references</code> contains any
|
||||
* entries that are not of type {@link Reference}
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public abstract Manifest newManifest(List references, String id);
|
||||
public abstract Manifest newManifest(List<? extends Reference> references,
|
||||
String id);
|
||||
|
||||
/**
|
||||
* Creates a <code>SignatureProperty</code> containing the specified
|
||||
@ -583,9 +576,8 @@ public abstract class XMLSignatureFactory {
|
||||
* @throws ClassCastException if <code>content</code> contains any
|
||||
* entries that are not of type {@link XMLStructure}
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public abstract SignatureProperty newSignatureProperty
|
||||
(List content, String target, String id);
|
||||
(List<? extends XMLStructure> content, String target, String id);
|
||||
|
||||
/**
|
||||
* Creates a <code>SignatureProperties</code> containing the specified
|
||||
@ -602,9 +594,8 @@ public abstract class XMLSignatureFactory {
|
||||
* @throws ClassCastException if <code>properties</code> contains any
|
||||
* entries that are not of type {@link SignatureProperty}
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public abstract SignatureProperties newSignatureProperties
|
||||
(List properties, String id);
|
||||
(List<? extends SignatureProperty> properties, String id);
|
||||
|
||||
// Algorithm factory methods
|
||||
/**
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 2014, 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
|
||||
@ -94,8 +94,7 @@ public interface KeyInfo extends XMLStructure {
|
||||
* in this <code>KeyInfo</code>. Never returns <code>null</code> or an
|
||||
* empty list.
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
List getContent();
|
||||
List<XMLStructure> getContent();
|
||||
|
||||
/**
|
||||
* Return the optional Id attribute of this <code>KeyInfo</code>, which
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 2014, 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
|
||||
@ -305,8 +305,7 @@ public abstract class KeyInfoFactory {
|
||||
* @throws ClassCastException if <code>content</code> contains any entries
|
||||
* that are not of type {@link XMLStructure}
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public abstract KeyInfo newKeyInfo(List content);
|
||||
public abstract KeyInfo newKeyInfo(List<? extends XMLStructure> content);
|
||||
|
||||
/**
|
||||
* Creates a <code>KeyInfo</code> containing the specified list of key
|
||||
@ -325,8 +324,8 @@ public abstract class KeyInfoFactory {
|
||||
* @throws ClassCastException if <code>content</code> contains any entries
|
||||
* that are not of type {@link XMLStructure}
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public abstract KeyInfo newKeyInfo(List content, String id);
|
||||
public abstract KeyInfo newKeyInfo(List<? extends XMLStructure> content,
|
||||
String id);
|
||||
|
||||
/**
|
||||
* Creates a <code>KeyName</code> from the specified name.
|
||||
@ -387,9 +386,8 @@ public abstract class KeyInfoFactory {
|
||||
* @throws ClassCastException if <code>other</code> contains any
|
||||
* entries that are not of type {@link XMLStructure}
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public abstract PGPData newPGPData(byte[] keyId, byte[] keyPacket,
|
||||
List other);
|
||||
List<? extends XMLStructure> other);
|
||||
|
||||
/**
|
||||
* Creates a <code>PGPData</code> from the specified PGP key material
|
||||
@ -411,8 +409,8 @@ public abstract class KeyInfoFactory {
|
||||
* @throws ClassCastException if <code>other</code> contains any
|
||||
* entries that are not of type {@link XMLStructure}
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public abstract PGPData newPGPData(byte[] keyPacket, List other);
|
||||
public abstract PGPData newPGPData(byte[] keyPacket,
|
||||
List<? extends XMLStructure> other);
|
||||
|
||||
/**
|
||||
* Creates a <code>RetrievalMethod</code> from the specified URI.
|
||||
@ -443,9 +441,8 @@ public abstract class KeyInfoFactory {
|
||||
* @throws ClassCastException if <code>transforms</code> contains any
|
||||
* entries that are not of type {@link Transform}
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public abstract RetrievalMethod newRetrievalMethod(String uri, String type,
|
||||
List transforms);
|
||||
List<? extends Transform> transforms);
|
||||
|
||||
/**
|
||||
* Creates a <code>X509Data</code> containing the specified list of
|
||||
@ -469,8 +466,7 @@ public abstract class KeyInfoFactory {
|
||||
* @throws ClassCastException if <code>content</code> contains any entries
|
||||
* that are not of one of the valid types mentioned above
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public abstract X509Data newX509Data(List content);
|
||||
public abstract X509Data newX509Data(List<?> content);
|
||||
|
||||
/**
|
||||
* Creates an <code>X509IssuerSerial</code> from the specified X.500 issuer
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 2014, 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
|
||||
@ -112,6 +112,5 @@ public interface PGPData extends XMLStructure {
|
||||
* @return an unmodifiable list of <code>XMLStructure</code>s (may be
|
||||
* empty, but never <code>null</code>)
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
List getExternalElements();
|
||||
List<XMLStructure> getExternalElements();
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 2014, 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
|
||||
@ -80,8 +80,7 @@ public interface RetrievalMethod extends URIReference, XMLStructure {
|
||||
* @return an unmodifiable list of <code>Transform</code> objects (may be
|
||||
* empty but never <code>null</code>).
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
List getTransforms();
|
||||
List<Transform> getTransforms();
|
||||
|
||||
/**
|
||||
* Returns the URI of the referenced <code>KeyInfo</code> information.
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 2014, 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
|
||||
@ -109,6 +109,5 @@ public interface X509Data extends XMLStructure {
|
||||
* @return an unmodifiable list of the content in this <code>X509Data</code>
|
||||
* (never <code>null</code> or empty)
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
List getContent();
|
||||
List<?> getContent();
|
||||
}
|
||||
|
@ -59,7 +59,7 @@ import java.util.List;
|
||||
*/
|
||||
public final class ExcC14NParameterSpec implements C14NMethodParameterSpec {
|
||||
|
||||
private List<String> preList;
|
||||
private final List<String> prefixList;
|
||||
|
||||
/**
|
||||
* Indicates the default namespace ("#default").
|
||||
@ -71,7 +71,7 @@ public final class ExcC14NParameterSpec implements C14NMethodParameterSpec {
|
||||
* list.
|
||||
*/
|
||||
public ExcC14NParameterSpec() {
|
||||
preList = Collections.emptyList();
|
||||
prefixList = Collections.emptyList();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -86,22 +86,14 @@ public final class ExcC14NParameterSpec implements C14NMethodParameterSpec {
|
||||
* @throws ClassCastException if any of the entries in the list are not
|
||||
* of type <code>String</code>
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public ExcC14NParameterSpec(List prefixList) {
|
||||
public ExcC14NParameterSpec(List<String> prefixList) {
|
||||
if (prefixList == null) {
|
||||
throw new NullPointerException("prefixList cannot be null");
|
||||
}
|
||||
List<?> copy = new ArrayList<>((List<?>)prefixList);
|
||||
for (int i = 0, size = copy.size(); i < size; i++) {
|
||||
if (!(copy.get(i) instanceof String)) {
|
||||
throw new ClassCastException("not a String");
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
List<String> temp = (List<String>)copy;
|
||||
|
||||
preList = Collections.unmodifiableList(temp);
|
||||
List<String> tempList = Collections.checkedList(new ArrayList<>(),
|
||||
String.class);
|
||||
tempList.addAll(prefixList);
|
||||
this.prefixList = Collections.unmodifiableList(tempList);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -114,8 +106,7 @@ public final class ExcC14NParameterSpec implements C14NMethodParameterSpec {
|
||||
* @return the inclusive namespace prefix list (may be empty but never
|
||||
* <code>null</code>)
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public List getPrefixList() {
|
||||
return preList;
|
||||
public List<String> getPrefixList() {
|
||||
return prefixList;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 2014, 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
|
||||
@ -59,27 +59,18 @@ public final class XPathFilter2ParameterSpec implements TransformParameterSpec {
|
||||
* @throws NullPointerException if <code>xPathList</code> is
|
||||
* <code>null</code>
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public XPathFilter2ParameterSpec(List xPathList) {
|
||||
public XPathFilter2ParameterSpec(List<XPathType> xPathList) {
|
||||
if (xPathList == null) {
|
||||
throw new NullPointerException("xPathList cannot be null");
|
||||
}
|
||||
List<?> xPathListCopy = new ArrayList<>((List<?>)xPathList);
|
||||
if (xPathListCopy.isEmpty()) {
|
||||
List<XPathType> tempList =
|
||||
Collections.checkedList(new ArrayList<XPathType>(),
|
||||
XPathType.class);
|
||||
tempList.addAll(xPathList);
|
||||
if (tempList.isEmpty()) {
|
||||
throw new IllegalArgumentException("xPathList cannot be empty");
|
||||
}
|
||||
int size = xPathListCopy.size();
|
||||
for (int i = 0; i < size; i++) {
|
||||
if (!(xPathListCopy.get(i) instanceof XPathType)) {
|
||||
throw new ClassCastException
|
||||
("xPathList["+i+"] is not a valid type");
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
List<XPathType> temp = (List<XPathType>)xPathListCopy;
|
||||
|
||||
this.xPathList = Collections.unmodifiableList(temp);
|
||||
this.xPathList = Collections.unmodifiableList(tempList);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -91,8 +82,7 @@ public final class XPathFilter2ParameterSpec implements TransformParameterSpec {
|
||||
* @return a <code>List</code> of <code>XPathType</code> objects
|
||||
* (never <code>null</code> or empty)
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public List getXPathList() {
|
||||
public List<XPathType> getXPathList() {
|
||||
return xPathList;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 2014, 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
|
||||
@ -32,7 +32,6 @@ import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
/**
|
||||
* Parameters for the <a href="http://www.w3.org/TR/xmldsig-core/#sec-XPath">
|
||||
@ -51,8 +50,8 @@ import java.util.Map.Entry;
|
||||
*/
|
||||
public final class XPathFilterParameterSpec implements TransformParameterSpec {
|
||||
|
||||
private String xPath;
|
||||
private Map<String,String> nsMap;
|
||||
private final String xPath;
|
||||
private final Map<String,String> nsMap;
|
||||
|
||||
/**
|
||||
* Creates an <code>XPathFilterParameterSpec</code> with the specified
|
||||
@ -83,26 +82,16 @@ public final class XPathFilterParameterSpec implements TransformParameterSpec {
|
||||
* @throws ClassCastException if any of the map's keys or entries are not
|
||||
* of type <code>String</code>
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public XPathFilterParameterSpec(String xPath, Map namespaceMap) {
|
||||
public XPathFilterParameterSpec(String xPath, Map<String,String> namespaceMap) {
|
||||
if (xPath == null || namespaceMap == null) {
|
||||
throw new NullPointerException();
|
||||
}
|
||||
this.xPath = xPath;
|
||||
Map<?,?> copy = new HashMap<>((Map<?,?>)namespaceMap);
|
||||
Iterator<? extends Map.Entry<?,?>> entries = copy.entrySet().iterator();
|
||||
while (entries.hasNext()) {
|
||||
Map.Entry<?,?> me = entries.next();
|
||||
if (!(me.getKey() instanceof String) ||
|
||||
!(me.getValue() instanceof String)) {
|
||||
throw new ClassCastException("not a String");
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
Map<String,String> temp = (Map<String,String>)copy;
|
||||
|
||||
nsMap = Collections.unmodifiableMap(temp);
|
||||
Map<String,String> tempMap = Collections.checkedMap(new HashMap<>(),
|
||||
String.class,
|
||||
String.class);
|
||||
tempMap.putAll(namespaceMap);
|
||||
this.nsMap = Collections.unmodifiableMap(tempMap);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -125,8 +114,7 @@ public final class XPathFilterParameterSpec implements TransformParameterSpec {
|
||||
* @return a <code>Map</code> of namespace prefixes to namespace URIs (may
|
||||
* be empty, but never <code>null</code>)
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public Map getNamespaceMap() {
|
||||
public Map<String,String> getNamespaceMap() {
|
||||
return nsMap;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 2014, 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,7 +28,6 @@
|
||||
package javax.xml.crypto.dsig.spec;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@ -106,7 +105,7 @@ public class XPathType {
|
||||
|
||||
private final String expression;
|
||||
private final Filter filter;
|
||||
private Map<String,String> nsMap;
|
||||
private final Map<String,String> nsMap;
|
||||
|
||||
/**
|
||||
* Creates an <code>XPathType</code> instance with the specified XPath
|
||||
@ -147,26 +146,24 @@ public class XPathType {
|
||||
* @throws ClassCastException if any of the map's keys or entries are
|
||||
* not of type <code>String</code>
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public XPathType(String expression, Filter filter, Map namespaceMap) {
|
||||
this(expression, filter);
|
||||
public XPathType(String expression, Filter filter,
|
||||
Map<String,String> namespaceMap) {
|
||||
if (expression == null) {
|
||||
throw new NullPointerException("expression cannot be null");
|
||||
}
|
||||
if (filter == null) {
|
||||
throw new NullPointerException("filter cannot be null");
|
||||
}
|
||||
if (namespaceMap == null) {
|
||||
throw new NullPointerException("namespaceMap cannot be null");
|
||||
}
|
||||
Map<?,?> copy = new HashMap<>((Map<?,?>)namespaceMap);
|
||||
Iterator<? extends Map.Entry<?,?>> entries = copy.entrySet().iterator();
|
||||
while (entries.hasNext()) {
|
||||
Map.Entry<?,?> me = entries.next();
|
||||
if (!(me.getKey() instanceof String) ||
|
||||
!(me.getValue() instanceof String)) {
|
||||
throw new ClassCastException("not a String");
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
Map<String,String> temp = (Map<String,String>)copy;
|
||||
|
||||
nsMap = Collections.unmodifiableMap(temp);
|
||||
this.expression = expression;
|
||||
this.filter = filter;
|
||||
Map<String,String> tempMap = Collections.checkedMap(new HashMap<>(),
|
||||
String.class,
|
||||
String.class);
|
||||
tempMap.putAll(namespaceMap);
|
||||
this.nsMap = Collections.unmodifiableMap(tempMap);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -198,8 +195,7 @@ public class XPathType {
|
||||
* @return a <code>Map</code> of namespace prefixes to namespace URIs
|
||||
* (may be empty, but never <code>null</code>)
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public Map getNamespaceMap() {
|
||||
public Map<String,String> getNamespaceMap() {
|
||||
return nsMap;
|
||||
}
|
||||
}
|
||||
|
@ -21,7 +21,7 @@
|
||||
* under the License.
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
*/
|
||||
/*
|
||||
* $Id: ApacheCanonicalizer.java 1333869 2012-05-04 10:42:44Z coheigea $
|
||||
@ -166,11 +166,9 @@ public abstract class ApacheCanonicalizer extends TransformService {
|
||||
(subTree.getRoot())));
|
||||
}
|
||||
} else if (data instanceof NodeSetData) {
|
||||
NodeSetData nsd = (NodeSetData)data;
|
||||
// convert Iterator to Set
|
||||
@SuppressWarnings("unchecked")
|
||||
Set<Node> ns = Utils.toNodeSet(nsd.iterator());
|
||||
nodeSet = ns;
|
||||
NodeSetData<?> nsd = (NodeSetData<?>)data;
|
||||
// convert Iterator to Set<Node>
|
||||
nodeSet = Utils.toNodeSet(nsd.iterator());
|
||||
if (log.isLoggable(java.util.logging.Level.FINE)) {
|
||||
log.log(java.util.logging.Level.FINE, "Canonicalizing " + nodeSet.size() + " nodes");
|
||||
}
|
||||
@ -236,7 +234,6 @@ public abstract class ApacheCanonicalizer extends TransformService {
|
||||
in = new XMLSignatureInput(subTree.getRoot());
|
||||
in.setExcludeComments(subTree.excludeComments());
|
||||
} else {
|
||||
@SuppressWarnings("unchecked")
|
||||
Set<Node> nodeSet =
|
||||
Utils.toNodeSet(((NodeSetData)data).iterator());
|
||||
in = new XMLSignatureInput(nodeSet);
|
||||
|
@ -39,7 +39,7 @@ import com.sun.org.apache.xml.internal.security.signature.NodeFilter;
|
||||
import com.sun.org.apache.xml.internal.security.signature.XMLSignatureInput;
|
||||
import com.sun.org.apache.xml.internal.security.utils.XMLUtils;
|
||||
|
||||
public class ApacheNodeSetData implements ApacheData, NodeSetData {
|
||||
public class ApacheNodeSetData implements ApacheData, NodeSetData<Node> {
|
||||
|
||||
private XMLSignatureInput xi;
|
||||
|
||||
|
@ -21,7 +21,7 @@
|
||||
* under the License.
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
*/
|
||||
/*
|
||||
* $Id: ApacheTransform.java 1333869 2012-05-04 10:42:44Z coheigea $
|
||||
@ -175,7 +175,6 @@ public abstract class ApacheTransform extends TransformService {
|
||||
in = new XMLSignatureInput(subTree.getRoot());
|
||||
in.setExcludeComments(subTree.excludeComments());
|
||||
} else {
|
||||
@SuppressWarnings("unchecked")
|
||||
Set<Node> nodeSet =
|
||||
Utils.toNodeSet(((NodeSetData)data).iterator());
|
||||
in = new XMLSignatureInput(nodeSet);
|
||||
|
@ -21,7 +21,7 @@
|
||||
* under the License.
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
*/
|
||||
/*
|
||||
* $Id: DOMExcC14NMethod.java 1197150 2011-11-03 14:34:57Z coheigea $
|
||||
@ -119,7 +119,6 @@ public final class DOMExcC14NMethod extends ApacheCanonicalizer {
|
||||
|
||||
ExcC14NParameterSpec params = (ExcC14NParameterSpec)spec;
|
||||
StringBuilder prefixListAttr = new StringBuilder("");
|
||||
@SuppressWarnings("unchecked")
|
||||
List<String> prefixList = params.getPrefixList();
|
||||
for (int i = 0, size = prefixList.size(); i < size; i++) {
|
||||
prefixListAttr.append(prefixList.get(i));
|
||||
|
@ -68,17 +68,14 @@ public final class DOMKeyInfo extends DOMStructure implements KeyInfo {
|
||||
if (content == null) {
|
||||
throw new NullPointerException("content cannot be null");
|
||||
}
|
||||
this.keyInfoTypes =
|
||||
Collections.unmodifiableList(new ArrayList<XMLStructure>(content));
|
||||
List<XMLStructure> tempList =
|
||||
Collections.checkedList(new ArrayList<XMLStructure>(),
|
||||
XMLStructure.class);
|
||||
tempList.addAll(content);
|
||||
this.keyInfoTypes = Collections.unmodifiableList(tempList);
|
||||
if (this.keyInfoTypes.isEmpty()) {
|
||||
throw new IllegalArgumentException("content cannot be empty");
|
||||
}
|
||||
for (int i = 0, size = this.keyInfoTypes.size(); i < size; i++) {
|
||||
if (!(this.keyInfoTypes.get(i) instanceof XMLStructure)) {
|
||||
throw new ClassCastException
|
||||
("content["+i+"] is not a valid KeyInfo type");
|
||||
}
|
||||
}
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
|
@ -34,6 +34,7 @@ import java.security.PublicKey;
|
||||
import java.util.List;
|
||||
import javax.xml.crypto.*;
|
||||
import javax.xml.crypto.dom.DOMCryptoContext;
|
||||
import javax.xml.crypto.dsig.Transform;
|
||||
import javax.xml.crypto.dsig.keyinfo.*;
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Element;
|
||||
@ -48,13 +49,11 @@ public final class DOMKeyInfoFactory extends KeyInfoFactory {
|
||||
|
||||
public DOMKeyInfoFactory() { }
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
public KeyInfo newKeyInfo(List content) {
|
||||
public KeyInfo newKeyInfo(List<? extends XMLStructure> content) {
|
||||
return newKeyInfo(content, null);
|
||||
}
|
||||
|
||||
@SuppressWarnings({ "unchecked", "rawtypes" })
|
||||
public KeyInfo newKeyInfo(List content, String id) {
|
||||
public KeyInfo newKeyInfo(List<? extends XMLStructure> content, String id) {
|
||||
return new DOMKeyInfo(content, id);
|
||||
}
|
||||
|
||||
@ -79,13 +78,13 @@ public final class DOMKeyInfoFactory extends KeyInfoFactory {
|
||||
return newPGPData(keyId, null, null);
|
||||
}
|
||||
|
||||
@SuppressWarnings({ "unchecked", "rawtypes" })
|
||||
public PGPData newPGPData(byte[] keyId, byte[] keyPacket, List other) {
|
||||
public PGPData newPGPData(byte[] keyId, byte[] keyPacket,
|
||||
List<? extends XMLStructure> other) {
|
||||
return new DOMPGPData(keyId, keyPacket, other);
|
||||
}
|
||||
|
||||
@SuppressWarnings({ "unchecked", "rawtypes" })
|
||||
public PGPData newPGPData(byte[] keyPacket, List other) {
|
||||
public PGPData newPGPData(byte[] keyPacket,
|
||||
List<? extends XMLStructure> other) {
|
||||
return new DOMPGPData(keyPacket, other);
|
||||
}
|
||||
|
||||
@ -93,17 +92,15 @@ public final class DOMKeyInfoFactory extends KeyInfoFactory {
|
||||
return newRetrievalMethod(uri, null, null);
|
||||
}
|
||||
|
||||
@SuppressWarnings({ "unchecked", "rawtypes" })
|
||||
public RetrievalMethod newRetrievalMethod(String uri, String type,
|
||||
List transforms) {
|
||||
List<? extends Transform> transforms) {
|
||||
if (uri == null) {
|
||||
throw new NullPointerException("uri must not be null");
|
||||
}
|
||||
return new DOMRetrievalMethod(uri, type, transforms);
|
||||
}
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
public X509Data newX509Data(List content) {
|
||||
public X509Data newX509Data(List<?> content) {
|
||||
return new DOMX509Data(content);
|
||||
}
|
||||
|
||||
|
@ -33,7 +33,6 @@ import javax.xml.crypto.dom.DOMCryptoContext;
|
||||
import javax.xml.crypto.dsig.*;
|
||||
import javax.xml.crypto.dsig.keyinfo.KeyValue;
|
||||
|
||||
// import java.io.IOException;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.security.AccessController;
|
||||
|
@ -67,18 +67,15 @@ public final class DOMManifest extends DOMStructure implements Manifest {
|
||||
if (references == null) {
|
||||
throw new NullPointerException("references cannot be null");
|
||||
}
|
||||
this.references =
|
||||
Collections.unmodifiableList(new ArrayList<Reference>(references));
|
||||
List<Reference> tempList =
|
||||
Collections.checkedList(new ArrayList<Reference>(),
|
||||
Reference.class);
|
||||
tempList.addAll(references);
|
||||
this.references = Collections.unmodifiableList(tempList);
|
||||
if (this.references.isEmpty()) {
|
||||
throw new IllegalArgumentException("list of references must " +
|
||||
"contain at least one entry");
|
||||
}
|
||||
for (int i = 0, size = this.references.size(); i < size; i++) {
|
||||
if (!(this.references.get(i) instanceof Reference)) {
|
||||
throw new ClassCastException
|
||||
("references["+i+"] is not a valid type");
|
||||
}
|
||||
}
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
@ -127,7 +124,6 @@ public final class DOMManifest extends DOMStructure implements Manifest {
|
||||
return id;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
static List<Reference> getManifestReferences(Manifest mf) {
|
||||
return mf.getReferences();
|
||||
}
|
||||
|
@ -73,18 +73,13 @@ public final class DOMPGPData extends DOMStructure implements PGPData {
|
||||
if (keyPacket == null) {
|
||||
throw new NullPointerException("keyPacket cannot be null");
|
||||
}
|
||||
if (other == null || other.isEmpty()) {
|
||||
this.externalElements = Collections.emptyList();
|
||||
} else {
|
||||
this.externalElements =
|
||||
Collections.unmodifiableList(new ArrayList<XMLStructure>(other));
|
||||
for (int i = 0, size = this.externalElements.size(); i < size; i++) {
|
||||
if (!(this.externalElements.get(i) instanceof XMLStructure)) {
|
||||
throw new ClassCastException
|
||||
("other["+i+"] is not a valid PGPData type");
|
||||
}
|
||||
}
|
||||
List<XMLStructure> tempList =
|
||||
Collections.checkedList(new ArrayList<XMLStructure>(),
|
||||
XMLStructure.class);
|
||||
if (other != null) {
|
||||
tempList.addAll(other);
|
||||
}
|
||||
this.externalElements = Collections.unmodifiableList(tempList);
|
||||
this.keyPacket = keyPacket.clone();
|
||||
checkKeyPacket(keyPacket);
|
||||
this.keyId = null;
|
||||
@ -120,18 +115,13 @@ public final class DOMPGPData extends DOMStructure implements PGPData {
|
||||
if (keyId.length != 8) {
|
||||
throw new IllegalArgumentException("keyId must be 8 bytes long");
|
||||
}
|
||||
if (other == null || other.isEmpty()) {
|
||||
this.externalElements = Collections.emptyList();
|
||||
} else {
|
||||
this.externalElements =
|
||||
Collections.unmodifiableList(new ArrayList<XMLStructure>(other));
|
||||
for (int i = 0, size = this.externalElements.size(); i < size; i++) {
|
||||
if (!(this.externalElements.get(i) instanceof XMLStructure)) {
|
||||
throw new ClassCastException
|
||||
("other["+i+"] is not a valid PGPData type");
|
||||
}
|
||||
}
|
||||
List<XMLStructure> tempList =
|
||||
Collections.checkedList(new ArrayList<XMLStructure>(),
|
||||
XMLStructure.class);
|
||||
if (other != null) {
|
||||
tempList.addAll(other);
|
||||
}
|
||||
this.externalElements = Collections.unmodifiableList(tempList);
|
||||
this.keyId = keyId.clone();
|
||||
this.keyPacket = keyPacket == null ? null
|
||||
: keyPacket.clone();
|
||||
|
@ -147,29 +147,21 @@ public final class DOMReference extends DOMStructure
|
||||
if (dm == null) {
|
||||
throw new NullPointerException("DigestMethod must be non-null");
|
||||
}
|
||||
if (appliedTransforms == null) {
|
||||
this.allTransforms = new ArrayList<Transform>();
|
||||
} else {
|
||||
this.allTransforms = new ArrayList<Transform>(appliedTransforms);
|
||||
for (int i = 0, size = this.allTransforms.size(); i < size; i++) {
|
||||
if (!(this.allTransforms.get(i) instanceof Transform)) {
|
||||
throw new ClassCastException
|
||||
("appliedTransforms["+i+"] is not a valid type");
|
||||
}
|
||||
}
|
||||
List<Transform> tempList =
|
||||
Collections.checkedList(new ArrayList<Transform>(),
|
||||
Transform.class);
|
||||
if (appliedTransforms != null) {
|
||||
tempList.addAll(appliedTransforms);
|
||||
}
|
||||
if (transforms == null) {
|
||||
this.transforms = Collections.emptyList();
|
||||
} else {
|
||||
this.transforms = new ArrayList<Transform>(transforms);
|
||||
for (int i = 0, size = this.transforms.size(); i < size; i++) {
|
||||
if (!(this.transforms.get(i) instanceof Transform)) {
|
||||
throw new ClassCastException
|
||||
("transforms["+i+"] is not a valid type");
|
||||
}
|
||||
}
|
||||
this.allTransforms.addAll(this.transforms);
|
||||
List<Transform> tempList2 =
|
||||
Collections.checkedList(new ArrayList<Transform>(),
|
||||
Transform.class);
|
||||
if (transforms != null) {
|
||||
tempList.addAll(transforms);
|
||||
tempList2.addAll(transforms);
|
||||
}
|
||||
this.allTransforms = Collections.unmodifiableList(tempList);
|
||||
this.transforms = tempList2;
|
||||
this.digestMethod = dm;
|
||||
this.uri = uri;
|
||||
if ((uri != null) && (!uri.equals(""))) {
|
||||
@ -642,7 +634,7 @@ public final class DOMReference extends DOMStructure
|
||||
if (xsi.isNodeSet()) {
|
||||
try {
|
||||
final Set<Node> s = xsi.getNodeSet();
|
||||
return new NodeSetData() {
|
||||
return new NodeSetData<Node>() {
|
||||
public Iterator<Node> iterator() { return s.iterator(); }
|
||||
};
|
||||
} catch (Exception e) {
|
||||
|
@ -90,18 +90,13 @@ public final class DOMRetrievalMethod extends DOMStructure
|
||||
if (uri == null) {
|
||||
throw new NullPointerException("uri cannot be null");
|
||||
}
|
||||
if (transforms == null || transforms.isEmpty()) {
|
||||
this.transforms = Collections.emptyList();
|
||||
} else {
|
||||
this.transforms = Collections.unmodifiableList(
|
||||
new ArrayList<Transform>(transforms));
|
||||
for (int i = 0, size = this.transforms.size(); i < size; i++) {
|
||||
if (!(this.transforms.get(i) instanceof Transform)) {
|
||||
throw new ClassCastException
|
||||
("transforms["+i+"] is not a valid type");
|
||||
}
|
||||
}
|
||||
List<Transform> tempList =
|
||||
Collections.checkedList(new ArrayList<Transform>(),
|
||||
Transform.class);
|
||||
if (transforms != null) {
|
||||
tempList.addAll(transforms);
|
||||
}
|
||||
this.transforms = Collections.unmodifiableList(tempList);
|
||||
this.uri = uri;
|
||||
if (!uri.equals("")) {
|
||||
try {
|
||||
@ -244,7 +239,7 @@ public final class DOMRetrievalMethod extends DOMStructure
|
||||
|
||||
// guard against RetrievalMethod loops
|
||||
if ((data instanceof NodeSetData) && Utils.secureValidation(context)) {
|
||||
NodeSetData nsd = (NodeSetData)data;
|
||||
NodeSetData<?> nsd = (NodeSetData<?>)data;
|
||||
Iterator<?> i = nsd.iterator();
|
||||
if (i.hasNext()) {
|
||||
Node root = (Node)i.next();
|
||||
|
@ -69,18 +69,15 @@ public final class DOMSignatureProperties extends DOMStructure
|
||||
{
|
||||
if (properties == null) {
|
||||
throw new NullPointerException("properties cannot be null");
|
||||
} else if (properties.isEmpty()) {
|
||||
throw new IllegalArgumentException("properties cannot be empty");
|
||||
} else {
|
||||
this.properties = Collections.unmodifiableList(
|
||||
new ArrayList<SignatureProperty>(properties));
|
||||
for (int i = 0, size = this.properties.size(); i < size; i++) {
|
||||
if (!(this.properties.get(i) instanceof SignatureProperty)) {
|
||||
throw new ClassCastException
|
||||
("properties["+i+"] is not a valid type");
|
||||
}
|
||||
}
|
||||
}
|
||||
List<SignatureProperty> tempList =
|
||||
Collections.checkedList(new ArrayList<SignatureProperty>(),
|
||||
SignatureProperty.class);
|
||||
tempList.addAll(properties);
|
||||
if (tempList.isEmpty()) {
|
||||
throw new IllegalArgumentException("properties cannot be empty");
|
||||
}
|
||||
this.properties = Collections.unmodifiableList(tempList);
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
|
@ -71,20 +71,18 @@ public final class DOMSignatureProperty extends DOMStructure
|
||||
{
|
||||
if (target == null) {
|
||||
throw new NullPointerException("target cannot be null");
|
||||
} else if (content == null) {
|
||||
throw new NullPointerException("content cannot be null");
|
||||
} else if (content.isEmpty()) {
|
||||
throw new IllegalArgumentException("content cannot be empty");
|
||||
} else {
|
||||
this.content = Collections.unmodifiableList(
|
||||
new ArrayList<XMLStructure>(content));
|
||||
for (int i = 0, size = this.content.size(); i < size; i++) {
|
||||
if (!(this.content.get(i) instanceof XMLStructure)) {
|
||||
throw new ClassCastException
|
||||
("content["+i+"] is not a valid type");
|
||||
}
|
||||
}
|
||||
}
|
||||
if (content == null) {
|
||||
throw new NullPointerException("content cannot be null");
|
||||
}
|
||||
List<XMLStructure> tempList =
|
||||
Collections.checkedList(new ArrayList<XMLStructure>(),
|
||||
XMLStructure.class);
|
||||
tempList.addAll(content);
|
||||
if (tempList.isEmpty()) {
|
||||
throw new IllegalArgumentException("content cannot be empty");
|
||||
}
|
||||
this.content = Collections.unmodifiableList(tempList);
|
||||
this.target = target;
|
||||
this.id = id;
|
||||
}
|
||||
@ -169,7 +167,6 @@ public final class DOMSignatureProperty extends DOMStructure
|
||||
boolean idsEqual = (id == null ? osp.getId() == null
|
||||
: id.equals(osp.getId()));
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
List<XMLStructure> ospContent = osp.getContent();
|
||||
return (equalsContent(ospContent) &&
|
||||
target.equals(osp.getTarget()) && idsEqual);
|
||||
|
@ -100,19 +100,14 @@ public final class DOMSignedInfo extends DOMStructure implements SignedInfo {
|
||||
}
|
||||
this.canonicalizationMethod = cm;
|
||||
this.signatureMethod = sm;
|
||||
this.references = Collections.unmodifiableList(
|
||||
new ArrayList<Reference>(references));
|
||||
if (this.references.isEmpty()) {
|
||||
throw new IllegalArgumentException("list of references must " +
|
||||
"contain at least one entry");
|
||||
}
|
||||
for (int i = 0, size = this.references.size(); i < size; i++) {
|
||||
Object obj = this.references.get(i);
|
||||
if (!(obj instanceof Reference)) {
|
||||
throw new ClassCastException("list of references contains " +
|
||||
"an illegal type");
|
||||
}
|
||||
List<Reference> tempList =
|
||||
Collections.checkedList(new ArrayList<Reference>(),
|
||||
Reference.class);
|
||||
tempList.addAll(references);
|
||||
if (tempList.isEmpty()) {
|
||||
throw new IllegalArgumentException("references cannot be empty");
|
||||
}
|
||||
this.references = Collections.unmodifiableList(tempList);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -44,7 +44,7 @@ import org.w3c.dom.Node;
|
||||
* directly on the subdocument and there is no need to convert it
|
||||
* first to an XPath node-set.
|
||||
*/
|
||||
public class DOMSubTreeData implements NodeSetData {
|
||||
public class DOMSubTreeData implements NodeSetData<Node> {
|
||||
|
||||
private boolean excludeComments;
|
||||
private Node root;
|
||||
|
@ -367,9 +367,7 @@ public class DOMUtils {
|
||||
private static boolean paramsEqual(XPathFilter2ParameterSpec spec1,
|
||||
XPathFilter2ParameterSpec spec2)
|
||||
{
|
||||
@SuppressWarnings("unchecked")
|
||||
List<XPathType> types = spec1.getXPathList();
|
||||
@SuppressWarnings("unchecked")
|
||||
List<XPathType> otypes = spec2.getXPathList();
|
||||
int size = types.size();
|
||||
if (size != otypes.size()) {
|
||||
|
@ -135,7 +135,7 @@ public final class DOMX509Data extends DOMStructure implements X509Data {
|
||||
this.content = Collections.unmodifiableList(content);
|
||||
}
|
||||
|
||||
public List<Object> getContent() {
|
||||
public List<?> getContent() {
|
||||
return content;
|
||||
}
|
||||
|
||||
@ -265,7 +265,7 @@ public final class DOMX509Data extends DOMStructure implements X509Data {
|
||||
}
|
||||
X509Data oxd = (X509Data)o;
|
||||
|
||||
@SuppressWarnings("unchecked") List<Object> ocontent = oxd.getContent();
|
||||
List<?> ocontent = oxd.getContent();
|
||||
int size = content.size();
|
||||
if (size != ocontent.size()) {
|
||||
return false;
|
||||
|
@ -70,18 +70,13 @@ public final class DOMXMLObject extends DOMStructure implements XMLObject {
|
||||
public DOMXMLObject(List<? extends XMLStructure> content, String id,
|
||||
String mimeType, String encoding)
|
||||
{
|
||||
if (content == null || content.isEmpty()) {
|
||||
this.content = Collections.emptyList();
|
||||
} else {
|
||||
this.content = Collections.unmodifiableList(
|
||||
new ArrayList<XMLStructure>(content));
|
||||
for (int i = 0, size = this.content.size(); i < size; i++) {
|
||||
if (!(this.content.get(i) instanceof XMLStructure)) {
|
||||
throw new ClassCastException
|
||||
("content["+i+"] is not a valid type");
|
||||
}
|
||||
}
|
||||
List<XMLStructure> tempList =
|
||||
Collections.checkedList(new ArrayList<XMLStructure>(),
|
||||
XMLStructure.class);
|
||||
if (content != null) {
|
||||
tempList.addAll(content);
|
||||
}
|
||||
this.content = Collections.unmodifiableList(tempList);
|
||||
this.id = id;
|
||||
this.mimeType = mimeType;
|
||||
this.encoding = encoding;
|
||||
@ -204,7 +199,6 @@ public final class DOMXMLObject extends DOMStructure implements XMLObject {
|
||||
(mimeType == null ? oxo.getMimeType() == null
|
||||
: mimeType.equals(oxo.getMimeType()));
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
List<XMLStructure> oxoContent = oxo.getContent();
|
||||
return (idsEqual && encodingsEqual && mimeTypesEqual &&
|
||||
equalsContent(oxoContent));
|
||||
|
@ -109,18 +109,13 @@ public final class DOMXMLSignature extends DOMStructure
|
||||
this.si = si;
|
||||
this.id = id;
|
||||
this.sv = new DOMSignatureValue(signatureValueId);
|
||||
if (objs == null) {
|
||||
this.objects = Collections.emptyList();
|
||||
} else {
|
||||
this.objects =
|
||||
Collections.unmodifiableList(new ArrayList<XMLObject>(objs));
|
||||
for (int i = 0, size = this.objects.size(); i < size; i++) {
|
||||
if (!(this.objects.get(i) instanceof XMLObject)) {
|
||||
throw new ClassCastException
|
||||
("objs["+i+"] is not an XMLObject");
|
||||
}
|
||||
}
|
||||
List<XMLObject> tempList =
|
||||
Collections.checkedList(new ArrayList<XMLObject>(),
|
||||
XMLObject.class);
|
||||
if (objs != null) {
|
||||
tempList.addAll(objs);
|
||||
}
|
||||
this.objects = Collections.unmodifiableList(tempList);
|
||||
this.ki = ki;
|
||||
}
|
||||
|
||||
@ -270,7 +265,6 @@ public final class DOMXMLSignature extends DOMStructure
|
||||
}
|
||||
|
||||
// validate all References
|
||||
@SuppressWarnings("unchecked")
|
||||
List<Reference> refs = this.si.getReferences();
|
||||
boolean validateRefs = true;
|
||||
for (int i = 0, size = refs.size(); validateRefs && i < size; i++) {
|
||||
@ -297,7 +291,6 @@ public final class DOMXMLSignature extends DOMStructure
|
||||
{
|
||||
for (int i=0, size=objects.size(); validateMans && i < size; i++) {
|
||||
XMLObject xo = objects.get(i);
|
||||
@SuppressWarnings("unchecked")
|
||||
List<XMLStructure> content = xo.getContent();
|
||||
int csize = content.size();
|
||||
for (int j = 0; validateMans && j < csize; j++) {
|
||||
@ -307,7 +300,6 @@ public final class DOMXMLSignature extends DOMStructure
|
||||
log.log(java.util.logging.Level.FINE, "validating manifest");
|
||||
}
|
||||
Manifest man = (Manifest)xs;
|
||||
@SuppressWarnings("unchecked")
|
||||
List<Reference> manRefs = man.getReferences();
|
||||
int rsize = manRefs.size();
|
||||
for (int k = 0; validateMans && k < rsize; k++) {
|
||||
@ -348,20 +340,17 @@ public final class DOMXMLSignature extends DOMStructure
|
||||
signatureIdMap = new HashMap<String, XMLStructure>();
|
||||
signatureIdMap.put(id, this);
|
||||
signatureIdMap.put(si.getId(), si);
|
||||
@SuppressWarnings("unchecked")
|
||||
List<Reference> refs = si.getReferences();
|
||||
for (Reference ref : refs) {
|
||||
signatureIdMap.put(ref.getId(), ref);
|
||||
}
|
||||
for (XMLObject obj : objects) {
|
||||
signatureIdMap.put(obj.getId(), obj);
|
||||
@SuppressWarnings("unchecked")
|
||||
List<XMLStructure> content = obj.getContent();
|
||||
for (XMLStructure xs : content) {
|
||||
if (xs instanceof Manifest) {
|
||||
Manifest man = (Manifest)xs;
|
||||
signatureIdMap.put(man.getId(), man);
|
||||
@SuppressWarnings("unchecked")
|
||||
List<Reference> manRefs = man.getReferences();
|
||||
for (Reference ref : manRefs) {
|
||||
allReferences.add(ref);
|
||||
@ -483,7 +472,6 @@ public final class DOMXMLSignature extends DOMStructure
|
||||
// reference dependencies in the XPath Transform - so be on
|
||||
// the safe side, and skip and do at end in the final sweep
|
||||
if (uri.length() == 0) {
|
||||
@SuppressWarnings("unchecked")
|
||||
List<Transform> transforms = ref.getTransforms();
|
||||
for (Transform transform : transforms) {
|
||||
String transformAlg = transform.getAlgorithm();
|
||||
|
@ -58,9 +58,8 @@ public final class DOMXMLSignatureFactory extends XMLSignatureFactory {
|
||||
return new DOMXMLSignature(si, ki, null, null, null);
|
||||
}
|
||||
|
||||
@SuppressWarnings({ "unchecked", "rawtypes" })
|
||||
public XMLSignature newXMLSignature(SignedInfo si, KeyInfo ki,
|
||||
List objects, String id, String signatureValueId) {
|
||||
List<? extends XMLObject> objects, String id, String signatureValueId) {
|
||||
return new DOMXMLSignature(si, ki, objects, id, signatureValueId);
|
||||
}
|
||||
|
||||
@ -68,16 +67,14 @@ public final class DOMXMLSignatureFactory extends XMLSignatureFactory {
|
||||
return newReference(uri, dm, null, null, null);
|
||||
}
|
||||
|
||||
@SuppressWarnings({ "unchecked", "rawtypes" })
|
||||
public Reference newReference(String uri, DigestMethod dm, List transforms,
|
||||
String type, String id) {
|
||||
public Reference newReference(String uri, DigestMethod dm,
|
||||
List<? extends Transform> transforms, String type, String id) {
|
||||
return new DOMReference(uri, type, dm, transforms, id, getProvider());
|
||||
}
|
||||
|
||||
@SuppressWarnings({ "unchecked", "rawtypes" })
|
||||
public Reference newReference(String uri, DigestMethod dm,
|
||||
List appliedTransforms, Data result, List transforms, String type,
|
||||
String id) {
|
||||
List<? extends Transform> appliedTransforms, Data result,
|
||||
List<? extends Transform> transforms, String type, String id) {
|
||||
if (appliedTransforms == null) {
|
||||
throw new NullPointerException("appliedTransforms cannot be null");
|
||||
}
|
||||
@ -91,9 +88,9 @@ public final class DOMXMLSignatureFactory extends XMLSignatureFactory {
|
||||
(uri, type, dm, appliedTransforms, result, transforms, id, getProvider());
|
||||
}
|
||||
|
||||
@SuppressWarnings({ "unchecked", "rawtypes" })
|
||||
public Reference newReference(String uri, DigestMethod dm, List transforms,
|
||||
String type, String id, byte[] digestValue) {
|
||||
public Reference newReference(String uri, DigestMethod dm,
|
||||
List<? extends Transform> transforms, String type, String id,
|
||||
byte[] digestValue) {
|
||||
if (digestValue == null) {
|
||||
throw new NullPointerException("digestValue cannot be null");
|
||||
}
|
||||
@ -101,43 +98,38 @@ public final class DOMXMLSignatureFactory extends XMLSignatureFactory {
|
||||
(uri, type, dm, null, null, transforms, id, digestValue, getProvider());
|
||||
}
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
public SignedInfo newSignedInfo(CanonicalizationMethod cm,
|
||||
SignatureMethod sm, List references) {
|
||||
SignatureMethod sm, List<? extends Reference> references) {
|
||||
return newSignedInfo(cm, sm, references, null);
|
||||
}
|
||||
|
||||
@SuppressWarnings({ "unchecked", "rawtypes" })
|
||||
public SignedInfo newSignedInfo(CanonicalizationMethod cm,
|
||||
SignatureMethod sm, List references, String id) {
|
||||
SignatureMethod sm, List<? extends Reference> references, String id) {
|
||||
return new DOMSignedInfo(cm, sm, references, id);
|
||||
}
|
||||
|
||||
// Object factory methods
|
||||
@SuppressWarnings({ "unchecked", "rawtypes" })
|
||||
public XMLObject newXMLObject(List content, String id, String mimeType,
|
||||
String encoding) {
|
||||
public XMLObject newXMLObject(List<? extends XMLStructure> content,
|
||||
String id, String mimeType, String encoding) {
|
||||
return new DOMXMLObject(content, id, mimeType, encoding);
|
||||
}
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
public Manifest newManifest(List references) {
|
||||
public Manifest newManifest(List<? extends Reference> references) {
|
||||
return newManifest(references, null);
|
||||
}
|
||||
|
||||
@SuppressWarnings({ "unchecked", "rawtypes" })
|
||||
public Manifest newManifest(List references, String id) {
|
||||
public Manifest newManifest(List<? extends Reference> references,
|
||||
String id) {
|
||||
return new DOMManifest(references, id);
|
||||
}
|
||||
|
||||
@SuppressWarnings({ "unchecked", "rawtypes" })
|
||||
public SignatureProperties newSignatureProperties(List props, String id) {
|
||||
public SignatureProperties newSignatureProperties(
|
||||
List<? extends SignatureProperty> props, String id) {
|
||||
return new DOMSignatureProperties(props, id);
|
||||
}
|
||||
|
||||
@SuppressWarnings({ "unchecked", "rawtypes" })
|
||||
public SignatureProperty newSignatureProperty
|
||||
(List info, String target, String id) {
|
||||
(List<? extends XMLStructure> info, String target, String id) {
|
||||
return new DOMSignatureProperty(info, target, id);
|
||||
}
|
||||
|
||||
|
@ -133,7 +133,6 @@ public final class DOMXPathFilter2Transform extends ApacheTransform {
|
||||
String prefix = DOMUtils.getNSPrefix(context, Transform.XPATH2);
|
||||
String qname = (prefix == null || prefix.length() == 0)
|
||||
? "xmlns" : "xmlns:" + prefix;
|
||||
@SuppressWarnings("unchecked")
|
||||
List<XPathType> xpathList = xp.getXPathList();
|
||||
for (XPathType xpathType : xpathList) {
|
||||
Element elem = DOMUtils.createElement(ownerDoc, "XPath",
|
||||
@ -146,7 +145,6 @@ public final class DOMXPathFilter2Transform extends ApacheTransform {
|
||||
Transform.XPATH2);
|
||||
|
||||
// add namespace attributes, if necessary
|
||||
@SuppressWarnings("unchecked")
|
||||
Set<Map.Entry<String, String>> entries =
|
||||
xpathType.getNamespaceMap().entrySet();
|
||||
for (Map.Entry<String, String> entry : entries) {
|
||||
|
@ -99,7 +99,6 @@ public final class DOMXPathTransform extends ApacheTransform {
|
||||
xpathElem.appendChild(ownerDoc.createTextNode(xp.getXPath()));
|
||||
|
||||
// add namespace attributes, if necessary
|
||||
@SuppressWarnings("unchecked")
|
||||
Set<Map.Entry<String, String>> entries =
|
||||
xp.getNamespaceMap().entrySet();
|
||||
for (Map.Entry<String, String> entry : entries) {
|
||||
|
@ -70,10 +70,10 @@ public final class Utils {
|
||||
* @param i the Iterator
|
||||
* @return the Set of Nodes
|
||||
*/
|
||||
static Set<Node> toNodeSet(Iterator<Node> i) {
|
||||
static Set<Node> toNodeSet(Iterator<?> i) {
|
||||
Set<Node> nodeSet = new HashSet<Node>();
|
||||
while (i.hasNext()) {
|
||||
Node n = i.next();
|
||||
Node n = (Node)i.next();
|
||||
nodeSet.add(n);
|
||||
// insert attributes nodes to comply with XPath
|
||||
if (n.getNodeType() == Node.ELEMENT_NODE) {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1998, 2014, 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 @@ struct PacketList {
|
||||
|
||||
static volatile struct PacketList *cmdQueue;
|
||||
static jrawMonitorID cmdQueueLock;
|
||||
static jrawMonitorID resumeLock;
|
||||
static jrawMonitorID vmDeathLock;
|
||||
static jboolean transportError;
|
||||
|
||||
static jboolean
|
||||
@ -60,28 +60,17 @@ lastCommand(jdwpCmdPacket *cmd)
|
||||
}
|
||||
}
|
||||
|
||||
static jboolean
|
||||
resumeCommand(jdwpCmdPacket *cmd)
|
||||
{
|
||||
if ( (cmd->cmdSet == JDWP_COMMAND_SET(VirtualMachine)) &&
|
||||
(cmd->cmd == JDWP_COMMAND(VirtualMachine, Resume)) ) {
|
||||
return JNI_TRUE;
|
||||
} else {
|
||||
return JNI_FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
debugLoop_initialize(void)
|
||||
{
|
||||
resumeLock = debugMonitorCreate("JDWP Resume Lock");
|
||||
vmDeathLock = debugMonitorCreate("JDWP VM_DEATH Lock");
|
||||
}
|
||||
|
||||
void
|
||||
debugLoop_sync(void)
|
||||
{
|
||||
debugMonitorEnter(resumeLock);
|
||||
debugMonitorExit(resumeLock);
|
||||
debugMonitorEnter(vmDeathLock);
|
||||
debugMonitorExit(vmDeathLock);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -136,14 +125,14 @@ debugLoop_run(void)
|
||||
jboolean replyToSender = JNI_TRUE;
|
||||
|
||||
/*
|
||||
* For VirtualMachine.Resume commands we hold the resumeLock
|
||||
* For VirtualMachine commands we hold the vmDeathLock
|
||||
* while executing and replying to the command. This ensures
|
||||
* that a Resume after VM_DEATH will be allowed to complete
|
||||
* that a VM command after VM_DEATH will be allowed to complete
|
||||
* before the thread posting the VM_DEATH continues VM
|
||||
* termination.
|
||||
*/
|
||||
if (resumeCommand(cmd)) {
|
||||
debugMonitorEnter(resumeLock);
|
||||
if (cmd->cmdSet == JDWP_COMMAND_SET(VirtualMachine)){
|
||||
debugMonitorEnter(vmDeathLock);
|
||||
}
|
||||
|
||||
/* Initialize the input and output streams */
|
||||
@ -181,10 +170,10 @@ debugLoop_run(void)
|
||||
}
|
||||
|
||||
/*
|
||||
* Release the resumeLock as the reply has been posted.
|
||||
* Release the vmDeathLock as the reply has been posted.
|
||||
*/
|
||||
if (resumeCommand(cmd)) {
|
||||
debugMonitorExit(resumeLock);
|
||||
if (cmd->cmdSet == JDWP_COMMAND_SET(VirtualMachine)){
|
||||
debugMonitorExit(vmDeathLock);
|
||||
}
|
||||
|
||||
inStream_destroy(&in);
|
||||
|
@ -127,6 +127,10 @@
|
||||
# 8058536
|
||||
java/lang/instrument/NativeMethodPrefixAgent.java generic-all
|
||||
|
||||
# 8061177
|
||||
java/lang/instrument/RedefineBigClass.sh generic-all
|
||||
java/lang/instrument/RetransformBigClass.sh generic-all
|
||||
|
||||
############################################################################
|
||||
|
||||
# jdk_management
|
||||
|
@ -31,7 +31,7 @@
|
||||
* @build TestMethods
|
||||
* @build LambdaFormTestCase
|
||||
* @build LFGarbageCollectedTest
|
||||
* @run main/othervm/timeout=600 -Djava.lang.invoke.MethodHandle.USE_LF_EDITOR=true -DtestLimit=150 LFGarbageCollectedTest
|
||||
* @run main/othervm LFGarbageCollectedTest
|
||||
*/
|
||||
|
||||
import java.lang.invoke.MethodHandle;
|
||||
|
@ -31,7 +31,7 @@
|
||||
* @build LambdaFormTestCase
|
||||
* @build LFCachingTestCase
|
||||
* @build LFMultiThreadCachingTest
|
||||
* @run main/othervm/timeout=300 -Djava.lang.invoke.MethodHandle.USE_LF_EDITOR=true LFMultiThreadCachingTest
|
||||
* @run main/othervm LFMultiThreadCachingTest
|
||||
*/
|
||||
|
||||
import java.lang.invoke.MethodHandle;
|
||||
|
@ -31,7 +31,7 @@
|
||||
* @build LambdaFormTestCase
|
||||
* @build LFCachingTestCase
|
||||
* @build LFSingleThreadCachingTest
|
||||
* @run main/othervm/timeout=300 -Djava.lang.invoke.MethodHandle.USE_LF_EDITOR=true LFSingleThreadCachingTest
|
||||
* @run main/othervm LFSingleThreadCachingTest
|
||||
*/
|
||||
|
||||
import java.lang.invoke.MethodHandle;
|
||||
|
@ -27,6 +27,7 @@ import java.lang.management.ManagementFactory;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.Collection;
|
||||
import java.util.function.Function;
|
||||
import jdk.testlibrary.Utils;
|
||||
|
||||
/**
|
||||
* Lambda forms caching test case class. Contains all necessary test routines to
|
||||
@ -41,6 +42,7 @@ public abstract class LambdaFormTestCase {
|
||||
private final static String INTERNAL_FORM_METHOD_NAME = "internalForm";
|
||||
private static final double ITERATIONS_TO_CODE_CACHE_SIZE_RATIO
|
||||
= 45 / (128.0 * 1024 * 1024);
|
||||
private static final long TIMEOUT = Utils.adjustTimeout(Utils.DEFAULT_TEST_TIMEOUT);
|
||||
|
||||
/**
|
||||
* Reflection link to {@code j.l.i.MethodHandle.internalForm} method. It is
|
||||
@ -120,6 +122,7 @@ public abstract class LambdaFormTestCase {
|
||||
System.out.printf("Number of iterations is set to %d (%d cases)%n",
|
||||
iterations, iterations * testCaseNum);
|
||||
System.out.flush();
|
||||
long startTime = System.currentTimeMillis();
|
||||
for (long i = 0; i < iterations; i++) {
|
||||
System.err.println(String.format("Iteration %d:", i));
|
||||
for (TestMethods testMethod : testMethods) {
|
||||
@ -137,6 +140,14 @@ public abstract class LambdaFormTestCase {
|
||||
}
|
||||
testCounter++;
|
||||
}
|
||||
long passedTime = System.currentTimeMillis() - startTime;
|
||||
long avgIterTime = passedTime / (i + 1);
|
||||
long remainTime = TIMEOUT - passedTime;
|
||||
if (avgIterTime > 2 * remainTime) {
|
||||
System.err.printf("Stopping iterations because of lack of time.%n"
|
||||
+ "Increase timeout factor for more iterations.%n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!passed) {
|
||||
throw new Error(String.format("%d of %d test cases FAILED! %n"
|
||||
|
@ -81,10 +81,23 @@ public class BadClassFiles {
|
||||
0,25,0,0,0,3,0,0,
|
||||
0,1,-79,0,0,0,1,0,
|
||||
7,0,0,0,6,0,1,0,
|
||||
0,0,2,0,10,0,0,0,
|
||||
9,2,0,11,0,0,0,12,
|
||||
0,0,0,1,0,13,0,0,
|
||||
0,2,0,14
|
||||
0,0,2,
|
||||
// Method Parameters attribute here
|
||||
0,10,
|
||||
// attribute_length
|
||||
0,0,0,9,
|
||||
// parameter_count
|
||||
2,
|
||||
// first parameter name
|
||||
0,11,
|
||||
// first parameter modifiers
|
||||
0,0,
|
||||
// second parameter name
|
||||
0,12,
|
||||
// second parameter modifiers
|
||||
0,0,
|
||||
// end attribute
|
||||
0,1,0,13,0,0,0,2,0,14
|
||||
};
|
||||
|
||||
private static final byte[] BadModifiers_bytes = {
|
||||
@ -121,10 +134,23 @@ public class BadClassFiles {
|
||||
25,0,0,0,3,0,0,0,
|
||||
1,-79,0,0,0,1,0,7,
|
||||
0,0,0,6,0,1,0,0,
|
||||
0,2,0,10,0,0,0,9,
|
||||
2,0,11,0,51,51,12,0,
|
||||
0,0,1,0,13,0,0,0,
|
||||
2,0,14
|
||||
0,2,
|
||||
// Method Parameters attribute here
|
||||
0,10,
|
||||
// attribute_length
|
||||
0,0,0,9,
|
||||
// parameter_count
|
||||
2,
|
||||
// first parameter name
|
||||
0,11,
|
||||
// first parameter modifiers
|
||||
51,51,
|
||||
// second parameter name
|
||||
0,12,
|
||||
// second parameter modifiers
|
||||
0,0,
|
||||
// end attribute
|
||||
0,1,0,13,0,0,0,2,0,14
|
||||
};
|
||||
|
||||
private static final byte[] BadNameIndex_bytes = {
|
||||
@ -161,10 +187,23 @@ public class BadClassFiles {
|
||||
25,0,0,0,3,0,0,0,
|
||||
1,-79,0,0,0,1,0,7,
|
||||
0,0,0,6,0,1,0,0,
|
||||
0,2,0,10,0,0,0,9,
|
||||
2,0,1,0,0,0,12,0,
|
||||
0,0,1,0,13,0,0,0,
|
||||
2,0,14
|
||||
0,2,
|
||||
// Method Parameters attribute here
|
||||
0,10,
|
||||
// attribute_length
|
||||
0,0,0,9,
|
||||
// parameter_count
|
||||
2,
|
||||
// first parameter name
|
||||
0,1,
|
||||
// first parameter modifiers
|
||||
0,0,
|
||||
// second parameter name
|
||||
0,12,
|
||||
// second parameter modifiers
|
||||
0,0,
|
||||
// end attribute
|
||||
0,1,0,13,0,0,0,2,0,14
|
||||
};
|
||||
|
||||
private static final byte[] NameIndexOutOfBounds_bytes = {
|
||||
@ -203,11 +242,23 @@ public class BadClassFiles {
|
||||
25,0,0,0,3,0,0,0,
|
||||
1,-79,0,0,0,1,0,7,
|
||||
0,0,0,6,0,1,0,0,
|
||||
0,2,0,10,0,0,0,9,
|
||||
2,0,-1,0,0,0,12,0,
|
||||
0,0,1,0,13,0,0,0,
|
||||
2,0,14
|
||||
|
||||
0,2,
|
||||
// Method Parameters attribute here
|
||||
0,10,
|
||||
// attribute_length
|
||||
0,0,0,9,
|
||||
// parameter_count
|
||||
2,
|
||||
// first parameter name
|
||||
0,-1,
|
||||
// first parameter modifiers
|
||||
0,0,
|
||||
// second parameter name
|
||||
0,12,
|
||||
// second parameter modifiers
|
||||
0,0,
|
||||
// end attribute
|
||||
0,1,0,13,0,0,0,2,0,14
|
||||
};
|
||||
|
||||
private static final byte[] ExtraParams_bytes = {
|
||||
@ -244,10 +295,26 @@ public class BadClassFiles {
|
||||
0,0,3,0,0,0,1,-79,
|
||||
0,0,0,1,0,7,0,0,
|
||||
0,6,0,1,0,0,0,2,
|
||||
0,10,0,0,0,13,3,0,
|
||||
11,0,0,0,12,0,0,0,
|
||||
11,0,0,0,1,0,13,0,
|
||||
0,0,2,0,14
|
||||
// Method Parameters attribute here
|
||||
0,10,
|
||||
// attribute_length
|
||||
0,0,0,13,
|
||||
// parameter_count
|
||||
3,
|
||||
// first parameter name
|
||||
0,11,
|
||||
// first parameter modifiers
|
||||
0,0,
|
||||
// second parameter name
|
||||
0,12,
|
||||
// second parameter modifiers
|
||||
0,0,
|
||||
// third parameter name
|
||||
0,11,
|
||||
// third parameter modifiers
|
||||
0,0,
|
||||
// end attribute
|
||||
0,1,0,13,0,0,0,2,0,14
|
||||
};
|
||||
|
||||
private static final byte[] BadName1_bytes = {
|
||||
@ -283,10 +350,23 @@ public class BadClassFiles {
|
||||
25,0,0,0,3,0,0,0,
|
||||
1,-79,0,0,0,1,0,7,
|
||||
0,0,0,6,0,1,0,0,
|
||||
0,2,0,10,0,0,0,9,
|
||||
2,0,11,0,0,0,12,0,
|
||||
0,0,1,0,13,0,0,0,
|
||||
2,0,14
|
||||
0,2,
|
||||
// Method Parameters attribute here
|
||||
0,10,
|
||||
// attribute_length
|
||||
0,0,0,9,
|
||||
// parameter_count
|
||||
2,
|
||||
// first parameter name
|
||||
0,11,
|
||||
// first parameter modifiers
|
||||
0,0,
|
||||
// second parameter name
|
||||
0,12,
|
||||
// second parameter modifiers
|
||||
0,0,
|
||||
// end attribute
|
||||
0,1,0,13,0,0,0,2,0,14
|
||||
};
|
||||
|
||||
private static final byte[] BadName2_bytes = {
|
||||
@ -322,10 +402,23 @@ public class BadClassFiles {
|
||||
25,0,0,0,3,0,0,0,
|
||||
1,-79,0,0,0,1,0,7,
|
||||
0,0,0,6,0,1,0,0,
|
||||
0,2,0,10,0,0,0,9,
|
||||
2,0,11,0,0,0,12,0,
|
||||
0,0,1,0,13,0,0,0,
|
||||
2,0,14
|
||||
0,2,
|
||||
// Method Parameters attribute here
|
||||
0,10,
|
||||
// attribute_length
|
||||
0,0,0,9,
|
||||
// parameter_count
|
||||
2,
|
||||
// first parameter name
|
||||
0,11,
|
||||
// first parameter modifiers
|
||||
0,0,
|
||||
// second parameter name
|
||||
0,12,
|
||||
// second parameter modifiers
|
||||
0,0,
|
||||
// end attribute
|
||||
0,1,0,13,0,0,0,2,0,14
|
||||
};
|
||||
|
||||
private static final byte[] BadName3_bytes = {
|
||||
@ -361,10 +454,23 @@ public class BadClassFiles {
|
||||
25,0,0,0,3,0,0,0,
|
||||
1,-79,0,0,0,1,0,7,
|
||||
0,0,0,6,0,1,0,0,
|
||||
0,2,0,10,0,0,0,9,
|
||||
2,0,11,0,0,0,12,0,
|
||||
0,0,1,0,13,0,0,0,
|
||||
2,0,14
|
||||
0,2,
|
||||
// Method Parameters attribute here
|
||||
0,10,
|
||||
// attribute_length
|
||||
0,0,0,9,
|
||||
// parameter_count
|
||||
2,
|
||||
// first parameter name
|
||||
0,11,
|
||||
// first parameter modifiers
|
||||
0,0,
|
||||
// second parameter name
|
||||
0,12,
|
||||
// second parameter modifiers
|
||||
0,0,
|
||||
// end attribute
|
||||
0,1,0,13,0,0,0,2,0,14
|
||||
};
|
||||
|
||||
private static final byte[] BadName4_bytes = {
|
||||
@ -400,10 +506,68 @@ public class BadClassFiles {
|
||||
25,0,0,0,3,0,0,0,
|
||||
1,-79,0,0,0,1,0,7,
|
||||
0,0,0,6,0,1,0,0,
|
||||
0,2,0,10,0,0,0,9,
|
||||
2,0,11,0,0,0,12,0,
|
||||
0,0,1,0,13,0,0,0,
|
||||
2,0,14
|
||||
0,2,
|
||||
// Method Parameters attribute here
|
||||
0,10,
|
||||
// attribute_length
|
||||
0,0,0,9,
|
||||
// parameter_count
|
||||
2,
|
||||
// first parameter name
|
||||
0,11,
|
||||
// first parameter modifiers
|
||||
0,0,
|
||||
// second parameter name
|
||||
0,12,
|
||||
// second parameter modifiers
|
||||
0,0,
|
||||
// end attribute
|
||||
0,1,0,13,0,0,0,2,0,14
|
||||
};
|
||||
|
||||
private static final byte[] BadParams_bytes = {
|
||||
-54,-2,-70,-66,0,0,0,
|
||||
52,0,18,10,0,3,0,15,
|
||||
7,0,16,7,0,17,1,0,6,
|
||||
60,105,110,105,116,62,
|
||||
1,0,3,40,41,86,1,0,4,
|
||||
67,111,100,101,1,0,15,
|
||||
76,105,110,101,78,117,
|
||||
109,98,101,114,84,97,
|
||||
98,108,101,1,0,1,109,
|
||||
1,0,5,40,73,73,41,86,
|
||||
1,0,16,77,101,116,104,
|
||||
111,100,80,97,114,97,
|
||||
109,101,116,101,114,115,
|
||||
1,0,1,97,1,0,1,98,1,
|
||||
0,10,83,111,117,114,
|
||||
99,101,70,105,108,101,
|
||||
1,0,14,66,97,100,80,97,
|
||||
114,97,109,115,46,106,
|
||||
97,118,97,12,0,4,0,5,
|
||||
1,0,9,66,97,100,80,97,
|
||||
114,97,109,115,1,0,16,
|
||||
106,97,118,97,47,108,97,
|
||||
110,103,47,79,98,106,
|
||||
101,99,116,0,33,0,
|
||||
2,0,3,0,0,0,0,0,2,
|
||||
0,1,0,4,0,5,0,1,0,
|
||||
6,0,0,0,29,0,1,0,1,
|
||||
0,0,0,5,42,-73,0,1,
|
||||
-79,0,0,0,1,0,7,0,0,
|
||||
0,6,0,1,0,0,0,1,0,1,
|
||||
0,8,0,9,0,2,0,6,0,0,
|
||||
0,25,0,0,0,3,0,0,0,1,
|
||||
-79,0,0,0,1,0,7,0,0,
|
||||
0,6,0,1,0,0,0,2,
|
||||
// Method Parameters attribute here
|
||||
0,10,
|
||||
// attribute_length
|
||||
0,0,0,1,
|
||||
// parameter_count
|
||||
0,
|
||||
// end attribute
|
||||
0,1,0,13,0,0,0,2,0,14
|
||||
};
|
||||
|
||||
private static class InMemoryClassLoader extends ClassLoader {
|
||||
@ -423,6 +587,7 @@ public class BadClassFiles {
|
||||
loader.defineClass("BadNameIndex", BadNameIndex_bytes),
|
||||
loader.defineClass("NameIndexOutOfBounds", NameIndexOutOfBounds_bytes),
|
||||
loader.defineClass("ExtraParams", ExtraParams_bytes),
|
||||
loader.defineClass("BadParams", BadParams_bytes),
|
||||
// Name with .
|
||||
loader.defineClass("BadName1", BadName1_bytes),
|
||||
// Name with [
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user