--- a/.hgtags Wed Feb 20 17:00:40 2019 +0530
+++ b/.hgtags Fri Feb 22 12:05:05 2019 +0530
@@ -543,3 +543,6 @@
021917019cda1c0c5853255322274f37693a2431 jdk-13+7
b5f7bb57de2f797be34f6c75d45c3245ad37ab97 jdk-12+31
a535ba736cabc6886acdff36de3a096c46e5ddc5 jdk-13+8
+4ce47bc1fb92cf94c6e3d1f49d582f02dcb851ab jdk-12+32
+c081f3ea6b9300265a4a34e38f970b1e3ddaae9f jdk-13+9
+b67884871b5fff79c5ef3eb8ac74dd48d71ea9b1 jdk-12+33
--- a/make/RunTests.gmk Wed Feb 20 17:00:40 2019 +0530
+++ b/make/RunTests.gmk Fri Feb 22 12:05:05 2019 +0530
@@ -112,6 +112,9 @@
GTEST_VARIANTS := $(strip $(patsubst $(TEST_IMAGE_DIR)/hotspot/gtest/%, %, \
$(GTEST_LAUNCHER_DIRS)))
+COV_ENVIRONMENT :=
+JTREG_COV_OPTIONS :=
+
ifeq ($(TEST_OPTS_JCOV), true)
JCOV_OUTPUT_DIR := $(TEST_RESULTS_DIR)/jcov-output
JCOV_GRABBER_LOG := $(JCOV_OUTPUT_DIR)/grabber.log
@@ -122,12 +125,18 @@
# Replace our normal test JDK with the JCov image.
JDK_UNDER_TEST := $(JCOV_IMAGE_DIR)
- JCOV_ENVIRONMENT := JAVA_TOOL_OPTIONS="$(JCOV_MEM_OPTIONS)" \
+ COV_ENVIRONMENT += JAVA_TOOL_OPTIONS="$(JCOV_MEM_OPTIONS)" \
_JAVA_OPTIONS="$(JCOV_MEM_OPTIONS)"
- JTREG_JCOV_OPTIONS := -e:JAVA_TOOL_OPTIONS='$(JCOV_MEM_OPTIONS)' \
+ JTREG_COV_OPTIONS += -e:JAVA_TOOL_OPTIONS='$(JCOV_MEM_OPTIONS)' \
-e:_JAVA_OPTIONS='$(JCOV_MEM_OPTIONS)'
endif
+ifeq ($(GCOV_ENABLED), true)
+ GCOV_OUTPUT_DIR := $(TEST_RESULTS_DIR)/gcov-output
+ COV_ENVIRONMENT += GCOV_PREFIX="$(GCOV_OUTPUT_DIR)"
+ JTREG_COV_OPTIONS += -e:GCOV_PREFIX="$(GCOV_OUTPUT_DIR)"
+endif
+
################################################################################
# Optionally create AOT libraries for specified modules before running tests.
# Note, this could not be done during JDK build time.
@@ -170,6 +179,7 @@
$$(call LogWarn, Generating $$(patsubst $$(OUTPUTDIR)/%, %, $$@))
$$(call MakeTargetDir)
$$(call ExecuteWithLog, $$@, \
+ $((COV_ENVIRONMENT) \
$$(FIXPATH) $$(JDK_UNDER_TEST)/bin/jaotc \
$$($1_JAOTC_OPTS) --output $$@ --module $$($1_MODULE) \
)
@@ -658,6 +668,8 @@
# Current tests needs to open java.io
$1_MICRO_JAVA_OPTIONS += --add-opens=java.base/java.io=ALL-UNNAMED
+ # Set library path for native dependencies
+ $1_MICRO_JAVA_OPTIONS += -Djava.library.path=$$(TEST_IMAGE_DIR)/micro/native
# Save output as JSON or CSV file
ifneq ($$(MICRO_RESULTS_FORMAT), )
@@ -690,7 +702,8 @@
$$(call LogWarn, Running test '$$($1_TEST)')
$$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR))
$$(call ExecuteWithLog, $$($1_TEST_SUPPORT_DIR)/micro, \
- $$($1_MICRO_TEST_JDK)/bin/java $$($1_MICRO_JAVA_OPTIONS) -jar $$($1_MICRO_BENCHMARKS_JAR) \
+ $$(FIXPATH) $$($1_MICRO_TEST_JDK)/bin/java $$($1_MICRO_JAVA_OPTIONS) \
+ -jar $$($1_MICRO_BENCHMARKS_JAR) \
$$($1_MICRO_ITER) $$($1_MICRO_FORK) $$($1_MICRO_TIME) \
$$($1_MICRO_WARMUP_ITER) $$($1_MICRO_WARMUP_TIME) \
$$($1_MICRO_VM_OPTIONS) $$($1_MICRO_BASIC_OPTIONS) $$(MICRO_OPTIONS) \
@@ -904,7 +917,7 @@
$$(call LogWarn, Running test '$$($1_TEST)')
$$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR))
$$(call ExecuteWithLog, $$($1_TEST_SUPPORT_DIR)/jtreg, \
- $$(JCOV_ENVIRONMENT) \
+ $$(COV_ENVIRONMENT) \
$$(JAVA) $$($1_JTREG_LAUNCHER_OPTIONS) \
-Dprogram=jtreg -jar $$(JT_HOME)/lib/jtreg.jar \
$$($1_JTREG_BASIC_OPTIONS) \
@@ -914,7 +927,7 @@
-workDir:$$($1_TEST_SUPPORT_DIR) \
$$(JTREG_OPTIONS) \
$$(JTREG_FAILURE_HANDLER_OPTIONS) \
- $$(JTREG_JCOV_OPTIONS) \
+ $$(JTREG_COV_OPTIONS) \
$$($1_TEST_NAME) \
&& $$(ECHO) $$$$? > $$($1_EXITCODE) \
|| $$(ECHO) $$$$? > $$($1_EXITCODE) \
--- a/make/autoconf/basics.m4 Wed Feb 20 17:00:40 2019 +0530
+++ b/make/autoconf/basics.m4 Fri Feb 22 12:05:05 2019 +0530
@@ -618,14 +618,6 @@
BASIC_PATH_PROGS(CPIO, [cpio bsdcpio])
BASIC_PATH_PROGS(NICE, nice)
- BASIC_PATH_PROGS(PANDOC, pandoc)
- if test -n "$PANDOC"; then
- ENABLE_PANDOC="true"
- else
- ENABLE_PANDOC="false"
- fi
- AC_SUBST(ENABLE_PANDOC)
-
BASIC_PATH_PROGS(LSB_RELEASE, lsb_release)
BASIC_PATH_PROGS(CMD, [cmd.exe /mnt/c/Windows/System32/cmd.exe])
])
@@ -1193,6 +1185,7 @@
BASIC_CHECK_FIND_DELETE
BASIC_CHECK_TAR
BASIC_CHECK_GREP
+ BASIC_SETUP_PANDOC
# These tools might not be installed by default,
# need hint on how to install them.
@@ -1379,6 +1372,34 @@
################################################################################
#
+# Setup Pandoc
+#
+AC_DEFUN_ONCE([BASIC_SETUP_PANDOC],
+[
+ BASIC_PATH_PROGS(PANDOC, pandoc)
+
+ PANDOC_MARKDOWN_FLAG="markdown"
+ if test -n "$PANDOC"; then
+ AC_MSG_CHECKING(if the pandoc smart extension needs to be disabled for markdown)
+ if $PANDOC --list-extensions | $GREP -q '\+smart'; then
+ AC_MSG_RESULT([yes])
+ PANDOC_MARKDOWN_FLAG="markdown-smart"
+ else
+ AC_MSG_RESULT([no])
+ fi
+ fi
+
+ if test -n "$PANDOC"; then
+ ENABLE_PANDOC="true"
+ else
+ ENABLE_PANDOC="false"
+ fi
+ AC_SUBST(ENABLE_PANDOC)
+ AC_SUBST(PANDOC_MARKDOWN_FLAG)
+])
+
+################################################################################
+#
# Default make target
#
AC_DEFUN_ONCE([BASIC_SETUP_DEFAULT_MAKE_TARGET],
--- a/make/autoconf/flags-cflags.m4 Wed Feb 20 17:00:40 2019 +0530
+++ b/make/autoconf/flags-cflags.m4 Fri Feb 22 12:05:05 2019 +0530
@@ -121,7 +121,11 @@
# -g0 enables debug symbols without disabling inlining.
CFLAGS_DEBUG_SYMBOLS="-g0 -xs"
elif test "x$TOOLCHAIN_TYPE" = xxlc; then
- CFLAGS_DEBUG_SYMBOLS="-g"
+ if test "x$XLC_USES_CLANG" = xtrue; then
+ CFLAGS_DEBUG_SYMBOLS="-g1"
+ else
+ CFLAGS_DEBUG_SYMBOLS="-g"
+ fi
elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
CFLAGS_DEBUG_SYMBOLS="-Z7 -d2Zi+"
fi
--- a/make/autoconf/jdk-options.m4 Wed Feb 20 17:00:40 2019 +0530
+++ b/make/autoconf/jdk-options.m4 Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2019, 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
@@ -364,7 +364,7 @@
################################################################################
#
-# Gcov coverage data for hotspot
+# Native and Java code coverage
#
AC_DEFUN_ONCE([JDKOPT_SETUP_CODE_COVERAGE],
[
@@ -372,23 +372,26 @@
[enable native compilation with code coverage data@<:@disabled@:>@])])
GCOV_ENABLED="false"
if test "x$enable_native_coverage" = "xyes"; then
- if test "x$TOOLCHAIN_TYPE" = "xgcc"; then
- AC_MSG_CHECKING([if native coverage is enabled])
- AC_MSG_RESULT([yes])
- GCOV_CFLAGS="-fprofile-arcs -ftest-coverage -fno-inline"
- GCOV_LDFLAGS="-fprofile-arcs"
- JVM_CFLAGS="$JVM_CFLAGS $GCOV_CFLAGS"
- JVM_LDFLAGS="$JVM_LDFLAGS $GCOV_LDFLAGS"
- CFLAGS_JDKLIB="$CFLAGS_JDKLIB $GCOV_CFLAGS"
- CFLAGS_JDKEXE="$CFLAGS_JDKEXE $GCOV_CFLAGS"
- CXXFLAGS_JDKLIB="$CXXFLAGS_JDKLIB $GCOV_CFLAGS"
- CXXFLAGS_JDKEXE="$CXXFLAGS_JDKEXE $GCOV_CFLAGS"
- LDFLAGS_JDKLIB="$LDFLAGS_JDKLIB $GCOV_LDFLAGS"
- LDFLAGS_JDKEXE="$LDFLAGS_JDKEXE $GCOV_LDFLAGS"
- GCOV_ENABLED="true"
- else
- AC_MSG_ERROR([--enable-native-coverage only works with toolchain type gcc])
- fi
+ case $TOOLCHAIN_TYPE in
+ gcc | clang)
+ AC_MSG_CHECKING([if native coverage is enabled])
+ AC_MSG_RESULT([yes])
+ GCOV_CFLAGS="-fprofile-arcs -ftest-coverage -fno-inline"
+ GCOV_LDFLAGS="-fprofile-arcs"
+ JVM_CFLAGS="$JVM_CFLAGS $GCOV_CFLAGS"
+ JVM_LDFLAGS="$JVM_LDFLAGS $GCOV_LDFLAGS"
+ CFLAGS_JDKLIB="$CFLAGS_JDKLIB $GCOV_CFLAGS"
+ CFLAGS_JDKEXE="$CFLAGS_JDKEXE $GCOV_CFLAGS"
+ CXXFLAGS_JDKLIB="$CXXFLAGS_JDKLIB $GCOV_CFLAGS"
+ CXXFLAGS_JDKEXE="$CXXFLAGS_JDKEXE $GCOV_CFLAGS"
+ LDFLAGS_JDKLIB="$LDFLAGS_JDKLIB $GCOV_LDFLAGS"
+ LDFLAGS_JDKEXE="$LDFLAGS_JDKEXE $GCOV_LDFLAGS"
+ GCOV_ENABLED="true"
+ ;;
+ *)
+ AC_MSG_ERROR([--enable-native-coverage only works with toolchain type gcc or clang])
+ ;;
+ esac
elif test "x$enable_native_coverage" = "xno"; then
AC_MSG_CHECKING([if native coverage is enabled])
AC_MSG_RESULT([no])
--- a/make/autoconf/spec.gmk.in Wed Feb 20 17:00:40 2019 +0530
+++ b/make/autoconf/spec.gmk.in Fri Feb 22 12:05:05 2019 +0530
@@ -774,6 +774,7 @@
UCRT_DLL_DIR:=@UCRT_DLL_DIR@
STLPORT_LIB:=@STLPORT_LIB@
ENABLE_PANDOC:=@ENABLE_PANDOC@
+PANDOC_MARKDOWN_FLAG:=@PANDOC_MARKDOWN_FLAG@
####################################################
#
--- a/make/autoconf/toolchain.m4 Wed Feb 20 17:00:40 2019 +0530
+++ b/make/autoconf/toolchain.m4 Fri Feb 22 12:05:05 2019 +0530
@@ -276,6 +276,20 @@
fi
AC_SUBST(TOOLCHAIN_TYPE)
+ # on AIX, check for xlclang++ on the PATH and TOOLCHAIN_PATH and use it if it is available
+ if test "x$OPENJDK_TARGET_OS" = xaix; then
+ if test "x$TOOLCHAIN_PATH" != x; then
+ XLC_TEST_PATH=${TOOLCHAIN_PATH}/
+ fi
+
+ XLCLANG_VERSION_OUTPUT=`${XLC_TEST_PATH}xlclang++ -qversion 2>&1 | $HEAD -n 1`
+ $ECHO "$XLCLANG_VERSION_OUTPUT" | $GREP "IBM XL C/C++ for AIX" > /dev/null
+ if test $? -eq 0; then
+ AC_MSG_NOTICE([xlclang++ output: $XLCLANG_VERSION_OUTPUT])
+ XLC_USES_CLANG=true
+ fi
+ fi
+
TOOLCHAIN_CC_BINARY_clang="clang"
TOOLCHAIN_CC_BINARY_gcc="gcc"
TOOLCHAIN_CC_BINARY_microsoft="cl$EXE_SUFFIX"
@@ -288,6 +302,14 @@
TOOLCHAIN_CXX_BINARY_solstudio="CC"
TOOLCHAIN_CXX_BINARY_xlc="xlC_r"
+ if test "x$OPENJDK_TARGET_OS" = xaix; then
+ if test "x$XLC_USES_CLANG" = xtrue; then
+ AC_MSG_NOTICE([xlclang++ detected, using it])
+ TOOLCHAIN_CC_BINARY_xlc="xlclang"
+ TOOLCHAIN_CXX_BINARY_xlc="xlclang++"
+ fi
+ fi
+
# Use indirect variable referencing
toolchain_var_name=TOOLCHAIN_DESCRIPTION_$TOOLCHAIN_TYPE
TOOLCHAIN_DESCRIPTION=${!toolchain_var_name}
--- a/make/common/MakeBase.gmk Wed Feb 20 17:00:40 2019 +0530
+++ b/make/common/MakeBase.gmk Fri Feb 22 12:05:05 2019 +0530
@@ -392,9 +392,10 @@
#
# Param 1 - Dirs to find in
# Param 2 - (optional) specialization. Normally "-a \( ... \)" expression.
+ # Param 3 - (optional) options to find.
define CacheFind
$(if $(filter-out $(addsuffix /%,- $(FIND_CACHE_DIRS)) $(FIND_CACHE_DIRS),$1), \
- $(if $(wildcard $1), $(shell $(FIND) $(wildcard $1) \( -type f -o -type l \) $2 \
+ $(if $(wildcard $1), $(shell $(FIND) $3 $(wildcard $1) \( -type f -o -type l \) $2 \
| $(TR) ' ' '?')), \
$(filter $(addsuffix /%,$(patsubst %/,%,$1)) $1,$(FIND_CACHE)))
endef
--- a/make/common/ProcessMarkdown.gmk Wed Feb 20 17:00:40 2019 +0530
+++ b/make/common/ProcessMarkdown.gmk Fri Feb 22 12:05:05 2019 +0530
@@ -80,7 +80,8 @@
$$(call LogInfo, Converting $2 to $$($1_FORMAT))
$$(call MakeDir, $$(SUPPORT_OUTPUTDIR)/markdown $$(dir $$($1_$2_PANDOC_OUTPUT)))
$$(call ExecuteWithLog, $$(SUPPORT_OUTPUTDIR)/markdown/$$($1_$2_MARKER), \
- $$(PANDOC) $$($1_OPTIONS) -f markdown-smart -t $$($1_FORMAT) --standalone \
+ $$(PANDOC) $$($1_OPTIONS) -f $$(PANDOC_MARKDOWN_FLAG) \
+ -t $$($1_FORMAT) --standalone \
$$($1_$2_CSS_OPTION) $$($1_$2_OPTIONS) '$$($1_$2_PANDOC_INPUT)' \
-o '$$($1_$2_PANDOC_OUTPUT)')
ifneq ($$(findstring $$(LOG_LEVEL), debug trace),)
--- a/make/common/ZipArchive.gmk Wed Feb 20 17:00:40 2019 +0530
+++ b/make/common/ZipArchive.gmk Fri Feb 22 12:05:05 2019 +0530
@@ -62,8 +62,9 @@
$1_FIND_LIST := $$($1_SRC)
endif
- # Find all files in the source tree.
- $1_ALL_SRCS := $$(call not-containing,_the.,$$(call CacheFind,$$($1_FIND_LIST)))
+ # Find all files in the source tree. Follow symlinks in this find since that is
+ # what zip does.
+ $1_ALL_SRCS := $$(call not-containing,_the.,$$(call CacheFind,$$($1_FIND_LIST), , -L))
# Filter on suffixes if set
ifneq ($$($1_SUFFIXES),)
@@ -126,10 +127,14 @@
$$($1_ZIP) : $$($1_ALL_SRCS) $$($1_EXTRA_DEPS)
$$(call LogWarn, Updating $$($1_NAME))
$$(call MakeTargetDir)
- $$(foreach s,$$($1_SRC),(cd $$s && $(ZIPEXE) -qru $$($1_ZIP_OPTIONS) $$@ . \
- $$($1_ZIP_INCLUDES) $$($1_ZIP_EXCLUDES) -x \*_the.\* \
- $$($1_ZIP_EXCLUDES_$$s) \
- || test "$$$$?" = "12" )$$(NEWLINE)) true
+ $$(foreach s,$$($1_SRC), $$(call ExecuteWithLog, \
+ $$(SUPPORT_OUTPUTDIR)/zip/$$(patsubst $$(OUTPUTDIR)/%,%, $$@), \
+ (cd $$s && $(ZIPEXE) -qru $$($1_ZIP_OPTIONS) $$@ . \
+ $$($1_ZIP_INCLUDES) $$($1_ZIP_EXCLUDES) -x \*_the.\* \
+ $$($1_ZIP_EXCLUDES_$$s) \
+ || test "$$$$?" = "12" \
+ ))$$(NEWLINE) \
+ ) true \
$(TOUCH) $$@
# Add zip to target list
--- a/make/conf/jib-profiles.js Wed Feb 20 17:00:40 2019 +0530
+++ b/make/conf/jib-profiles.js Fri Feb 22 12:05:05 2019 +0530
@@ -241,7 +241,7 @@
common.main_profile_names = [
"linux-x64", "linux-x86", "macosx-x64", "solaris-x64",
"solaris-sparcv9", "windows-x64", "windows-x86",
- "linux-aarch64", "linux-arm32"
+ "linux-aarch64", "linux-arm32", "linux-ppc64le", "linux-s390x"
];
// These are the base setttings for all the main build profiles.
@@ -464,6 +464,28 @@
"--with-abi-profile=arm-vfp-hflt", "--disable-warnings-as-errors"
],
},
+
+ "linux-ppc64le": {
+ target_os: "linux",
+ target_cpu: "ppc64le",
+ build_cpu: "x64",
+ dependencies: ["devkit", "build_devkit", "cups"],
+ configure_args: [
+ "--openjdk-target=ppc64le-linux-gnu", "--with-freetype=bundled",
+ "--disable-warnings-as-errors"
+ ],
+ },
+
+ "linux-s390x": {
+ target_os: "linux",
+ target_cpu: "s390x",
+ build_cpu: "x64",
+ dependencies: ["devkit", "build_devkit", "cups"],
+ configure_args: [
+ "--openjdk-target=s390x-linux-gnu", "--with-freetype=bundled",
+ "--disable-warnings-as-errors"
+ ],
+ },
};
// Add the base settings to all the main profiles
@@ -499,6 +521,15 @@
profiles[maketestName].default_make_targets = [ "test-make" ];
});
+ // Generate -gcov profiles
+ [ "linux-x64", "macosx-x64" ].forEach(function (name) {
+ var gcovName = name + "-gcov";
+ profiles[gcovName] = clone(profiles[name]);
+ profiles[gcovName].default_make_targets = ["product-bundles", "test-bundles"];
+ profiles[gcovName].configure_args = concat(profiles[gcovName].configure_args,
+ ["--enable-native-coverage", "--disable-warnings-as-errors"]);
+ });
+
// Profiles for building the zero jvm variant. These are used for verification.
var zeroProfiles = {
"linux-x64-zero": {
@@ -626,6 +657,12 @@
},
"linux-arm32": {
platform: "linux-arm32",
+ },
+ "linux-ppc64le": {
+ platform: "linux-ppc64le",
+ },
+ "linux-s390x": {
+ platform: "linux-s390x",
}
}
// Generate common artifacts for all main profiles
@@ -744,6 +781,40 @@
};
});
+ // Artifacts of gcov (native-code-coverage) profiles
+ [ "linux-x64", "macosx-x64" ].forEach(function (name) {
+ var o = artifactData[name]
+ var pf = o.platform
+ var jdk_subdir = (o.jdk_subdir != null ? o.jdk_subdir : "jdk-" + data.version);
+ var jdk_suffix = (o.jdk_suffix != null ? o.jdk_suffix : "tar.gz");
+ var gcovName = name + "-gcov";
+ profiles[gcovName].artifacts = {
+ jdk: {
+ local: "bundles/\\(jdk.*bin." + jdk_suffix + "\\)",
+ remote: [
+ "bundles/" + pf + "/jdk-" + data.version + "_" + pf + "_bin-gcov." + jdk_suffix,
+ ],
+ subdir: jdk_subdir,
+ exploded: "images/jdk",
+ },
+ test: {
+ local: "bundles/\\(jdk.*bin-tests.tar.gz\\)",
+ remote: [
+ "bundles/" + pf + "/jdk-" + data.version + "_" + pf + "_bin-gcov-tests.tar.gz",
+ ],
+ exploded: "images/test"
+ },
+ jdk_symbols: {
+ local: "bundles/\\(jdk.*bin-symbols.tar.gz\\)",
+ remote: [
+ "bundles/" + pf + "/jdk-" + data.version + "_" + pf + "_bin-gcov-symbols.tar.gz",
+ ],
+ subdir: jdk_subdir,
+ exploded: "images/jdk"
+ },
+ };
+ });
+
// Profiles used to run tests.
var testOnlyProfiles = {
"run-test": {
@@ -770,6 +841,10 @@
} else {
testedProfileTest = testedProfile + ".test";
}
+ var testOnlyMake = [ "run-test-prebuilt", "LOG_CMDLINES=true", "JTREG_VERBOSE=fail,error,time" ];
+ if (testedProfile.endsWith("-gcov")) {
+ testOnlyMake = concat(testOnlyMake, "GCOV_ENABLED=true")
+ }
var testOnlyProfilesPrebuilt = {
"run-test-prebuilt": {
target_os: input.build_os,
@@ -779,7 +854,7 @@
testedProfileTest
],
src: "src.conf",
- make_args: [ "run-test-prebuilt", "LOG_CMDLINES=true", "JTREG_VERBOSE=fail,error,time" ],
+ make_args: testOnlyMake,
environment: {
"BOOT_JDK": common.boot_jdk_home,
"JDK_IMAGE_DIR": input.get(testedProfileJDK, "home_path"),
@@ -870,7 +945,9 @@
solaris_sparcv9: "SS12u6-Solaris11u3+1.0",
windows_x64: "VS2017-15.5.5+1.0",
linux_aarch64: "gcc7.3.0-Fedora27+1.2",
- linux_arm: "gcc7.3.0-Fedora27+1.2"
+ linux_arm: "gcc7.3.0-Fedora27+1.2",
+ linux_ppc64le: "gcc7.3.0-Fedora27+1.0",
+ linux_s390x: "gcc7.3.0-Fedora27+1.0"
};
var devkit_platform = (input.target_cpu == "x86"
@@ -930,7 +1007,7 @@
jtreg: {
server: "javare",
revision: "4.2",
- build_number: "b13",
+ build_number: "b14",
checksum_file: "MD5_VALUES",
file: "jtreg_bin-4.2.zip",
environment_name: "JT_HOME",
--- a/make/copy/CopyCommon.gmk Wed Feb 20 17:00:40 2019 +0530
+++ b/make/copy/CopyCommon.gmk Fri Feb 22 12:05:05 2019 +0530
@@ -66,6 +66,8 @@
# Setup make rules for copying legal files. This is only needed if the files
# need to be filtered due to optional components being enabled/disabled.
# Otherwise CreateJmods.gmk will find the legal files in the original src dirs.
+# If multiple license files with the same name are found, only the first one
+# found will get copied.
#
# Parameter 1 is the name of the rule.
#
@@ -75,10 +77,12 @@
define SetupCopyLegalFilesBody
$$(foreach f, $$(filter-out $$(addprefix %/, $$($1_EXCLUDES)), \
$$(wildcard $$(addsuffix /*, $$(call FindModuleLegalSrcDirs, $$(MODULE))))), \
- $$(eval $$(call SetupCopyFiles, $1_$$(notdir $$f), \
- DEST := $$(LEGAL_DST_DIR), \
- FILES := $$f, \
- )) \
- $$(eval $1 += $$($1_$$(notdir $$f))) \
+ $$(if $$(filter $$($1_$$(notdir $$f)), $$($1)), , \
+ $$(eval $$(call SetupCopyFiles, $1_$$(notdir $$f), \
+ DEST := $$(LEGAL_DST_DIR), \
+ FILES := $$f, \
+ )) \
+ $$(eval $1 += $$($1_$$(notdir $$f))) \
+ ) \
)
endef
--- a/make/test/BuildMicrobenchmark.gmk Wed Feb 20 17:00:40 2019 +0530
+++ b/make/test/BuildMicrobenchmark.gmk Fri Feb 22 12:05:05 2019 +0530
@@ -30,6 +30,7 @@
include MakeBase.gmk
include JavaCompilation.gmk
include SetupJavaCompilers.gmk
+include TestFilesCompilation.gmk
ifeq ($(JMH_CORE_JAR), )
$(info Error: JMH is missing. Please use configure --with-jmh.)
@@ -39,7 +40,8 @@
#### Variables
MICROBENCHMARK_SRC := $(TOPDIR)/test/micro
-MICROBENCHMARK_JAR := $(IMAGES_OUTPUTDIR)/test/micro/benchmarks.jar
+MICROBENCHMARK_IMAGE_DIR := $(TEST_IMAGE_DIR)/micro
+MICROBENCHMARK_JAR := $(MICROBENCHMARK_IMAGE_DIR)/benchmarks.jar
MICROBENCHMARK_OUTPUT := $(SUPPORT_OUTPUTDIR)/test/micro
MICROBENCHMARK_CLASSES := $(MICROBENCHMARK_OUTPUT)/classes
@@ -54,6 +56,11 @@
MICROBENCHMARK_CLASSPATH := $(call PathList, $(JMH_COMPILE_JARS))
+# Native dependencies
+MICROBENCHMARK_NATIVE_SRC_DIRS := $(MICROBENCHMARK_SRC)
+MICROBENCHMARK_NATIVE_OUTPUT := $(MICROBENCHMARK_OUTPUT)/native
+MICROBENCHMARK_NATIVE_EXCLUDE :=
+
###
# Need double \n to get new lines and no trailing spaces
@@ -108,6 +115,22 @@
JAR := $(MICROBENCHMARK_JAR), \
))
-all: $(MICROBENCHMARK_JAR)
+# Setup compilation of native library dependencies
+$(eval $(call SetupTestFilesCompilation, BUILD_MICROBENCHMARK_LIBRARIES, \
+ TYPE := LIBRARY, \
+ SOURCE_DIRS := $(MICROBENCHMARK_NATIVE_SRC_DIRS), \
+ OUTPUT_DIR := $(MICROBENCHMARK_NATIVE_OUTPUT), \
+ EXCLUDE := $(MICROBENCHMARK_NATIVE_EXCLUDE), \
+))
+
+# Setup copy of native dependencies to image output dir
+$(eval $(call SetupCopyFiles, COPY_MICROBENCHMARK_NATIVE, \
+ SRC := $(MICROBENCHMARK_NATIVE_OUTPUT), \
+ DEST := $(MICROBENCHMARK_IMAGE_DIR)/native, \
+ FILES := $(BUILD_MICROBENCHMARK_LIBRARIES), \
+ FLATTEN := true, \
+))
+
+all: $(MICROBENCHMARK_JAR) $(BUILD_MICROBENCHMARK_LIBRARIES) $(COPY_MICROBENCHMARK_NATIVE)
.PHONY: all
--- a/src/hotspot/cpu/ppc/nativeInst_ppc.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/cpu/ppc/nativeInst_ppc.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -1,6 +1,6 @@
/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012, 2015 SAP SE. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2019, SAP SE. 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
@@ -362,8 +362,8 @@
void NativeGeneralJump::insert_unconditional(address code_pos, address entry) {
CodeBuffer cb(code_pos, BytesPerInstWord + 1);
- MacroAssembler* a = new MacroAssembler(&cb);
- a->b(entry);
+ MacroAssembler a(&cb);
+ a.b(entry);
ICache::ppc64_flush_icache_bytes(code_pos, NativeGeneralJump::instruction_size);
}
--- a/src/hotspot/cpu/x86/c2_init_x86.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/cpu/x86/c2_init_x86.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -29,6 +29,8 @@
// processor dependent initialization for i486
+LP64_ONLY(extern void reg_mask_init();)
+
void Compile::pd_compiler2_init() {
guarantee(CodeEntryAlignment >= InteriorEntryAlignment, "" );
// QQQ presumably all 64bit cpu's support this. Seems like the ifdef could
@@ -58,4 +60,5 @@
OptoReg::invalidate(i);
}
}
+ LP64_ONLY(reg_mask_init();)
}
--- a/src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -359,7 +359,7 @@
// ZBarrierSetRuntime::load_barrier_on_weak_oop_field_preloaded().
static address generate_load_barrier_stub(StubCodeGenerator* cgen, Register raddr, DecoratorSet decorators) {
// Don't generate stub for invalid registers
- if (raddr == rsp || raddr == r12 || raddr == r15) {
+ if (raddr == rsp || raddr == r15) {
return NULL;
}
--- a/src/hotspot/cpu/x86/gc/z/z_x86_64.ad Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/cpu/x86/gc/z/z_x86_64.ad Fri Feb 22 12:05:05 2019 +0530
@@ -26,9 +26,8 @@
#include "gc/z/zBarrierSetAssembler.hpp"
static void z_load_barrier_slow_reg(MacroAssembler& _masm, Register dst, Address src, bool weak) {
- assert(dst != r12, "Invalid register");
+ assert(dst != rsp, "Invalid register");
assert(dst != r15, "Invalid register");
- assert(dst != rsp, "Invalid register");
const address stub = weak ? ZBarrierSet::assembler()->load_barrier_weak_slow_stub(dst)
: ZBarrierSet::assembler()->load_barrier_slow_stub(dst);
--- a/src/hotspot/cpu/x86/vm_version_x86.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/cpu/x86/vm_version_x86.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -336,7 +336,7 @@
#define CPU_AVX512_VPOPCNTDQ ((uint64_t)UCONST64(0x2000000000)) // Vector popcount
#define CPU_VPCLMULQDQ ((uint64_t)UCONST64(0x4000000000)) //Vector carryless multiplication
#define CPU_VAES ((uint64_t)UCONST64(0x8000000000)) // Vector AES instructions
-#define CPU_VNNI ((uint64_t)UCONST64(0x16000000000)) // Vector Neural Network Instructions
+#define CPU_VNNI ((uint64_t)UCONST64(0x10000000000)) // Vector Neural Network Instructions
enum Extended_Family {
// AMD
--- a/src/hotspot/cpu/x86/x86_64.ad Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/cpu/x86/x86_64.ad Fri Feb 22 12:05:05 2019 +0530
@@ -169,135 +169,94 @@
// Empty register class.
reg_class no_reg();
-// Class for all pointer registers (including RSP and RBP)
-reg_class any_reg_with_rbp(RAX, RAX_H,
- RDX, RDX_H,
- RBP, RBP_H,
- RDI, RDI_H,
- RSI, RSI_H,
- RCX, RCX_H,
- RBX, RBX_H,
- RSP, RSP_H,
- R8, R8_H,
- R9, R9_H,
- R10, R10_H,
- R11, R11_H,
- R12, R12_H,
- R13, R13_H,
- R14, R14_H,
- R15, R15_H);
-
-// Class for all pointer registers (including RSP, but excluding RBP)
-reg_class any_reg_no_rbp(RAX, RAX_H,
- RDX, RDX_H,
- RDI, RDI_H,
- RSI, RSI_H,
- RCX, RCX_H,
- RBX, RBX_H,
- RSP, RSP_H,
- R8, R8_H,
- R9, R9_H,
- R10, R10_H,
- R11, R11_H,
- R12, R12_H,
- R13, R13_H,
- R14, R14_H,
- R15, R15_H);
-
-// Dynamic register class that selects at runtime between register classes
-// any_reg_no_rbp and any_reg_with_rbp (depending on the value of the flag PreserveFramePointer).
-// Equivalent to: return PreserveFramePointer ? any_reg_no_rbp : any_reg_with_rbp;
-reg_class_dynamic any_reg(any_reg_no_rbp, any_reg_with_rbp, %{ PreserveFramePointer %});
+// Class for all pointer/long registers
+reg_class all_reg(RAX, RAX_H,
+ RDX, RDX_H,
+ RBP, RBP_H,
+ RDI, RDI_H,
+ RSI, RSI_H,
+ RCX, RCX_H,
+ RBX, RBX_H,
+ RSP, RSP_H,
+ R8, R8_H,
+ R9, R9_H,
+ R10, R10_H,
+ R11, R11_H,
+ R12, R12_H,
+ R13, R13_H,
+ R14, R14_H,
+ R15, R15_H);
+
+// Class for all int registers
+reg_class all_int_reg(RAX
+ RDX,
+ RBP,
+ RDI,
+ RSI,
+ RCX,
+ RBX,
+ R8,
+ R9,
+ R10,
+ R11,
+ R12,
+ R13,
+ R14);
+
+// Class for all pointer registers
+reg_class any_reg %{
+ return _ANY_REG_mask;
+%}
// Class for all pointer registers (excluding RSP)
-reg_class ptr_reg_with_rbp(RAX, RAX_H,
- RDX, RDX_H,
- RBP, RBP_H,
- RDI, RDI_H,
- RSI, RSI_H,
- RCX, RCX_H,
- RBX, RBX_H,
- R8, R8_H,
- R9, R9_H,
- R10, R10_H,
- R11, R11_H,
- R13, R13_H,
- R14, R14_H);
+reg_class ptr_reg %{
+ return _PTR_REG_mask;
+%}
// Class for all pointer registers (excluding RSP and RBP)
-reg_class ptr_reg_no_rbp(RAX, RAX_H,
- RDX, RDX_H,
- RDI, RDI_H,
- RSI, RSI_H,
- RCX, RCX_H,
- RBX, RBX_H,
- R8, R8_H,
- R9, R9_H,
- R10, R10_H,
- R11, R11_H,
- R13, R13_H,
- R14, R14_H);
-
-// Dynamic register class that selects between ptr_reg_no_rbp and ptr_reg_with_rbp.
-reg_class_dynamic ptr_reg(ptr_reg_no_rbp, ptr_reg_with_rbp, %{ PreserveFramePointer %});
+reg_class ptr_reg_no_rbp %{
+ return _PTR_REG_NO_RBP_mask;
+%}
// Class for all pointer registers (excluding RAX and RSP)
-reg_class ptr_no_rax_reg_with_rbp(RDX, RDX_H,
- RBP, RBP_H,
- RDI, RDI_H,
- RSI, RSI_H,
- RCX, RCX_H,
- RBX, RBX_H,
- R8, R8_H,
- R9, R9_H,
- R10, R10_H,
- R11, R11_H,
- R13, R13_H,
- R14, R14_H);
-
-// Class for all pointer registers (excluding RAX, RSP, and RBP)
-reg_class ptr_no_rax_reg_no_rbp(RDX, RDX_H,
- RDI, RDI_H,
- RSI, RSI_H,
- RCX, RCX_H,
- RBX, RBX_H,
- R8, R8_H,
- R9, R9_H,
- R10, R10_H,
- R11, R11_H,
- R13, R13_H,
- R14, R14_H);
-
-// Dynamic register class that selects between ptr_no_rax_reg_no_rbp and ptr_no_rax_reg_with_rbp.
-reg_class_dynamic ptr_no_rax_reg(ptr_no_rax_reg_no_rbp, ptr_no_rax_reg_with_rbp, %{ PreserveFramePointer %});
+reg_class ptr_no_rax_reg %{
+ return _PTR_NO_RAX_REG_mask;
+%}
// Class for all pointer registers (excluding RAX, RBX, and RSP)
-reg_class ptr_no_rax_rbx_reg_with_rbp(RDX, RDX_H,
- RBP, RBP_H,
- RDI, RDI_H,
- RSI, RSI_H,
- RCX, RCX_H,
- R8, R8_H,
- R9, R9_H,
- R10, R10_H,
- R11, R11_H,
- R13, R13_H,
- R14, R14_H);
-
-// Class for all pointer registers (excluding RAX, RBX, RSP, and RBP)
-reg_class ptr_no_rax_rbx_reg_no_rbp(RDX, RDX_H,
- RDI, RDI_H,
- RSI, RSI_H,
- RCX, RCX_H,
- R8, R8_H,
- R9, R9_H,
- R10, R10_H,
- R11, R11_H,
- R13, R13_H,
- R14, R14_H);
-
-// Dynamic register class that selects between ptr_no_rax_rbx_reg_no_rbp and ptr_no_rax_rbx_reg_with_rbp.
-reg_class_dynamic ptr_no_rax_rbx_reg(ptr_no_rax_rbx_reg_no_rbp, ptr_no_rax_rbx_reg_with_rbp, %{ PreserveFramePointer %});
+reg_class ptr_no_rax_rbx_reg %{
+ return _PTR_NO_RAX_RBX_REG_mask;
+%}
+
+// Class for all long registers (excluding RSP)
+reg_class long_reg %{
+ return _LONG_REG_mask;
+%}
+
+// Class for all long registers (excluding RAX, RDX and RSP)
+reg_class long_no_rax_rdx_reg %{
+ return _LONG_NO_RAX_RDX_REG_mask;
+%}
+
+// Class for all long registers (excluding RCX and RSP)
+reg_class long_no_rcx_reg %{
+ return _LONG_NO_RCX_REG_mask;
+%}
+
+// Class for all int registers (excluding RSP)
+reg_class int_reg %{
+ return _INT_REG_mask;
+%}
+
+// Class for all int registers (excluding RAX, RDX, and RSP)
+reg_class int_no_rax_rdx_reg %{
+ return _INT_NO_RAX_RDX_REG_mask;
+%}
+
+// Class for all int registers (excluding RCX and RSP)
+reg_class int_no_rcx_reg %{
+ return _INT_NO_RCX_REG_mask;
+%}
// Singleton class for RAX pointer register
reg_class ptr_rax_reg(RAX, RAX_H);
@@ -317,96 +276,6 @@
// Singleton class for TLS pointer
reg_class ptr_r15_reg(R15, R15_H);
-// Class for all long registers (excluding RSP)
-reg_class long_reg_with_rbp(RAX, RAX_H,
- RDX, RDX_H,
- RBP, RBP_H,
- RDI, RDI_H,
- RSI, RSI_H,
- RCX, RCX_H,
- RBX, RBX_H,
- R8, R8_H,
- R9, R9_H,
- R10, R10_H,
- R11, R11_H,
- R13, R13_H,
- R14, R14_H);
-
-// Class for all long registers (excluding RSP and RBP)
-reg_class long_reg_no_rbp(RAX, RAX_H,
- RDX, RDX_H,
- RDI, RDI_H,
- RSI, RSI_H,
- RCX, RCX_H,
- RBX, RBX_H,
- R8, R8_H,
- R9, R9_H,
- R10, R10_H,
- R11, R11_H,
- R13, R13_H,
- R14, R14_H);
-
-// Dynamic register class that selects between long_reg_no_rbp and long_reg_with_rbp.
-reg_class_dynamic long_reg(long_reg_no_rbp, long_reg_with_rbp, %{ PreserveFramePointer %});
-
-// Class for all long registers (excluding RAX, RDX and RSP)
-reg_class long_no_rax_rdx_reg_with_rbp(RBP, RBP_H,
- RDI, RDI_H,
- RSI, RSI_H,
- RCX, RCX_H,
- RBX, RBX_H,
- R8, R8_H,
- R9, R9_H,
- R10, R10_H,
- R11, R11_H,
- R13, R13_H,
- R14, R14_H);
-
-// Class for all long registers (excluding RAX, RDX, RSP, and RBP)
-reg_class long_no_rax_rdx_reg_no_rbp(RDI, RDI_H,
- RSI, RSI_H,
- RCX, RCX_H,
- RBX, RBX_H,
- R8, R8_H,
- R9, R9_H,
- R10, R10_H,
- R11, R11_H,
- R13, R13_H,
- R14, R14_H);
-
-// Dynamic register class that selects between long_no_rax_rdx_reg_no_rbp and long_no_rax_rdx_reg_with_rbp.
-reg_class_dynamic long_no_rax_rdx_reg(long_no_rax_rdx_reg_no_rbp, long_no_rax_rdx_reg_with_rbp, %{ PreserveFramePointer %});
-
-// Class for all long registers (excluding RCX and RSP)
-reg_class long_no_rcx_reg_with_rbp(RBP, RBP_H,
- RDI, RDI_H,
- RSI, RSI_H,
- RAX, RAX_H,
- RDX, RDX_H,
- RBX, RBX_H,
- R8, R8_H,
- R9, R9_H,
- R10, R10_H,
- R11, R11_H,
- R13, R13_H,
- R14, R14_H);
-
-// Class for all long registers (excluding RCX, RSP, and RBP)
-reg_class long_no_rcx_reg_no_rbp(RDI, RDI_H,
- RSI, RSI_H,
- RAX, RAX_H,
- RDX, RDX_H,
- RBX, RBX_H,
- R8, R8_H,
- R9, R9_H,
- R10, R10_H,
- R11, R11_H,
- R13, R13_H,
- R14, R14_H);
-
-// Dynamic register class that selects between long_no_rcx_reg_no_rbp and long_no_rcx_reg_with_rbp.
-reg_class_dynamic long_no_rcx_reg(long_no_rcx_reg_no_rbp, long_no_rcx_reg_with_rbp, %{ PreserveFramePointer %});
-
// Singleton class for RAX long register
reg_class long_rax_reg(RAX, RAX_H);
@@ -416,96 +285,6 @@
// Singleton class for RDX long register
reg_class long_rdx_reg(RDX, RDX_H);
-// Class for all int registers (excluding RSP)
-reg_class int_reg_with_rbp(RAX,
- RDX,
- RBP,
- RDI,
- RSI,
- RCX,
- RBX,
- R8,
- R9,
- R10,
- R11,
- R13,
- R14);
-
-// Class for all int registers (excluding RSP and RBP)
-reg_class int_reg_no_rbp(RAX,
- RDX,
- RDI,
- RSI,
- RCX,
- RBX,
- R8,
- R9,
- R10,
- R11,
- R13,
- R14);
-
-// Dynamic register class that selects between int_reg_no_rbp and int_reg_with_rbp.
-reg_class_dynamic int_reg(int_reg_no_rbp, int_reg_with_rbp, %{ PreserveFramePointer %});
-
-// Class for all int registers (excluding RCX and RSP)
-reg_class int_no_rcx_reg_with_rbp(RAX,
- RDX,
- RBP,
- RDI,
- RSI,
- RBX,
- R8,
- R9,
- R10,
- R11,
- R13,
- R14);
-
-// Class for all int registers (excluding RCX, RSP, and RBP)
-reg_class int_no_rcx_reg_no_rbp(RAX,
- RDX,
- RDI,
- RSI,
- RBX,
- R8,
- R9,
- R10,
- R11,
- R13,
- R14);
-
-// Dynamic register class that selects between int_no_rcx_reg_no_rbp and int_no_rcx_reg_with_rbp.
-reg_class_dynamic int_no_rcx_reg(int_no_rcx_reg_no_rbp, int_no_rcx_reg_with_rbp, %{ PreserveFramePointer %});
-
-// Class for all int registers (excluding RAX, RDX, and RSP)
-reg_class int_no_rax_rdx_reg_with_rbp(RBP,
- RDI,
- RSI,
- RCX,
- RBX,
- R8,
- R9,
- R10,
- R11,
- R13,
- R14);
-
-// Class for all int registers (excluding RAX, RDX, RSP, and RBP)
-reg_class int_no_rax_rdx_reg_no_rbp(RDI,
- RSI,
- RCX,
- RBX,
- R8,
- R9,
- R10,
- R11,
- R13,
- R14);
-
-// Dynamic register class that selects between int_no_rax_rdx_reg_no_rbp and int_no_rax_rdx_reg_with_rbp.
-reg_class_dynamic int_no_rax_rdx_reg(int_no_rax_rdx_reg_no_rbp, int_no_rax_rdx_reg_with_rbp, %{ PreserveFramePointer %});
-
// Singleton class for RAX int register
reg_class int_rax_reg(RAX);
@@ -529,12 +308,123 @@
//----------SOURCE BLOCK-------------------------------------------------------
// This is a block of C++ code which provides values, functions, and
// definitions necessary in the rest of the architecture description
+source_hpp %{
+
+extern RegMask _ANY_REG_mask;
+extern RegMask _PTR_REG_mask;
+extern RegMask _PTR_REG_NO_RBP_mask;
+extern RegMask _PTR_NO_RAX_REG_mask;
+extern RegMask _PTR_NO_RAX_RBX_REG_mask;
+extern RegMask _LONG_REG_mask;
+extern RegMask _LONG_NO_RAX_RDX_REG_mask;
+extern RegMask _LONG_NO_RCX_REG_mask;
+extern RegMask _INT_REG_mask;
+extern RegMask _INT_NO_RAX_RDX_REG_mask;
+extern RegMask _INT_NO_RCX_REG_mask;
+
+extern RegMask _STACK_OR_PTR_REG_mask;
+extern RegMask _STACK_OR_LONG_REG_mask;
+extern RegMask _STACK_OR_INT_REG_mask;
+
+inline const RegMask& STACK_OR_PTR_REG_mask() { return _STACK_OR_PTR_REG_mask; }
+inline const RegMask& STACK_OR_LONG_REG_mask() { return _STACK_OR_LONG_REG_mask; }
+inline const RegMask& STACK_OR_INT_REG_mask() { return _STACK_OR_INT_REG_mask; }
+
+%}
+
source %{
#define RELOC_IMM64 Assembler::imm_operand
#define RELOC_DISP32 Assembler::disp32_operand
#define __ _masm.
+RegMask _ANY_REG_mask;
+RegMask _PTR_REG_mask;
+RegMask _PTR_REG_NO_RBP_mask;
+RegMask _PTR_NO_RAX_REG_mask;
+RegMask _PTR_NO_RAX_RBX_REG_mask;
+RegMask _LONG_REG_mask;
+RegMask _LONG_NO_RAX_RDX_REG_mask;
+RegMask _LONG_NO_RCX_REG_mask;
+RegMask _INT_REG_mask;
+RegMask _INT_NO_RAX_RDX_REG_mask;
+RegMask _INT_NO_RCX_REG_mask;
+RegMask _STACK_OR_PTR_REG_mask;
+RegMask _STACK_OR_LONG_REG_mask;
+RegMask _STACK_OR_INT_REG_mask;
+
+static bool need_r12_heapbase() {
+ return UseCompressedOops || UseCompressedClassPointers;
+}
+
+void reg_mask_init() {
+ // _ALL_REG_mask is generated by adlc from the all_reg register class below.
+ // We derive a number of subsets from it.
+ _ANY_REG_mask = _ALL_REG_mask;
+
+ if (PreserveFramePointer) {
+ _ANY_REG_mask.Remove(OptoReg::as_OptoReg(rbp->as_VMReg()));
+ _ANY_REG_mask.Remove(OptoReg::as_OptoReg(rbp->as_VMReg()->next()));
+ }
+ if (need_r12_heapbase()) {
+ _ANY_REG_mask.Remove(OptoReg::as_OptoReg(r12->as_VMReg()));
+ _ANY_REG_mask.Remove(OptoReg::as_OptoReg(r12->as_VMReg()->next()));
+ }
+
+ _PTR_REG_mask = _ANY_REG_mask;
+ _PTR_REG_mask.Remove(OptoReg::as_OptoReg(rsp->as_VMReg()));
+ _PTR_REG_mask.Remove(OptoReg::as_OptoReg(rsp->as_VMReg()->next()));
+ _PTR_REG_mask.Remove(OptoReg::as_OptoReg(r15->as_VMReg()));
+ _PTR_REG_mask.Remove(OptoReg::as_OptoReg(r15->as_VMReg()->next()));
+
+ _STACK_OR_PTR_REG_mask = _PTR_REG_mask;
+ _STACK_OR_PTR_REG_mask.OR(STACK_OR_STACK_SLOTS_mask());
+
+ _PTR_REG_NO_RBP_mask = _PTR_REG_mask;
+ _PTR_REG_NO_RBP_mask.Remove(OptoReg::as_OptoReg(rbp->as_VMReg()));
+ _PTR_REG_NO_RBP_mask.Remove(OptoReg::as_OptoReg(rbp->as_VMReg()->next()));
+
+ _PTR_NO_RAX_REG_mask = _PTR_REG_mask;
+ _PTR_NO_RAX_REG_mask.Remove(OptoReg::as_OptoReg(rax->as_VMReg()));
+ _PTR_NO_RAX_REG_mask.Remove(OptoReg::as_OptoReg(rax->as_VMReg()->next()));
+
+ _PTR_NO_RAX_RBX_REG_mask = _PTR_NO_RAX_REG_mask;
+ _PTR_NO_RAX_RBX_REG_mask.Remove(OptoReg::as_OptoReg(rbx->as_VMReg()));
+ _PTR_NO_RAX_RBX_REG_mask.Remove(OptoReg::as_OptoReg(rbx->as_VMReg()->next()));
+
+ _LONG_REG_mask = _PTR_REG_mask;
+ _STACK_OR_LONG_REG_mask = _LONG_REG_mask;
+ _STACK_OR_LONG_REG_mask.OR(STACK_OR_STACK_SLOTS_mask());
+
+ _LONG_NO_RAX_RDX_REG_mask = _LONG_REG_mask;
+ _LONG_NO_RAX_RDX_REG_mask.Remove(OptoReg::as_OptoReg(rax->as_VMReg()));
+ _LONG_NO_RAX_RDX_REG_mask.Remove(OptoReg::as_OptoReg(rax->as_VMReg()->next()));
+ _LONG_NO_RAX_RDX_REG_mask.Remove(OptoReg::as_OptoReg(rdx->as_VMReg()));
+ _LONG_NO_RAX_RDX_REG_mask.Remove(OptoReg::as_OptoReg(rdx->as_VMReg()->next()));
+
+ _LONG_NO_RCX_REG_mask = _LONG_REG_mask;
+ _LONG_NO_RCX_REG_mask.Remove(OptoReg::as_OptoReg(rcx->as_VMReg()));
+ _LONG_NO_RCX_REG_mask.Remove(OptoReg::as_OptoReg(rcx->as_VMReg()->next()));
+
+ _INT_REG_mask = _ALL_INT_REG_mask;
+ if (PreserveFramePointer) {
+ _INT_REG_mask.Remove(OptoReg::as_OptoReg(rbp->as_VMReg()));
+ }
+ if (need_r12_heapbase()) {
+ _INT_REG_mask.Remove(OptoReg::as_OptoReg(r12->as_VMReg()));
+ }
+
+ _STACK_OR_INT_REG_mask = _INT_REG_mask;
+ _STACK_OR_INT_REG_mask.OR(STACK_OR_STACK_SLOTS_mask());
+
+ _INT_NO_RAX_RDX_REG_mask = _INT_REG_mask;
+ _INT_NO_RAX_RDX_REG_mask.Remove(OptoReg::as_OptoReg(rax->as_VMReg()));
+ _INT_NO_RAX_RDX_REG_mask.Remove(OptoReg::as_OptoReg(rdx->as_VMReg()));
+
+ _INT_NO_RCX_REG_mask = _INT_REG_mask;
+ _INT_NO_RCX_REG_mask.Remove(OptoReg::as_OptoReg(rcx->as_VMReg()));
+}
+
static bool generate_vzeroupper(Compile* C) {
return (VM_Version::supports_vzeroupper() && (C->max_vector_size() > 16 || C->clear_upper_avx() == true)) ? true: false; // Generate vzeroupper
}
--- a/src/hotspot/os/aix/os_perf_aix.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/os/aix/os_perf_aix.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2019, 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
@@ -859,11 +859,7 @@
char* SystemProcessInterface::SystemProcesses::ProcessIterator::allocate_string(const char* str) const {
if (str != NULL) {
- size_t len = strlen(str);
- char* tmp = NEW_C_HEAP_ARRAY(char, len+1, mtInternal);
- strncpy(tmp, str, len);
- tmp[len] = '\0';
- return tmp;
+ return os::strdup_check_oom(str, mtInternal);
}
return NULL;
}
--- a/src/hotspot/os/linux/globals_linux.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/os/linux/globals_linux.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -70,7 +70,12 @@
diagnostic(bool, DumpPrivateMappingsInCore, true, \
"If true, sets bit 2 of /proc/PID/coredump_filter, thus " \
"resulting in file-backed private mappings of the process to "\
- "be dumped into the corefile, if UseSharedSpaces is true.") \
+ "be dumped into the corefile.") \
+ \
+ diagnostic(bool, DumpSharedMappingsInCore, true, \
+ "If true, sets bit 3 of /proc/PID/coredump_filter, thus " \
+ "resulting in file-backed shared mappings of the process to " \
+ "be dumped into the corefile.") \
\
diagnostic(bool, UseCpuAllocPath, false, \
"Use CPU_ALLOC code path in os::active_processor_count ")
--- a/src/hotspot/os/linux/os_linux.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/os/linux/os_linux.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -131,6 +131,7 @@
enum CoredumpFilterBit {
FILE_BACKED_PVT_BIT = 1 << 2,
+ FILE_BACKED_SHARED_BIT = 1 << 3,
LARGEPAGES_BIT = 1 << 6,
DAX_SHARED_BIT = 1 << 8
};
@@ -1357,8 +1358,8 @@
void os::abort(bool dump_core, void* siginfo, const void* context) {
os::shutdown();
if (dump_core) {
-#if INCLUDE_CDS
- if (UseSharedSpaces && DumpPrivateMappingsInCore) {
+#ifndef ZERO
+ if (DumpPrivateMappingsInCore) {
ClassLoader::close_jrt_image();
}
#endif
@@ -3432,8 +3433,6 @@
return result;
}
-// Set the coredump_filter bits to include largepages in core dump (bit 6)
-//
// From the coredump_filter documentation:
//
// - (bit 0) anonymous private memory
@@ -5131,11 +5130,13 @@
set_coredump_filter(DAX_SHARED_BIT);
}
-#if INCLUDE_CDS
- if (UseSharedSpaces && DumpPrivateMappingsInCore) {
+ if (DumpPrivateMappingsInCore) {
set_coredump_filter(FILE_BACKED_PVT_BIT);
}
-#endif
+
+ if (DumpSharedMappingsInCore) {
+ set_coredump_filter(FILE_BACKED_SHARED_BIT);
+ }
return JNI_OK;
}
--- a/src/hotspot/os/linux/os_perf_linux.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/os/linux/os_perf_linux.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2019, 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
@@ -861,11 +861,7 @@
char* SystemProcessInterface::SystemProcesses::ProcessIterator::allocate_string(const char* str) const {
if (str != NULL) {
- size_t len = strlen(str);
- char* tmp = NEW_C_HEAP_ARRAY(char, len+1, mtInternal);
- strncpy(tmp, str, len);
- tmp[len] = '\0';
- return tmp;
+ return os::strdup_check_oom(str, mtInternal);
}
return NULL;
}
--- a/src/hotspot/os/posix/os_posix.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/os/posix/os_posix.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -180,13 +180,14 @@
const char name_template[] = "/jvmheap.XXXXXX";
- char *fullname = (char*)os::malloc((strlen(dir) + strlen(name_template) + 1), mtInternal);
+ size_t fullname_len = strlen(dir) + strlen(name_template);
+ char *fullname = (char*)os::malloc(fullname_len + 1, mtInternal);
if (fullname == NULL) {
vm_exit_during_initialization(err_msg("Malloc failed during creation of backing file for heap (%s)", os::strerror(errno)));
return -1;
}
- (void)strncpy(fullname, dir, strlen(dir)+1);
- (void)strncat(fullname, name_template, strlen(name_template));
+ int n = snprintf(fullname, fullname_len + 1, "%s%s", dir, name_template);
+ assert((size_t)n == fullname_len, "Unexpected number of characters in string");
os::native_path(fullname);
--- a/src/hotspot/os/posix/os_posix.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/os/posix/os_posix.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -177,7 +177,7 @@
* These event objects are type-stable and immortal - we never delete them.
* Events are associated with a thread for the lifetime of the thread.
*/
-class PlatformEvent : public CHeapObj<mtInternal> {
+class PlatformEvent : public CHeapObj<mtSynchronizer> {
private:
double cachePad[4]; // Increase odds that _mutex is sole occupant of cache line
volatile int _event; // Event count/permit: -1, 0 or 1
@@ -212,7 +212,7 @@
// API updates of course). But Parker methods use fastpaths that break that
// level of encapsulation - so combining the two remains a future project.
-class PlatformParker : public CHeapObj<mtInternal> {
+class PlatformParker : public CHeapObj<mtSynchronizer> {
protected:
enum {
REL_INDEX = 0,
@@ -230,7 +230,7 @@
};
// Platform specific implementation that underpins VM Monitor/Mutex class
-class PlatformMonitor : public CHeapObj<mtInternal> {
+class PlatformMonitor : public CHeapObj<mtSynchronizer> {
private:
pthread_mutex_t _mutex; // Native mutex for locking
pthread_cond_t _cond; // Native condition variable for blocking
--- a/src/hotspot/os/solaris/os_perf_solaris.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/os/solaris/os_perf_solaris.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2019, 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
@@ -544,11 +544,7 @@
char* SystemProcessInterface::SystemProcesses::ProcessIterator::allocate_string(const char* str) const {
if (str != NULL) {
- size_t len = strlen(str);
- char* tmp = NEW_C_HEAP_ARRAY(char, len+1, mtInternal);
- strncpy(tmp, str, len);
- tmp[len] = '\0';
- return tmp;
+ return os::strdup_check_oom(str, mtInternal);
}
return NULL;
}
--- a/src/hotspot/os/solaris/os_solaris.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/os/solaris/os_solaris.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -281,7 +281,7 @@
};
-class PlatformEvent : public CHeapObj<mtInternal> {
+class PlatformEvent : public CHeapObj<mtSynchronizer> {
private:
double CachePad[4]; // increase odds that _mutex is sole occupant of cache line
volatile int _Event;
@@ -317,7 +317,7 @@
void unpark();
};
-class PlatformParker : public CHeapObj<mtInternal> {
+class PlatformParker : public CHeapObj<mtSynchronizer> {
protected:
mutex_t _mutex[1];
cond_t _cond[1];
@@ -336,7 +336,7 @@
};
// Platform specific implementation that underpins VM Monitor/Mutex class
-class PlatformMonitor : public CHeapObj<mtInternal> {
+class PlatformMonitor : public CHeapObj<mtSynchronizer> {
private:
mutex_t _mutex; // Native mutex for locking
cond_t _cond; // Native condition variable for blocking
--- a/src/hotspot/os/windows/os_perf_windows.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/os/windows/os_perf_windows.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2019, 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
@@ -1253,14 +1253,7 @@
char* SystemProcessInterface::SystemProcesses::ProcessIterator::allocate_string(const char* str) const {
if (str != NULL) {
- size_t len = strlen(str);
- char* tmp = NEW_C_HEAP_ARRAY(char, len+1, mtInternal);
- if (NULL == tmp) {
- return NULL;
- }
- strncpy(tmp, str, len);
- tmp[len] = '\0';
- return tmp;
+ return os::strdup_check_oom(str, mtInternal);
}
return NULL;
}
--- a/src/hotspot/os/windows/os_windows.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/os/windows/os_windows.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -2970,14 +2970,15 @@
int os::create_file_for_heap(const char* dir) {
const char name_template[] = "/jvmheap.XXXXXX";
- char *fullname = (char*)os::malloc((strlen(dir) + strlen(name_template) + 1), mtInternal);
+
+ size_t fullname_len = strlen(dir) + strlen(name_template);
+ char *fullname = (char*)os::malloc(fullname_len + 1, mtInternal);
if (fullname == NULL) {
vm_exit_during_initialization(err_msg("Malloc failed during creation of backing file for heap (%s)", os::strerror(errno)));
return -1;
}
-
- (void)strncpy(fullname, dir, strlen(dir)+1);
- (void)strncat(fullname, name_template, strlen(name_template));
+ int n = snprintf(fullname, fullname_len + 1, "%s%s", dir, name_template);
+ assert((size_t)n == fullname_len, "Unexpected number of characters in string");
os::native_path(fullname);
--- a/src/hotspot/os/windows/os_windows.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/os/windows/os_windows.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -148,7 +148,7 @@
static volatile intptr_t _crash_mux;
};
-class PlatformEvent : public CHeapObj<mtInternal> {
+class PlatformEvent : public CHeapObj<mtSynchronizer> {
private:
double CachePad [4] ; // increase odds that _Event is sole occupant of cache line
volatile int _Event ;
@@ -174,7 +174,7 @@
-class PlatformParker : public CHeapObj<mtInternal> {
+class PlatformParker : public CHeapObj<mtSynchronizer> {
protected:
HANDLE _ParkEvent ;
@@ -188,7 +188,7 @@
} ;
// Platform specific implementation that underpins VM Monitor/Mutex class
-class PlatformMonitor : public CHeapObj<mtInternal> {
+class PlatformMonitor : public CHeapObj<mtSynchronizer> {
private:
CRITICAL_SECTION _mutex; // Native mutex for locking
CONDITION_VARIABLE _cond; // Native condition variable for blocking
--- a/src/hotspot/share/adlc/formsopt.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/adlc/formsopt.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -242,9 +242,6 @@
char* code_snippet() {
return _code_snippet;
}
- void set_stack_version(bool flag) {
- assert(false, "User defined register classes are not allowed to spill to the stack.");
- }
void declare_register_masks(FILE* fp);
void build_register_masks(FILE* fp) {
// We do not need to generate register masks because we select at runtime
--- a/src/hotspot/share/ci/ciReplay.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/ci/ciReplay.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -33,6 +33,7 @@
#include "memory/allocation.inline.hpp"
#include "memory/oopFactory.hpp"
#include "memory/resourceArea.hpp"
+#include "oops/constantPool.hpp"
#include "oops/method.inline.hpp"
#include "oops/oop.inline.hpp"
#include "runtime/fieldDescriptor.inline.hpp"
--- a/src/hotspot/share/classfile/classFileParser.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/classfile/classFileParser.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -5743,16 +5743,13 @@
ClassLoader::package_from_name(unsafe_anonymous_host->name()->as_C_string(), NULL);
if (host_pkg_name != NULL) {
- size_t host_pkg_len = strlen(host_pkg_name);
+ int host_pkg_len = (int)strlen(host_pkg_name);
int class_name_len = _class_name->utf8_length();
- char* new_anon_name =
- NEW_RESOURCE_ARRAY(char, host_pkg_len + 1 + class_name_len);
- // Copy host package name and trailing /.
- strncpy(new_anon_name, host_pkg_name, host_pkg_len);
- new_anon_name[host_pkg_len] = '/';
- // Append unsafe anonymous class name. The unsafe anonymous class name can contain odd
- // characters. So, do a strncpy instead of using sprintf("%s...").
- strncpy(new_anon_name + host_pkg_len + 1, (char *)_class_name->base(), class_name_len);
+ int symbol_len = host_pkg_len + 1 + class_name_len;
+ char* new_anon_name = NEW_RESOURCE_ARRAY(char, symbol_len + 1);
+ int n = snprintf(new_anon_name, symbol_len + 1, "%s/%.*s",
+ host_pkg_name, class_name_len, _class_name->base());
+ assert(n == symbol_len, "Unexpected number of characters in string");
// Decrement old _class_name to avoid leaking.
_class_name->decrement_refcount();
@@ -5761,9 +5758,7 @@
// The new class name is created with a refcount of one. When installed into the InstanceKlass,
// it'll be two and when the ClassFileParser destructor runs, it'll go back to one and get deleted
// when the class is unloaded.
- _class_name = SymbolTable::new_symbol(new_anon_name,
- (int)host_pkg_len + 1 + class_name_len,
- CHECK);
+ _class_name = SymbolTable::new_symbol(new_anon_name, symbol_len, CHECK);
}
}
--- a/src/hotspot/share/classfile/classLoader.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/classfile/classLoader.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -101,7 +101,6 @@
static JImageFindResource_t JImageFindResource = NULL;
static JImageGetResource_t JImageGetResource = NULL;
static JImageResourceIterator_t JImageResourceIterator = NULL;
-static JImage_ResourcePath_t JImageResourcePath = NULL;
// Globals
@@ -1094,8 +1093,6 @@
guarantee(JImageGetResource != NULL, "function JIMAGE_GetResource not found");
JImageResourceIterator = CAST_TO_FN_PTR(JImageResourceIterator_t, os::dll_lookup(handle, "JIMAGE_ResourceIterator"));
guarantee(JImageResourceIterator != NULL, "function JIMAGE_ResourceIterator not found");
- JImageResourcePath = CAST_TO_FN_PTR(JImage_ResourcePath_t, os::dll_lookup(handle, "JIMAGE_ResourcePath"));
- guarantee(JImageResourcePath != NULL, "function JIMAGE_ResourcePath not found");
}
jboolean ClassLoader::decompress(void *in, u8 inSize, void *out, u8 outSize, char **pmsg) {
--- a/src/hotspot/share/classfile/classLoader.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/classfile/classLoader.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -247,12 +247,12 @@
static void load_zip_library();
static void load_jimage_library();
+
+ public:
static ClassPathEntry* create_class_path_entry(const char *path, const struct stat* st,
bool throw_exception,
bool is_boot_append, TRAPS);
- public:
-
// If the package for the fully qualified class name is in the boot
// loader's package entry table then add_package() sets the classpath_index
// field so that get_system_package() will know to return a non-null value
--- a/src/hotspot/share/classfile/classLoaderExt.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/classfile/classLoaderExt.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2019, 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
@@ -203,13 +203,13 @@
file_end = end;
}
- int name_len = (int)strlen(file_start);
+ size_t name_len = strlen(file_start);
if (name_len > 0) {
ResourceMark rm(THREAD);
- char* libname = NEW_RESOURCE_ARRAY(char, dir_len + name_len + 1);
- *libname = 0;
- strncat(libname, dir_name, dir_len);
- strncat(libname, file_start, name_len);
+ size_t libname_len = dir_len + name_len;
+ char* libname = NEW_RESOURCE_ARRAY(char, libname_len + 1);
+ int n = snprintf(libname, libname_len + 1, "%.*s%s", dir_len, dir_name, file_start);
+ assert((size_t)n == libname_len, "Unexpected number of characters in string");
trace_class_path("library = ", libname);
ClassLoader::update_class_path_entry_list(libname, true, false);
}
--- a/src/hotspot/share/classfile/klassFactory.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/classfile/klassFactory.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
+* Copyright (c) 2015, 2019, 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
@@ -46,22 +46,22 @@
InstanceKlass* ik,
Symbol* class_name,
Handle class_loader,
- Handle protection_domain, TRAPS) {
+ Handle protection_domain,
+ const ClassFileStream *cfs,
+ TRAPS) {
#if INCLUDE_CDS && INCLUDE_JVMTI
assert(ik != NULL, "sanity");
assert(ik->is_shared(), "expecting a shared class");
-
if (JvmtiExport::should_post_class_file_load_hook()) {
assert(THREAD->is_Java_thread(), "must be JavaThread");
// Post the CFLH
JvmtiCachedClassFileData* cached_class_file = NULL;
- JvmtiCachedClassFileData* archived_class_data = ik->get_archived_class_data();
- assert(archived_class_data != NULL, "shared class has no archived class data");
- unsigned char* ptr =
- VM_RedefineClasses::get_cached_class_file_bytes(archived_class_data);
- unsigned char* end_ptr =
- ptr + VM_RedefineClasses::get_cached_class_file_len(archived_class_data);
+ if (cfs == NULL) {
+ cfs = FileMapInfo::open_stream_for_jvmti(ik, CHECK_NULL);
+ }
+ unsigned char* ptr = (unsigned char*)cfs->buffer();
+ unsigned char* end_ptr = ptr + cfs->length();
unsigned char* old_ptr = ptr;
JvmtiExport::post_class_file_load_hook(class_name,
class_loader,
@@ -75,25 +75,9 @@
ClassLoaderData* loader_data =
ClassLoaderData::class_loader_data(class_loader());
int path_index = ik->shared_classpath_index();
- const char* pathname;
- if (path_index < 0) {
- // shared classes loaded by user defined class loader
- // do not have shared_classpath_index
- ModuleEntry* mod_entry = ik->module();
- if (mod_entry != NULL && (mod_entry->location() != NULL)) {
- ResourceMark rm;
- pathname = (const char*)(mod_entry->location()->as_C_string());
- } else {
- pathname = "";
- }
- } else {
- SharedClassPathEntry* ent =
- (SharedClassPathEntry*)FileMapInfo::shared_path(path_index);
- pathname = ent == NULL ? NULL : ent->name();
- }
ClassFileStream* stream = new ClassFileStream(ptr,
end_ptr - ptr,
- pathname,
+ cfs->source(),
ClassFileStream::verify);
ClassFileParser parser(stream,
class_name,
@@ -236,24 +220,6 @@
#if INCLUDE_CDS
if (DumpSharedSpaces) {
ClassLoader::record_result(result, stream, THREAD);
-#if INCLUDE_JVMTI
- assert(cached_class_file == NULL, "Sanity");
- // Archive the class stream data into the optional data section
- JvmtiCachedClassFileData *p;
- int len;
- const unsigned char *bytes;
- // event based tracing might set cached_class_file
- if ((bytes = result->get_cached_class_file_bytes()) != NULL) {
- len = result->get_cached_class_file_len();
- } else {
- len = stream->length();
- bytes = stream->buffer();
- }
- p = (JvmtiCachedClassFileData*)os::malloc(offset_of(JvmtiCachedClassFileData, data) + len, mtInternal);
- p->length = len;
- memcpy(p->data, bytes, len);
- result->set_archived_class_data(p);
-#endif // INCLUDE_JVMTI
}
#endif // INCLUDE_CDS
--- a/src/hotspot/share/classfile/klassFactory.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/classfile/klassFactory.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -80,7 +80,9 @@
InstanceKlass* ik,
Symbol* class_name,
Handle class_loader,
- Handle protection_domain, TRAPS);
+ Handle protection_domain,
+ const ClassFileStream *cfs,
+ TRAPS);
};
#endif // SHARE_CLASSFILE_KLASSFACTORY_HPP
--- a/src/hotspot/share/classfile/stackMapTable.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/classfile/stackMapTable.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -26,6 +26,7 @@
#include "classfile/stackMapTable.hpp"
#include "classfile/verifier.hpp"
#include "memory/resourceArea.hpp"
+#include "oops/constantPool.hpp"
#include "oops/oop.inline.hpp"
#include "runtime/fieldType.hpp"
#include "runtime/handles.inline.hpp"
--- a/src/hotspot/share/classfile/systemDictionary.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/classfile/systemDictionary.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -1174,7 +1174,7 @@
TRAPS) {
InstanceKlass* ik = SystemDictionaryShared::find_builtin_class(class_name);
if (ik != NULL && ik->is_shared_boot_class()) {
- return load_shared_class(ik, Handle(), Handle(), THREAD);
+ return load_shared_class(ik, Handle(), Handle(), NULL, THREAD);
}
return NULL;
}
@@ -1274,7 +1274,9 @@
InstanceKlass* SystemDictionary::load_shared_class(InstanceKlass* ik,
Handle class_loader,
- Handle protection_domain, TRAPS) {
+ Handle protection_domain,
+ const ClassFileStream *cfs,
+ TRAPS) {
if (ik != NULL) {
Symbol* class_name = ik->name();
@@ -1321,7 +1323,7 @@
}
InstanceKlass* new_ik = KlassFactory::check_shared_class_file_load_hook(
- ik, class_name, class_loader, protection_domain, CHECK_NULL);
+ ik, class_name, class_loader, protection_domain, cfs, CHECK_NULL);
if (new_ik != NULL) {
// The class is changed by CFLH. Return the new class. The shared class is
// not used.
--- a/src/hotspot/share/classfile/systemDictionary.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/classfile/systemDictionary.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -628,6 +628,7 @@
static InstanceKlass* load_shared_class(InstanceKlass* ik,
Handle class_loader,
Handle protection_domain,
+ const ClassFileStream *cfs,
TRAPS);
static InstanceKlass* load_shared_boot_class(Symbol* class_name,
TRAPS);
--- a/src/hotspot/share/classfile/systemDictionaryShared.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/classfile/systemDictionaryShared.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -803,7 +803,7 @@
SystemDictionary::is_platform_class_loader(class_loader()))) {
Handle protection_domain =
SystemDictionaryShared::init_security_info(class_loader, ik, CHECK_NULL);
- return load_shared_class(ik, class_loader, protection_domain, THREAD);
+ return load_shared_class(ik, class_loader, protection_domain, NULL, THREAD);
}
}
return NULL;
@@ -873,13 +873,15 @@
}
return acquire_class_for_current_thread(record->_klass, class_loader,
- protection_domain, THREAD);
+ protection_domain, cfs,
+ THREAD);
}
InstanceKlass* SystemDictionaryShared::acquire_class_for_current_thread(
InstanceKlass *ik,
Handle class_loader,
Handle protection_domain,
+ const ClassFileStream *cfs,
TRAPS) {
ClassLoaderData* loader_data = ClassLoaderData::class_loader_data(class_loader());
@@ -900,7 +902,8 @@
loader_data->add_class(ik);
// Load and check super/interfaces, restore unsharable info
- InstanceKlass* shared_klass = load_shared_class(ik, class_loader, protection_domain, THREAD);
+ InstanceKlass* shared_klass = load_shared_class(ik, class_loader, protection_domain,
+ cfs, THREAD);
if (shared_klass == NULL || HAS_PENDING_EXCEPTION) {
// TODO: clean up <ik> so it can be used again
return NULL;
--- a/src/hotspot/share/classfile/systemDictionaryShared.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/classfile/systemDictionaryShared.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -207,6 +207,7 @@
InstanceKlass *ik,
Handle class_loader,
Handle protection_domain,
+ const ClassFileStream* cfs,
TRAPS);
static DumpTimeSharedClassInfo* find_or_allocate_info_for(InstanceKlass* k);
static void write_dictionary(RunTimeSharedDictionary* dictionary, bool is_builtin);
--- a/src/hotspot/share/classfile/verifier.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/classfile/verifier.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2019, 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
@@ -2981,18 +2981,16 @@
}
// add one dimension to component
length++;
- arr_sig_str = NEW_RESOURCE_ARRAY_IN_THREAD(THREAD, char, length);
- arr_sig_str[0] = '[';
- strncpy(&arr_sig_str[1], component_name, length - 1);
+ arr_sig_str = NEW_RESOURCE_ARRAY_IN_THREAD(THREAD, char, length + 1);
+ int n = snprintf(arr_sig_str, length + 1, "[%s", component_name);
+ assert(n == length, "Unexpected number of characters in string");
} else { // it's an object or interface
const char* component_name = component_type.name()->as_utf8();
// add one dimension to component with 'L' prepended and ';' postpended.
length = (int)strlen(component_name) + 3;
- arr_sig_str = NEW_RESOURCE_ARRAY_IN_THREAD(THREAD, char, length);
- arr_sig_str[0] = '[';
- arr_sig_str[1] = 'L';
- strncpy(&arr_sig_str[2], component_name, length - 2);
- arr_sig_str[length - 1] = ';';
+ arr_sig_str = NEW_RESOURCE_ARRAY_IN_THREAD(THREAD, char, length + 1);
+ int n = snprintf(arr_sig_str, length + 1, "[L%s;", component_name);
+ assert(n == length, "Unexpected number of characters in string");
}
Symbol* arr_sig = create_temporary_symbol(
arr_sig_str, length, CHECK_VERIFY(this));
--- a/src/hotspot/share/classfile/verifier.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/classfile/verifier.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -49,7 +49,7 @@
// Return false if the class is loaded by the bootstrap loader,
// or if defineClass was called requesting skipping verification
- // -Xverify:all/none override this value
+ // -Xverify:all overrides this value
static bool should_verify_for(oop class_loader, bool should_verify_class);
// Relax certain access checks to enable some broken 1.1 apps to run on 1.2.
--- a/src/hotspot/share/gc/g1/g1Allocator.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/gc/g1/g1Allocator.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -321,16 +321,26 @@
}
}
-void G1PLABAllocator::waste(size_t& wasted, size_t& undo_wasted) {
- wasted = 0;
- undo_wasted = 0;
+size_t G1PLABAllocator::waste() const {
+ size_t result = 0;
for (uint state = 0; state < InCSetState::Num; state++) {
PLAB * const buf = _alloc_buffers[state];
if (buf != NULL) {
- wasted += buf->waste();
- undo_wasted += buf->undo_waste();
+ result += buf->waste();
}
}
+ return result;
+}
+
+size_t G1PLABAllocator::undo_waste() const {
+ size_t result = 0;
+ for (uint state = 0; state < InCSetState::Num; state++) {
+ PLAB * const buf = _alloc_buffers[state];
+ if (buf != NULL) {
+ result += buf->undo_waste();
+ }
+ }
+ return result;
}
bool G1ArchiveAllocator::_archive_check_enabled = false;
--- a/src/hotspot/share/gc/g1/g1Allocator.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/gc/g1/g1Allocator.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -155,7 +155,8 @@
public:
G1PLABAllocator(G1Allocator* allocator);
- void waste(size_t& wasted, size_t& undo_wasted);
+ size_t waste() const;
+ size_t undo_waste() const;
// Allocate word_sz words in dest, either directly into the regions or by
// allocating a new PLAB. Returns the address of the allocated memory, NULL if
--- a/src/hotspot/share/gc/g1/g1CollectedHeap.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/gc/g1/g1CollectedHeap.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -3282,10 +3282,6 @@
_root_processor->evacuate_roots(pss, worker_id);
- // We pass a weak code blobs closure to the remembered set scanning because we want to avoid
- // treating the nmethods visited to act as roots for concurrent marking.
- // We only want to make sure that the oops in the nmethods are adjusted with regard to the
- // objects copied by the current evacuation.
_g1h->g1_rem_set()->oops_into_collection_set_do(pss, worker_id);
double strong_roots_sec = os::elapsedTime() - start_strong_roots_sec;
@@ -3303,27 +3299,22 @@
G1GCPhaseTimes* p = _g1h->g1_policy()->phase_times();
p->add_time_secs(G1GCPhaseTimes::ObjCopy, worker_id, elapsed_sec - term_sec);
+
+ p->record_or_add_thread_work_item(G1GCPhaseTimes::ObjCopy,
+ worker_id,
+ pss->lab_waste_words() * HeapWordSize,
+ G1GCPhaseTimes::ObjCopyLABWaste);
+ p->record_or_add_thread_work_item(G1GCPhaseTimes::ObjCopy,
+ worker_id,
+ pss->lab_undo_waste_words() * HeapWordSize,
+ G1GCPhaseTimes::ObjCopyLABUndoWaste);
+
p->record_time_secs(G1GCPhaseTimes::Termination, worker_id, term_sec);
p->record_thread_work_item(G1GCPhaseTimes::Termination, worker_id, evac_term_attempts);
}
assert(pss->queue_is_empty(), "should be empty");
- if (log_is_enabled(Debug, gc, task, stats)) {
- MutexLockerEx x(ParGCRareEvent_lock, Mutex::_no_safepoint_check_flag);
- size_t lab_waste;
- size_t lab_undo_waste;
- pss->waste(lab_waste, lab_undo_waste);
- _g1h->print_termination_stats(worker_id,
- (os::elapsedTime() - start_sec) * 1000.0, /* elapsed time */
- strong_roots_sec * 1000.0, /* strong roots time */
- term_sec * 1000.0, /* evac term time */
- evac_term_attempts, /* evac term attempts */
- lab_waste, /* alloc buffer waste */
- lab_undo_waste /* undo waste */
- );
- }
-
// Close the inner scope so that the ResourceMark and HandleMark
// destructors are executed here and are included as part of the
// "GC Worker Time".
@@ -3332,31 +3323,6 @@
}
};
-void G1CollectedHeap::print_termination_stats_hdr() {
- log_debug(gc, task, stats)("GC Termination Stats");
- log_debug(gc, task, stats)(" elapsed --strong roots-- -------termination------- ------waste (KiB)------");
- log_debug(gc, task, stats)("thr ms ms %% ms %% attempts total alloc undo");
- log_debug(gc, task, stats)("--- --------- --------- ------ --------- ------ -------- ------- ------- -------");
-}
-
-void G1CollectedHeap::print_termination_stats(uint worker_id,
- double elapsed_ms,
- double strong_roots_ms,
- double term_ms,
- size_t term_attempts,
- size_t alloc_buffer_waste,
- size_t undo_waste) const {
- log_debug(gc, task, stats)
- ("%3d %9.2f %9.2f %6.2f "
- "%9.2f %6.2f " SIZE_FORMAT_W(8) " "
- SIZE_FORMAT_W(7) " " SIZE_FORMAT_W(7) " " SIZE_FORMAT_W(7),
- worker_id, elapsed_ms, strong_roots_ms, strong_roots_ms * 100 / elapsed_ms,
- term_ms, term_ms * 100 / elapsed_ms, term_attempts,
- (alloc_buffer_waste + undo_waste) * HeapWordSize / K,
- alloc_buffer_waste * HeapWordSize / K,
- undo_waste * HeapWordSize / K);
-}
-
void G1CollectedHeap::complete_cleaning(BoolObjectClosure* is_alive,
bool class_unloading_occurred) {
uint num_workers = workers()->active_workers();
@@ -3767,8 +3733,6 @@
G1RootProcessor root_processor(this, n_workers);
G1ParTask g1_par_task(this, per_thread_states, _task_queues, &root_processor, n_workers);
- print_termination_stats_hdr();
-
workers()->run_task(&g1_par_task);
end_par_time_sec = os::elapsedTime();
--- a/src/hotspot/share/gc/g1/g1CollectedHeap.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/gc/g1/g1CollectedHeap.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -738,16 +738,6 @@
void pre_evacuate_collection_set();
void post_evacuate_collection_set(G1EvacuationInfo& evacuation_info, G1ParScanThreadStateSet* pss);
- // Print the header for the per-thread termination statistics.
- static void print_termination_stats_hdr();
- // Print actual per-thread termination statistics.
- void print_termination_stats(uint worker_id,
- double elapsed_ms,
- double strong_roots_ms,
- double term_ms,
- size_t term_attempts,
- size_t alloc_buffer_waste,
- size_t undo_waste) const;
// Update object copying statistics.
void record_obj_copy_mem_stats();
--- a/src/hotspot/share/gc/g1/g1FullGCOopClosures.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/gc/g1/g1FullGCOopClosures.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2019, 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
@@ -71,26 +71,19 @@
}
if (!_g1h->is_in_closed_subset(obj)) {
HeapRegion* from = _g1h->heap_region_containing((HeapWord*)p);
- yy.print_cr("Field " PTR_FORMAT
- " of live obj " PTR_FORMAT " in region "
- "[" PTR_FORMAT ", " PTR_FORMAT ")",
- p2i(p), p2i(_containing_obj),
- p2i(from->bottom()), p2i(from->end()));
+ yy.print_cr("Field " PTR_FORMAT " of live obj " PTR_FORMAT " in region " HR_FORMAT,
+ p2i(p), p2i(_containing_obj), HR_FORMAT_PARAMS(from));
print_object(&yy, _containing_obj);
yy.print_cr("points to obj " PTR_FORMAT " not in the heap",
- p2i(obj));
+ p2i(obj));
} else {
HeapRegion* from = _g1h->heap_region_containing((HeapWord*)p);
HeapRegion* to = _g1h->heap_region_containing((HeapWord*)obj);
- yy.print_cr("Field " PTR_FORMAT
- " of live obj " PTR_FORMAT " in region "
- "[" PTR_FORMAT ", " PTR_FORMAT ")",
- p2i(p), p2i(_containing_obj),
- p2i(from->bottom()), p2i(from->end()));
+ yy.print_cr("Field " PTR_FORMAT " of live obj " PTR_FORMAT " in region " HR_FORMAT,
+ p2i(p), p2i(_containing_obj), HR_FORMAT_PARAMS(from));
print_object(&yy, _containing_obj);
- yy.print_cr("points to dead obj " PTR_FORMAT " in region "
- "[" PTR_FORMAT ", " PTR_FORMAT ")",
- p2i(obj), p2i(to->bottom()), p2i(to->end()));
+ yy.print_cr("points to dead obj " PTR_FORMAT " in region " HR_FORMAT,
+ p2i(obj), HR_FORMAT_PARAMS(to));
print_object(&yy, obj);
}
yy.print_cr("----------");
--- a/src/hotspot/share/gc/g1/g1GCPhaseTimes.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/gc/g1/g1GCPhaseTimes.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -60,6 +60,9 @@
_gc_par_phases[SystemDictionaryRoots] = new WorkerDataArray<double>(max_gc_threads, "SystemDictionary Roots (ms):");
_gc_par_phases[CLDGRoots] = new WorkerDataArray<double>(max_gc_threads, "CLDG Roots (ms):");
_gc_par_phases[JVMTIRoots] = new WorkerDataArray<double>(max_gc_threads, "JVMTI Roots (ms):");
+#if INCLUDE_AOT
+ _gc_par_phases[AOTCodeRoots] = new WorkerDataArray<double>(max_gc_threads, "AOT Root Scan (ms):");
+#endif
_gc_par_phases[CMRefRoots] = new WorkerDataArray<double>(max_gc_threads, "CM RefProcessor Roots (ms):");
_gc_par_phases[WaitForStrongCLD] = new WorkerDataArray<double>(max_gc_threads, "Wait For Strong CLD (ms):");
_gc_par_phases[WeakCLDRoots] = new WorkerDataArray<double>(max_gc_threads, "Weak CLD Roots (ms):");
@@ -74,9 +77,6 @@
_gc_par_phases[ScanRS] = new WorkerDataArray<double>(max_gc_threads, "Scan RS (ms):");
_gc_par_phases[OptScanRS] = new WorkerDataArray<double>(max_gc_threads, "Optional Scan RS (ms):");
_gc_par_phases[CodeRoots] = new WorkerDataArray<double>(max_gc_threads, "Code Root Scanning (ms):");
-#if INCLUDE_AOT
- _gc_par_phases[AOTCodeRoots] = new WorkerDataArray<double>(max_gc_threads, "AOT Root Scanning (ms):");
-#endif
_gc_par_phases[ObjCopy] = new WorkerDataArray<double>(max_gc_threads, "Object Copy (ms):");
_gc_par_phases[OptObjCopy] = new WorkerDataArray<double>(max_gc_threads, "Optional Object Copy (ms):");
_gc_par_phases[Termination] = new WorkerDataArray<double>(max_gc_threads, "Termination (ms):");
@@ -107,6 +107,11 @@
_update_rs_skipped_cards = new WorkerDataArray<size_t>(max_gc_threads, "Skipped Cards:");
_gc_par_phases[UpdateRS]->link_thread_work_items(_update_rs_skipped_cards, UpdateRSSkippedCards);
+ _obj_copy_lab_waste = new WorkerDataArray<size_t>(max_gc_threads, "LAB Waste");
+ _gc_par_phases[ObjCopy]->link_thread_work_items(_obj_copy_lab_waste, ObjCopyLABWaste);
+ _obj_copy_lab_undo_waste = new WorkerDataArray<size_t>(max_gc_threads, "LAB Undo Waste");
+ _gc_par_phases[ObjCopy]->link_thread_work_items(_obj_copy_lab_undo_waste, ObjCopyLABUndoWaste);
+
_termination_attempts = new WorkerDataArray<size_t>(max_gc_threads, "Termination Attempts:");
_gc_par_phases[Termination]->link_thread_work_items(_termination_attempts);
@@ -383,15 +388,12 @@
for (int i = ThreadRoots; i <= SATBFiltering; i++) {
trace_phase(_gc_par_phases[i]);
}
+ if (G1HotCardCache::default_use_cache()) {
+ debug_phase(_gc_par_phases[ScanHCC]);
+ }
debug_phase(_gc_par_phases[UpdateRS]);
- if (G1HotCardCache::default_use_cache()) {
- trace_phase(_gc_par_phases[ScanHCC]);
- }
debug_phase(_gc_par_phases[ScanRS]);
debug_phase(_gc_par_phases[CodeRoots]);
-#if INCLUDE_AOT
- debug_phase(_gc_par_phases[AOTCodeRoots]);
-#endif
debug_phase(_gc_par_phases[ObjCopy]);
debug_phase(_gc_par_phases[Termination]);
debug_phase(_gc_par_phases[Other]);
@@ -503,6 +505,9 @@
"SystemDictionaryRoots",
"CLDGRoots",
"JVMTIRoots",
+#if INCLUDE_AOT
+ "AOTCodeRoots",
+#endif
"CMRefRoots",
"WaitForStrongCLD",
"WeakCLDRoots",
@@ -512,9 +517,6 @@
"ScanRS",
"OptScanRS",
"CodeRoots",
-#if INCLUDE_AOT
- "AOTCodeRoots",
-#endif
"ObjCopy",
"OptObjCopy",
"Termination",
--- a/src/hotspot/share/gc/g1/g1GCPhaseTimes.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/gc/g1/g1GCPhaseTimes.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -55,6 +55,9 @@
SystemDictionaryRoots,
CLDGRoots,
JVMTIRoots,
+#if INCLUDE_AOT
+ AOTCodeRoots,
+#endif
CMRefRoots,
WaitForStrongCLD,
WeakCLDRoots,
@@ -64,9 +67,6 @@
ScanRS,
OptScanRS,
CodeRoots,
-#if INCLUDE_AOT
- AOTCodeRoots,
-#endif
ObjCopy,
OptObjCopy,
Termination,
@@ -93,6 +93,11 @@
UpdateRSSkippedCards
};
+ enum GCObjCopyWorkItems {
+ ObjCopyLABWaste,
+ ObjCopyLABUndoWaste
+ };
+
enum GCOptCSetWorkItems {
OptCSetScannedCards,
OptCSetClaimedCards,
@@ -114,6 +119,9 @@
WorkerDataArray<size_t>* _scan_rs_claimed_cards;
WorkerDataArray<size_t>* _scan_rs_skipped_cards;
+ WorkerDataArray<size_t>* _obj_copy_lab_waste;
+ WorkerDataArray<size_t>* _obj_copy_lab_undo_waste;
+
WorkerDataArray<size_t>* _opt_cset_scanned_cards;
WorkerDataArray<size_t>* _opt_cset_claimed_cards;
WorkerDataArray<size_t>* _opt_cset_skipped_cards;
--- a/src/hotspot/share/gc/g1/g1ParScanThreadState.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/gc/g1/g1ParScanThreadState.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2019, 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
@@ -106,8 +106,12 @@
delete[] _oops_into_optional_regions;
}
-void G1ParScanThreadState::waste(size_t& wasted, size_t& undo_wasted) {
- _plab_allocator->waste(wasted, undo_wasted);
+size_t G1ParScanThreadState::lab_waste_words() const {
+ return _plab_allocator->waste();
+}
+
+size_t G1ParScanThreadState::lab_undo_waste_words() const {
+ return _plab_allocator->undo_waste();
}
#ifdef ASSERT
--- a/src/hotspot/share/gc/g1/g1ParScanThreadState.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/gc/g1/g1ParScanThreadState.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -127,9 +127,8 @@
G1EvacuationRootClosures* closures() { return _closures; }
uint worker_id() { return _worker_id; }
- // Returns the current amount of waste due to alignment or not being able to fit
- // objects within LABs and the undo waste.
- virtual void waste(size_t& wasted, size_t& undo_wasted);
+ size_t lab_waste_words() const;
+ size_t lab_undo_waste_words() const;
size_t* surviving_young_words() {
// We add one to hide entry 0 which accumulates surviving words for
--- a/src/hotspot/share/gc/g1/g1RemSet.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/gc/g1/g1RemSet.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -409,6 +409,10 @@
void G1ScanRSForRegionClosure::scan_strong_code_roots(HeapRegion* r) {
EventGCPhaseParallel event;
+ // We pass a weak code blobs closure to the remembered set scanning because we want to avoid
+ // treating the nmethods visited to act as roots for concurrent marking.
+ // We only want to make sure that the oops in the nmethods are adjusted with regard to the
+ // objects copied by the current evacuation.
r->strong_code_roots_do(_pss->closures()->weak_codeblobs());
event.commit(GCId::current(), _worker_i, G1GCPhaseTimes::phase_name(G1GCPhaseTimes::CodeRoots));
}
--- a/src/hotspot/share/gc/g1/heapRegion.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/gc/g1/heapRegion.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -336,8 +336,8 @@
// Object is in the region. Check that its less than top
if (_hr->top() <= (HeapWord*)obj) {
// Object is above top
- log_error(gc, verify)("Object " PTR_FORMAT " in region [" PTR_FORMAT ", " PTR_FORMAT ") is above top " PTR_FORMAT,
- p2i(obj), p2i(_hr->bottom()), p2i(_hr->end()), p2i(_hr->top()));
+ log_error(gc, verify)("Object " PTR_FORMAT " in region " HR_FORMAT " is above top ",
+ p2i(obj), HR_FORMAT_PARAMS(_hr));
_failures = true;
return;
}
@@ -415,8 +415,8 @@
// on its strong code root list
if (is_empty()) {
if (strong_code_roots_length > 0) {
- log_error(gc, verify)("region [" PTR_FORMAT "," PTR_FORMAT "] is empty but has " SIZE_FORMAT " code root entries",
- p2i(bottom()), p2i(end()), strong_code_roots_length);
+ log_error(gc, verify)("region " HR_FORMAT " is empty but has " SIZE_FORMAT " code root entries",
+ HR_FORMAT_PARAMS(this), strong_code_roots_length);
*failures = true;
}
return;
@@ -524,21 +524,22 @@
ResourceMark rm;
if (!_g1h->is_in_closed_subset(obj)) {
HeapRegion* from = _g1h->heap_region_containing((HeapWord*)p);
- log.error("Field " PTR_FORMAT " of live obj " PTR_FORMAT " in region [" PTR_FORMAT ", " PTR_FORMAT ")",
- p2i(p), p2i(_containing_obj), p2i(from->bottom()), p2i(from->end()));
+ log.error("Field " PTR_FORMAT " of live obj " PTR_FORMAT " in region " HR_FORMAT,
+ p2i(p), p2i(_containing_obj), HR_FORMAT_PARAMS(from));
LogStream ls(log.error());
print_object(&ls, _containing_obj);
HeapRegion* const to = _g1h->heap_region_containing(obj);
- log.error("points to obj " PTR_FORMAT " in region " HR_FORMAT " remset %s", p2i(obj), HR_FORMAT_PARAMS(to), to->rem_set()->get_state_str());
+ log.error("points to obj " PTR_FORMAT " in region " HR_FORMAT " remset %s",
+ p2i(obj), HR_FORMAT_PARAMS(to), to->rem_set()->get_state_str());
} else {
HeapRegion* from = _g1h->heap_region_containing((HeapWord*)p);
HeapRegion* to = _g1h->heap_region_containing((HeapWord*)obj);
- log.error("Field " PTR_FORMAT " of live obj " PTR_FORMAT " in region [" PTR_FORMAT ", " PTR_FORMAT ")",
- p2i(p), p2i(_containing_obj), p2i(from->bottom()), p2i(from->end()));
+ log.error("Field " PTR_FORMAT " of live obj " PTR_FORMAT " in region " HR_FORMAT,
+ p2i(p), p2i(_containing_obj), HR_FORMAT_PARAMS(from));
LogStream ls(log.error());
print_object(&ls, _containing_obj);
- log.error("points to dead obj " PTR_FORMAT " in region [" PTR_FORMAT ", " PTR_FORMAT ")",
- p2i(obj), p2i(to->bottom()), p2i(to->end()));
+ log.error("points to dead obj " PTR_FORMAT " in region " HR_FORMAT,
+ p2i(obj), HR_FORMAT_PARAMS(to));
print_object(&ls, obj);
}
log.error("----------");
@@ -593,12 +594,13 @@
log.error("----------");
}
log.error("Missing rem set entry:");
- log.error("Field " PTR_FORMAT " of obj " PTR_FORMAT ", in region " HR_FORMAT,
- p2i(p), p2i(_containing_obj), HR_FORMAT_PARAMS(from));
+ log.error("Field " PTR_FORMAT " of obj " PTR_FORMAT " in region " HR_FORMAT,
+ p2i(p), p2i(_containing_obj), HR_FORMAT_PARAMS(from));
ResourceMark rm;
LogStream ls(log.error());
_containing_obj->print_on(&ls);
- log.error("points to obj " PTR_FORMAT " in region " HR_FORMAT " remset %s", p2i(obj), HR_FORMAT_PARAMS(to), to->rem_set()->get_state_str());
+ log.error("points to obj " PTR_FORMAT " in region " HR_FORMAT " remset %s",
+ p2i(obj), HR_FORMAT_PARAMS(to), to->rem_set()->get_state_str());
if (oopDesc::is_oop(obj)) {
obj->print_on(&ls);
}
--- a/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -335,7 +335,7 @@
// Filter marked objects before hitting the SATB queues. The same predicate would
// be used by SATBMQ::filter to eliminate already marked objects downstream, but
// filtering here helps to avoid wasteful SATB queueing work to begin with.
- if (!_heap->requires_marking(obj)) return;
+ if (!_heap->requires_marking<false>(obj)) return;
Thread* thr = Thread::current();
if (thr->is_Java_thread()) {
--- a/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -2639,6 +2639,10 @@
return memory_pools;
}
+MemoryUsage ShenandoahHeap::memory_usage() {
+ return _memory_pool->get_memory_usage();
+}
+
void ShenandoahHeap::enter_evacuation() {
_oom_evac_handler.enter_evacuation();
}
--- a/src/hotspot/share/gc/shenandoah/shenandoahHeap.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/gc/shenandoah/shenandoahHeap.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -511,6 +511,7 @@
GrowableArray<GCMemoryManager*> memory_managers();
GrowableArray<MemoryPool*> memory_pools();
+ MemoryUsage memory_usage();
GCTracer* tracer();
GCTimer* gc_timer() const;
CollectorPolicy* collector_policy() const;
@@ -676,6 +677,7 @@
void reset_mark_bitmap();
// SATB barriers hooks
+ template<bool RESOLVE>
inline bool requires_marking(const void* entry) const;
void force_satb_flush_all_threads();
--- a/src/hotspot/share/gc/shenandoah/shenandoahHeap.inline.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/gc/shenandoah/shenandoahHeap.inline.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -316,8 +316,13 @@
}
}
+template<bool RESOLVE>
inline bool ShenandoahHeap::requires_marking(const void* entry) const {
- return !_marking_context->is_marked(oop(entry));
+ oop obj = oop(entry);
+ if (RESOLVE) {
+ obj = ShenandoahBarrierSet::resolve_forwarded_not_null(obj);
+ }
+ return !_marking_context->is_marked(obj);
}
template <class T>
--- a/src/hotspot/share/gc/shenandoah/shenandoahMemoryPool.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/gc/shenandoah/shenandoahMemoryPool.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -26,7 +26,7 @@
ShenandoahMemoryPool::ShenandoahMemoryPool(ShenandoahHeap* heap) :
CollectedMemoryPool("Shenandoah",
- heap->capacity(),
+ heap->initial_capacity(),
heap->max_capacity(),
true /* support_usage_threshold */),
_heap(heap) {}
@@ -37,9 +37,15 @@
size_t used = used_in_bytes();
size_t committed = _heap->committed();
+ // These asserts can never fail: max is stable, and all updates to other values never overflow max.
assert(initial <= max, "initial: " SIZE_FORMAT ", max: " SIZE_FORMAT, initial, max);
assert(used <= max, "used: " SIZE_FORMAT ", max: " SIZE_FORMAT, used, max);
assert(committed <= max, "committed: " SIZE_FORMAT ", max: " SIZE_FORMAT, committed, max);
+
+ // Committed and used are updated concurrently and independently. They can momentarily break
+ // the assert below, which would also fail in downstream code. To avoid that, adjust values
+ // to make sense under the race. See JDK-8207200.
+ committed = MAX2(used, committed);
assert(used <= committed, "used: " SIZE_FORMAT ", committed: " SIZE_FORMAT, used, committed);
return MemoryUsage(initial, used, committed, max);
--- a/src/hotspot/share/gc/shenandoah/shenandoahSATBMarkQueueSet.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/gc/shenandoah/shenandoahSATBMarkQueueSet.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -49,12 +49,9 @@
return ShenandoahThreadLocalData::satb_mark_queue(t);
}
-static inline bool discard_entry(const void* entry, ShenandoahHeap* heap) {
- return !heap->requires_marking(entry);
-}
-
+template <bool RESOLVE>
class ShenandoahSATBMarkQueueFilterFn {
- ShenandoahHeap* _heap;
+ ShenandoahHeap* const _heap;
public:
ShenandoahSATBMarkQueueFilterFn(ShenandoahHeap* heap) : _heap(heap) {}
@@ -62,13 +59,17 @@
// Return true if entry should be filtered out (removed), false if
// it should be retained.
bool operator()(const void* entry) const {
- return discard_entry(entry, _heap);
+ return !_heap->requires_marking<RESOLVE>(entry);
}
};
void ShenandoahSATBMarkQueueSet::filter(SATBMarkQueue* queue) {
assert(_heap != NULL, "SATB queue set not initialized");
- apply_filter(ShenandoahSATBMarkQueueFilterFn(_heap), queue);
+ if (_heap->has_forwarded_objects()) {
+ apply_filter(ShenandoahSATBMarkQueueFilterFn<true>(_heap), queue);
+ } else {
+ apply_filter(ShenandoahSATBMarkQueueFilterFn<false>(_heap), queue);
+ }
}
bool ShenandoahSATBMarkQueue::should_enqueue_buffer() {
--- a/src/hotspot/share/gc/z/zInitialize.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/gc/z/zInitialize.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -30,7 +30,7 @@
#include "gc/z/zLargePages.hpp"
#include "gc/z/zNUMA.hpp"
#include "gc/z/zStat.hpp"
-#include "gc/z/zStatTLAB.hpp"
+#include "gc/z/zThreadLocalAllocBuffer.hpp"
#include "gc/z/zTracer.hpp"
#include "logging/log.hpp"
#include "runtime/vm_version.hpp"
@@ -46,7 +46,7 @@
ZNUMA::initialize();
ZCPU::initialize();
ZStatValue::initialize();
- ZStatTLAB::initialize();
+ ZThreadLocalAllocBuffer::initialize();
ZTracer::initialize();
ZLargePages::initialize();
ZBarrierSet::set_barrier_set(barrier_set);
--- a/src/hotspot/share/gc/z/zMark.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/gc/z/zMark.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2019, 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,9 @@
#include "gc/z/zPageTable.inline.hpp"
#include "gc/z/zRootsIterator.hpp"
#include "gc/z/zStat.hpp"
-#include "gc/z/zStatTLAB.hpp"
#include "gc/z/zTask.hpp"
#include "gc/z/zThread.hpp"
+#include "gc/z/zThreadLocalAllocBuffer.hpp"
#include "gc/z/zUtils.inline.hpp"
#include "gc/z/zWorkers.inline.hpp"
#include "logging/log.hpp"
@@ -119,32 +119,21 @@
}
class ZMarkRootsIteratorClosure : public ZRootsIteratorClosure {
-private:
- static void fixup_address(HeapWord** p) {
- *p = (HeapWord*)ZAddress::good_or_null((uintptr_t)*p);
- }
-
public:
ZMarkRootsIteratorClosure() {
- ZStatTLAB::reset();
+ ZThreadLocalAllocBuffer::reset_statistics();
}
~ZMarkRootsIteratorClosure() {
- ZStatTLAB::publish();
+ ZThreadLocalAllocBuffer::publish_statistics();
}
virtual void do_thread(Thread* thread) {
- ZRootsIteratorClosure::do_thread(thread);
-
// Update thread local address bad mask
ZThreadLocalData::set_address_bad_mask(thread, ZAddressBadMask);
// Retire TLAB
- if (UseTLAB && thread->is_Java_thread()) {
- thread->tlab().addresses_do(fixup_address);
- thread->tlab().retire(ZStatTLAB::get());
- thread->tlab().resize();
- }
+ ZThreadLocalAllocBuffer::retire(thread);
}
virtual void do_oop(oop* p) {
--- a/src/hotspot/share/gc/z/zRelocate.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/gc/z/zRelocate.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -31,28 +31,20 @@
#include "gc/z/zRelocationSet.inline.hpp"
#include "gc/z/zRootsIterator.hpp"
#include "gc/z/zTask.hpp"
+#include "gc/z/zThreadLocalAllocBuffer.hpp"
#include "gc/z/zWorkers.hpp"
ZRelocate::ZRelocate(ZWorkers* workers) :
_workers(workers) {}
class ZRelocateRootsIteratorClosure : public ZRootsIteratorClosure {
-private:
- static void remap_address(HeapWord** p) {
- *p = (HeapWord*)ZAddress::good_or_null((uintptr_t)*p);
- }
-
public:
virtual void do_thread(Thread* thread) {
- ZRootsIteratorClosure::do_thread(thread);
-
// Update thread local address bad mask
ZThreadLocalData::set_address_bad_mask(thread, ZAddressBadMask);
// Remap TLAB
- if (UseTLAB && thread->is_Java_thread()) {
- thread->tlab().addresses_do(remap_address);
- }
+ ZThreadLocalAllocBuffer::remap(thread);
}
virtual void do_oop(oop* p) {
--- a/src/hotspot/share/gc/z/zRootsIterator.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/gc/z/zRootsIterator.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -135,29 +135,38 @@
}
}
-class ZCodeBlobClosure : public CodeBlobToOopClosure {
+class ZRootsIteratorCodeBlobClosure : public CodeBlobToOopClosure {
private:
BarrierSetNMethod* _bs;
public:
- ZCodeBlobClosure(OopClosure* cl) :
+ ZRootsIteratorCodeBlobClosure(OopClosure* cl) :
CodeBlobToOopClosure(cl, true /* fix_relocations */),
_bs(BarrierSet::barrier_set()->barrier_set_nmethod()) {}
virtual void do_code_blob(CodeBlob* cb) {
nmethod* const nm = cb->as_nmethod_or_null();
- if (nm == NULL || nm->test_set_oops_do_mark()) {
- return;
+ if (nm != NULL && !nm->test_set_oops_do_mark()) {
+ CodeBlobToOopClosure::do_code_blob(cb);
+ _bs->disarm(nm);
}
- CodeBlobToOopClosure::do_code_blob(cb);
- _bs->disarm(nm);
}
};
-void ZRootsIteratorClosure::do_thread(Thread* thread) {
- ZCodeBlobClosure code_cl(this);
- thread->oops_do(this, ClassUnloading ? &code_cl : NULL);
-}
+class ZRootsIteratorThreadClosure : public ThreadClosure {
+private:
+ ZRootsIteratorClosure* _cl;
+
+public:
+ ZRootsIteratorThreadClosure(ZRootsIteratorClosure* cl) :
+ _cl(cl) {}
+
+ virtual void do_thread(Thread* thread) {
+ ZRootsIteratorCodeBlobClosure code_cl(_cl);
+ thread->oops_do(_cl, ClassUnloading ? &code_cl : NULL);
+ _cl->do_thread(thread);
+ }
+};
ZRootsIterator::ZRootsIterator() :
_universe(this),
@@ -227,7 +236,8 @@
void ZRootsIterator::do_threads(ZRootsIteratorClosure* cl) {
ZStatTimer timer(ZSubPhasePauseRootsThreads);
ResourceMark rm;
- Threads::possibly_parallel_threads_do(true, cl);
+ ZRootsIteratorThreadClosure thread_cl(cl);
+ Threads::possibly_parallel_threads_do(true, &thread_cl);
}
void ZRootsIterator::do_code_cache(ZRootsIteratorClosure* cl) {
--- a/src/hotspot/share/gc/z/zRootsIterator.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/gc/z/zRootsIterator.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -31,9 +31,9 @@
#include "runtime/thread.hpp"
#include "utilities/globalDefinitions.hpp"
-class ZRootsIteratorClosure : public OopClosure, public ThreadClosure {
+class ZRootsIteratorClosure : public OopClosure {
public:
- virtual void do_thread(Thread* thread);
+ virtual void do_thread(Thread* thread) {}
};
typedef OopStorage::ParState<true /* concurrent */, false /* is_const */> ZOopStorageIterator;
--- a/src/hotspot/share/gc/z/zStatTLAB.cpp Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-#include "gc/z/zStatTLAB.hpp"
-
-ZPerWorker<ThreadLocalAllocStats>* ZStatTLAB::_stats = NULL;
-
-void ZStatTLAB::initialize() {
- if (UseTLAB) {
- assert(_stats == NULL, "Already initialized");
- _stats = new ZPerWorker<ThreadLocalAllocStats>();
- reset();
- }
-}
-
-void ZStatTLAB::reset() {
- if (UseTLAB) {
- ZPerWorkerIterator<ThreadLocalAllocStats> iter(_stats);
- for (ThreadLocalAllocStats* stats; iter.next(&stats);) {
- stats->reset();
- }
- }
-}
-
-ThreadLocalAllocStats* ZStatTLAB::get() {
- if (UseTLAB) {
- return _stats->addr();
- }
-
- return NULL;
-}
-
-void ZStatTLAB::publish() {
- if (UseTLAB) {
- ThreadLocalAllocStats total;
-
- ZPerWorkerIterator<ThreadLocalAllocStats> iter(_stats);
- for (ThreadLocalAllocStats* stats; iter.next(&stats);) {
- total.update(*stats);
- }
-
- total.publish();
- }
-}
--- a/src/hotspot/share/gc/z/zStatTLAB.hpp Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-#ifndef SHARE_GC_Z_ZSTATTLAB_HPP
-#define SHARE_GC_Z_ZSTATTLAB_HPP
-
-#include "gc/shared/threadLocalAllocBuffer.hpp"
-#include "gc/z/zValue.hpp"
-#include "memory/allocation.hpp"
-
-class ZStatTLAB : public AllStatic {
-private:
- static ZPerWorker<ThreadLocalAllocStats>* _stats;
-
-public:
- static void initialize();
- static void reset();
- static ThreadLocalAllocStats* get();
- static void publish();
-};
-
-#endif // SHARE_GC_Z_ZSTATTLAB_HPP
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/gc/z/zThreadLocalAllocBuffer.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+#include "precompiled.hpp"
+#include "gc/z/zAddress.inline.hpp"
+#include "gc/z/zThreadLocalAllocBuffer.hpp"
+#include "runtime/globals.hpp"
+#include "runtime/thread.hpp"
+
+ZPerWorker<ThreadLocalAllocStats>* ZThreadLocalAllocBuffer::_stats = NULL;
+
+void ZThreadLocalAllocBuffer::initialize() {
+ if (UseTLAB) {
+ assert(_stats == NULL, "Already initialized");
+ _stats = new ZPerWorker<ThreadLocalAllocStats>();
+ reset_statistics();
+ }
+}
+
+void ZThreadLocalAllocBuffer::reset_statistics() {
+ if (UseTLAB) {
+ ZPerWorkerIterator<ThreadLocalAllocStats> iter(_stats);
+ for (ThreadLocalAllocStats* stats; iter.next(&stats);) {
+ stats->reset();
+ }
+ }
+}
+
+void ZThreadLocalAllocBuffer::publish_statistics() {
+ if (UseTLAB) {
+ ThreadLocalAllocStats total;
+
+ ZPerWorkerIterator<ThreadLocalAllocStats> iter(_stats);
+ for (ThreadLocalAllocStats* stats; iter.next(&stats);) {
+ total.update(*stats);
+ }
+
+ total.publish();
+ }
+}
+
+static void fixup_address(HeapWord** p) {
+ *p = (HeapWord*)ZAddress::good_or_null((uintptr_t)*p);
+}
+
+void ZThreadLocalAllocBuffer::retire(Thread* thread) {
+ if (UseTLAB && thread->is_Java_thread()) {
+ ThreadLocalAllocStats* const stats = _stats->addr();
+ thread->tlab().addresses_do(fixup_address);
+ thread->tlab().retire(stats);
+ thread->tlab().resize();
+ }
+}
+
+void ZThreadLocalAllocBuffer::remap(Thread* thread) {
+ if (UseTLAB && thread->is_Java_thread()) {
+ thread->tlab().addresses_do(fixup_address);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/gc/z/zThreadLocalAllocBuffer.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+#ifndef SHARE_GC_Z_ZTHREADLOCALALLOCBUFFER_HPP
+#define SHARE_GC_Z_ZTHREADLOCALALLOCBUFFER_HPP
+
+#include "gc/shared/threadLocalAllocBuffer.hpp"
+#include "gc/z/zValue.hpp"
+#include "memory/allocation.hpp"
+
+class ZThreadLocalAllocBuffer : public AllStatic {
+private:
+ static ZPerWorker<ThreadLocalAllocStats>* _stats;
+
+public:
+ static void initialize();
+
+ static void reset_statistics();
+ static void publish_statistics();
+
+ static void retire(Thread* thread);
+ static void remap(Thread* thread);
+};
+
+#endif // SHARE_GC_Z_ZTHREADLOCALALLOCBUFFER_HPP
--- a/src/hotspot/share/interpreter/linkResolver.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/interpreter/linkResolver.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -39,6 +39,7 @@
#include "logging/logStream.hpp"
#include "memory/resourceArea.hpp"
#include "memory/universe.hpp"
+#include "oops/constantPool.hpp"
#include "oops/cpCache.inline.hpp"
#include "oops/instanceKlass.hpp"
#include "oops/method.hpp"
--- a/src/hotspot/share/interpreter/rewriter.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/interpreter/rewriter.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -28,6 +28,7 @@
#include "interpreter/rewriter.hpp"
#include "memory/metadataFactory.hpp"
#include "memory/resourceArea.hpp"
+#include "oops/constantPool.hpp"
#include "oops/generateOopMap.hpp"
#include "prims/methodHandles.hpp"
#include "runtime/fieldDescriptor.inline.hpp"
--- a/src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -43,6 +43,7 @@
#include "memory/allocation.inline.hpp"
#include "memory/resourceArea.hpp"
#include "oops/array.hpp"
+#include "oops/constantPool.hpp"
#include "oops/instanceKlass.hpp"
#include "oops/method.hpp"
#include "prims/jvmtiRedefineClasses.hpp"
--- a/src/hotspot/share/logging/logFileOutput.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/logging/logFileOutput.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -51,6 +51,14 @@
_file_name = make_file_name(name + strlen(Prefix), _pid_str, _vm_start_time_str);
}
+const char* LogFileOutput::cur_log_file_name() {
+ if (strlen(_archive_name) == 0) {
+ return _file_name;
+ } else {
+ return _archive_name;
+ }
+}
+
void LogFileOutput::set_file_name_parameters(jlong vm_start_time) {
int res = jio_snprintf(_pid_str, sizeof(_pid_str), "%d", os::current_process_id());
assert(res > 0, "PID buffer too small");
@@ -234,6 +242,7 @@
_file_count_max_digits = number_of_digits(_file_count - 1);
_archive_name_len = 2 + strlen(_file_name) + _file_count_max_digits;
_archive_name = NEW_C_HEAP_ARRAY(char, _archive_name_len, mtLogging);
+ _archive_name[0] = 0;
}
log_trace(logging)("Initializing logging to file '%s' (filecount: %u"
--- a/src/hotspot/share/logging/logFileOutput.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/logging/logFileOutput.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -92,6 +92,7 @@
return _name;
}
+ const char* cur_log_file_name();
static const char* const Prefix;
static void set_file_name_parameters(jlong start_time);
};
--- a/src/hotspot/share/memory/allocation.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/memory/allocation.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -132,6 +132,7 @@
f(mtArguments, "Arguments") \
f(mtModule, "Module") \
f(mtSafepoint, "Safepoint") \
+ f(mtSynchronizer, "Synchronization") \
f(mtNone, "Unknown") \
//end
--- a/src/hotspot/share/memory/filemap.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/memory/filemap.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2019, 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,6 +45,7 @@
#include "prims/jvmtiExport.hpp"
#include "runtime/arguments.hpp"
#include "runtime/java.hpp"
+#include "runtime/mutexLocker.hpp"
#include "runtime/os.inline.hpp"
#include "runtime/vm_version.hpp"
#include "services/memTracker.hpp"
@@ -501,6 +502,16 @@
}
_validating_shared_path_table = false;
+
+#if INCLUDE_JVMTI
+ if (_classpath_entries_for_jvmti != NULL) {
+ os::free(_classpath_entries_for_jvmti);
+ }
+ size_t sz = sizeof(ClassPathEntry*) * _shared_path_table_size;
+ _classpath_entries_for_jvmti = (ClassPathEntry**)os::malloc(sz, mtClass);
+ memset(_classpath_entries_for_jvmti, 0, sz);
+#endif
+
return true;
}
@@ -1440,3 +1451,57 @@
fail_stop("%s", msg);
}
}
+
+#if INCLUDE_JVMTI
+ClassPathEntry** FileMapInfo::_classpath_entries_for_jvmti = NULL;
+
+ClassPathEntry* FileMapInfo::get_classpath_entry_for_jvmti(int i, TRAPS) {
+ ClassPathEntry* ent = _classpath_entries_for_jvmti[i];
+ if (ent == NULL) {
+ if (i == 0) {
+ ent = ClassLoader:: get_jrt_entry();
+ assert(ent != NULL, "must be");
+ } else {
+ SharedClassPathEntry* scpe = shared_path(i);
+ assert(scpe->is_jar(), "must be"); // other types of scpe will not produce archived classes
+
+ const char* path = scpe->name();
+ struct stat st;
+ if (os::stat(path, &st) != 0) {
+ char *msg = NEW_RESOURCE_ARRAY_IN_THREAD(THREAD, char, strlen(path) + 128); ;
+ jio_snprintf(msg, strlen(path) + 127, "error in opening JAR file %s", path);
+ THROW_MSG_(vmSymbols::java_io_IOException(), msg, NULL);
+ } else {
+ ent = ClassLoader::create_class_path_entry(path, &st, /*throw_exception=*/true, false, CHECK_NULL);
+ }
+ }
+
+ MutexLocker mu(CDSClassFileStream_lock, THREAD);
+ if (_classpath_entries_for_jvmti[i] == NULL) {
+ _classpath_entries_for_jvmti[i] = ent;
+ } else {
+ // Another thread has beat me to creating this entry
+ delete ent;
+ ent = _classpath_entries_for_jvmti[i];
+ }
+ }
+
+ return ent;
+}
+
+ClassFileStream* FileMapInfo::open_stream_for_jvmti(InstanceKlass* ik, TRAPS) {
+ int path_index = ik->shared_classpath_index();
+ assert(path_index >= 0, "should be called for shared built-in classes only");
+ assert(path_index < (int)_shared_path_table_size, "sanity");
+
+ ClassPathEntry* cpe = get_classpath_entry_for_jvmti(path_index, CHECK_NULL);
+ assert(cpe != NULL, "must be");
+
+ Symbol* name = ik->name();
+ const char* const class_name = name->as_C_string();
+ const char* const file_name = ClassLoader::file_name_for_class_name(class_name,
+ name->utf8_length());
+ return cpe->open_stream(file_name, THREAD);
+}
+
+#endif
--- a/src/hotspot/share/memory/filemap.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/memory/filemap.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -302,6 +302,10 @@
bool validate_shared_path_table();
static void update_shared_classpath(ClassPathEntry *cpe, SharedClassPathEntry* ent, TRAPS);
+#if INCLUDE_JVMTI
+ static ClassFileStream* open_stream_for_jvmti(InstanceKlass* ik, TRAPS);
+#endif
+
static SharedClassPathEntry* shared_path(int index) {
if (index < 0) {
return NULL;
@@ -348,6 +352,11 @@
}
address decode_start_address(CDSFileMapRegion* spc, bool with_current_oop_encoding_mode);
+
+#if INCLUDE_JVMTI
+ static ClassPathEntry** _classpath_entries_for_jvmti;
+ static ClassPathEntry* get_classpath_entry_for_jvmti(int i, TRAPS);
+#endif
};
#endif // SHARE_MEMORY_FILEMAP_HPP
--- a/src/hotspot/share/memory/metaspaceShared.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/memory/metaspaceShared.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -207,7 +207,7 @@
};
-DumpRegion _mc_region("mc"), _ro_region("ro"), _rw_region("rw"), _md_region("md"), _od_region("od");
+DumpRegion _mc_region("mc"), _ro_region("ro"), _rw_region("rw"), _md_region("md");
size_t _total_closed_archive_region_size = 0, _total_open_archive_region_size = 0;
char* MetaspaceShared::misc_code_space_alloc(size_t num_bytes) {
@@ -598,23 +598,6 @@
}
}
-static void relocate_cached_class_file() {
- for (int i = 0; i < _global_klass_objects->length(); i++) {
- Klass* k = _global_klass_objects->at(i);
- if (k->is_instance_klass()) {
- InstanceKlass* ik = InstanceKlass::cast(k);
- JvmtiCachedClassFileData* p = ik->get_archived_class_data();
- if (p != NULL) {
- int size = offset_of(JvmtiCachedClassFileData, data) + p->length;
- JvmtiCachedClassFileData* q = (JvmtiCachedClassFileData*)_od_region.allocate(size);
- q->length = p->length;
- memcpy(q->data, p->data, p->length);
- ik->set_archived_class_data(q);
- }
- }
- }
-}
-
// Objects of the Metadata types (such as Klass and ConstantPool) have C++ vtables.
// (In GCC this is the field <Type>::_vptr, i.e., first word in the object.)
//
@@ -1438,15 +1421,11 @@
char* vtbl_list = _md_region.top();
MetaspaceShared::allocate_cpp_vtable_clones();
- _md_region.pack(&_od_region);
+ _md_region.pack();
- // Relocate the archived class file data into the od region
- relocate_cached_class_file();
- _od_region.pack();
-
- // The 5 core spaces are allocated consecutively mc->rw->ro->md->od, so there total size
+ // The 4 core spaces are allocated consecutively mc->rw->ro->md, so there total size
// is just the spaces between the two ends.
- size_t core_spaces_size = _od_region.end() - _mc_region.base();
+ size_t core_spaces_size = _md_region.end() - _mc_region.base();
assert(core_spaces_size == (size_t)align_up(core_spaces_size, Metaspace::reserve_alignment()),
"should already be aligned");
@@ -1488,7 +1467,6 @@
write_region(mapinfo, MetaspaceShared::rw, &_rw_region, /*read_only=*/false,/*allow_exec=*/false);
write_region(mapinfo, MetaspaceShared::ro, &_ro_region, /*read_only=*/true, /*allow_exec=*/false);
write_region(mapinfo, MetaspaceShared::md, &_md_region, /*read_only=*/false,/*allow_exec=*/false);
- write_region(mapinfo, MetaspaceShared::od, &_od_region, /*read_only=*/true, /*allow_exec=*/false);
_total_closed_archive_region_size = mapinfo->write_archive_heap_regions(
_closed_archive_heap_regions,
@@ -1535,12 +1513,10 @@
// Print statistics of all the regions
const size_t total_reserved = _ro_region.reserved() + _rw_region.reserved() +
_mc_region.reserved() + _md_region.reserved() +
- _od_region.reserved() +
_total_closed_archive_region_size +
_total_open_archive_region_size;
const size_t total_bytes = _ro_region.used() + _rw_region.used() +
_mc_region.used() + _md_region.used() +
- _od_region.used() +
_total_closed_archive_region_size +
_total_open_archive_region_size;
const double total_u_perc = percent_of(total_bytes, total_reserved);
@@ -1549,7 +1525,6 @@
_rw_region.print(total_reserved);
_ro_region.print(total_reserved);
_md_region.print(total_reserved);
- _od_region.print(total_reserved);
print_heap_region_stats(_closed_archive_heap_regions, "ca", total_reserved);
print_heap_region_stats(_open_archive_heap_regions, "oa", total_reserved);
@@ -1931,33 +1906,30 @@
char* rw_base = NULL; char* rw_top;
char* mc_base = NULL; char* mc_top;
char* md_base = NULL; char* md_top;
- char* od_base = NULL; char* od_top;
// Map each shared region
if ((mc_base = mapinfo->map_region(mc, &mc_top)) != NULL &&
(rw_base = mapinfo->map_region(rw, &rw_top)) != NULL &&
(ro_base = mapinfo->map_region(ro, &ro_top)) != NULL &&
(md_base = mapinfo->map_region(md, &md_top)) != NULL &&
- (od_base = mapinfo->map_region(od, &od_top)) != NULL &&
(image_alignment == (size_t)os::vm_allocation_granularity()) &&
mapinfo->validate_shared_path_table()) {
// Success -- set up MetaspaceObj::_shared_metaspace_{base,top} for
// fast checking in MetaspaceShared::is_in_shared_metaspace() and
// MetaspaceObj::is_shared().
//
- // We require that mc->rw->ro->md->od to be laid out consecutively, with no
+ // We require that mc->rw->ro->md to be laid out consecutively, with no
// gaps between them. That way, we can ensure that the OS won't be able to
// allocate any new memory spaces inside _shared_metaspace_{base,top}, which
// would mess up the simple comparision in MetaspaceShared::is_in_shared_metaspace().
- assert(mc_base < ro_base && mc_base < rw_base && mc_base < md_base && mc_base < od_base, "must be");
- assert(od_top > ro_top && od_top > rw_top && od_top > md_top && od_top > mc_top , "must be");
+ assert(mc_base < ro_base && mc_base < rw_base && mc_base < md_base, "must be");
+ assert(md_top > ro_top && md_top > rw_top && md_top > mc_top , "must be");
assert(mc_top == rw_base, "must be");
assert(rw_top == ro_base, "must be");
assert(ro_top == md_base, "must be");
- assert(md_top == od_base, "must be");
_core_spaces_size = mapinfo->core_spaces_size();
- MetaspaceObj::set_shared_metaspace_range((void*)mc_base, (void*)od_top);
+ MetaspaceObj::set_shared_metaspace_range((void*)mc_base, (void*)md_top);
return true;
} else {
// If there was a failure in mapping any of the spaces, unmap the ones
@@ -1966,7 +1938,6 @@
if (rw_base != NULL) mapinfo->unmap_region(rw);
if (mc_base != NULL) mapinfo->unmap_region(mc);
if (md_base != NULL) mapinfo->unmap_region(md);
- if (od_base != NULL) mapinfo->unmap_region(od);
#ifndef _WINDOWS
// Release the entire mapped region
shared_rs.release();
@@ -2049,7 +2020,6 @@
_rw_region.print_out_of_space_msg(name, needed_bytes);
_ro_region.print_out_of_space_msg(name, needed_bytes);
_md_region.print_out_of_space_msg(name, needed_bytes);
- _od_region.print_out_of_space_msg(name, needed_bytes);
vm_exit_during_initialization(err_msg("Unable to allocate from '%s' region", name),
"Please reduce the number of shared classes.");
--- a/src/hotspot/share/memory/metaspaceShared.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/memory/metaspaceShared.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -69,14 +69,10 @@
ro = 2, // read-only shared space in the heap
md = 3, // miscellaneous data for initializing tables, etc.
num_core_spaces = 4, // number of non-string regions
-
- // optional mapped spaces
- // Currently it only contains class file data.
- od = num_core_spaces,
- num_non_heap_spaces = od + 1,
+ num_non_heap_spaces = 4,
// mapped java heap regions
- first_closed_archive_heap_region = od + 1,
+ first_closed_archive_heap_region = md + 1,
max_closed_archive_heap_region = 2,
last_closed_archive_heap_region = first_closed_archive_heap_region + max_closed_archive_heap_region - 1,
first_open_archive_heap_region = last_closed_archive_heap_region + 1,
--- a/src/hotspot/share/oops/array.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/oops/array.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -27,6 +27,7 @@
#include "memory/allocation.hpp"
#include "memory/metaspace.hpp"
+#include "runtime/orderAccess.hpp"
#include "utilities/align.hpp"
// Array for metadata allocation
@@ -121,8 +122,8 @@
T* adr_at(const int i) { assert(i >= 0 && i< _length, "oob: 0 <= %d < %d", i, _length); return &_data[i]; }
int find(const T& x) { return index_of(x); }
- T at_acquire(const int which);
- void release_at_put(int which, T contents);
+ T at_acquire(const int i) { return OrderAccess::load_acquire(adr_at(i)); }
+ void release_at_put(int i, T x) { OrderAccess::release_store(adr_at(i), x); }
static int size(int length) {
size_t bytes = align_up(byte_sizeof(length), BytesPerWord);
--- a/src/hotspot/share/oops/array.inline.hpp Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
- * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_OOPS_ARRAY_INLINE_HPP
-#define SHARE_OOPS_ARRAY_INLINE_HPP
-
-#include "oops/array.hpp"
-#include "runtime/orderAccess.hpp"
-
-template <typename T>
-inline T Array<T>::at_acquire(const int which) { return OrderAccess::load_acquire(adr_at(which)); }
-
-template <typename T>
-inline void Array<T>::release_at_put(int which, T contents) { OrderAccess::release_store(adr_at(which), contents); }
-
-#endif // SHARE_OOPS_ARRAY_INLINE_HPP
--- a/src/hotspot/share/oops/constantPool.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/oops/constantPool.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -39,7 +39,7 @@
#include "memory/metaspaceShared.hpp"
#include "memory/oopFactory.hpp"
#include "memory/resourceArea.hpp"
-#include "oops/array.inline.hpp"
+#include "oops/array.hpp"
#include "oops/constantPool.inline.hpp"
#include "oops/cpCache.inline.hpp"
#include "oops/instanceKlass.hpp"
@@ -56,10 +56,6 @@
#include "runtime/vframe.inline.hpp"
#include "utilities/copy.hpp"
-constantTag ConstantPool::tag_at(int which) const { return (constantTag)tags()->at_acquire(which); }
-
-void ConstantPool::release_tag_at_put(int which, jbyte t) { tags()->release_at_put(which, t); }
-
ConstantPool* ConstantPool::allocate(ClassLoaderData* loader_data, int length, TRAPS) {
Array<u1>* tags = MetadataFactory::new_array<u1>(loader_data, length, 0, CHECK_NULL);
int size = ConstantPool::size(length);
--- a/src/hotspot/share/oops/constantPool.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/oops/constantPool.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -131,7 +131,7 @@
void set_tags(Array<u1>* tags) { _tags = tags; }
void tag_at_put(int which, jbyte t) { tags()->at_put(which, t); }
- void release_tag_at_put(int which, jbyte t);
+ void release_tag_at_put(int which, jbyte t) { tags()->release_at_put(which, t); }
u1* tag_addr_at(int which) const { return tags()->adr_at(which); }
@@ -379,7 +379,7 @@
// Tag query
- constantTag tag_at(int which) const;
+ constantTag tag_at(int which) const { return (constantTag)tags()->at_acquire(which); }
// Fetching constants
--- a/src/hotspot/share/oops/generateOopMap.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/oops/generateOopMap.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -27,6 +27,7 @@
#include "logging/log.hpp"
#include "logging/logStream.hpp"
#include "memory/allocation.inline.hpp"
+#include "oops/constantPool.hpp"
#include "oops/generateOopMap.hpp"
#include "oops/oop.inline.hpp"
#include "oops/symbol.hpp"
--- a/src/hotspot/share/oops/instanceKlass.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/oops/instanceKlass.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -53,6 +53,7 @@
#include "memory/oopFactory.hpp"
#include "memory/resourceArea.hpp"
#include "oops/fieldStreams.hpp"
+#include "oops/constantPool.hpp"
#include "oops/instanceClassLoaderKlass.hpp"
#include "oops/instanceKlass.inline.hpp"
#include "oops/instanceMirrorKlass.hpp"
@@ -182,8 +183,14 @@
if (name == k->name()) {
log_trace(class, nestmates)("- Found it at nest_members[%d] => cp[%d]", i, cp_index);
- // names match so check actual klass - this may trigger class loading if
- // it doesn't match (but that should be impossible)
+ // Names match so check actual klass - this may trigger class loading if
+ // it doesn't match (though that should be impossible). But to be safe we
+ // have to check for a compiler thread executing here.
+ if (!THREAD->can_call_java() && !_constants->tag_at(cp_index).is_klass()) {
+ log_trace(class, nestmates)("- validation required resolution in an unsuitable thread");
+ return false;
+ }
+
Klass* k2 = _constants->klass_at(cp_index, CHECK_false);
if (k2 == k) {
log_trace(class, nestmates)("- class is listed as a nest member");
@@ -295,7 +302,7 @@
error);
}
- if (validationException != NULL) {
+ if (validationException != NULL && THREAD->can_call_java()) {
ResourceMark rm(THREAD);
Exceptions::fthrow(THREAD_AND_LOCATION,
validationException,
@@ -2346,6 +2353,7 @@
#if INCLUDE_JVMTI
guarantee(_breakpoints == NULL, "must be");
guarantee(_previous_versions == NULL, "must be");
+ _cached_class_file = NULL;
#endif
_init_thread = NULL;
@@ -2502,7 +2510,7 @@
}
// deallocate the cached class file
- if (_cached_class_file != NULL && !MetaspaceShared::is_in_shared_metaspace(_cached_class_file)) {
+ if (_cached_class_file != NULL) {
os::free(_cached_class_file);
_cached_class_file = NULL;
}
@@ -3963,12 +3971,7 @@
#if INCLUDE_JVMTI
JvmtiCachedClassFileData* InstanceKlass::get_cached_class_file() {
- if (MetaspaceShared::is_in_shared_metaspace(_cached_class_file)) {
- // Ignore the archived class stream data
- return NULL;
- } else {
- return _cached_class_file;
- }
+ return _cached_class_file;
}
jint InstanceKlass::get_cached_class_file_len() {
@@ -3978,19 +3981,4 @@
unsigned char * InstanceKlass::get_cached_class_file_bytes() {
return VM_RedefineClasses::get_cached_class_file_bytes(_cached_class_file);
}
-
-#if INCLUDE_CDS
-JvmtiCachedClassFileData* InstanceKlass::get_archived_class_data() {
- if (DumpSharedSpaces) {
- return _cached_class_file;
- } else {
- assert(this->is_shared(), "class should be shared");
- if (MetaspaceShared::is_in_shared_metaspace(_cached_class_file)) {
- return _cached_class_file;
- } else {
- return NULL;
- }
- }
-}
#endif
-#endif
--- a/src/hotspot/share/oops/instanceKlass.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/oops/instanceKlass.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -847,14 +847,6 @@
JvmtiCachedClassFieldMap* jvmti_cached_class_field_map() const {
return _jvmti_cached_class_field_map;
}
-
-#if INCLUDE_CDS
- void set_archived_class_data(JvmtiCachedClassFileData* data) {
- _cached_class_file = data;
- }
-
- JvmtiCachedClassFileData * get_archived_class_data();
-#endif // INCLUDE_CDS
#else // INCLUDE_JVMTI
static void purge_previous_versions(InstanceKlass* ik) { return; };
--- a/src/hotspot/share/oops/method.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/oops/method.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -42,6 +42,7 @@
#include "memory/oopFactory.hpp"
#include "memory/resourceArea.hpp"
#include "oops/constMethod.hpp"
+#include "oops/constantPool.hpp"
#include "oops/method.inline.hpp"
#include "oops/methodData.hpp"
#include "oops/objArrayOop.inline.hpp"
--- a/src/hotspot/share/oops/reflectionAccessorImplKlassHelper.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/oops/reflectionAccessorImplKlassHelper.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -26,6 +26,7 @@
#include "precompiled.hpp"
#include "classfile/systemDictionary.hpp"
#include "memory/resourceArea.hpp"
+#include "oops/constantPool.hpp"
#include "oops/reflectionAccessorImplKlassHelper.hpp"
#include "utilities/constantTag.hpp"
#include "utilities/debug.hpp"
--- a/src/hotspot/share/opto/escape.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/opto/escape.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -1726,6 +1726,18 @@
// access its field since the field value is unknown after it.
//
Node* n = field->ideal_node();
+
+ // Test for an unsafe access that was parsed as maybe off heap
+ // (with a CheckCastPP to raw memory).
+ assert(n->is_AddP(), "expect an address computation");
+ if (n->in(AddPNode::Base)->is_top() &&
+ n->in(AddPNode::Address)->Opcode() == Op_CheckCastPP) {
+ assert(n->in(AddPNode::Address)->bottom_type()->isa_rawptr(), "raw address so raw cast expected");
+ assert(_igvn->type(n->in(AddPNode::Address)->in(1))->isa_oopptr(), "cast pattern at unsafe access expected");
+ jobj->set_scalar_replaceable(false);
+ return;
+ }
+
for (DUIterator_Fast imax, i = n->fast_outs(imax); i < imax; i++) {
Node* u = n->fast_out(i);
if (u->is_LoadStore() || (u->is_Mem() && u->as_Mem()->is_mismatched_access())) {
--- a/src/hotspot/share/prims/jvm.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/prims/jvm.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -45,6 +45,7 @@
#include "memory/resourceArea.hpp"
#include "memory/universe.hpp"
#include "oops/access.inline.hpp"
+#include "oops/constantPool.hpp"
#include "oops/fieldStreams.hpp"
#include "oops/instanceKlass.hpp"
#include "oops/method.hpp"
--- a/src/hotspot/share/prims/jvmtiRedefineClasses.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/prims/jvmtiRedefineClasses.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -39,6 +39,7 @@
#include "memory/metaspaceShared.hpp"
#include "memory/resourceArea.hpp"
#include "memory/universe.hpp"
+#include "oops/constantPool.hpp"
#include "oops/fieldStreams.hpp"
#include "oops/klassVtable.hpp"
#include "oops/oop.inline.hpp"
--- a/src/hotspot/share/runtime/arguments.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/runtime/arguments.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -529,6 +529,7 @@
{ "InitialRAMFraction", JDK_Version::jdk(10), JDK_Version::undefined(), JDK_Version::undefined() },
{ "UseMembar", JDK_Version::jdk(10), JDK_Version::jdk(12), JDK_Version::undefined() },
{ "CompilationPolicyChoice", JDK_Version::jdk(13), JDK_Version::jdk(14), JDK_Version::undefined() },
+ { "FailOverToOldVerifier", JDK_Version::jdk(13), JDK_Version::jdk(14), JDK_Version::undefined() },
// --- Deprecated alias flags (see also aliased_jvm_flags) - sorted by obsolete_in then expired_in:
{ "DefaultMaxRAMFraction", JDK_Version::jdk(8), JDK_Version::undefined(), JDK_Version::undefined() },
@@ -555,13 +556,13 @@
{ "UseImplicitStableValues", JDK_Version::undefined(), JDK_Version::jdk(13), JDK_Version::jdk(14) },
#ifdef TEST_VERIFY_SPECIAL_JVM_FLAGS
+ // These entries will generate build errors. Their purpose is to test the macros.
{ "dep > obs", JDK_Version::jdk(9), JDK_Version::jdk(8), JDK_Version::undefined() },
{ "dep > exp ", JDK_Version::jdk(9), JDK_Version::undefined(), JDK_Version::jdk(8) },
{ "obs > exp ", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(8) },
{ "not deprecated or obsolete", JDK_Version::undefined(), JDK_Version::undefined(), JDK_Version::jdk(9) },
{ "dup option", JDK_Version::jdk(9), JDK_Version::undefined(), JDK_Version::undefined() },
{ "dup option", JDK_Version::jdk(9), JDK_Version::undefined(), JDK_Version::undefined() },
- { "BytecodeVerificationRemote", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::undefined() },
#endif
{ NULL, JDK_Version(0), JDK_Version(0) }
@@ -2453,9 +2454,15 @@
(is_absolute_path = match_option(option, "-agentpath:", &tail))) {
if(tail != NULL) {
const char* pos = strchr(tail, '=');
- size_t len = (pos == NULL) ? strlen(tail) : pos - tail;
- char* name = strncpy(NEW_C_HEAP_ARRAY(char, len + 1, mtArguments), tail, len);
- name[len] = '\0';
+ char* name;
+ if (pos == NULL) {
+ name = os::strdup_check_oom(tail, mtArguments);
+ } else {
+ size_t len = pos - tail;
+ name = NEW_C_HEAP_ARRAY(char, len + 1, mtArguments);
+ memcpy(name, tail, len);
+ name[len] = '\0';
+ }
char *options = NULL;
if(pos != NULL) {
@@ -2749,6 +2756,7 @@
if (FLAG_SET_CMDLINE(bool, BytecodeVerificationRemote, false) != JVMFlag::SUCCESS) {
return JNI_EINVAL;
}
+ warning("Options -Xverify:none and -noverify were deprecated in JDK 13 and will likely be removed in a future release.");
} else if (is_bad_option(option, args->ignoreUnrecognized, "verification")) {
return JNI_EINVAL;
}
--- a/src/hotspot/share/runtime/deoptimization.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/runtime/deoptimization.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -36,6 +36,7 @@
#include "memory/allocation.inline.hpp"
#include "memory/oopFactory.hpp"
#include "memory/resourceArea.hpp"
+#include "oops/constantPool.hpp"
#include "oops/method.hpp"
#include "oops/objArrayOop.inline.hpp"
#include "oops/oop.inline.hpp"
--- a/src/hotspot/share/runtime/fieldDescriptor.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/runtime/fieldDescriptor.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -28,6 +28,7 @@
#include "memory/resourceArea.hpp"
#include "memory/universe.hpp"
#include "oops/annotations.hpp"
+#include "oops/constantPool.hpp"
#include "oops/instanceKlass.hpp"
#include "oops/oop.inline.hpp"
#include "oops/fieldStreams.hpp"
--- a/src/hotspot/share/runtime/monitorChunk.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/runtime/monitorChunk.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -29,7 +29,7 @@
MonitorChunk::MonitorChunk(int number_on_monitors) {
_number_of_monitors = number_on_monitors;
- _monitors = NEW_C_HEAP_ARRAY(BasicObjectLock, number_on_monitors, mtInternal);
+ _monitors = NEW_C_HEAP_ARRAY(BasicObjectLock, number_on_monitors, mtSynchronizer);
_next = NULL;
}
--- a/src/hotspot/share/runtime/monitorChunk.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/runtime/monitorChunk.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -30,7 +30,7 @@
// Data structure for holding monitors for one activation during
// deoptimization.
-class MonitorChunk: public CHeapObj<mtInternal> {
+class MonitorChunk: public CHeapObj<mtSynchronizer> {
private:
int _number_of_monitors;
BasicObjectLock* _monitors;
--- a/src/hotspot/share/runtime/mutex.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/runtime/mutex.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -39,7 +39,7 @@
// TODO: Check if _name[MONITOR_NAME_LEN] should better get replaced by const char*.
static const int MONITOR_NAME_LEN = 64;
-class Monitor : public CHeapObj<mtInternal> {
+class Monitor : public CHeapObj<mtSynchronizer> {
public:
// A special lock: Is a lock where you are guaranteed not to block while you are
--- a/src/hotspot/share/runtime/mutexLocker.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/runtime/mutexLocker.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -150,6 +150,9 @@
#if INCLUDE_NMT
Mutex* NMTQuery_lock = NULL;
#endif
+#if INCLUDE_CDS && INCLUDE_JVMTI
+Mutex* CDSClassFileStream_lock = NULL;
+#endif
#define MAX_NUM_MUTEX 128
static Monitor * _mutex_array[MAX_NUM_MUTEX];
@@ -339,6 +342,9 @@
#if INCLUDE_NMT
def(NMTQuery_lock , PaddedMutex , max_nonleaf, false, Monitor::_safepoint_check_always);
#endif
+#if INCLUDE_CDS && INCLUDE_JVMTI
+ def(CDSClassFileStream_lock , PaddedMutex , max_nonleaf, false, Monitor::_safepoint_check_always);
+#endif
}
GCMutexLocker::GCMutexLocker(Monitor * mutex) {
--- a/src/hotspot/share/runtime/mutexLocker.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/runtime/mutexLocker.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -133,6 +133,9 @@
#if INCLUDE_NMT
extern Mutex* NMTQuery_lock; // serialize NMT Dcmd queries
#endif
+#if INCLUDE_CDS && INCLUDE_JVMTI
+extern Mutex* CDSClassFileStream_lock; // FileMapInfo::open_stream_for_jvmti
+#endif
#if INCLUDE_JFR
extern Mutex* JfrStacktrace_lock; // used to guard access to the JFR stacktrace table
extern Monitor* JfrMsg_lock; // protects JFR messaging
--- a/src/hotspot/share/runtime/safepoint.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/runtime/safepoint.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -197,7 +197,7 @@
assert(!SafepointSynchronize::is_at_safepoint(), __VA_ARGS__)
// State class for a thread suspended at a safepoint
-class ThreadSafepointState: public CHeapObj<mtInternal> {
+class ThreadSafepointState: public CHeapObj<mtThread> {
private:
// At polling page safepoint (NOT a poll return safepoint):
volatile bool _at_poll_safepoint;
--- a/src/hotspot/share/runtime/semaphore.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/runtime/semaphore.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -40,7 +40,7 @@
class JavaThread;
// Implements the limited, platform independent Semaphore API.
-class Semaphore : public CHeapObj<mtInternal> {
+class Semaphore : public CHeapObj<mtSynchronizer> {
SemaphoreImpl _impl;
// Prevent copying and assignment of Semaphore instances.
--- a/src/hotspot/share/services/attachListener.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/services/attachListener.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2019, 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
@@ -257,19 +257,40 @@
// See also: ClassHistogramDCmd class
//
// Input arguments :-
-// arg0: "-live" or "-all"
+// arg0: Name of the dump file or NULL
+// arg1: "-live" or "-all"
static jint heap_inspection(AttachOperation* op, outputStream* out) {
bool live_objects_only = true; // default is true to retain the behavior before this change is made
- const char* arg0 = op->arg(0);
- if (arg0 != NULL && (strlen(arg0) > 0)) {
- if (strcmp(arg0, "-all") != 0 && strcmp(arg0, "-live") != 0) {
- out->print_cr("Invalid argument to inspectheap operation: %s", arg0);
+ outputStream* os = out; // if path not specified or path is NULL, use out
+ fileStream* fs = NULL;
+ const char* path = op->arg(0);
+ if (path != NULL) {
+ if (path[0] == '\0') {
+ out->print_cr("No dump file specified");
+ } else {
+ // create file
+ fs = new (ResourceObj::C_HEAP, mtInternal) fileStream(path);
+ if (fs == NULL) {
+ out->print_cr("Failed to allocate space for file: %s", path);
+ return JNI_ERR;
+ }
+ os = fs;
+ }
+ }
+ const char* arg1 = op->arg(1);
+ if (arg1 != NULL && (strlen(arg1) > 0)) {
+ if (strcmp(arg1, "-all") != 0 && strcmp(arg1, "-live") != 0) {
+ out->print_cr("Invalid argument to inspectheap operation: %s", arg1);
return JNI_ERR;
}
- live_objects_only = strcmp(arg0, "-live") == 0;
+ live_objects_only = strcmp(arg1, "-live") == 0;
}
- VM_GC_HeapInspection heapop(out, live_objects_only /* request full gc */);
+ VM_GC_HeapInspection heapop(os, live_objects_only /* request full gc */);
VMThread::execute(&heapop);
+ if (os != NULL && os != out) {
+ out->print_cr("Heap inspection file created: %s", path);
+ delete fs;
+ }
return JNI_OK;
}
--- a/src/hotspot/share/services/attachListener.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/services/attachListener.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -106,7 +106,7 @@
enum {
name_length_max = 16, // maximum length of name
arg_length_max = 1024, // maximum length of argument
- arg_count_max = 3 // maximum number of arguments
+ arg_count_max = 4 // maximum number of arguments
};
// name of special operation that can be enqueued when all
--- a/src/hotspot/share/services/diagnosticArgument.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/services/diagnosticArgument.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2019, 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
@@ -179,9 +179,9 @@
if (str == NULL) {
_value = NULL;
} else {
- _value = NEW_C_HEAP_ARRAY(char, len+1, mtInternal);
- strncpy(_value, str, len);
- _value[len] = 0;
+ _value = NEW_C_HEAP_ARRAY(char, len + 1, mtInternal);
+ int n = snprintf(_value, len + 1, "%.*s", (int)len, str);
+ assert((size_t)n <= len, "Unexpected number of characters in string");
}
}
--- a/src/hotspot/share/utilities/events.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/utilities/events.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -36,7 +36,7 @@
EventLog* Events::_logs = NULL;
StringEventLog* Events::_messages = NULL;
-ExtendedStringEventLog* Events::_exceptions = NULL;
+ExceptionsEventLog* Events::_exceptions = NULL;
StringEventLog* Events::_redefinitions = NULL;
UnloadingEventLog* Events::_class_unloading = NULL;
StringEventLog* Events::_deopt_messages = NULL;
@@ -67,7 +67,7 @@
void Events::init() {
if (LogEvents) {
_messages = new StringEventLog("Events");
- _exceptions = new ExtendedStringEventLog("Internal exceptions");
+ _exceptions = new ExceptionsEventLog("Internal exceptions");
_redefinitions = new StringEventLog("Classes redefined");
_class_unloading = new UnloadingEventLog("Classes unloaded");
_deopt_messages = new StringEventLog("Deoptimization events");
@@ -112,3 +112,20 @@
st.print("Unloading class " INTPTR_FORMAT " ", p2i(ik));
ik->name()->print_value_on(&st);
}
+
+void ExceptionsEventLog::log(Thread* thread, Handle h_exception, const char* message, const char* file, int line) {
+ if (!should_log()) return;
+
+ double timestamp = fetch_timestamp();
+ MutexLockerEx ml(&_mutex, Mutex::_no_safepoint_check_flag);
+ int index = compute_log_index();
+ _records[index].thread = thread;
+ _records[index].timestamp = timestamp;
+ stringStream st = _records[index].data.stream();
+ st.print("Exception <");
+ h_exception->print_value_on(&st);
+ st.print("%s%s> (" INTPTR_FORMAT ") \n"
+ "thrown [%s, line %d]\nfor thread " INTPTR_FORMAT,
+ message ? ": " : "", message ? message : "",
+ p2i(h_exception()), file, line, p2i(thread));
+}
--- a/src/hotspot/share/utilities/events.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/utilities/events.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -183,6 +183,14 @@
void log(Thread* thread, InstanceKlass* ik);
};
+// Event log for exceptions
+class ExceptionsEventLog : public ExtendedStringEventLog {
+ public:
+ ExceptionsEventLog(const char* name, int count = LogEventsBufferEntries) : ExtendedStringEventLog(name, count) {}
+
+ void log(Thread* thread, Handle h_exception, const char* message, const char* file, int line);
+};
+
class Events : AllStatic {
friend class EventLog;
@@ -195,7 +203,7 @@
// A log for internal exception related messages, like internal
// throws and implicit exceptions.
- static ExtendedStringEventLog* _exceptions;
+ static ExceptionsEventLog* _exceptions;
// Deoptization related messages
static StringEventLog* _deopt_messages;
@@ -216,6 +224,7 @@
// Log exception related message
static void log_exception(Thread* thread, const char* format, ...) ATTRIBUTE_PRINTF(2, 3);
+ static void log_exception(Thread* thread, Handle h_exception, const char* message, const char* file, int line);
static void log_redefinition(Thread* thread, const char* format, ...) ATTRIBUTE_PRINTF(2, 3);
@@ -245,6 +254,12 @@
}
}
+inline void Events::log_exception(Thread* thread, Handle h_exception, const char* message, const char* file, int line) {
+ if (LogEvents) {
+ _exceptions->log(thread, h_exception, message, file, line);
+ }
+}
+
inline void Events::log_redefinition(Thread* thread, const char* format, ...) {
if (LogEvents) {
va_list ap;
--- a/src/hotspot/share/utilities/exceptions.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/utilities/exceptions.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -131,15 +131,17 @@
}
void Exceptions::_throw(Thread* thread, const char* file, int line, Handle h_exception, const char* message) {
- ResourceMark rm;
+ ResourceMark rm(thread);
assert(h_exception() != NULL, "exception should not be NULL");
// tracing (do this up front - so it works during boot strapping)
+ // Note, the print_value_string() argument is not called unless logging is enabled!
log_info(exceptions)("Exception <%s%s%s> (" INTPTR_FORMAT ") \n"
"thrown [%s, line %d]\nfor thread " INTPTR_FORMAT,
h_exception->print_value_string(),
message ? ": " : "", message ? message : "",
p2i(h_exception()), file, line, p2i(thread));
+
// for AbortVMOnException flag
Exceptions::debug_check_abort(h_exception, message);
@@ -162,11 +164,7 @@
thread->set_pending_exception(h_exception(), file, line);
// vm log
- if (LogEvents){
- Events::log_exception(thread, "Exception <%s%s%s> (" INTPTR_FORMAT ") thrown at [%s, line %d]",
- h_exception->print_value_string(), message ? ": " : "", message ? message : "",
- p2i(h_exception()), file, line);
- }
+ Events::log_exception(thread, h_exception, message, file, line);
}
--- a/src/hotspot/share/utilities/xmlstream.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/hotspot/share/utilities/xmlstream.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2019, 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
@@ -353,11 +353,15 @@
guarantee(format_len + 10 < sizeof(buffer), "bigger format buffer");
const char* kind = format;
const char* kind_end = strchr(kind, ' ');
- size_t kind_len = (kind_end != NULL) ? (kind_end - kind) : format_len;
- strncpy(buffer, kind, kind_len);
- strcpy(buffer + kind_len, "_done");
+ size_t kind_len;
if (kind_end != NULL) {
- strncat(buffer, format + kind_len, sizeof(buffer) - (kind_len + 5 /* _done */) - 1);
+ kind_len = kind_end - kind;
+ int n = snprintf(buffer, sizeof(buffer), "%.*s_done", (int)kind_len, kind);
+ assert((size_t)n < sizeof(buffer), "Unexpected number of characters in string");
+ } else {
+ kind_len = format_len;
+ int n = snprintf(buffer, sizeof(buffer), "%s_done%s", kind, kind + kind_len);
+ assert((size_t)n < sizeof(buffer), "Unexpected number of characters in string");
}
// Output the trailing event with the timestamp.
va_begin_elem(buffer, ap);
--- a/src/java.base/share/classes/java/nio/Direct-X-Buffer.java.template Wed Feb 20 17:00:40 2019 +0530
+++ b/src/java.base/share/classes/java/nio/Direct-X-Buffer.java.template Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -29,6 +29,7 @@
import java.io.FileDescriptor;
import java.lang.ref.Reference;
+import java.util.Objects;
import jdk.internal.misc.VM;
import jdk.internal.ref.Cleaner;
import sun.nio.ch.DirectBuffer;
@@ -325,6 +326,40 @@
#end[rw]
}
+ public $Type$Buffer get(int index, $type$[] dst, int offset, int length) {
+#if[rw]
+ if (((long)length << $LG_BYTES_PER_VALUE$) > Bits.JNI_COPY_TO_ARRAY_THRESHOLD) {
+ Objects.checkFromIndexSize(index, length, limit());
+ Objects.checkFromIndexSize(offset, length, dst.length);
+
+ long dstOffset = ARRAY_BASE_OFFSET + ((long)offset << $LG_BYTES_PER_VALUE$);
+ try {
+#if[!byte]
+ if (order() != ByteOrder.nativeOrder())
+ UNSAFE.copySwapMemory(null,
+ ix(index),
+ dst,
+ dstOffset,
+ (long)length << $LG_BYTES_PER_VALUE$,
+ (long)1 << $LG_BYTES_PER_VALUE$);
+ else
+#end[!byte]
+ UNSAFE.copyMemory(null,
+ ix(index),
+ dst,
+ dstOffset,
+ (long)length << $LG_BYTES_PER_VALUE$);
+ } finally {
+ Reference.reachabilityFence(this);
+ }
+ } else {
+ super.get(index, dst, offset, length);
+ }
+ return this;
+#else[rw]
+ throw new ReadOnlyBufferException();
+#end[rw]
+ }
#end[rw]
public $Type$Buffer put($type$ x) {
@@ -440,6 +475,42 @@
#end[rw]
}
+ public $Type$Buffer put(int index, $type$[] src, int offset, int length) {
+#if[rw]
+ if (((long)length << $LG_BYTES_PER_VALUE$) > Bits.JNI_COPY_FROM_ARRAY_THRESHOLD) {
+ Objects.checkFromIndexSize(index, length, limit());
+ Objects.checkFromIndexSize(offset, length, src.length);
+
+
+ long srcOffset = ARRAY_BASE_OFFSET + ((long)offset << $LG_BYTES_PER_VALUE$);
+ try {
+#if[!byte]
+ if (order() != ByteOrder.nativeOrder())
+ UNSAFE.copySwapMemory(src,
+ srcOffset,
+ null,
+ ix(index),
+ (long)length << $LG_BYTES_PER_VALUE$,
+ (long)1 << $LG_BYTES_PER_VALUE$);
+ else
+#end[!byte]
+ UNSAFE.copyMemory(src,
+ srcOffset,
+ null,
+ ix(index),
+ (long)length << $LG_BYTES_PER_VALUE$);
+ } finally {
+ Reference.reachabilityFence(this);
+ }
+ } else {
+ super.put(index, src, offset, length);
+ }
+ return this;
+#else[rw]
+ throw new ReadOnlyBufferException();
+#end[rw]
+ }
+
public $Type$Buffer compact() {
#if[rw]
int pos = position();
--- a/src/java.base/share/classes/java/nio/Heap-X-Buffer.java.template Wed Feb 20 17:00:40 2019 +0530
+++ b/src/java.base/share/classes/java/nio/Heap-X-Buffer.java.template Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -38,6 +38,8 @@
#end[rw]
*/
+import java.util.Objects;
+
class Heap$Type$Buffer$RW$
extends {#if[ro]?Heap}$Type$Buffer
{
@@ -181,6 +183,13 @@
return this;
}
+ public $Type$Buffer get(int index, $type$[] dst, int offset, int length) {
+ Objects.checkFromIndexSize(index, length, limit());
+ Objects.checkFromIndexSize(offset, length, dst.length);
+ System.arraycopy(hb, ix(index), dst, offset, length);
+ return this;
+ }
+
public boolean isDirect() {
return false;
}
@@ -250,6 +259,17 @@
#end[rw]
}
+ public $Type$Buffer put(int index, $type$[] src, int offset, int length) {
+#if[rw]
+ Objects.checkFromIndexSize(index, length, limit());
+ Objects.checkFromIndexSize(offset, length, src.length);
+ System.arraycopy(src, offset, hb, ix(index), length);
+ return this;
+#else[rw]
+ throw new ReadOnlyBufferException();
+#end[rw]
+ }
+
public $Type$Buffer compact() {
#if[rw]
System.arraycopy(hb, ix(position()), hb, ix(0), remaining());
--- a/src/java.base/share/classes/java/nio/X-Buffer.java.template Wed Feb 20 17:00:40 2019 +0530
+++ b/src/java.base/share/classes/java/nio/X-Buffer.java.template Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -36,6 +36,7 @@
import java.util.stream.$Streamtype$Stream;
#end[streamableType]
+import java.util.Objects;
import jdk.internal.util.ArraysSupport;
/**
@@ -50,11 +51,11 @@
* {@link #put($type$) <i>put</i>} methods that read and write
* single $type$s; </p></li>
*
- * <li><p> Relative {@link #get($type$[]) <i>bulk get</i>}
+ * <li><p> Absolute and relative {@link #get($type$[]) <i>bulk get</i>}
* methods that transfer contiguous sequences of $type$s from this buffer
* into an array; {#if[!byte]?and}</p></li>
*
- * <li><p> Relative {@link #put($type$[]) <i>bulk put</i>}
+ * <li><p> Absolute and relative {@link #put($type$[]) <i>bulk put</i>}
* methods that transfer contiguous sequences of $type$s from $a$
* $type$ array{#if[char]?, a string,} or some other $type$
* buffer into this buffer;{#if[!byte]? and} </p></li>
@@ -209,6 +210,8 @@
* <p> This class implements the {@link CharSequence} interface so that
* character buffers may be used wherever character sequences are accepted, for
* example in the regular-expression package {@link java.util.regex}.
+ * The methods defined by {@code CharSequence} operate relative to the current
+ * position of the buffer when they are invoked.
* </p>
*
#end[char]
@@ -434,7 +437,6 @@
* @return The number of characters added to the buffer, or
* -1 if this source of characters is at its end
* @throws IOException if an I/O error occurs
- * @throws NullPointerException if target is null
* @throws ReadOnlyBufferException if target is a read only buffer
* @since 1.5
*/
@@ -762,6 +764,89 @@
return get(dst, 0, dst.length);
}
+ /**
+ * Absolute bulk <i>get</i> method.
+ *
+ * <p> This method transfers {@code length} $type$s from this
+ * buffer into the given array, starting at the given index in this
+ * buffer and at the given offset in the array. The position of this
+ * buffer is unchanged.
+ *
+ * <p> An invocation of this method of the form
+ * <code>src.get(index, dst, offset, length)</code>
+ * has exactly the same effect as the following loop except that it first
+ * checks the consistency of the supplied parameters and it is potentially
+ * much more efficient:
+ *
+ * <pre>{@code
+ * for (int i = offset, j = index; i < offset + length; i++, j++)
+ * dst[i] = src.get(j);
+ * }</pre>
+ *
+ * @param index
+ * The index in this buffer from which the first $type$ will be
+ * read; must be non-negative and less than {@code limit()}
+ *
+ * @param dst
+ * The destination array
+ *
+ * @param offset
+ * The offset within the array of the first $type$ to be
+ * written; must be non-negative and less than
+ * {@code dst.length}
+ *
+ * @param length
+ * The number of $type$s to be written to the given array;
+ * must be non-negative and no larger than the smaller of
+ * {@code limit() - index} and {@code dst.length - offset}
+ *
+ * @return This buffer
+ *
+ * @throws IndexOutOfBoundsException
+ * If the preconditions on the {@code index}, {@code offset}, and
+ * {@code length} parameters do not hold
+ *
+ * @since 13
+ */
+ public $Type$Buffer get(int index, $type$[] dst, int offset, int length) {
+ Objects.checkFromIndexSize(index, length, limit());
+ Objects.checkFromIndexSize(offset, length, dst.length);
+ int end = offset + length;
+ for (int i = offset, j = index; i < end; i++, j++)
+ dst[i] = get(j);
+ return this;
+ }
+
+ /**
+ * Absolute bulk <i>get</i> method.
+ *
+ * <p> This method transfers $type$s from this buffer into the given
+ * destination array. The position of this buffer is unchanged. An
+ * invocation of this method of the form
+ * <code>src.get(index, dst)</code> behaves in exactly the same
+ * way as the invocation:
+ *
+ * <pre>
+ * src.get(index, dst, 0, dst.length) </pre>
+ *
+ * @param index
+ * The index in this buffer from which the first $type$ will be
+ * read; must be non-negative and less than {@code limit()}
+ *
+ * @param dst
+ * The destination array
+ *
+ * @return This buffer
+ *
+ * @throws IndexOutOfBoundsException
+ * If {@code index} is negative, not smaller than {@code limit()},
+ * or {@code limit() - index < dst.length}
+ *
+ * @since 13
+ */
+ public $Type$Buffer get(int index, $type$[] dst) {
+ return get(index, dst, 0, dst.length);
+ }
// -- Bulk put operations --
@@ -840,7 +925,7 @@
*
* <pre>{@code
* for (int i = off; i < off + len; i++)
- * dst.put(a[i]);
+ * dst.put(src[i]);
* }</pre>
*
* except that it first checks that there is sufficient space in this
@@ -851,12 +936,12 @@
*
* @param offset
* The offset within the array of the first $type$ to be read;
- * must be non-negative and no larger than {@code array.length}
+ * must be non-negative and no larger than {@code src.length}
*
* @param length
* The number of $type$s to be read from the given array;
* must be non-negative and no larger than
- * {@code array.length - offset}
+ * {@code src.length - offset}
*
* @return This buffer
*
@@ -906,6 +991,95 @@
return put(src, 0, src.length);
}
+ /**
+ * Absolute bulk <i>put</i> method <i>(optional operation)</i>.
+ *
+ * <p> This method transfers {@code length} $type$s from the given
+ * array, starting at the given offset in the array and at the given index
+ * in this buffer. The position of this buffer is unchanged.
+ *
+ * <p> An invocation of this method of the form
+ * <code>dst.put(index, src, offset, length)</code>
+ * has exactly the same effect as the following loop except that it first
+ * checks the consistency of the supplied parameters and it is potentially
+ * much more efficient:
+ *
+ * <pre>{@code
+ * for (int i = offset, j = index; i < offset + length; i++, j++)
+ * dst.put(j, src[i]);
+ * }</pre>
+ *
+ * @param index
+ * The index in this buffer at which the first $type$ will be
+ * written; must be non-negative and less than {@code limit()}
+ *
+ * @param src
+ * The array from which $type$s are to be read
+ *
+ * @param offset
+ * The offset within the array of the first $type$ to be read;
+ * must be non-negative and less than {@code src.length}
+ *
+ * @param length
+ * The number of $type$s to be read from the given array;
+ * must be non-negative and no larger than the smaller of
+ * {@code limit() - index} and {@code src.length - offset}
+ *
+ * @return This buffer
+ *
+ * @throws IndexOutOfBoundsException
+ * If the preconditions on the {@code index}, {@code offset}, and
+ * {@code length} parameters do not hold
+ *
+ * @throws ReadOnlyBufferException
+ * If this buffer is read-only
+ *
+ * @since 13
+ */
+ public $Type$Buffer put(int index, $type$[] src, int offset, int length) {
+ if (isReadOnly())
+ throw new ReadOnlyBufferException();
+ Objects.checkFromIndexSize(index, length, limit());
+ Objects.checkFromIndexSize(offset, length, src.length);
+ int end = offset + length;
+ for (int i = offset, j = index; i < end; i++, j++)
+ this.put(j, src[i]);
+ return this;
+ }
+
+ /**
+ * Absolute bulk <i>put</i> method <i>(optional operation)</i>.
+ *
+ * <p> This method copies $type$s into this buffer from the given source
+ * array. The position of this buffer is unchanged. An invocation of this
+ * method of the form <code>dst.put(index, src)</code>
+ * behaves in exactly the same way as the invocation:
+ *
+ * <pre>
+ * dst.put(index, src, 0, src.length); </pre>
+ *
+ * @param index
+ * The index in this buffer at which the first $type$ will be
+ * written; must be non-negative and less than {@code limit()}
+ *
+ * @param src
+ * The array from which $type$s are to be read
+ *
+ * @return This buffer
+ *
+ * @throws IndexOutOfBoundsException
+ * If {@code index} is negative, not smaller than {@code limit()},
+ * or {@code limit() - index < src.length}
+ *
+ * @throws ReadOnlyBufferException
+ * If this buffer is read-only
+ *
+ * @since 13
+ */
+ public $Type$Buffer put(int index, $type$[] src) {
+ return put(index, src, 0, src.length);
+ }
+
#if[char]
/**
--- a/src/java.base/share/classes/sun/security/ssl/ClientHello.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/java.base/share/classes/sun/security/ssl/ClientHello.java Fri Feb 22 12:05:05 2019 +0530
@@ -803,13 +803,8 @@
shc.sslConfig.getEnabledExtensions(
SSLHandshake.CLIENT_HELLO);
- ClientHelloMessage chm;
- try {
- chm = new ClientHelloMessage(shc, message, enabledExtensions);
- } catch (Exception e) {
- throw shc.conContext.fatal(Alert.HANDSHAKE_FAILURE,
- "ClientHelloMessage failure", e);
- }
+ ClientHelloMessage chm =
+ new ClientHelloMessage(shc, message, enabledExtensions);
if (SSLLogger.isOn && SSLLogger.isOn("ssl,handshake")) {
SSLLogger.fine("Consuming ClientHello handshake message", chm);
}
--- a/src/java.base/share/classes/sun/security/ssl/HandshakeContext.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/java.base/share/classes/sun/security/ssl/HandshakeContext.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -26,6 +26,8 @@
package sun.security.ssl;
import java.io.IOException;
+import java.nio.BufferOverflowException;
+import java.nio.BufferUnderflowException;
import java.nio.ByteBuffer;
import java.security.AlgorithmConstraints;
import java.security.CryptoPrimitive;
@@ -443,6 +445,10 @@
throw conContext.fatal(Alert.UNEXPECTED_MESSAGE,
"Unsupported handshake message: " +
SSLHandshake.nameOf(handshakeType), unsoe);
+ } catch (BufferUnderflowException | BufferOverflowException be) {
+ throw conContext.fatal(Alert.DECODE_ERROR,
+ "Illegal handshake message: " +
+ SSLHandshake.nameOf(handshakeType), be);
}
// update handshake hash after handshake message consumption.
--- a/src/java.base/share/classes/sun/security/ssl/PostHandshakeContext.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/java.base/share/classes/sun/security/ssl/PostHandshakeContext.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -26,6 +26,8 @@
package sun.security.ssl;
import java.io.IOException;
+import java.nio.BufferOverflowException;
+import java.nio.BufferUnderflowException;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.LinkedHashMap;
@@ -74,6 +76,10 @@
throw conContext.fatal(Alert.UNEXPECTED_MESSAGE,
"Unsupported post-handshake message: " +
SSLHandshake.nameOf(handshakeType), unsoe);
+ } catch (BufferUnderflowException | BufferOverflowException be) {
+ throw conContext.fatal(Alert.DECODE_ERROR,
+ "Illegal handshake message: " +
+ SSLHandshake.nameOf(handshakeType), be);
}
}
}
--- a/src/java.base/share/classes/sun/security/ssl/SSLContextImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/java.base/share/classes/sun/security/ssl/SSLContextImpl.java Fri Feb 22 12:05:05 2019 +0530
@@ -921,29 +921,45 @@
static {
Exception reserved = null;
- TrustManager[] tmMediator;
+ TrustManager[] tmMediator = null;
try {
tmMediator = getTrustManagers();
} catch (Exception e) {
reserved = e;
- tmMediator = new TrustManager[0];
+ if (SSLLogger.isOn && SSLLogger.isOn("ssl,defaultctx")) {
+ SSLLogger.warning(
+ "Failed to load default trust managers", e);
+ }
}
- trustManagers = tmMediator;
+ KeyManager[] kmMediator = null;
if (reserved == null) {
- KeyManager[] kmMediator;
try {
kmMediator = getKeyManagers();
} catch (Exception e) {
reserved = e;
- kmMediator = new KeyManager[0];
+ if (SSLLogger.isOn && SSLLogger.isOn("ssl,defaultctx")) {
+ SSLLogger.warning(
+ "Failed to load default key managers", e);
+ }
}
- keyManagers = kmMediator;
- } else {
- keyManagers = new KeyManager[0];
}
- reservedException = reserved;
+ if (reserved != null) {
+ trustManagers = new TrustManager[0];
+ keyManagers = new KeyManager[0];
+
+ // Important note: please don't reserve the original exception
+ // object, which may be not garbage collection friendly as
+ // 'reservedException' is a static filed.
+ reservedException =
+ new KeyManagementException(reserved.getMessage());
+ } else {
+ trustManagers = tmMediator;
+ keyManagers = kmMediator;
+
+ reservedException = null;
+ }
}
private static TrustManager[] getTrustManagers() throws Exception {
@@ -1071,21 +1087,30 @@
private static final class DefaultSSLContextHolder {
private static final SSLContextImpl sslContext;
- static Exception reservedException = null;
+ private static final Exception reservedException;
static {
+ Exception reserved = null;
SSLContextImpl mediator = null;
if (DefaultManagersHolder.reservedException != null) {
- reservedException = DefaultManagersHolder.reservedException;
+ reserved = DefaultManagersHolder.reservedException;
} else {
try {
mediator = new DefaultSSLContext();
} catch (Exception e) {
- reservedException = e;
+ // Important note: please don't reserve the original
+ // exception object, which may be not garbage collection
+ // friendly as 'reservedException' is a static filed.
+ reserved = new KeyManagementException(e.getMessage());
+ if (SSLLogger.isOn && SSLLogger.isOn("ssl,defaultctx")) {
+ SSLLogger.warning(
+ "Failed to load default SSLContext", e);
+ }
}
}
sslContext = mediator;
+ reservedException = reserved;
}
}
--- a/src/java.base/share/classes/sun/security/x509/CertificateExtensions.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/java.base/share/classes/sun/security/x509/CertificateExtensions.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, 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
@@ -355,7 +355,7 @@
class UnparseableExtension extends Extension {
private String name;
- private Throwable why;
+ private String exceptionDescription;
public UnparseableExtension(Extension ext, Throwable why) {
super(ext);
@@ -371,12 +371,13 @@
// If we cannot find the name, just ignore it
}
- this.why = why;
+ this.exceptionDescription = why.toString();
}
@Override public String toString() {
return super.toString() +
- "Unparseable " + name + "extension due to\n" + why + "\n\n" +
+ "Unparseable " + name + "extension due to\n" +
+ exceptionDescription + "\n\n" +
new HexDumpEncoder().encodeBuffer(getExtensionValue());
}
}
--- a/src/java.base/share/classes/sun/util/cldr/CLDRCalendarDataProviderImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/java.base/share/classes/sun/util/cldr/CLDRCalendarDataProviderImpl.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2019, 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,7 +80,8 @@
String region = locale.getCountry();
if (region.isEmpty()) {
- return 0;
+ // Use "US" as default
+ region = "US";
}
Integer val = map.get(region);
--- a/src/java.base/share/classes/sun/util/locale/provider/CalendarDataUtility.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/java.base/share/classes/sun/util/locale/provider/CalendarDataUtility.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2019, 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
@@ -256,7 +256,9 @@
default:
throw new InternalError("invalid requestID: " + requestID);
}
- return (value != 0) ? value : null;
+
+ assert value != 0;
+ return value;
}
}
}
--- a/src/java.base/share/classes/sun/util/locale/provider/LocaleServiceProviderPool.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/java.base/share/classes/sun/util/locale/provider/LocaleServiceProviderPool.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2019, 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
@@ -283,8 +283,8 @@
return providersObj;
} else if (isObjectProvider) {
config(LocaleServiceProviderPool.class,
- "A locale sensitive service provider returned null for a localized objects, which should not happen. provider: "
- + lsp + " locale: " + locale);
+ "A locale sensitive service object provider returned null, " +
+ "which should not happen. Provider: " + lsp + " Locale: " + locale);
}
}
}
--- a/src/java.base/share/native/libjimage/imageFile.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/java.base/share/native/libjimage/imageFile.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -481,65 +481,6 @@
return 0; // not found
}
-// Assemble the location path from the string fragments indicated in the location attributes.
-void ImageFileReader::location_path(ImageLocation& location, char* path, size_t max) const {
- // Manage the image string table.
- ImageStrings strings(_string_bytes, _header.strings_size(_endian));
- // Position to first character of the path buffer.
- char* next = path;
- // Temp for string length.
- size_t length;
- // Get module string.
- const char* module = location.get_attribute(ImageLocation::ATTRIBUTE_MODULE, strings);
- // If module string is not empty string.
- if (*module != '\0') {
- // Get length of module name.
- length = strlen(module);
- // Make sure there is no buffer overflow.
- assert(next - path + length + 2 < max && "buffer overflow");
- // Append '/module/'.
- *next++ = '/';
- strncpy(next, module, length); next += length;
- *next++ = '/';
- }
- // Get parent (package) string.
- const char* parent = location.get_attribute(ImageLocation::ATTRIBUTE_PARENT, strings);
- // If parent string is not empty string.
- if (*parent != '\0') {
- // Get length of module string.
- length = strlen(parent);
- // Make sure there is no buffer overflow.
- assert(next - path + length + 1 < max && "buffer overflow");
- // Append 'patent/' .
- strncpy(next, parent, length); next += length;
- *next++ = '/';
- }
- // Get base name string.
- const char* base = location.get_attribute(ImageLocation::ATTRIBUTE_BASE, strings);
- // Get length of base name.
- length = strlen(base);
- // Make sure there is no buffer overflow.
- assert(next - path + length < max && "buffer overflow");
- // Append base name.
- strncpy(next, base, length); next += length;
- // Get extension string.
- const char* extension = location.get_attribute(ImageLocation::ATTRIBUTE_EXTENSION, strings);
- // If extension string is not empty string.
- if (*extension != '\0') {
- // Get length of extension string.
- length = strlen(extension);
- // Make sure there is no buffer overflow.
- assert(next - path + length + 1 < max && "buffer overflow");
- // Append '.extension' .
- *next++ = '.';
- strncpy(next, extension, length); next += length;
- }
- // Make sure there is no buffer overflow.
- assert((size_t)(next - path) < max && "buffer overflow");
- // Terminate string.
- *next = '\0';
-}
-
// Verify that a found location matches the supplied path (without copying.)
bool ImageFileReader::verify_location(ImageLocation& location, const char* path) const {
// Manage the image string table.
--- a/src/java.base/share/native/libjimage/imageFile.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/java.base/share/native/libjimage/imageFile.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -564,9 +564,6 @@
// ImageFileReader::NOT_FOUND otherwise.
u4 find_location_index(const char* path, u8 *size) const;
- // Assemble the location path.
- void location_path(ImageLocation& location, char* path, size_t max) const;
-
// Verify that a found location matches the supplied path.
bool verify_location(ImageLocation& location, const char* path) const;
--- a/src/java.base/share/native/libjimage/jimage.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/java.base/share/native/libjimage/jimage.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -215,29 +215,3 @@
}
}
}
-
-/*
- * JIMAGE_ResourcePath- Given an open image file, a location reference, a buffer
- * and a maximum buffer size, copy the path of the resource into the buffer.
- * Returns false if not a valid location reference.
- *
- * Ex.
- * JImageLocationRef location = ...
- * char path[JIMAGE_MAX_PATH];
- * (*JImageResourcePath)(image, location, path, JIMAGE_MAX_PATH);
- */
-extern "C" JNIEXPORT bool
-JIMAGE_ResourcePath(JImageFile* image, JImageLocationRef locationRef,
- char* path, size_t max) {
- ImageFileReader* imageFile = (ImageFileReader*) image;
-
- u4 offset = (u4) locationRef;
- if (offset >= imageFile->locations_size()) {
- return false;
- }
-
- ImageLocation location(imageFile->get_location_offset_data(offset));
- imageFile->location_path(location, path, max);
-
- return true;
-}
--- a/src/java.base/share/native/libjimage/jimage.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/java.base/share/native/libjimage/jimage.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -191,20 +191,3 @@
typedef void (*JImageResourceIterator_t)(JImageFile* jimage,
JImageResourceVisitor_t visitor, void* arg);
-
-/*
- * JIMAGE_ResourcePath- Given an open image file, a location reference, a buffer
- * and a maximum buffer size, copy the path of the resource into the buffer.
- * Returns false if not a valid location reference.
- *
- * Ex.
- * JImageLocationRef location = ...
- * char path[JIMAGE_MAX_PATH];
- * (*JImageResourcePath)(image, location, path, JIMAGE_MAX_PATH);
- */
-extern "C" JNIEXPORT bool
-JIMAGE_ResourcePath(JImageFile* image, JImageLocationRef locationRef,
- char* path, size_t max);
-
-typedef bool (*JImage_ResourcePath_t)(JImageFile* jimage, JImageLocationRef location,
- char* buffer, jlong size);
--- a/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-atomic-private.hh Wed Feb 20 17:00:40 2019 +0530
+++ b/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-atomic-private.hh Fri Feb 22 12:05:05 2019 +0530
@@ -115,7 +115,7 @@
#endif
-#elif !defined(HB_NO_MT) && defined(_AIX) && defined(__IBMCPP__)
+#elif !defined(HB_NO_MT) && defined(_AIX) && (defined(__IBMCPP__) || defined(__ibmxl__))
#include <builtins.h>
--- a/src/java.logging/share/classes/java/util/logging/Handler.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/java.logging/share/classes/java/util/logging/Handler.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, 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
@@ -329,12 +329,13 @@
* handler from logging the {@code LogRecord}. It will return false if
* the {@code LogRecord} is null.
*
- * @param record a {@code LogRecord}
+ * @param record a {@code LogRecord} (may be null).
* @return true if the {@code LogRecord} would be logged.
*
*/
public boolean isLoggable(LogRecord record) {
final int levelValue = getLevel().intValue();
+ if (record == null) return false;
if (record.getLevel().intValue() < levelValue || levelValue == offValue) {
return false;
}
--- a/src/java.logging/share/classes/java/util/logging/MemoryHandler.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/java.logging/share/classes/java/util/logging/MemoryHandler.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, 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
@@ -270,7 +270,7 @@
* check whether the {@code LogRecord} would result in a "push" of the
* buffer contents. It will return false if the {@code LogRecord} is null.
*
- * @param record a {@code LogRecord}
+ * @param record a {@code LogRecord} (may be null).
* @return true if the {@code LogRecord} would be logged.
*
*/
--- a/src/java.logging/share/classes/java/util/logging/StreamHandler.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/java.logging/share/classes/java/util/logging/StreamHandler.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, 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
@@ -225,7 +225,7 @@
* whether it satisfies any {@code Filter}. It will also return false if
* no output stream has been assigned yet or the LogRecord is null.
*
- * @param record a {@code LogRecord}
+ * @param record a {@code LogRecord} (may be null).
* @return true if the {@code LogRecord} would be logged.
*
*/
--- a/src/java.rmi/share/classes/java/rmi/server/RMIFailureHandler.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/java.rmi/share/classes/java/rmi/server/RMIFailureHandler.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 1998, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -26,13 +26,13 @@
package java.rmi.server;
/**
- * An <code>RMIFailureHandler</code> can be registered via the
- * <code>RMISocketFactory.setFailureHandler</code> call. The
- * <code>failure</code> method of the handler is invoked when the RMI
- * runtime is unable to create a <code>ServerSocket</code> to listen
- * for incoming calls. The <code>failure</code> method returns a boolean
+ * An {@code RMIFailureHandler} can be registered via the
+ * {@code RMISocketFactory.setFailureHandler} call. The
+ * {@code failure} method of the handler is invoked when the RMI
+ * runtime is unable to create a {@code ServerSocket} to listen
+ * for incoming calls. The {@code failure} method returns a boolean
* indicating whether the runtime should attempt to re-create the
- * <code>ServerSocket</code>.
+ * {@code ServerSocket}.
*
* @author Ann Wollrath
* @since 1.1
@@ -40,18 +40,18 @@
public interface RMIFailureHandler {
/**
- * The <code>failure</code> callback is invoked when the RMI
- * runtime is unable to create a <code>ServerSocket</code> via the
- * <code>RMISocketFactory</code>. An <code>RMIFailureHandler</code>
+ * The {@code failure} callback is invoked when the RMI
+ * runtime is unable to create a {@code ServerSocket} via the
+ * {@code RMISocketFactory}. An {@code RMIFailureHandler}
* is registered via a call to
- * <code>RMISocketFacotry.setFailureHandler</code>. If no failure
+ * {@code RMISocketFactory.setFailureHandler}. If no failure
* handler is installed, the default behavior is to attempt to
* re-create the ServerSocket.
*
- * @param ex the exception that occurred during <code>ServerSocket</code>
+ * @param ex the exception that occurred during {@code ServerSocket}
* creation
* @return if true, the RMI runtime attempts to retry
- * <code>ServerSocket</code> creation
+ * {@code ServerSocket} creation
* @see java.rmi.server.RMISocketFactory#setFailureHandler(RMIFailureHandler)
* @since 1.1
*/
--- a/src/jdk.attach/aix/classes/sun/tools/attach/VirtualMachineImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.attach/aix/classes/sun/tools/attach/VirtualMachineImpl.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2019, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2018, SAP SE. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -138,7 +138,7 @@
* Execute the given command in the target VM.
*/
InputStream execute(String cmd, Object ... args) throws AgentLoadException, IOException {
- assert args.length <= 3; // includes null
+ assert args.length <= 4; // includes null
// did we detach?
synchronized (this) {
@@ -166,7 +166,7 @@
writeString(s, PROTOCOL_VERSION);
writeString(s, cmd);
- for (int i=0; i<3; i++) {
+ for (int i = 0; i < 4; i++) {
if (i < args.length && args[i] != null) {
writeString(s, (String)args[i]);
} else {
--- a/src/jdk.attach/linux/classes/sun/tools/attach/VirtualMachineImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.attach/linux/classes/sun/tools/attach/VirtualMachineImpl.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2019, 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
@@ -143,7 +143,7 @@
* Execute the given command in the target VM.
*/
InputStream execute(String cmd, Object ... args) throws AgentLoadException, IOException {
- assert args.length <= 3; // includes null
+ assert args.length <= 4; // includes null
// did we detach?
synchronized (this) {
@@ -171,7 +171,7 @@
writeString(s, PROTOCOL_VERSION);
writeString(s, cmd);
- for (int i=0; i<3; i++) {
+ for (int i = 0; i < 4; i++) {
if (i < args.length && args[i] != null) {
writeString(s, (String)args[i]);
} else {
--- a/src/jdk.attach/macosx/classes/sun/tools/attach/VirtualMachineImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.attach/macosx/classes/sun/tools/attach/VirtualMachineImpl.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2019, 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
@@ -139,7 +139,7 @@
* Execute the given command in the target VM.
*/
InputStream execute(String cmd, Object ... args) throws AgentLoadException, IOException {
- assert args.length <= 3; // includes null
+ assert args.length <= 4; // includes null
// did we detach?
synchronized (this) {
@@ -167,7 +167,7 @@
writeString(s, PROTOCOL_VERSION);
writeString(s, cmd);
- for (int i=0; i<3; i++) {
+ for (int i = 0; i < 4; i++) {
if (i < args.length && args[i] != null) {
writeString(s, (String)args[i]);
} else {
--- a/src/jdk.attach/solaris/classes/sun/tools/attach/VirtualMachineImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.attach/solaris/classes/sun/tools/attach/VirtualMachineImpl.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2019, 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
@@ -126,7 +126,7 @@
* Execute the given command in the target VM.
*/
InputStream execute(String cmd, Object ... args) throws AgentLoadException, IOException {
- assert args.length <= 3; // includes null
+ assert args.length <= 4; // includes null
// first check that we are still attached
int door;
--- a/src/jdk.attach/windows/classes/sun/tools/attach/VirtualMachineImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.attach/windows/classes/sun/tools/attach/VirtualMachineImpl.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2019, 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
@@ -77,7 +77,7 @@
InputStream execute(String cmd, Object ... args)
throws AgentLoadException, IOException
{
- assert args.length <= 3; // includes null
+ assert args.length <= 4; // includes null
// create a pipe using a random name
Random rnd = new Random();
--- a/src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/P11Key.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/P11Key.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2019, 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
@@ -106,7 +106,7 @@
static {
PrivilegedAction<String> getKeyExtractionProp =
() -> System.getProperty(
- "sun.security.pkcs11.disableKeyExtraction", "true");
+ "sun.security.pkcs11.disableKeyExtraction", "false");
String disableKeyExtraction =
AccessController.doPrivileged(getKeyExtractionProp);
DISABLE_NATIVE_KEYS_EXTRACTION =
--- a/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_keymgmt.c Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_keymgmt.c Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
*/
/* Copyright (c) 2002 Graz University of Technology. All rights reserved.
@@ -151,14 +151,14 @@
unsigned int i = 0U;
unsigned long totalDataSize = 0UL, attributesCount = 0UL;
unsigned long totalCkAttributesSize = 0UL, totalNativeKeyInfoArraySize = 0UL;
- unsigned long* wrappedKeySizePtr = NULL;
+ jbyte* wrappedKeySizePtr = NULL;
jbyte* nativeKeyInfoArrayRawCkAttributes = NULL;
jbyte* nativeKeyInfoArrayRawCkAttributesPtr = NULL;
jbyte* nativeKeyInfoArrayRawDataPtr = NULL;
CK_MECHANISM ckMechanism;
char iv[16] = {0x0};
CK_ULONG ckWrappedKeyLength = 0U;
- unsigned long* wrappedKeySizeWrappedKeyArrayPtr = NULL;
+ jbyte* wrappedKeySizeWrappedKeyArrayPtr = NULL;
CK_BYTE_PTR wrappedKeyBufferPtr = NULL;
CK_FUNCTION_LIST_PTR ckpFunctions = getFunctionList(env, obj);
CK_OBJECT_CLASS class;
@@ -234,7 +234,7 @@
// * sizes are expressed in bytes and data type is unsigned long
totalCkAttributesSize = attributesCount * sizeof(CK_ATTRIBUTE);
TRACE1("DEBUG: GetNativeKeyInfo attributesCount = %lu\n", attributesCount);
- TRACE1("DEBUG: GetNativeKeyInfo sizeof CK_ATTRIBUTE = %lu\n", sizeof(CK_ATTRIBUTE));
+ TRACE1("DEBUG: GetNativeKeyInfo sizeof CK_ATTRIBUTE = %zu\n", sizeof(CK_ATTRIBUTE));
TRACE1("DEBUG: GetNativeKeyInfo totalCkAttributesSize = %lu\n", totalCkAttributesSize);
TRACE1("DEBUG: GetNativeKeyInfo totalDataSize = %lu\n", totalDataSize);
@@ -254,8 +254,8 @@
goto cleanup;
}
- wrappedKeySizePtr = (unsigned long*)(nativeKeyInfoArrayRaw +
- sizeof(unsigned long)*2 + totalCkAttributesSize + totalDataSize);
+ wrappedKeySizePtr = nativeKeyInfoArrayRaw +
+ sizeof(unsigned long)*2 + totalCkAttributesSize + totalDataSize;
memcpy(nativeKeyInfoArrayRaw, &totalCkAttributesSize, sizeof(unsigned long));
memcpy(nativeKeyInfoArrayRaw + sizeof(unsigned long) + totalCkAttributesSize,
@@ -330,15 +330,15 @@
memcpy(nativeKeyInfoWrappedKeyArrayRaw, nativeKeyInfoArrayRaw,
totalNativeKeyInfoArraySize);
wrappedKeySizeWrappedKeyArrayPtr =
- (unsigned long*)(nativeKeyInfoWrappedKeyArrayRaw +
+ nativeKeyInfoWrappedKeyArrayRaw +
sizeof(unsigned long)*2 + totalCkAttributesSize +
- totalDataSize);
+ totalDataSize;
memcpy(wrappedKeySizeWrappedKeyArrayPtr, &ckWrappedKeyLength, sizeof(unsigned long));
TRACE1("DEBUG: GetNativeKeyInfo 1st C_WrapKey wrappedKeyLength = %lu\n", ckWrappedKeyLength);
wrappedKeyBufferPtr =
- (unsigned char*)wrappedKeySizeWrappedKeyArrayPtr +
- sizeof(unsigned long);
+ (CK_BYTE_PTR) (wrappedKeySizeWrappedKeyArrayPtr +
+ sizeof(unsigned long));
rv = (*ckpFunctions->C_WrapKey)(ckSessionHandle, &ckMechanism,
jLongToCKULong(jWrappingKeyHandle),ckObjectHandle,
wrappedKeyBufferPtr, &ckWrappedKeyLength);
@@ -414,7 +414,7 @@
jbyte* nativeKeyInfoArrayRawCkAttributesPtr = NULL;
jbyte* nativeKeyInfoArrayRawDataPtr = NULL;
unsigned long totalDataSize = 0UL;
- unsigned long* wrappedKeySizePtr = NULL;
+ jbyte* wrappedKeySizePtr = NULL;
unsigned int i = 0U;
CK_MECHANISM ckMechanism;
char iv[16] = {0x0};
@@ -443,8 +443,8 @@
sizeof(unsigned long));
TRACE1("DEBUG: createNativeKey totalDataSize = %lu\n", totalDataSize);
- wrappedKeySizePtr = (unsigned long*)(nativeKeyInfoArrayRaw +
- sizeof(unsigned long)*2 + totalCkAttributesSize + totalDataSize);
+ wrappedKeySizePtr = nativeKeyInfoArrayRaw +
+ sizeof(unsigned long)*2 + totalCkAttributesSize + totalDataSize;
memcpy(&ckWrappedKeyLength, wrappedKeySizePtr, sizeof(unsigned long));
TRACE1("DEBUG: createNativeKey wrappedKeyLength = %lu\n", ckWrappedKeyLength);
@@ -470,7 +470,8 @@
jMechanismToCKMechanism(env, jWrappingMech, &ckMechanism);
rv = (*ckpFunctions->C_UnwrapKey)(ckSessionHandle, &ckMechanism,
jLongToCKULong(jWrappingKeyHandle),
- (CK_BYTE_PTR)(wrappedKeySizePtr + 1), ckWrappedKeyLength,
+ (CK_BYTE_PTR)(wrappedKeySizePtr + sizeof(unsigned long)),
+ ckWrappedKeyLength,
(CK_ATTRIBUTE_PTR)nativeKeyInfoArrayRawCkAttributes,
jLongToCKULong(nativeKeyInfoCkAttributesCount),
&ckObjectHandle);
--- a/src/jdk.internal.le/share/classes/jdk/internal/org/jline/terminal/impl/AbstractWindowsTerminal.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.internal.le/share/classes/jdk/internal/org/jline/terminal/impl/AbstractWindowsTerminal.java Fri Feb 22 12:05:05 2019 +0530
@@ -86,8 +86,8 @@
super(name, type, selectCharset(encoding, codepage), signalHandler);
NonBlockingPumpReader reader = NonBlocking.nonBlockingPumpReader();
this.slaveInputPipe = reader.getWriter();
- this.reader = reader;
this.input = inputStreamWrapper.apply(NonBlocking.nonBlockingStream(reader, encoding()));
+ this.reader = NonBlocking.nonBlocking(name, input, encoding());
this.writer = new PrintWriter(writer);
this.output = new WriterOutputStream(writer, encoding());
parseInfoCmp();
--- a/src/jdk.internal.le/share/classes/jdk/internal/org/jline/utils/NonBlocking.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.internal.le/share/classes/jdk/internal/org/jline/utils/NonBlocking.java Fri Feb 22 12:05:05 2019 +0530
@@ -123,9 +123,9 @@
}
if (bytes.hasRemaining()) {
if (isPeek) {
- return bytes.get(bytes.position());
+ return Byte.toUnsignedInt(bytes.get(bytes.position()));
} else {
- return bytes.get();
+ return Byte.toUnsignedInt(bytes.get());
}
} else {
return READ_EXPIRED;
--- a/src/jdk.internal.le/windows/native/lible/Kernel32.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.internal.le/windows/native/lible/Kernel32.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -460,7 +460,7 @@
HANDLE h = GetStdHandle((jint) env->GetLongField(in_hConsoleOutput, pointerValue));
INPUT_RECORD *buffer = new INPUT_RECORD[in_nLength];
DWORD numberOfEventsRead;
- if (!ReadConsoleInput(h, buffer, in_nLength, &numberOfEventsRead)) {
+ if (!ReadConsoleInputW(h, buffer, in_nLength, &numberOfEventsRead)) {
delete buffer;
DWORD error = GetLastError();
jobject exc = env->NewObject(lastErrorExceptionClass,
--- a/src/jdk.javadoc/share/classes/com/sun/javadoc/AnnotatedType.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.javadoc;
-
-
-/**
- * Represents an annotated type.
- * For example:
- * <pre>
- * {@code @NonNull String}
- * {@code @Positive int}
- * </pre>
- *
- * @author Mahmood Ali
- * @since 1.8
- * @deprecated
- * The declarations in this package have been superseded by those
- * in the package {@code jdk.javadoc.doclet}.
- * For more information, see the <i>Migration Guide</i> in the documentation for that package.
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public interface AnnotatedType extends Type {
-
- /**
- * Returns the annotations associated with this type.
- * @return the annotations associated with this type
- */
- AnnotationDesc[] annotations();
-
- /**
- * Returns the underlying type.
- * @return the underlying type
- */
- Type underlyingType();
-}
--- a/src/jdk.javadoc/share/classes/com/sun/javadoc/AnnotationDesc.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-/*
- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.javadoc;
-
-
-/**
- * Represents an annotation.
- * An annotation associates a value with each element of an annotation type.
- *
- * @author Scott Seligman
- * @since 1.5
- *
- * @deprecated
- * The declarations in this package have been superseded by those
- * in the package {@code jdk.javadoc.doclet}.
- * For more information, see the <i>Migration Guide</i> in the documentation for that package.
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public interface AnnotationDesc {
-
- /**
- * Returns the annotation type of this annotation.
- *
- * @return the annotation type of this annotation.
- */
- AnnotationTypeDoc annotationType();
-
- /**
- * Returns this annotation's elements and their values.
- * Only those explicitly present in the annotation are
- * included, not those assuming their default values.
- * Returns an empty array if there are none.
- *
- * @return this annotation's elements and their values.
- */
- ElementValuePair[] elementValues();
-
- /**
- * Check for the synthesized bit on the annotation.
- *
- * @return true if the annotation is synthesized.
- */
- boolean isSynthesized();
-
- /**
- * Represents an association between an annotation type element
- * and one of its values.
- *
- * @author Scott Seligman
- * @since 1.5
- *
- * @deprecated
- * The declarations in this package have been superseded by those
- * in the package {@code jdk.javadoc.doclet}.
- * For more information, see the <i>Migration Guide</i> in the documentation for that package.
- */
- @Deprecated(since="9", forRemoval=true)
- public interface ElementValuePair {
-
- /**
- * Returns the annotation type element.
- *
- * @return the annotation type element.
- */
- AnnotationTypeElementDoc element();
-
- /**
- * Returns the value associated with the annotation type element.
- *
- * @return the value associated with the annotation type element.
- */
- AnnotationValue value();
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/javadoc/AnnotationTypeDoc.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.javadoc;
-
-
-/**
- * Represents an annotation type.
- *
- * @author Scott Seligman
- * @since 1.5
- *
- * @deprecated
- * The declarations in this package have been superseded by those
- * in the package {@code jdk.javadoc.doclet}.
- * For more information, see the <i>Migration Guide</i> in the documentation for that package.
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public interface AnnotationTypeDoc extends ClassDoc {
-
- /**
- * Returns the elements of this annotation type.
- * Returns an empty array if there are none.
- *
- * @return the elements of this annotation type.
- */
- AnnotationTypeElementDoc[] elements();
-}
--- a/src/jdk.javadoc/share/classes/com/sun/javadoc/AnnotationTypeElementDoc.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.javadoc;
-
-
-/**
- * Represents an element of an annotation type.
- *
- * @author Scott Seligman
- * @since 1.5
- *
- * @deprecated
- * The declarations in this package have been superseded by those
- * in the package {@code jdk.javadoc.doclet}.
- * For more information, see the <i>Migration Guide</i> in the documentation for that package.
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public interface AnnotationTypeElementDoc extends MethodDoc {
-
- /**
- * Returns the default value of this element.
- * Returns null if this element has no default.
- *
- * @return the default value of this element.
- */
- AnnotationValue defaultValue();
-}
--- a/src/jdk.javadoc/share/classes/com/sun/javadoc/AnnotationValue.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-/*
- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.javadoc;
-
-
-/**
- * Represents a value of an annotation type element.
- *
- * @author Scott Seligman
- * @since 1.5
- *
- * @deprecated
- * The declarations in this package have been superseded by those
- * in the package {@code jdk.javadoc.doclet}.
- * For more information, see the <i>Migration Guide</i> in the documentation for that package.
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public interface AnnotationValue {
-
- /**
- * Returns the value.
- * The type of the returned object is one of the following:
- * <ul><li> a wrapper class for a primitive type
- * <li> {@code String}
- * <li> {@code Type} (representing a class literal)
- * <li> {@code FieldDoc} (representing an enum constant)
- * <li> {@code AnnotationDesc}
- * <li> {@code AnnotationValue[]}
- * </ul>
- *
- * @return the value.
- */
- Object value();
-
- /**
- * Returns a string representation of the value.
- *
- * @return the text of a Java language annotation value expression
- * whose value is the value of this element.
- */
- String toString();
-}
--- a/src/jdk.javadoc/share/classes/com/sun/javadoc/ClassDoc.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,362 +0,0 @@
-/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.javadoc;
-
-
-/**
- * Represents a java class or interface and provides access to
- * information about the class, the class's comment and tags, and the
- * members of the class. A ClassDoc only exists if it was
- * processed in this run of javadoc. References to classes
- * which may or may not have been processed in this run are
- * referred to using Type (which can be converted to ClassDoc,
- * if possible).
- *
- * @see Type
- *
- * @since 1.2
- * @author Kaiyang Liu (original)
- * @author Robert Field (rewrite)
- *
- * @deprecated
- * The declarations in this package have been superseded by those
- * in the package {@code jdk.javadoc.doclet}.
- * For more information, see the <i>Migration Guide</i> in the documentation for that package.
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public interface ClassDoc extends ProgramElementDoc, Type {
-
- /**
- * Return true if this class is abstract. Return true
- * for all interfaces.
- *
- * @return true if this class is abstract. Return true
- * for all interfaces.
- */
- boolean isAbstract();
-
- /**
- * Return true if this class implements or interface extends
- * {@code java.io.Serializable}.
- *
- * Since {@code java.io.Externalizable} extends
- * {@code java.io.Serializable},
- * Externalizable objects are also Serializable.
- *
- * @return true if this class implements or interface extends
- * {@code java.io.Serializable}.
- */
- boolean isSerializable();
-
- /**
- * Return true if this class implements or interface extends
- * {@code java.io.Externalizable}.
- *
- * @return true if this class implements or interface extends
- * {@code java.io.Externalizable}.
- */
- boolean isExternalizable();
-
- /**
- * Return the serialization methods for this class or
- * interface.
- *
- * @return an array of MethodDoc objects that represents
- * the serialization methods for this class or interface.
- */
- MethodDoc[] serializationMethods();
-
- /**
- * Return the Serializable fields of this class or interface.
- * <p>
- * Return either a list of default fields documented by
- * {@code serial} tag<br>
- * or return a single {@code FieldDoc} for
- * {@code serialPersistentField} member.
- * There should be a {@code serialField} tag for
- * each Serializable field defined by an {@code ObjectStreamField}
- * array component of {@code serialPersistentField}.
- *
- * @return an array of {@code FieldDoc} objects for the Serializable
- * fields of this class or interface.
- *
- * @see #definesSerializableFields()
- * @see SerialFieldTag
- */
- FieldDoc[] serializableFields();
-
- /**
- * Return true if Serializable fields are explicitly defined with
- * the special class member {@code serialPersistentFields}.
- *
- * @return true if Serializable fields are explicitly defined with
- * the special class member {@code serialPersistentFields}.
- *
- * @see #serializableFields()
- * @see SerialFieldTag
- */
- boolean definesSerializableFields();
-
- /**
- * Return the superclass of this class. Return null if this is an
- * interface.
- *
- * <p> <i>This method cannot accommodate certain generic type constructs.
- * The {@code superclassType} method should be used instead.</i>
- *
- * @return the ClassDoc for the superclass of this class, null if
- * there is no superclass.
- * @see #superclassType
- */
- ClassDoc superclass();
-
- /**
- * Return the superclass of this class. Return null if this is an
- * interface. A superclass is represented by either a
- * {@code ClassDoc} or a {@code ParametrizedType}.
- *
- * @return the superclass of this class, or null if there is no superclass.
- * @since 1.5
- */
- Type superclassType();
-
- /**
- * Test whether this class is a subclass of the specified class.
- * If this is an interface, return false for all classes except
- * {@code java.lang.Object} (we must keep this unexpected
- * behavior for compatibility reasons).
- *
- * @param cd the candidate superclass.
- * @return true if cd is a superclass of this class.
- */
- boolean subclassOf(ClassDoc cd);
-
- /**
- * Return interfaces implemented by this class or interfaces extended
- * by this interface. Includes only directly-declared interfaces, not
- * inherited interfaces.
- * Return an empty array if there are no interfaces.
- *
- * <p> <i>This method cannot accommodate certain generic type constructs.
- * The {@code interfaceTypes} method should be used instead.</i>
- *
- * @return an array of ClassDoc objects representing the interfaces.
- * @see #interfaceTypes
- */
- ClassDoc[] interfaces();
-
- /**
- * Return interfaces implemented by this class or interfaces extended
- * by this interface. Includes only directly-declared interfaces, not
- * inherited interfaces.
- * Return an empty array if there are no interfaces.
- *
- * @return an array of interfaces, each represented by a
- * {@code ClassDoc} or a {@code ParametrizedType}.
- * @since 1.5
- */
- Type[] interfaceTypes();
-
- /**
- * Return the formal type parameters of this class or interface.
- * Return an empty array if there are none.
- *
- * @return the formal type parameters of this class or interface.
- * @since 1.5
- */
- TypeVariable[] typeParameters();
-
- /**
- * Return the type parameter tags of this class or interface.
- * Return an empty array if there are none.
- *
- * @return the type parameter tags of this class or interface.
- * @since 1.5
- */
- ParamTag[] typeParamTags();
-
- /**
- * Return
- * <a href="{@docRoot}/jdk.javadoc/com/sun/javadoc/package-summary.html#included">included</a>
- * fields in this class or interface.
- * Excludes enum constants if this is an enum type.
- *
- * @return an array of FieldDoc objects representing the included
- * fields in this class or interface.
- */
- FieldDoc[] fields();
-
- /**
- * Return fields in this class or interface, filtered to the specified
- * <a href="{@docRoot}/jdk.javadoc/com/sun/javadoc/package-summary.html#included">access
- * modifier option</a>.
- * Excludes enum constants if this is an enum type.
- *
- * @param filter Specify true to filter according to the specified access
- * modifier option.
- * Specify false to include all fields regardless of
- * access modifier option.
- * @return an array of FieldDoc objects representing the included
- * fields in this class or interface.
- */
- FieldDoc[] fields(boolean filter);
-
- /**
- * Return the enum constants if this is an enum type.
- * Return an empty array if there are no enum constants, or if
- * this is not an enum type.
- *
- * @return the enum constants if this is an enum type.
- */
- FieldDoc[] enumConstants();
-
- /**
- * Return
- * <a href="{@docRoot}/jdk.javadoc/com/sun/javadoc/package-summary.html#included">included</a>
- * methods in this class or interface.
- * Same as {@code methods(true)}.
- *
- * @return an array of MethodDoc objects representing the included
- * methods in this class or interface. Does not include
- * constructors or annotation type elements.
- */
- MethodDoc[] methods();
-
- /**
- * Return methods in this class or interface, filtered to the specified
- * <a href="{@docRoot}/jdk.javadoc/com/sun/javadoc/package-summary.html#included">access
- * modifier option</a>. Does not include constructors or annotation
- * type elements.
- *
- * @param filter Specify true to filter according to the specified access
- * modifier option.
- * Specify false to include all methods regardless of
- * access modifier option.
- *
- * @return an array of MethodDoc objects representing the included
- * methods in this class or interface.
- */
- MethodDoc[] methods(boolean filter);
-
- /**
- * Return
- * <a href="{@docRoot}/jdk.javadoc/com/sun/javadoc/package-summary.html#included">included</a>
- * constructors in this class. An array containing the default
- * no-arg constructor is returned if no other constructors exist.
- * Return empty array if this is an interface.
- *
- * @return an array of ConstructorDoc objects representing the included
- * constructors in this class.
- */
- ConstructorDoc[] constructors();
-
- /**
- * Return constructors in this class, filtered to the specified
- * <a href="{@docRoot}/jdk.javadoc/com/sun/javadoc/package-summary.html#included">access
- * modifier option</a>. Return an array containing the default
- * no-arg constructor if no other constructors exist.
- *
- * @param filter Specify true to filter according to the specified access
- * modifier option.
- * Specify false to include all constructors regardless of
- * access modifier option.
- * @return an array of ConstructorDoc objects representing the included
- * constructors in this class.
- */
- ConstructorDoc[] constructors(boolean filter);
-
-
- /**
- * Return
- * <a href="{@docRoot}/jdk.javadoc/com/sun/javadoc/package-summary.html#included">included</a>
- * nested classes and interfaces within this class or interface.
- * This includes both static and non-static nested classes.
- * (This method should have been named {@code nestedClasses()},
- * as inner classes are technically non-static.) Anonymous and local classes
- * or interfaces are not included.
- *
- * @return an array of ClassDoc objects representing the included classes
- * and interfaces defined in this class or interface.
- */
- ClassDoc[] innerClasses();
-
- /**
- * Return nested classes and interfaces within this class or interface
- * filtered to the specified
- * <a href="{@docRoot}/jdk.javadoc/com/sun/javadoc/package-summary.html#included">access
- * modifier option</a>.
- * This includes both static and non-static nested classes.
- * Anonymous and local classes are not included.
- *
- * @param filter Specify true to filter according to the specified access
- * modifier option.
- * Specify false to include all nested classes regardless of
- * access modifier option.
- * @return a filtered array of ClassDoc objects representing the included
- * classes and interfaces defined in this class or interface.
- */
- ClassDoc[] innerClasses(boolean filter);
-
- /**
- * Find the specified class or interface within the context of this class doc.
- * Search order: 1) qualified name, 2) nested in this class or interface,
- * 3) in this package, 4) in the class imports, 5) in the package imports.
- * Return the ClassDoc if found, null if not found.
- * @param className Specify the class name to find as a String.
- * @return the ClassDoc if found, null if not found.
- */
- ClassDoc findClass(String className);
-
- /**
- * Get the list of classes and interfaces declared as imported.
- * These are called "single-type-import declarations" in
- * <cite>The Java™ Language Specification</cite>.
- *
- * @return an array of ClassDoc representing the imported classes.
- *
- * @deprecated Import declarations are implementation details that
- * should not be exposed here. In addition, not all imported
- * classes are imported through single-type-import declarations.
- */
- @Deprecated(since="9", forRemoval=true)
- ClassDoc[] importedClasses();
-
- /**
- * Get the list of packages declared as imported.
- * These are called "type-import-on-demand declarations" in
- * <cite>The Java™ Language Specification</cite>.
- *
- * @return an array of PackageDoc representing the imported packages.
- *
- * @deprecated Import declarations are implementation details that
- * should not be exposed here. In addition, this method's
- * return type does not allow for all type-import-on-demand
- * declarations to be returned.
- */
- @Deprecated(since="9", forRemoval=true)
- PackageDoc[] importedPackages();
-}
--- a/src/jdk.javadoc/share/classes/com/sun/javadoc/ConstructorDoc.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.javadoc;
-
-/**
- * Represents a constructor of a java class.
- *
- * @since 1.2
- * @author Robert Field
- *
- * @deprecated
- * The declarations in this package have been superseded by those
- * in the package {@code jdk.javadoc.doclet}.
- * For more information, see the <i>Migration Guide</i> in the documentation for that package.
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public interface ConstructorDoc extends ExecutableMemberDoc {
-}
--- a/src/jdk.javadoc/share/classes/com/sun/javadoc/Doc.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,286 +0,0 @@
-/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.javadoc;
-
-import java.text.BreakIterator;
-import java.util.Locale;
-
-/**
- * Represents Java language constructs (package, class, constructor,
- * method, field) which have comments and have been processed by this
- * run of javadoc. All Doc objects are unique, that is, they
- * are == comparable.
- *
- * @since 1.2
- * @author Robert Field
- * @author Scott Seligman (generics, enums, annotations)
- *
- * @deprecated
- * The declarations in this package have been superseded by those
- * in the package {@code jdk.javadoc.doclet}.
- * For more information, see the <i>Migration Guide</i> in the documentation for that package.
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public interface Doc extends Comparable<Object> {
-
- /**
- * Return the text of the comment for this doc item.
- * Tags have been removed.
- *
- * @return the text of the comment for this doc item.
- */
- String commentText();
-
- /**
- * Return all tags in this Doc item.
- *
- * @return an array of {@link Tag} objects containing all tags on
- * this Doc item.
- */
- Tag[] tags();
-
- /**
- * Return tags of the specified {@linkplain Tag#kind() kind} in
- * this Doc item.
- *
- * For example, if 'tagname' has value "@serial", all tags in
- * this Doc item of kind "@serial" will be returned.
- *
- * @param tagname name of the tag kind to search for.
- * @return an array of Tag containing all tags whose 'kind()'
- * matches 'tagname'.
- */
- Tag[] tags(String tagname);
-
- /**
- * Return the see also tags in this Doc item.
- *
- * @return an array of SeeTag containing all @see tags.
- */
- SeeTag[] seeTags();
-
- /**
- * Return comment as an array of tags. Includes inline tags
- * (i.e. {@link <i>reference</i>} tags) but not
- * block tags.
- * Each section of plain text is represented as a {@link Tag}
- * of {@linkplain Tag#kind() kind} "Text".
- * Inline tags are represented as a {@link SeeTag} of kind "@see"
- * and name "@link".
- *
- * @return an array of {@link Tag}s representing the comment
- */
- Tag[] inlineTags();
-
- /**
- * Return the first sentence of the comment as an array of tags.
- * Includes inline tags
- * (i.e. {@link <i>reference</i>} tags) but not
- * block tags.
- * Each section of plain text is represented as a {@link Tag}
- * of {@linkplain Tag#kind() kind} "Text".
- * Inline tags are represented as a {@link SeeTag} of kind "@see"
- * and name "@link".
- * <p>
- * If the locale is English language, the first sentence is
- * determined by the rules described in the Java Language
- * Specification (first version): "This sentence ends
- * at the first period that is followed by a blank, tab, or
- * line terminator or at the first tagline.", in
- * addition a line will be terminated by block
- * HTML tags: <p> </p> <h1>
- * <h2> <h3> <h4> <h5> <h6>
- * <hr> <pre> or </pre>.
- * If the locale is not English, the sentence end will be
- * determined by
- * {@link BreakIterator#getSentenceInstance(Locale)}.
-
- * @return an array of {@link Tag}s representing the
- * first sentence of the comment
- */
- Tag[] firstSentenceTags();
-
- /**
- * Return the full unprocessed text of the comment. Tags
- * are included as text. Used mainly for store and retrieve
- * operations like internalization.
- *
- * @return the full unprocessed text of the comment.
- */
- String getRawCommentText();
-
- /**
- * Set the full unprocessed text of the comment. Tags
- * are included as text. Used mainly for store and retrieve
- * operations like internalization.
- *
- * @param rawDocumentation A String containing the full unprocessed text of the comment.
- */
- void setRawCommentText(String rawDocumentation);
-
- /**
- * Returns the non-qualified name of this Doc item.
- *
- * @return the name
- */
- String name();
-
- /**
- * Compares this doc object with the specified object for order. Returns a
- * negative integer, zero, or a positive integer as this doc object is less
- * than, equal to, or greater than the given object.
- * <p>
- * This method satisfies the {@link java.lang.Comparable} interface.
- *
- * @param obj the {@code Object} to be compared.
- * @return a negative integer, zero, or a positive integer as this Object
- * is less than, equal to, or greater than the given Object.
- * @exception ClassCastException the specified Object's type prevents it
- * from being compared to this Object.
- */
- int compareTo(Object obj);
-
- /**
- * Is this Doc item a field (but not an enum constant)?
- *
- * @return true if it represents a field
- */
- boolean isField();
-
- /**
- * Is this Doc item an enum constant?
- *
- * @return true if it represents an enum constant
- * @since 1.5
- */
- boolean isEnumConstant();
-
- /**
- * Is this Doc item a constructor?
- *
- * @return true if it represents a constructor
- */
- boolean isConstructor();
-
- /**
- * Is this Doc item a method (but not a constructor or annotation
- * type element)?
- *
- * @return true if it represents a method
- */
- boolean isMethod();
-
- /**
- * Is this Doc item an annotation type element?
- *
- * @return true if it represents an annotation type element
- * @since 1.5
- */
- boolean isAnnotationTypeElement();
-
- /**
- * Is this Doc item an interface (but not an annotation type)?
- *
- * @return true if it represents an interface
- */
- boolean isInterface();
-
- /**
- * Is this Doc item an exception class?
- *
- * @return true if it represents an exception
- */
- boolean isException();
-
- /**
- * Is this Doc item an error class?
- *
- * @return true if it represents a error
- */
- boolean isError();
-
- /**
- * Is this Doc item an enum type?
- *
- * @return true if it represents an enum type
- * @since 1.5
- */
- boolean isEnum();
-
- /**
- * Is this Doc item an annotation type?
- *
- * @return true if it represents an annotation type
- * @since 1.5
- */
- boolean isAnnotationType();
-
- /**
- * Is this Doc item an
- * <a href="{@docRoot}/jdk.javadoc/com/sun/javadoc/package-summary.html#class">ordinary
- * class</a>?
- * (i.e. not an interface, annotation type, enum, exception, or error)?
- *
- * @return true if it represents an ordinary class
- */
- boolean isOrdinaryClass();
-
- /**
- * Is this Doc item a
- * <a href="{@docRoot}/jdk.javadoc/com/sun/javadoc/package-summary.html#class">class</a>
- * (and not an interface or annotation type)?
- * This includes ordinary classes, enums, errors and exceptions.
- *
- * @return true if it represents a class
- */
- boolean isClass();
-
- /**
- * Return true if this Doc item is
- * <a href="{@docRoot}/jdk.javadoc/com/sun/javadoc/package-summary.html#included">included</a>
- * in the result set.
- *
- * @return true if this Doc item is
- * <a href="{@docRoot}/jdk.javadoc/com/sun/javadoc/package-summary.html#included">included</a>
- * in the result set.
- */
- boolean isIncluded();
-
- /**
- * Return the source position of the first line of the
- * corresponding declaration, or null if
- * no position is available. A default constructor returns
- * null because it has no location in the source file.
- *
- * @since 1.4
- * @return the source positino of the first line of the
- * corresponding declaration, or null if
- * no position is available. A default constructor returns
- * null because it has no location in the source file.
- */
- SourcePosition position();
-}
--- a/src/jdk.javadoc/share/classes/com/sun/javadoc/DocErrorReporter.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.javadoc;
-
-/**
- * This interface provides error, warning and notice printing.
- *
- * @since 1.2
- * @author Robert Field
- *
- * @deprecated
- * The declarations in this package have been superseded by those
- * in the package {@code jdk.javadoc.doclet}.
- * For more information, see the <i>Migration Guide</i> in the documentation for that package.
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public interface DocErrorReporter {
-
- /**
- * Print error message and increment error count.
- *
- * @param msg message to print
- */
- void printError(String msg);
-
- /**
- * Print an error message and increment error count.
- *
- * @param pos the position item where the error occurs
- * @param msg message to print
- * @since 1.4
- */
- void printError(SourcePosition pos, String msg);
-
- /**
- * Print warning message and increment warning count.
- *
- * @param msg message to print
- */
- void printWarning(String msg);
-
- /**
- * Print warning message and increment warning count.
- *
- * @param pos the position item where the warning occurs
- * @param msg message to print
- * @since 1.4
- */
- void printWarning(SourcePosition pos, String msg);
-
- /**
- * Print a message.
- *
- * @param msg message to print
- */
- void printNotice(String msg);
-
- /**
- * Print a message.
- *
- * @param pos the position item where the message occurs
- * @param msg message to print
- * @since 1.4
- */
- void printNotice(SourcePosition pos, String msg);
-}
--- a/src/jdk.javadoc/share/classes/com/sun/javadoc/Doclet.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,122 +0,0 @@
-/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.javadoc;
-
-/**
- * This is an example of a starting class for a doclet,
- * showing the entry-point methods. A starting class must
- * import com.sun.javadoc.* and implement the
- * {@code start(RootDoc)} method, as described in the
- * <a href="package-summary.html#package.description">package
- * description</a>. If the doclet takes command line options,
- * it must also implement {@code optionLength} and
- * {@code validOptions}.
- *
- * <p> A doclet supporting the language features added since 1.1
- * (such as generics and annotations) should indicate this
- * by implementing {@code languageVersion}. In the absence of
- * this the doclet should not invoke any of the Doclet API methods
- * added since 1.5, and
- * the results of several other methods are modified so as
- * to conceal the new constructs (such as type parameters) from
- * the doclet.
- *
- * <p> To start the doclet, pass
- * {@code -doclet} followed by the fully-qualified
- * name of the starting class on the javadoc tool command line.
- *
- * @deprecated
- * The declarations in this package have been superseded by those
- * in the package {@code jdk.javadoc.doclet}.
- * For more information, see the <i>Migration Guide</i> in the documentation for that package.
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public abstract class Doclet {
-
- /**
- * Generate documentation here.
- * This method is required for all doclets.
- *
- * @param root Supply the RootDoc to the method.
- * @return true on success.
- */
- public static boolean start(RootDoc root) {
- return true;
- }
-
- /**
- * Check for doclet-added options. Returns the number of
- * arguments you must specify on the command line for the
- * given option. For example, "-d docs" would return 2.
- * <P>
- * This method is required if the doclet contains any options.
- * If this method is missing, Javadoc will print an invalid flag
- * error for every option.
- *
- * @param option the option for which the number of arguements is returned.
- * @return number of arguments on the command line for an option
- * including the option name itself. Zero return means
- * option not known. Negative value means error occurred.
- */
- public static int optionLength(String option) {
- return 0; // default is option unknown
- }
-
- /**
- * Check that options have the correct arguments.
- * <P>
- * This method is not required, but is recommended,
- * as every option will be considered valid if this method
- * is not present. It will default gracefully (to true)
- * if absent.
- * <P>
- * Printing option related error messages (using the provided
- * DocErrorReporter) is the responsibility of this method.
- *
- * @param options Supply valid options as an array of Strings.
- * @param reporter The DocErrorReporter responsible for these options.
- * @return true if the options are valid.
- */
- public static boolean validOptions(String options[][],
- DocErrorReporter reporter) {
- return true; // default is options are valid
- }
-
- /**
- * Return the version of the Java Programming Language supported
- * by this doclet.
- * <p>
- * This method is required by any doclet supporting a language version
- * newer than 1.1.
- *
- * @return the language version supported by this doclet.
- * @since 1.5
- */
- public static LanguageVersion languageVersion() {
- return LanguageVersion.JAVA_1_1;
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/javadoc/ExecutableMemberDoc.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,164 +0,0 @@
-/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.javadoc;
-
-/**
- * Represents a method or constructor of a java class.
- *
- * @since 1.2
- * @author Robert Field
- *
- * @deprecated
- * The declarations in this package have been superseded by those
- * in the package {@code jdk.javadoc.doclet}.
- * For more information, see the <i>Migration Guide</i> in the documentation for that package.
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public interface ExecutableMemberDoc extends MemberDoc {
-
- /**
- * Return exceptions this method or constructor throws.
- * If the type of the exception is a type variable, return the
- * {@code ClassDoc} of its erasure.
- *
- * <p> <i>The {@code thrownExceptions} method cannot
- * accommodate certain generic type constructs. The
- * {@code thrownExceptionTypes} method should be used
- * instead.</i>
- *
- * @return an array of ClassDoc[] representing the exceptions
- * thrown by this method.
- * @see #thrownExceptionTypes
- */
- ClassDoc[] thrownExceptions();
-
- /**
- * Return exceptions this method or constructor throws.
- *
- * @return an array representing the exceptions thrown by this method.
- * Each array element is either a {@code ClassDoc} or a
- * {@code TypeVariable}.
- * @since 1.5
- */
- Type[] thrownExceptionTypes();
-
- /**
- * Return true if this method is native
- *
- * @return true if this method is native
- */
- boolean isNative();
-
- /**
- * Return true if this method is synchronized
- *
- * @return true if this method is synchronized
- */
- boolean isSynchronized();
-
- /**
- * Return true if this method was declared to take a variable number
- * of arguments.
- *
- * @since 1.5
- * @return true if this method was declared to take a variable number of arguments.
- */
- public boolean isVarArgs();
-
- /**
- * Get argument information.
- *
- * @see Parameter
- *
- * @return an array of Parameter, one element per argument
- * in the order the arguments are present.
- */
- Parameter[] parameters();
-
- /**
- * Get the receiver type of this executable element.
- *
- * @return the receiver type of this executable element.
- * @since 1.8
- */
- Type receiverType();
-
- /**
- * Return the throws tags in this method.
- *
- * @return an array of ThrowTag containing all {@code @exception}
- * and {@code @throws} tags.
- */
- ThrowsTag[] throwsTags();
-
- /**
- * Return the param tags in this method, excluding the type
- * parameter tags.
- *
- * @return an array of ParamTag containing all {@code @param} tags
- * corresponding to the parameters of this method.
- */
- ParamTag[] paramTags();
-
- /**
- * Return the type parameter tags in this method.
- *
- * @return an array of ParamTag containing all {@code @param} tags
- * corresponding to the type parameters of this method.
- * @since 1.5
- */
- ParamTag[] typeParamTags();
-
- /**
- * Get the signature. It is the parameter list, type is qualified.
- * For instance, for a method {@code mymethod(String x, int y)},
- * it will return {@code (java.lang.String,int)}.
- *
- * @return the parameter list where type is qualified.
- */
- String signature();
-
- /**
- * get flat signature. all types are not qualified.
- * return a String, which is the flat signiture of this member.
- * It is the parameter list, type is not qualified.
- * For instance, for a method {@code mymethod(String x, int y)},
- * it will return {@code (String, int)}.
- *
- * @return a String, which is the flat signiture of this member.
- */
- String flatSignature();
-
- /**
- * Return the formal type parameters of this method or constructor.
- * Return an empty array if this method or constructor is not generic.
- *
- * @return the formal type parameters of this method or constructor.
- * @since 1.5
- */
- TypeVariable[] typeParameters();
-}
--- a/src/jdk.javadoc/share/classes/com/sun/javadoc/FieldDoc.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.javadoc;
-
-/**
- * Represents a field in a java class.
- *
- * @see MemberDoc
- *
- * @since 1.2
- * @author Robert Field
- *
- * @deprecated
- * The declarations in this package have been superseded by those
- * in the package {@code jdk.javadoc.doclet}.
- * For more information, see the <i>Migration Guide</i> in the documentation for that package.
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public interface FieldDoc extends MemberDoc {
-
- /**
- * Get type of this field.
- *
- * @return the type of this field.
- */
- Type type();
-
- /**
- * Return true if this field is transient
- *
- * @return true if this field is transient
- */
- boolean isTransient();
-
- /**
- * Return true if this field is volatile
- *
- * @return true if this field is volatile
- */
- boolean isVolatile();
-
- /**
- * Return the serialField tags in this FieldDoc item.
- *
- * @return an array of {@code SerialFieldTag} objects containing
- * all {@code @serialField} tags.
- */
- SerialFieldTag[] serialFieldTags();
-
- /**
- * Get the value of a constant field.
- *
- * @return the value of a constant field. The value is
- * automatically wrapped in an object if it has a primitive type.
- * If the field is not constant, returns null.
- */
- Object constantValue();
-
- /**
- * Get the value of a constant field.
- *
- * @return the text of a Java language expression whose value
- * is the value of the constant. The expression uses no identifiers
- * other than primitive literals. If the field is
- * not constant, returns null.
- */
- String constantValueExpression();
-}
--- a/src/jdk.javadoc/share/classes/com/sun/javadoc/LanguageVersion.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.javadoc;
-
-
-/**
- * Java Programming Language version. The constants of this enum
- * identify the JDK and J2SE releases containing language changes
- * relevant to doclets.
- * <p>
- * All doclets support at least the 1.1 language version.
- * The first release subsequent to this with language changes
- * affecting doclets is 1.5.
- *
- * @since 1.5
- *
- * @deprecated
- * The declarations in this package have been superseded by those
- * in the package {@code jdk.javadoc.doclet}.
- * For more information, see the <i>Migration Guide</i> in the documentation for that package.
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public enum LanguageVersion {
-
- /** 1.1 added nested classes and interfaces. */
- JAVA_1_1,
-
- /** 1.5 added generic types, annotations, enums, and varArgs. */
- JAVA_1_5
-}
--- a/src/jdk.javadoc/share/classes/com/sun/javadoc/MemberDoc.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.javadoc;
-
-/**
- * Represents a member of a java class: field, constructor, or method.
- * This is an abstract class dealing with information common to
- * method, constructor and field members. Class members of a class
- * (innerclasses) are represented instead by ClassDoc.
- *
- * @see MethodDoc
- * @see FieldDoc
- * @see ClassDoc
- *
- * @author Kaiyang Liu (original)
- * @author Robert Field (rewrite)
- *
- * @deprecated
- * The declarations in this package have been superseded by those
- * in the package {@code jdk.javadoc.doclet}.
- * For more information, see the <i>Migration Guide</i> in the documentation for that package.
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public interface MemberDoc extends ProgramElementDoc {
-
- /**
- * Returns true if this member was synthesized by the compiler.
- *
- * @return true if this member was synthesized by the compiler.
- */
- boolean isSynthetic();
-}
--- a/src/jdk.javadoc/share/classes/com/sun/javadoc/MethodDoc.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.javadoc;
-
-/**
- * Represents a method of a java class.
- *
- * @since 1.2
- * @author Robert Field
- *
- * @deprecated
- * The declarations in this package have been superseded by those
- * in the package {@code jdk.javadoc.doclet}.
- * For more information, see the <i>Migration Guide</i> in the documentation for that package.
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public interface MethodDoc extends ExecutableMemberDoc {
-
- /**
- * Return true if this method is abstract
- *
- * @return true if this method is abstract
- */
- boolean isAbstract();
-
- /**
- * Return true if this method is default
- *
- * @return true if this method is default
- */
- boolean isDefault();
-
- /**
- * Get return type.
- *
- * @return the return type of this method, null if it
- * is a constructor.
- */
- Type returnType();
-
- /**
- * Return the class containing the method that this method overrides.
- *
- * <p> <i>The {@code overriddenClass} method cannot
- * accommodate certain generic type constructs. The
- * {@code overriddenType} method should be used instead.</i>
- *
- * @return a ClassDoc representing the superclass
- * defining a method that this method overrides, or null if
- * this method does not override.
- */
- ClassDoc overriddenClass();
-
- /**
- * Return the type containing the method that this method overrides.
- * It may be a {@code ClassDoc} or a {@code ParameterizedType}.
- *
- * @return the supertype whose method is overridden, or null if this
- * method does not override another in a superclass
- * @since 1.5
- */
- Type overriddenType();
-
- /**
- * Return the method that this method overrides.
- *
- * @return a MethodDoc representing a method definition
- * in a superclass this method overrides, null if
- * this method does not override.
- */
- MethodDoc overriddenMethod();
-
- /**
- * Tests whether this method overrides another.
- * The overridden method may be one declared in a superclass or
- * a superinterface (unlike {@link #overriddenMethod()}).
- *
- * <p> When a non-abstract method overrides an abstract one, it is
- * also said to <i>implement</i> the other.
- *
- * @param meth the other method to examine
- * @return {@code true} if this method overrides the other
- * @since 1.5
- */
- boolean overrides(MethodDoc meth);
-}
--- a/src/jdk.javadoc/share/classes/com/sun/javadoc/PackageDoc.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,137 +0,0 @@
-/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.javadoc;
-
-/**
- * Represents a java package. Provides access to information
- * about the package, the package's comment and tags, and the
- * classes in the package.
- * <p>
- * Each method whose return type is an array will return an empty
- * array (never null) when there are no objects in the result.
- *
- * @since 1.2
- * @author Kaiyang Liu (original)
- * @author Robert Field (rewrite)
- *
- * @deprecated
- * The declarations in this package have been superseded by those
- * in the package {@code jdk.javadoc.doclet}.
- * For more information, see the <i>Migration Guide</i> in the documentation for that package.
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public interface PackageDoc extends Doc {
-
- /**
- * Get all classes and interfaces in the package, filtered to the specified
- * <a href="{@docRoot}/jdk.javadoc/com/sun/javadoc/package-summary.html#included">access
- * modifier option</a>.
- *
- * @return filtered classes and interfaces in this package
- * @param filter Specifying true filters according to the specified access
- * modifier option.
- * Specifying false includes all classes and interfaces
- * regardless of access modifier option.
- * @since 1.4
- */
- ClassDoc[] allClasses(boolean filter);
-
- /**
- * Get all
- * <a href="{@docRoot}/jdk.javadoc/com/sun/javadoc/package-summary.html#included">included</a>
- * classes and interfaces in the package. Same as allClasses(true).
- *
- * @return all included classes and interfaces in this package.
- */
- ClassDoc[] allClasses();
-
- /**
- * Get included
- * <a href="{@docRoot}/jdk.javadoc/com/sun/javadoc/package-summary.html#class">ordinary</a>
- * classes (that is, exclude exceptions, errors, enums, interfaces, and
- * annotation types)
- * in this package.
- *
- * @return included ordinary classes in this package.
- */
- ClassDoc[] ordinaryClasses();
-
- /**
- * Get included Exception classes in this package.
- *
- * @return included Exceptions in this package.
- */
- ClassDoc[] exceptions();
-
- /**
- * Get included Error classes in this package.
- *
- * @return included Errors in this package.
- */
- ClassDoc[] errors();
-
- /**
- * Get included enum types in this package.
- *
- * @return included enum types in this package.
- * @since 1.5
- */
- ClassDoc[] enums();
-
- /**
- * Get included interfaces in this package, omitting annotation types.
- *
- * @return included interfaces in this package.
- */
- ClassDoc[] interfaces();
-
- /**
- * Get included annotation types in this package.
- *
- * @return included annotation types in this package.
- * @since 1.5
- */
- AnnotationTypeDoc[] annotationTypes();
-
- /**
- * Get the annotations of this package.
- * Return an empty array if there are none.
- *
- * @return the annotations of this package.
- * @since 1.5
- */
- AnnotationDesc[] annotations();
-
- /**
- * Lookup a class or interface within this package.
- *
- * @param className A String containing the name of the class to look up.
- * @return ClassDoc of found class or interface,
- * or null if not found.
- */
- ClassDoc findClass(String className);
-}
--- a/src/jdk.javadoc/share/classes/com/sun/javadoc/ParamTag.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.javadoc;
-
-/**
- * Represents an @param documentation tag.
- * Stores the name and comment parts of the parameter tag.
- * An @param tag may represent either a method or constructor parameter,
- * or a type parameter.
- *
- * @author Robert Field
- *
- * @deprecated
- * The declarations in this package have been superseded by those
- * in the package {@code jdk.javadoc.doclet}.
- * For more information, see the <i>Migration Guide</i> in the documentation for that package.
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public interface ParamTag extends Tag {
-
- /**
- * Return the name of the parameter or type parameter
- * associated with this {@code ParamTag}.
- * The angle brackets delimiting a type parameter are not part of
- * its name.
- *
- * @return the parameter name.
- */
- String parameterName();
-
- /**
- * Return the parameter comment
- * associated with this {@code ParamTag}.
- *
- * @return the parameter comment.
- */
- String parameterComment();
-
- /**
- * Return true if this {@code ParamTag} corresponds to a type
- * parameter. Return false if it corresponds to an ordinary parameter
- * of a method or constructor.
- *
- * @return true if this {@code ParamTag} corresponds to a type
- * parameter.
- * @since 1.5
- */
- boolean isTypeParameter();
-}
--- a/src/jdk.javadoc/share/classes/com/sun/javadoc/Parameter.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,87 +0,0 @@
-/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.javadoc;
-
-/**
- * Parameter information.
- * This includes a parameter type and parameter name.
- *
- * @author Robert Field
- *
- * @deprecated
- * The declarations in this package have been superseded by those
- * in the package {@code jdk.javadoc.doclet}.
- * For more information, see the <i>Migration Guide</i> in the documentation for that package.
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public interface Parameter {
-
- /**
- * Get the type of this parameter.
- *
- * @return the type of this parameter.
- */
- Type type();
-
- /**
- * Get local name of this parameter.
- * For example if parameter is the short 'index', returns "index".
- *
- * @return the name of this parameter as a string.
- */
- String name();
-
- /**
- * Get type name of this parameter.
- * For example if parameter is the short 'index', returns "short".
- * <p>
- * This method returns a complete string
- * representation of the type, including the dimensions of arrays and
- * the type arguments of parameterized types. Names are qualified.
- *
- * @return a complete string representation of the type.
- */
- String typeName();
-
- /**
- * Returns a string representation of the parameter.
- * <p>
- * For example if parameter is the short 'index', returns "short index".
- *
- * @return type and parameter name of this parameter.
- */
- String toString();
-
- /**
- * Get the annotations of this parameter.
- * Return an empty array if there are none.
- *
- * @return the annotations of this parameter.
- * @since 1.5
- */
- AnnotationDesc[] annotations();
-}
--- a/src/jdk.javadoc/share/classes/com/sun/javadoc/ParameterizedType.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,115 +0,0 @@
-/*
- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.javadoc;
-
-
-/**
- * Represents an invocation of a generic class or interface. For example,
- * given the generic interface {@code List<E>}, possible invocations
- * include:
- * <pre>
- * {@code List<String>}
- * {@code List<T extends Number>}
- * {@code List<?>}
- * </pre>
- * A generic inner class {@code Outer<T>.Inner<S>} might be invoked as:
- * <pre>
- * {@code Outer<Number>.Inner<String>}
- * </pre>
- *
- * @author Scott Seligman
- * @since 1.5
- *
- * @deprecated
- * The declarations in this package have been superseded by those
- * in the package {@code jdk.javadoc.doclet}.
- * For more information, see the <i>Migration Guide</i> in the documentation for that package.
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public interface ParameterizedType extends Type {
-
- /**
- * Return the generic class or interface that declared this type.
- *
- * @return the generic class or interface that declared this type.
- */
- ClassDoc asClassDoc();
-
- /**
- * Return the actual type arguments of this type.
- * For a generic type that is nested within some other generic type
- * (such as {@code Outer<T>.Inner<S>}),
- * only the type arguments of the innermost type are included.
- *
- * @return the actual type arguments of this type.
- */
- Type[] typeArguments();
-
- /**
- * Return the class type that is a direct supertype of this one.
- * This is the superclass of this type's declaring class,
- * with type arguments substituted in.
- * Return null if this is an interface type.
- *
- * <p> For example, if this parameterized type is
- * {@code java.util.ArrayList<String>}, the result will be
- * {@code java.util.AbstractList<String>}.
- *
- * @return the class type that is a direct supertype of this one.
- */
- Type superclassType();
-
- /**
- * Return the interface types directly implemented by or extended by this
- * parameterized type.
- * These are the interfaces directly implemented or extended
- * by this type's declaring class or interface,
- * with type arguments substituted in.
- * Return an empty array if there are no interfaces.
- *
- * <p> For example, the interface extended by
- * {@code java.util.Set<String>} is {@code java.util.Collection<String>}.
- *
- * @return the interface types directly implemented by or extended by this
- * parameterized type.
- */
- Type[] interfaceTypes();
-
- /**
- * Return the type that contains this type as a member.
- * Return null is this is a top-level type.
- *
- * <p> For example, the containing type of
- * {@code AnInterface.Nested<Number>} is the {@code ClassDoc}
- * representing {@code AnInterface}, and the containing type of
- * {@code Outer<String>.Inner<Number>} is the
- * {@code ParameterizedType} representing {@code Outer<String>}.
- *
- * @return the type that contains this type as a member.
- */
- Type containingType();
-}
--- a/src/jdk.javadoc/share/classes/com/sun/javadoc/ProgramElementDoc.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,148 +0,0 @@
-/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.javadoc;
-
-/**
- * Represents a java program element: class, interface, field,
- * constructor, or method.
- * This is an abstract class dealing with information common to
- * these elements.
- *
- * @see MemberDoc
- * @see ClassDoc
- *
- * @author Robert Field
- *
- * @deprecated
- * The declarations in this package have been superseded by those
- * in the package {@code jdk.javadoc.doclet}.
- * For more information, see the <i>Migration Guide</i> in the documentation for that package.
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public interface ProgramElementDoc extends Doc {
-
- /**
- * Get the containing class or interface of this program element.
- *
- * @return a ClassDoc for this element's containing class or interface.
- * If this is a top-level class or interface, return null.
- */
- ClassDoc containingClass();
-
- /**
- * Get the package that this program element is contained in.
- *
- * @return a PackageDoc for this element containing package.
- * If in the unnamed package, this PackageDoc will have the
- * name "".
- */
- PackageDoc containingPackage();
-
- /**
- * Get the fully qualified name of this program element.
- * For example, for the class {@code java.util.Hashtable},
- * return "java.util.Hashtable".
- * <p>
- * For the method {@code bar()} in class {@code Foo}
- * in the unnamed package, return "Foo.bar".
- *
- * @return the qualified name of the program element as a String.
- */
- String qualifiedName();
-
- /**
- * Get the modifier specifier integer.
- *
- * @see java.lang.reflect.Modifier
- *
- * @return Get the modifier specifier integer.
- */
- int modifierSpecifier();
-
- /**
- * Get modifiers string.
- * For example, for:
- * <pre>
- * public abstract int foo() { ... }
- * </pre>
- * return "public abstract".
- * Annotations are not included.
- *
- * @return "public abstract".
- */
- String modifiers();
-
- /**
- * Get the annotations of this program element.
- * Return an empty array if there are none.
- *
- * @return the annotations of this program element.
- * @since 1.5
- */
- AnnotationDesc[] annotations();
-
- /**
- * Return true if this program element is public.
- *
- * @return true if this program element is public.
- */
- boolean isPublic();
-
- /**
- * Return true if this program element is protected.
- *
- * @return true if this program element is protected.
- */
- boolean isProtected();
-
- /**
- * Return true if this program element is private.
- *
- * @return true if this program element is private.
- */
- boolean isPrivate();
-
- /**
- * Return true if this program element is package private.
- *
- * @return true if this program element is package private.
- */
- boolean isPackagePrivate();
- /**
- * Return true if this program element is static.
- *
- * @return true if this program element is static.
- */
- boolean isStatic();
-
- /**
- * Return true if this program element is final.
- *
- * @return true if this program element is final.
- */
- boolean isFinal();
-}
--- a/src/jdk.javadoc/share/classes/com/sun/javadoc/RootDoc.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,116 +0,0 @@
-/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.javadoc;
-
-/**
- * Represents the root of the program structure information
- * for one run of javadoc. From this root all other program
- * structure information can be extracted.
- * Also represents the command line information -- the
- * packages, classes and options specified by the user.
- *
- * @since 1.2
- * @author Robert Field
- *
- * @deprecated
- * The declarations in this package have been superseded by those
- * in the package {@code jdk.javadoc.doclet}.
- * For more information, see the <i>Migration Guide</i> in the documentation for that package.
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public interface RootDoc extends Doc, DocErrorReporter {
-
- /**
- * Command line options.
- * <p>
- * For example, given:
- * <pre>
- * javadoc -foo this that -bar other ...</pre>
- *
- * this method will return:
- * <pre>
- * options()[0][0] = "-foo"
- * options()[0][1] = "this"
- * options()[0][2] = "that"
- * options()[1][0] = "-bar"
- * options()[1][1] = "other"</pre>
- *
- * @return an array of arrays of String.
- */
- String[][] options();
-
- /**
- * Return the packages
- * <a href="package-summary.html#included">specified</a>
- * on the command line.
- * If {@code -subpackages} and {@code -exclude} options
- * are used, return all the non-excluded packages.
- *
- * @return packages specified on the command line.
- */
- PackageDoc[] specifiedPackages();
-
- /**
- * Return the classes and interfaces
- * <a href="package-summary.html#included">specified</a>
- * as source file names on the command line.
- *
- * @return classes and interfaces specified on the command line.
- */
- ClassDoc[] specifiedClasses();
-
- /**
- * Return the
- * <a href="package-summary.html#included">included</a>
- classes and interfaces in all packages.
- *
- * @return included classes and interfaces in all packages.
- */
- ClassDoc[] classes();
-
- /**
- * Return a PackageDoc for the specified package name.
- *
- * @param name package name
- *
- * @return a PackageDoc holding the specified package, null if
- * this package is not referenced.
- */
- PackageDoc packageNamed(String name);
-
- /**
- * Return a ClassDoc for the specified class or interface name.
- *
- * @param qualifiedName
- * <a href="package-summary.html#qualified">qualified</a>
- * class or package name
- *
- * @return a ClassDoc holding the specified class, null if
- * this class is not referenced.
- */
- ClassDoc classNamed(String qualifiedName);
-}
--- a/src/jdk.javadoc/share/classes/com/sun/javadoc/SeeTag.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,145 +0,0 @@
-/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.javadoc;
-
-/**
- * Represents a user-defined cross-reference to related documentation.
- * The tag can reference a package, class or member, or can hold
- * plain text. (The plain text might be a reference
- * to something not online, such as a printed book, or be a hard-coded
- * HTML link.) The reference can either be inline with the comment,
- * using {@code {@link}}, or a separate block comment,
- * using {@code @see}.
- * Method {@code name()} returns "@link" (no curly braces) or
- * "@see", depending on the tag.
- * Method {@code kind()} returns "@see" for both tags.
- *
- * @author Kaiyang Liu (original)
- * @author Robert Field (rewrite)
- * @author Atul M Dambalkar
- *
- * @deprecated
- * The declarations in this package have been superseded by those
- * in the package {@code jdk.javadoc.doclet}.
- * For more information, see the <i>Migration Guide</i> in the documentation for that package.
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public interface SeeTag extends Tag {
-
- /**
- * Get the label of the {@code @see} tag.
- * Return null if no label is present.
- * For example, for:
- * <p>
- * {@code @see String#trim() the trim method}
- * </p>
- * return "the trim method".
- *
- * @return "the trim method".
- */
- String label();
-
- /**
- * Get the package doc when {@code @see} references only a package.
- * Return null if the package cannot be found, or if
- * {@code @see} references any other element (class,
- * interface, field, constructor, method) or non-element.
- * For example, for:
- * <p>
- * {@code @see java.lang}
- * </p>
- * return the {@code PackageDoc} for {@code java.lang}.
- *
- * @return the {@code PackageDoc} for {@code java.lang}.
- */
- public PackageDoc referencedPackage();
-
- /**
- * Get the class or interface name of the {@code @see} reference.
- * The name is fully qualified if the name specified in the
- * original {@code @see} tag was fully qualified, or if the class
- * or interface can be found; otherwise it is unqualified.
- * If {@code @see} references only a package name, then return
- * the package name instead.
- * For example, for:
- * <p>
- * {@code @see String#valueOf(java.lang.Object)}
- * </p>
- * return "java.lang.String".
- * For "{@code @see java.lang}", return "java.lang".
- * Return null if {@code @see} references a non-element, such as
- * {@code @see <a href="java.sun.com">}.
- *
- * @return null if {@code @see} references a non-element, such as
- * {@code @see <a href="java.sun.com">}.
- */
- String referencedClassName();
-
- /**
- * Get the class doc referenced by the class name part of @see.
- * Return null if the class cannot be found.
- * For example, for:
- * <p>
- * {@code @see String#valueOf(java.lang.Object)}
- * </p>
- * return the {@code ClassDoc} for {@code java.lang.String}.
- *
- * @return the {@code ClassDoc} for {@code java.lang.String}.
- */
- ClassDoc referencedClass();
-
- /**
- * Get the field, constructor or method substring of the {@code @see}
- * reference. Return null if the reference is to any other
- * element or to any non-element.
- * References to member classes (nested classes) return null.
- * For example, for:
- * <p>
- * {@code @see String#startsWith(String)}
- * </p>
- * return "startsWith(String)".
- *
- * @return "startsWith(String)".
- */
- String referencedMemberName();
-
- /**
- * Get the member doc for the field, constructor or method
- * referenced by {@code @see}. Return null if the member cannot
- * be found or if the reference is to any other element or to any
- * non-element.
- * References to member classes (nested classes) return null.
- * For example, for:
- * <p>
- * {@code @see String#startsWith(java.lang.String)}
- * </p>
- * return the {@code MethodDoc} for {@code startsWith}.
- *
- * @return the {@code MethodDoc} for {@code startsWith}.
- */
- MemberDoc referencedMember();
-}
--- a/src/jdk.javadoc/share/classes/com/sun/javadoc/SerialFieldTag.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.javadoc;
-
-/**
- * Documents a Serializable field defined by an ObjectStreamField.
- * <pre>
- * The class parses and stores the three serialField tag parameters:
- *
- * - field name
- * - field type name
- * (fully-qualified or visible from the current import context)
- * - description of the valid values for the field
-
- * </pre>
- * This tag is only allowed in the javadoc for the special member
- * serialPersistentFields.
- *
- * @author Joe Fialli
- *
- * @see java.io.ObjectStreamField
- *
- * @deprecated
- * The declarations in this package have been superseded by those
- * in the package {@code jdk.javadoc.doclet}.
- * For more information, see the <i>Migration Guide</i> in the documentation for that package.
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public interface SerialFieldTag extends Tag, Comparable<Object> {
-
- /**
- * Return the serializable field name.
- *
- * @return the serializable field name.
- */
- public String fieldName();
-
- /**
- * Return the field type string.
- *
- * @return the field type string.
- */
- public String fieldType();
-
- /**
- * Return the ClassDoc for field type.
- *
- * @return null if no ClassDoc for field type is visible from
- * containingClass context.
- */
- public ClassDoc fieldTypeDoc();
-
- /**
- * Return the field comment. If there is no serialField comment, return
- * javadoc comment of corresponding FieldDoc.
- *
- * @return the field comment. If there is no serialField comment, return
- * javadoc comment of corresponding FieldDoc.
- */
- public String description();
-
- /**
- * Compares this Object with the specified Object for order. Returns a
- * negative integer, zero, or a positive integer as this Object is less
- * than, equal to, or greater than the given Object.
- * <p>
- * Included to make SerialFieldTag items java.lang.Comparable.
- *
- * @param obj the {@code Object} to be compared.
- * @return a negative integer, zero, or a positive integer as this Object
- * is less than, equal to, or greater than the given Object.
- * @exception ClassCastException the specified Object's type prevents it
- * from being compared to this Object.
- * @since 1.2
- */
- public int compareTo(Object obj);
-}
--- a/src/jdk.javadoc/share/classes/com/sun/javadoc/SourcePosition.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.javadoc;
-
-import java.io.File;
-
-/**
- * This interface describes a source position: filename, line number,
- * and column number.
- *
- * @since 1.4
- * @author Neal M Gafter
- *
- * @deprecated
- * The declarations in this package have been superseded by those
- * in the package {@code jdk.javadoc.doclet}.
- * For more information, see the <i>Migration Guide</i> in the documentation for that package.
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public interface SourcePosition {
- /** The source file. Returns null if no file information is
- * available.
- *
- * @return the source file as a File.
- */
- File file();
-
- /** The line in the source file. The first line is numbered 1;
- * 0 means no line number information is available.
- *
- * @return the line number in the source file as an integer.
- */
- int line();
-
- /** The column in the source file. The first column is
- * numbered 1; 0 means no column information is available.
- * Columns count characters in the input stream; a tab
- * advances the column number to the next 8-column tab stop.
- *
- * @return the column on the source line as an integer.
- */
- int column();
-
- /** Convert the source position to the form "Filename:line". */
- String toString();
-}
--- a/src/jdk.javadoc/share/classes/com/sun/javadoc/Tag.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,177 +0,0 @@
-/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.javadoc;
-
-import java.text.BreakIterator;
-import java.util.Locale;
-
-/**
- * Represents a simple documentation tag, such as @since, @author, @version.
- * Given a tag (e.g. "@since 1.2"), holds tag name (e.g. "@since")
- * and tag text (e.g. "1.2"). Tags with structure or which require
- * special processing are handled by subclasses such as ParamTag
- * (for @param), SeeTag (for @see and {@link}), and ThrowsTag
- * (for @throws).
- *
- * @author Robert Field
- * @author Atul M Dambalkar
- * @see SeeTag
- * @see ParamTag
- * @see ThrowsTag
- * @see SerialFieldTag
- * @see Doc#tags()
- *
- * @deprecated
- * The declarations in this package have been superseded by those
- * in the package {@code jdk.javadoc.doclet}.
- * For more information, see the <i>Migration Guide</i> in the documentation for that package.
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public interface Tag {
-
- /**
- * Return the name of this tag. The name is the string
- * starting with "@" that is used in a doc comment, such as
- * {@code @return}. For inline tags, such as
- * {@code {@link}}, the curly brackets
- * are not part of the name, so in this example the name
- * would be simply {@code @link}.
- *
- * @return the name of this tag
- */
- String name();
-
- /**
- * Return the containing {@link Doc} of this Tag element.
- *
- * @return the containing {@link Doc} of this Tag element
- */
- Doc holder();
-
- /**
- * Return the kind of this tag.
- * For most tags,
- * {@code kind() == name()};
- * the following table lists those cases where there is more
- * than one tag of a given kind:
- *
- * <table class="striped">
- * <caption>Related Tags</caption>
- * <thead>
- * <tr><th scope="col">{@code name() } <th scope="col">{@code kind() }
- * </thead>
- * <tbody style="text-align:left">
- * <tr><th scope="row">{@code @exception } <td>{@code @throws }
- * <tr><th scope="row">{@code @link } <td>{@code @see }
- * <tr><th scope="row">{@code @linkplain } <td>{@code @see }
- * <tr><th scope="row">{@code @see } <td>{@code @see }
- * <tr><th scope="row">{@code @serial } <td>{@code @serial }
- * <tr><th scope="row">{@code @serialData } <td>{@code @serial }
- * <tr><th scope="row">{@code @throws } <td>{@code @throws }
- * </tbody>
- * </table>
- *
- * @return the kind of this tag.
- */
- String kind();
-
- /**
- * Return the text of this tag, that is, the portion beyond tag name.
- *
- * @return the text of this tag
- */
- String text();
-
- /**
- * Convert this object to a string.
- */
- String toString();
-
- /**
- * For a documentation comment with embedded {@code {@link}}
- * tags, return an array of {@code Tag} objects. The entire
- * doc comment is broken down into strings separated by
- * {@code {@link}} tags, where each successive element
- * of the array represents either a string or
- * {@code {@link}} tag, in order, from start to end.
- * Each string is represented by a {@code Tag} object of
- * name "Text", where {@link #text()} returns the string. Each
- * {@code {@link}} tag is represented by a
- * {@link SeeTag} of name "@link" and kind "@see".
- * For example, given the following comment
- * tag:
- * <p>
- * {@code This is a {@link Doc commentlabel} example.}
- * <p>
- * return an array of Tag objects:
- * <ul>
- * <li> tags[0] is a {@link Tag} with name "Text" and text consisting
- * of "This is a "
- * <li> tags[1] is a {@link SeeTag} with name "@link", referenced
- * class {@code Doc} and label "commentlabel"
- * <li> tags[2] is a {@link Tag} with name "Text" and text consisting
- * of " example."
- * </ul>
- *
- * @return Tag[] array of tags
- * @see ParamTag
- * @see ThrowsTag
- */
- Tag[] inlineTags();
-
- /**
- * Return the first sentence of the comment as an array of tags.
- * Includes inline tags
- * (i.e. {@link <i>reference</i>} tags) but not
- * block tags.
- * Each section of plain text is represented as a {@link Tag}
- * of kind "Text".
- * Inline tags are represented as a {@link SeeTag} of kind "@link".
- * If the locale is English language, the first sentence is
- * determined by the rules described in the Java Language
- * Specification (first version): "This sentence ends
- * at the first period that is followed by a blank, tab, or
- * line terminator or at the first tagline.", in
- * addition a line will be terminated by paragraph and
- * section terminating HTML tags: <p> </p> <h1>
- * <h2> <h3> <h4> <h5> <h6>
- * <hr> <pre> or </pre>.
- * If the locale is not English, the sentence end will be
- * determined by
- * {@link BreakIterator#getSentenceInstance(Locale)}.
- *
- * @return an array of {@link Tag} objects representing the
- * first sentence of the comment
- */
- Tag[] firstSentenceTags();
-
- /**
- * Return the source position of this tag.
- * @return the source position of this tag.
- */
- public SourcePosition position();
-}
--- a/src/jdk.javadoc/share/classes/com/sun/javadoc/ThrowsTag.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.javadoc;
-
-/**
- * Represents a @throws or @exception documentation tag.
- * Parses and holds the exception name and exception comment.
- * Note: @exception is a backwards compatible synonymy for @throws.
- *
- * @author Robert Field
- * @author Atul M Dambalkar
- * @see ExecutableMemberDoc#throwsTags()
- *
- * @deprecated
- * The declarations in this package have been superseded by those
- * in the package {@code jdk.javadoc.doclet}.
- * For more information, see the <i>Migration Guide</i> in the documentation for that package.
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public interface ThrowsTag extends Tag {
-
- /**
- * Return the name of the exception
- * associated with this {@code ThrowsTag}.
- *
- * @return name of the exception.
- */
- String exceptionName();
-
- /**
- * Return the exception comment
- * associated with this {@code ThrowsTag}.
- *
- * @return exception comment.
- */
- String exceptionComment();
-
- /**
- * Return a {@code ClassDoc} that represents the exception.
- * If the type of the exception is a type variable, return the
- * {@code ClassDoc} of its erasure.
- *
- * <p> <i>This method cannot accommodate certain generic type
- * constructs. The {@code exceptionType} method
- * should be used instead.</i>
- *
- * @return {@code ClassDoc} that represents the exception.
- * @see #exceptionType
- */
- ClassDoc exception();
-
- /**
- * Return the type of the exception
- * associated with this {@code ThrowsTag}.
- * This may be a {@code ClassDoc} or a {@code TypeVariable}.
- *
- * @return the type of the exception.
- * @since 1.5
- */
- Type exceptionType();
-}
--- a/src/jdk.javadoc/share/classes/com/sun/javadoc/Type.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,183 +0,0 @@
-/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.javadoc;
-
-/**
- * Represents a type. A type can be a class or interface, an
- * invocation (like {@code List<String>}) of a generic class or interface,
- * a type variable, a wildcard type ("{@code ?}"),
- * or a primitive data type (like {@code char}).
- *
- * @since 1.2
- * @author Kaiyang Liu (original)
- * @author Robert Field (rewrite)
- * @author Scott Seligman (generics)
- *
- * @deprecated
- * The declarations in this package have been superseded by those
- * in the package {@code jdk.javadoc.doclet}.
- * For more information, see the <i>Migration Guide</i> in the documentation for that package.
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public interface Type {
-
- /**
- * Return unqualified name of type excluding any dimension information.
- * <p>
- * For example, a two dimensional array of String returns
- * "{@code String}".
- * @return unqualified name of type excluding any dimension information.
- */
- String typeName();
-
- /**
- * Return qualified name of type excluding any dimension information.
- *<p>
- * For example, a two dimensional array of String
- * returns "{@code java.lang.String}".
- * @return qualified name of this type excluding any dimension information.
- */
- String qualifiedTypeName();
-
- /**
- * Return the simple name of this type excluding any dimension information.
- * This is the unqualified name of the type, except that for nested types
- * only the identifier of the innermost type is included.
- * <p>
- * For example, the class {@code Outer.Inner} returns
- * "{@code Inner}".
- *
- * @since 1.5
- * @return the simple name of this type excluding any dimension information.
- */
- String simpleTypeName();
-
- /**
- * Return the type's dimension information, as a string.
- * <p>
- * For example, a two dimensional array of String returns
- * "{@code [][]}".
- * @return the type's dimension information as a string.
- */
- String dimension();
-
- /**
- * Return a string representation of the type.
- * This includes any dimension information and type arguments.
- * <p>
- * For example, a two dimensional array of String may return
- * "{@code java.lang.String[][]}",
- * and the parameterized type {@code List<Integer>} may return
- * "{@code java.util.List<java.lang.Integer>}".
- *
- * @return a string representation of the type.
- */
- String toString();
-
- /**
- * Return true if this type represents a primitive type.
- *
- * @return true if this type represents a primitive type.
- * @since 1.5
- */
- boolean isPrimitive();
-
- /**
- * Return this type as a {@code ClassDoc} if it represents a class
- * or interface. Array dimensions are ignored.
- * If this type is a {@code ParameterizedType},
- * {@code TypeVariable}, or {@code WildcardType}, return
- * the {@code ClassDoc} of the type's erasure. If this is an
- * {@code AnnotationTypeDoc}, return this as a {@code ClassDoc}
- * (but see {@link #asAnnotationTypeDoc()}).
- * If this is a primitive type, return null.
- *
- * @return the {@code ClassDoc} of this type,
- * or null if it is a primitive type.
- */
- ClassDoc asClassDoc();
-
- /**
- * Return this type as a {@code ParameterizedType} if it represents
- * an invocation of a generic class or interface. Array dimensions
- * are ignored.
- *
- * @return a {@code ParameterizedType} if the type is an
- * invocation of a generic type, or null if it is not.
- * @since 1.5
- */
- ParameterizedType asParameterizedType();
-
- /**
- * Return this type as a {@code TypeVariable} if it represents
- * a type variable. Array dimensions are ignored.
- *
- * @return a {@code TypeVariable} if the type is a type variable,
- * or null if it is not.
- * @since 1.5
- */
- TypeVariable asTypeVariable();
-
- /**
- * Return this type as a {@code WildcardType} if it represents
- * a wildcard type.
- *
- * @return a {@code WildcardType} if the type is a wildcard type,
- * or null if it is not.
- * @since 1.5
- */
- WildcardType asWildcardType();
-
- /**
- * Returns this type as a {@code AnnotatedType} if it represents
- * an annotated type.
- *
- * @return a {@code AnnotatedType} if the type if an annotated type,
- * or null if it is not
- * @since 1.8
- */
- AnnotatedType asAnnotatedType();
-
- /**
- * Return this type as an {@code AnnotationTypeDoc} if it represents
- * an annotation type. Array dimensions are ignored.
- *
- * @return an {@code AnnotationTypeDoc} if the type is an annotation
- * type, or null if it is not.
- * @since 1.5
- */
- AnnotationTypeDoc asAnnotationTypeDoc();
-
- /**
- * If this type is an array type, return the element type of the
- * array. Otherwise, return null.
- *
- * @return a {@code Type} representing the element type or null.
- * @since 1.8
- */
- Type getElementType();
-}
--- a/src/jdk.javadoc/share/classes/com/sun/javadoc/TypeVariable.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
-/*
- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.javadoc;
-
-
-/**
- * Represents a type variable.
- * For example, the generic interface {@code List<E>} has a single
- * type variable {@code E}.
- * A type variable may have explicit bounds, as in
- * {@code C<R extends Remote>}.
- *
- * @author Scott Seligman
- * @since 1.5
- *
- * @deprecated
- * The declarations in this package have been superseded by those
- * in the package {@code jdk.javadoc.doclet}.
- * For more information, see the <i>Migration Guide</i> in the documentation for that package.
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public interface TypeVariable extends Type {
-
- /**
- * Return the bounds of this type variable.
- * These are the types given by the <i>extends</i> clause.
- * Return an empty array if there are no explicit bounds.
- *
- * @return the bounds of this type variable.
- */
- Type[] bounds();
-
- /**
- * Return the class, interface, method, or constructor within
- * which this type variable is declared.
- *
- * @return the class, interface, method, or constructor within
- * which this type variable is declared.
- */
- ProgramElementDoc owner();
-
- /**
- * Get the annotations of this program element.
- * Return an empty array if there are none.
- *
- * @return the annotations of this program element or
- * an empty array if there are none.
- */
- public AnnotationDesc[] annotations();
-
-}
--- a/src/jdk.javadoc/share/classes/com/sun/javadoc/WildcardType.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-/*
- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.javadoc;
-
-
-/**
- * Represents a wildcard type argument.
- * Examples include: <pre>
- * {@code <?>}
- * {@code <? extends E>}
- * {@code <? super T>}
- * </pre>
- * A wildcard type can have explicit <i>extends</i> bounds
- * or explicit <i>super</i> bounds or neither, but not both.
- *
- * @author Scott Seligman
- * @since 1.5
- *
- * @deprecated
- * The declarations in this package have been superseded by those
- * in the package {@code jdk.javadoc.doclet}.
- * For more information, see the <i>Migration Guide</i> in the documentation for that package.
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public interface WildcardType extends Type {
-
- /**
- * Return the upper bounds of this wildcard type argument
- * as given by the <i>extends</i> clause.
- * Return an empty array if no such bounds are explicitly given.
- *
- * @return the extends bounds of this wildcard type argument
- */
- Type[] extendsBounds();
-
- /**
- * Return the lower bounds of this wildcard type argument
- * as given by the <i>super</i> clause.
- * Return an empty array if no such bounds are explicitly given.
- *
- * @return the super bounds of this wildcard type argument
- */
- Type[] superBounds();
-}
--- a/src/jdk.javadoc/share/classes/com/sun/javadoc/package-info.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,153 +0,0 @@
-/*
- * Copyright (c) 1998, 2017, 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.
- */
-
-/**
-<p style="font-style: italic; font-size:larger">
-<b>Note:</b> The declarations in this package have been superseded by those
-in the package {@link jdk.javadoc.doclet}.
-For more information, see the <i>Migration Guide</i> in the documentation for that package.
-</p>
-
-The Doclet API (also called the Javadoc API) provides a mechanism
-for clients to inspect the source-level structure of programs and
-libraries, including javadoc comments embedded in the source.
-This is useful for documentation, program checking, automatic
-code generation and many other tools.
-<p>
-
-Doclets are invoked by javadoc and use this API to write out
-program information to files. For example, the standard doclet is called
-by default and writes out documentation to HTML files.
-<p>
-
-The invocation is defined by the abstract {@link com.sun.javadoc.Doclet} class
--- the entry point is the {@link com.sun.javadoc.Doclet#start(RootDoc) start} method:
-<pre>
- public static boolean <b>start</b>(RootDoc root)
-</pre>
-The {@link com.sun.javadoc.RootDoc} instance holds the root of the program structure
-information. From this root all other program structure
-information can be extracted.
-<p>
-
-<a id="terminology"></a>
-<h3>Terminology</h3>
-
-<a id="included"></a>
-When calling javadoc, you pass in package names and source file names --
-these are called the <em>specified</em> packages and classes.
-You also pass in Javadoc options; the <em>access control</em> Javadoc options
-({@code -public}, {@code -protected}, {@code -package},
-and {@code -private}) filter program elements, producing a
-result set, called the <em>included</em> set, or "documented" set.
-(The unfiltered set is also available through
-{@link com.sun.javadoc.PackageDoc#allClasses(boolean) allClasses(false)}.)
-<p>
-
-<a id="class"></a>
-Throughout this API, the term <em>class</em> is normally a
-shorthand for "class or interface", as in: {@link com.sun.javadoc.ClassDoc},
-{@link com.sun.javadoc.PackageDoc#allClasses() allClasses()}, and
-{@link com.sun.javadoc.PackageDoc#findClass(String) findClass(String)}.
-In only a couple of other places, it means "class, as opposed to interface",
-as in: {@link com.sun.javadoc.Doc#isClass()}.
-In the second sense, this API calls out four kinds of classes:
-{@linkplain com.sun.javadoc.Doc#isOrdinaryClass() ordinary classes},
-{@linkplain com.sun.javadoc.Doc#isEnum() enums},
-{@linkplain com.sun.javadoc.Doc#isError() errors} and
-{@linkplain com.sun.javadoc.Doc#isException() exceptions}.
-Throughout the API, the detailed description of each program element
-describes explicitly which meaning is being used.
-<p>
-
-<a id="qualified"></a>
-A <em>qualified</em> class or interface name is one that has its package
-name prepended to it, such as {@code java.lang.String}. A non-qualified
-name has no package name, such as {@code String}.
-<p>
-
-<a id="example"></a>
-<h3>Example</h3>
-
-The following is an example doclet that
-displays information in the {@code @param} tags of the processed
-classes:
-<pre>
-import com.sun.javadoc.*;
-
-public class ListParams extends <span style="color:#E00000" >Doclet</span> {
-
- public static boolean start(<span style="color:#E00000" >RootDoc</span> root) {
- <span style="color:#E00000" >ClassDoc</span>[] classes = root.<span style="color:#E00000" >classes</span>();
- for (int i = 0; i < classes.length; ++i) {
- <span style="color:#E00000" >ClassDoc</span> cd = classes[i];
- printMembers(cd.<span style="color:#E00000" >constructors</span>());
- printMembers(cd.<span style="color:#E00000" >methods</span>());
- }
- return true;
- }
-
- static void printMembers(<span style="color:#E00000" >ExecutableMemberDoc</span>[] mems) {
- for (int i = 0; i < mems.length; ++i) {
- <span style="color:#E00000" >ParamTag</span>[] params = mems[i].<span style="color:#E00000" >paramTags</span>();
- System.out.println(mems[i].<span style="color:#E00000" >qualifiedName</span>());
- for (int j = 0; j < params.length; ++j) {
- System.out.println(" " + params[j].<span style="color:#E00000" >parameterName</span>()
- + " - " + params[j].<span style="color:#E00000" >parameterComment</span>());
- }
- }
- }
-}
-</pre>
-Interfaces and methods from the Javadoc API are marked in
-<span style="color:#E00000" >red</span>.
-{@link com.sun.javadoc.Doclet Doclet} is an abstract class that specifies
-the invocation interface for doclets,
-{@link com.sun.javadoc.Doclet Doclet} holds class or interface information,
-{@link com.sun.javadoc.ExecutableMemberDoc} is a
-superinterface of {@link com.sun.javadoc.MethodDoc} and
-{@link com.sun.javadoc.ConstructorDoc},
-and {@link com.sun.javadoc.ParamTag} holds information
-from "{@code @param}" tags.
-<p>
-This doclet when invoked with a command line like:
-<pre>
- javadoc -doclet ListParams -sourcepath <source-location> java.util
-</pre>
-producing output like:
-<pre>
- ...
- java.util.ArrayList.add
- index - index at which the specified element is to be inserted.
- element - element to be inserted.
- java.util.ArrayList.remove
- index - the index of the element to removed.
- ...
-
-</pre>
-@see com.sun.javadoc.Doclet
-@see com.sun.javadoc.RootDoc
-*/
-package com.sun.javadoc;
--- a/src/jdk.javadoc/share/classes/com/sun/tools/doclets/standard/Standard.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.doclets.standard;
-
-import com.sun.javadoc.RootDoc;
-
-/**
- * This is not the doclet you are looking for.
- * @deprecated The doclet has been superseded by its replacement,
- * {@link jdk.javadoc.doclet.StandardDoclet}.
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-
-public class Standard {
-
- public static boolean start(RootDoc root) {
- root.printNotice("Notice: " + "This is not the Standard Doclet");
- return true;
- }
-
- public static int optionLength(String option) {
- return 0; // all options are unsupported
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/doclets/standard/package-info.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2003, 2017, 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.
- */
-
-/**
-<p style="font-style: italic; font-size:larger">
-<b>Note:</b> The declarations in this package have been replaced by those
-in the new package {@link jdk.javadoc.doclet}.
-</p>
-*/
-
-package com.sun.tools.doclets.standard;
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/Main.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,205 +0,0 @@
-/*
- * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc;
-
-import java.io.PrintWriter;
-
-import com.sun.tools.javadoc.main.Start;
-
-/**
- * Provides external entry points (tool and programmatic)
- * for the javadoc program.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @deprecated
- * This class is now deprecated and may be removed in a future release.
- * See
- * {@code javax.tools.ToolProvider::getSystemDocumentationTool}
- * and
- * {@code javax.tools.DocumentationTool}
- * for replacement functionality.
- *
- * @since 1.4
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public class Main {
-
- /**
- * Constructor should never be called.
- */
- private Main() {
- }
-
- /**
- * Command line interface.
- * @param args The command line parameters.
- */
- public static void main(String... args) {
- System.exit(execute(args));
- }
-
- /**
- * Programmatic interface.
- * @param args The command line parameters.
- * @return The return code.
- */
- public static int execute(String... args) {
- Start jdoc = new Start();
- return jdoc.begin(args);
- }
-
- /**
- * Programmatic interface.
- * @param args The command line parameters.
- * @param docletParentClassLoader The parent class loader used when
- * creating the doclet classloader. If null, the class loader used
- * to instantiate doclets will be created without specifying a parent
- * class loader.
- * @return The return code.
- * @since 1.7
- */
- public static int execute(ClassLoader docletParentClassLoader, String... args) {
- Start jdoc = new Start(docletParentClassLoader);
- return jdoc.begin(args);
- }
-
- /**
- * Programmatic interface.
- * @param programName Name of the program (for error messages).
- * @param args The command line parameters.
- * @return The return code.
- */
- public static int execute(String programName, String... args) {
- Start jdoc = new Start(programName);
- return jdoc.begin(args);
- }
-
- /**
- * Programmatic interface.
- * @param programName Name of the program (for error messages).
- * @param args The command line parameters.
- * @param docletParentClassLoader The parent class loader used when
- * creating the doclet classloader. If null, the class loader used
- * to instantiate doclets will be created without specifying a parent
- * class loader.
- * @return The return code.
- * @since 1.7
- */
- public static int execute(String programName, ClassLoader docletParentClassLoader, String... args) {
- Start jdoc = new Start(programName, docletParentClassLoader);
- return jdoc.begin(args);
- }
-
- /**
- * Programmatic interface.
- * @param programName Name of the program (for error messages).
- * @param defaultDocletClassName Fully qualified class name.
- * @param args The command line parameters.
- * @return The return code.
- */
- public static int execute(String programName,
- String defaultDocletClassName,
- String... args) {
- Start jdoc = new Start(programName, defaultDocletClassName);
- return jdoc.begin(args);
- }
-
- /**
- * Programmatic interface.
- * @param programName Name of the program (for error messages).
- * @param defaultDocletClassName Fully qualified class name.
- * @param docletParentClassLoader The parent class loader used when
- * creating the doclet classloader. If null, the class loader used
- * to instantiate doclets will be created without specifying a parent
- * class loader.
- * @param args The command line parameters.
- * @return The return code.
- * @since 1.7
- */
- public static int execute(String programName,
- String defaultDocletClassName,
- ClassLoader docletParentClassLoader,
- String... args) {
- Start jdoc = new Start(programName, defaultDocletClassName, docletParentClassLoader);
- return jdoc.begin(args);
- }
-
- /**
- * Programmatic interface.
- * @param programName Name of the program (for error messages).
- * @param errWriter PrintWriter to receive error messages.
- * @param warnWriter PrintWriter to receive error messages.
- * @param noticeWriter PrintWriter to receive error messages.
- * @param defaultDocletClassName Fully qualified class name.
- * @param args The command line parameters.
- * @return The return code.
- */
- public static int execute(String programName,
- PrintWriter errWriter,
- PrintWriter warnWriter,
- PrintWriter noticeWriter,
- String defaultDocletClassName,
- String... args) {
- Start jdoc = new Start(programName,
- errWriter, warnWriter, noticeWriter,
- defaultDocletClassName);
- return jdoc.begin(args);
- }
-
- /**
- * Programmatic interface.
- * @param programName Name of the program (for error messages).
- * @param errWriter PrintWriter to receive error messages.
- * @param warnWriter PrintWriter to receive error messages.
- * @param noticeWriter PrintWriter to receive error messages.
- * @param defaultDocletClassName Fully qualified class name.
- * @param docletParentClassLoader The parent class loader used when
- * creating the doclet classloader. If null, the class loader used
- * to instantiate doclets will be created without specifying a parent
- * class loader.
- * @param args The command line parameters.
- * @return The return code.
- * @since 1.7
- */
- public static int execute(String programName,
- PrintWriter errWriter,
- PrintWriter warnWriter,
- PrintWriter noticeWriter,
- String defaultDocletClassName,
- ClassLoader docletParentClassLoader,
- String... args) {
- Start jdoc = new Start(programName,
- errWriter, warnWriter, noticeWriter,
- defaultDocletClassName,
- docletParentClassLoader);
- return jdoc.begin(args);
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/AbstractTypeImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,117 +0,0 @@
-/*
- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import com.sun.javadoc.*;
-
-import com.sun.tools.javac.code.Type;
-
-
-/**
- * Abstract implementation of <code>Type</code>, with useful
- * defaults for the methods in <code>Type</code> (and a couple from
- * <code>ProgramElementDoc</code>).
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-abstract class AbstractTypeImpl implements com.sun.javadoc.Type {
-
- protected final DocEnv env;
- protected final Type type;
-
- protected AbstractTypeImpl(DocEnv env, Type type) {
- this.env = env;
- this.type = type;
- }
-
- public String typeName() {
- return type.tsym.name.toString();
- }
-
- public String qualifiedTypeName() {
- return type.tsym.getQualifiedName().toString();
- }
-
- public com.sun.javadoc.Type getElementType() {
- return null;
- }
-
- public String simpleTypeName() {
- return type.tsym.name.toString();
- }
-
- public String name() {
- return typeName();
- }
-
- public String qualifiedName() {
- return qualifiedTypeName();
- }
-
- public String toString() {
- return qualifiedTypeName();
- }
-
- public String dimension() {
- return "";
- }
-
- public boolean isPrimitive() {
- return false;
- }
-
- public ClassDoc asClassDoc() {
- return null;
- }
-
- public TypeVariable asTypeVariable() {
- return null;
- }
-
- public WildcardType asWildcardType() {
- return null;
- }
-
- public ParameterizedType asParameterizedType() {
- return null;
- }
-
- public AnnotationTypeDoc asAnnotationTypeDoc() {
- return null;
- }
-
- public AnnotatedType asAnnotatedType() {
- return null;
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/AnnotatedTypeImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,127 +0,0 @@
-/*
- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import com.sun.javadoc.*;
-import com.sun.tools.javac.code.Attribute;
-import com.sun.tools.javac.code.Attribute.TypeCompound;
-import com.sun.tools.javac.util.List;
-
-/**
- * Implementation of <code>AnnotatedType</code>, which
- * represents an annotated type.
- *
- * @author Mahmood Ali
- * @since 1.8
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public class AnnotatedTypeImpl
- extends AbstractTypeImpl implements AnnotatedType {
-
- AnnotatedTypeImpl(DocEnv env, com.sun.tools.javac.code.Type type) {
- super(env, type);
- }
-
- /**
- * Get the annotations of this program element.
- * Return an empty array if there are none.
- */
- @Override
- public AnnotationDesc[] annotations() {
- List<? extends TypeCompound> tas = type.getAnnotationMirrors();
- if (tas == null ||
- tas.isEmpty()) {
- return new AnnotationDesc[0];
- }
- AnnotationDesc res[] = new AnnotationDesc[tas.length()];
- int i = 0;
- for (Attribute.Compound a : tas) {
- res[i++] = new AnnotationDescImpl(env, a);
- }
- return res;
- }
-
- @Override
- public com.sun.javadoc.Type underlyingType() {
- return TypeMaker.getType(env, type, true, false);
- }
-
- @Override
- public AnnotatedType asAnnotatedType() {
- return this;
- }
-
- @Override
- public String toString() {
- return typeName();
- }
-
- @Override
- public String typeName() {
- return this.underlyingType().typeName();
- }
-
- @Override
- public String qualifiedTypeName() {
- return this.underlyingType().qualifiedTypeName();
- }
-
- @Override
- public String simpleTypeName() {
- return this.underlyingType().simpleTypeName();
- }
-
- @Override
- public String dimension() {
- return this.underlyingType().dimension();
- }
-
- @Override
- public boolean isPrimitive() {
- return this.underlyingType().isPrimitive();
- }
-
- @Override
- public ClassDoc asClassDoc() {
- return this.underlyingType().asClassDoc();
- }
-
- @Override
- public TypeVariable asTypeVariable() {
- return this.underlyingType().asTypeVariable();
- }
-
- @Override
- public WildcardType asWildcardType() {
- return this.underlyingType().asWildcardType();
- }
-
- @Override
- public ParameterizedType asParameterizedType() {
- return this.underlyingType().asParameterizedType();
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/AnnotationDescImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,179 +0,0 @@
-/*
- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import com.sun.javadoc.*;
-
-import com.sun.tools.javac.code.Attribute;
-import com.sun.tools.javac.code.Symbol.*;
-import com.sun.tools.javac.util.List;
-import com.sun.tools.javac.util.Pair;
-
-
-/**
- * Represents an annotation.
- * An annotation associates a value with each element of an annotation type.
- * Sure it ought to be called "Annotation", but that clashes with
- * java.lang.annotation.Annotation.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @author Scott Seligman
- * @since 1.5
- */
-
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public class AnnotationDescImpl implements AnnotationDesc {
-
- private final DocEnv env;
- private final Attribute.Compound annotation;
-
-
- AnnotationDescImpl(DocEnv env, Attribute.Compound annotation) {
- this.env = env;
- this.annotation = annotation;
- }
-
- /**
- * Returns the annotation type of this annotation.
- */
- public AnnotationTypeDoc annotationType() {
- ClassSymbol atsym = (ClassSymbol)annotation.type.tsym;
- if (annotation.type.isErroneous()) {
- env.warning(null, "javadoc.class_not_found", annotation.type.toString());
- return new AnnotationTypeDocImpl(env, atsym);
- } else {
- return (AnnotationTypeDoc)env.getClassDoc(atsym);
- }
- }
-
- /**
- * Returns this annotation's elements and their values.
- * Only those explicitly present in the annotation are
- * included, not those assuming their default values.
- * Returns an empty array if there are none.
- */
- public ElementValuePair[] elementValues() {
- List<Pair<MethodSymbol,Attribute>> vals = annotation.values;
- ElementValuePair res[] = new ElementValuePair[vals.length()];
- int i = 0;
- for (Pair<MethodSymbol,Attribute> val : vals) {
- res[i++] = new ElementValuePairImpl(env, val.fst, val.snd);
- }
- return res;
- }
-
- /**
- * Check for the synthesized bit on the annotation.
- *
- * @return true if the annotation is synthesized.
- */
- public boolean isSynthesized() {
- return annotation.isSynthesized();
- }
-
- /**
- * Returns a string representation of this annotation.
- * String is of one of the forms:
- * <pre>
- * {@code @com.example.foo(name1=val1, name2=val2)}
- * {@code @com.example.foo(val)}
- * {@code @com.example.foo}
- * </pre>
- * Omit parens for marker annotations, and omit "value=" when allowed.
- */
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder("@");
- sb.append(annotation.type.tsym);
-
- ElementValuePair vals[] = elementValues();
- if (vals.length > 0) { // omit parens for marker annotation
- sb.append('(');
- boolean first = true;
- for (ElementValuePair val : vals) {
- if (!first) {
- sb.append(", ");
- }
- first = false;
-
- String name = val.element().name();
- if (vals.length == 1 && name.equals("value")) {
- sb.append(val.value());
- } else {
- sb.append(val);
- }
- }
- sb.append(')');
- }
- return sb.toString();
- }
-
-
- /**
- * Represents an association between an annotation type element
- * and one of its values.
- */
- public static class ElementValuePairImpl implements ElementValuePair {
-
- private final DocEnv env;
- private final MethodSymbol meth;
- private final Attribute value;
-
- ElementValuePairImpl(DocEnv env, MethodSymbol meth, Attribute value) {
- this.env = env;
- this.meth = meth;
- this.value = value;
- }
-
- /**
- * Returns the annotation type element.
- */
- public AnnotationTypeElementDoc element() {
- return env.getAnnotationTypeElementDoc(meth);
- }
-
- /**
- * Returns the value associated with the annotation type element.
- */
- public AnnotationValue value() {
- return new AnnotationValueImpl(env, value);
- }
-
- /**
- * Returns a string representation of this pair
- * of the form "name=value".
- */
- @Override
- public String toString() {
- return meth.name + "=" + value();
- }
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/AnnotationTypeDocImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +0,0 @@
-/*
- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import com.sun.javadoc.*;
-
-import com.sun.source.util.TreePath;
-import com.sun.tools.javac.code.Symbol;
-import com.sun.tools.javac.code.Symbol.*;
-import com.sun.tools.javac.util.List;
-
-import static com.sun.tools.javac.code.Scope.LookupKind.NON_RECURSIVE;
-
-import static com.sun.tools.javac.code.Kinds.Kind.*;
-
-/**
- * Represents an annotation type.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @author Scott Seligman
- * @since 1.5
- */
-
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public class AnnotationTypeDocImpl
- extends ClassDocImpl implements AnnotationTypeDoc {
-
- public AnnotationTypeDocImpl(DocEnv env, ClassSymbol sym) {
- this(env, sym, null);
- }
-
- public AnnotationTypeDocImpl(DocEnv env, ClassSymbol sym, TreePath treePath) {
- super(env, sym, treePath);
- }
-
- /**
- * Returns true, as this is an annotation type.
- * (For legacy doclets, return false.)
- */
- public boolean isAnnotationType() {
- return !isInterface();
- }
-
- /**
- * Returns false. Though technically an interface, an annotation
- * type is not considered an interface for this purpose.
- * (For legacy doclets, returns true.)
- */
- public boolean isInterface() {
- return env.legacyDoclet;
- }
-
- /**
- * Returns an empty array, as all methods are annotation type elements.
- * (For legacy doclets, returns the elements.)
- * @see #elements()
- */
- public MethodDoc[] methods(boolean filter) {
- return env.legacyDoclet
- ? (MethodDoc[])elements()
- : new MethodDoc[0];
- }
-
- /**
- * Returns the elements of this annotation type.
- * Returns an empty array if there are none.
- * Elements are always public, so no need to filter them.
- */
- public AnnotationTypeElementDoc[] elements() {
- List<AnnotationTypeElementDoc> elements = List.nil();
- for (Symbol sym : tsym.members().getSymbols(NON_RECURSIVE)) {
- if (sym != null && sym.kind == MTH) {
- MethodSymbol s = (MethodSymbol)sym;
- elements = elements.prepend(env.getAnnotationTypeElementDoc(s));
- }
- }
- return
- elements.toArray(new AnnotationTypeElementDoc[elements.length()]);
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/AnnotationTypeElementDocImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-/*
- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import com.sun.javadoc.*;
-
-import com.sun.source.util.TreePath;
-import com.sun.tools.javac.code.Symbol.*;
-
-/**
- * Represents an element of an annotation type.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @author Scott Seligman
- * @since 1.5
- */
-
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public class AnnotationTypeElementDocImpl
- extends MethodDocImpl implements AnnotationTypeElementDoc {
-
- public AnnotationTypeElementDocImpl(DocEnv env, MethodSymbol sym) {
- super(env, sym);
- }
-
- public AnnotationTypeElementDocImpl(DocEnv env, MethodSymbol sym, TreePath treePath) {
- super(env, sym, treePath);
- }
-
- /**
- * Returns true, as this is an annotation type element.
- * (For legacy doclets, return false.)
- */
- public boolean isAnnotationTypeElement() {
- return !isMethod();
- }
-
- /**
- * Returns false. Although this is technically a method, we don't
- * consider it one for this purpose.
- * (For legacy doclets, return true.)
- */
- public boolean isMethod() {
- return env.legacyDoclet;
- }
-
- /**
- * Returns false, even though this is indeed abstract. See
- * MethodDocImpl.isAbstract() for the (il)logic behind this.
- */
- public boolean isAbstract() {
- return false;
- }
-
- /**
- * Returns the default value of this element.
- * Returns null if this element has no default.
- */
- public AnnotationValue defaultValue() {
- return (sym.defaultValue == null)
- ? null
- : new AnnotationValueImpl(env, sym.defaultValue);
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/AnnotationValueImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,178 +0,0 @@
-/*
- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import com.sun.javadoc.*;
-
-import com.sun.tools.javac.code.Attribute;
-
-import static com.sun.tools.javac.code.TypeTag.BOOLEAN;
-
-/**
- * Represents a value of an annotation type element.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @author Scott Seligman
- * @since 1.5
- */
-
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public class AnnotationValueImpl implements AnnotationValue {
-
- private final DocEnv env;
- private final Attribute attr;
-
-
- AnnotationValueImpl(DocEnv env, Attribute attr) {
- this.env = env;
- this.attr = attr;
- }
-
- /**
- * Returns the value.
- * The type of the returned object is one of the following:
- * <ul><li> a wrapper class for a primitive type
- * <li> <code>String</code>
- * <li> <code>Type</code> (representing a class literal)
- * <li> <code>FieldDoc</code> (representing an enum constant)
- * <li> <code>AnnotationDesc</code>
- * <li> <code>AnnotationValue[]</code>
- * </ul>
- */
- public Object value() {
- ValueVisitor vv = new ValueVisitor();
- attr.accept(vv);
- return vv.value;
- }
-
- private class ValueVisitor implements Attribute.Visitor {
- public Object value;
-
- public void visitConstant(Attribute.Constant c) {
- if (c.type.hasTag(BOOLEAN)) {
- // javac represents false and true as integers 0 and 1
- value = Boolean.valueOf(
- ((Integer)c.value).intValue() != 0);
- } else {
- value = c.value;
- }
- }
-
- public void visitClass(Attribute.Class c) {
- value = TypeMaker.getType(env,
- env.types.erasure(c.classType));
- }
-
- public void visitEnum(Attribute.Enum e) {
- value = env.getFieldDoc(e.value);
- }
-
- public void visitCompound(Attribute.Compound c) {
- value = new AnnotationDescImpl(env, c);
- }
-
- public void visitArray(Attribute.Array a) {
- AnnotationValue vals[] = new AnnotationValue[a.values.length];
- for (int i = 0; i < vals.length; i++) {
- vals[i] = new AnnotationValueImpl(env, a.values[i]);
- }
- value = vals;
- }
-
- public void visitError(Attribute.Error e) {
- value = "<error>";
- }
- }
-
- /**
- * Returns a string representation of the value.
- *
- * @return the text of a Java language annotation value expression
- * whose value is the value of this annotation type element.
- */
- @Override
- public String toString() {
- ToStringVisitor tv = new ToStringVisitor();
- attr.accept(tv);
- return tv.toString();
- }
-
- private class ToStringVisitor implements Attribute.Visitor {
- private final StringBuilder sb = new StringBuilder();
-
- @Override
- public String toString() {
- return sb.toString();
- }
-
- public void visitConstant(Attribute.Constant c) {
- if (c.type.hasTag(BOOLEAN)) {
- // javac represents false and true as integers 0 and 1
- sb.append(((Integer)c.value).intValue() != 0);
- } else {
- sb.append(FieldDocImpl.constantValueExpression(c.value));
- }
- }
-
- public void visitClass(Attribute.Class c) {
- sb.append(c);
- }
-
- public void visitEnum(Attribute.Enum e) {
- sb.append(e);
- }
-
- public void visitCompound(Attribute.Compound c) {
- sb.append(new AnnotationDescImpl(env, c));
- }
-
- public void visitArray(Attribute.Array a) {
- // Omit braces from singleton.
- if (a.values.length != 1) sb.append('{');
-
- boolean first = true;
- for (Attribute elem : a.values) {
- if (first) {
- first = false;
- } else {
- sb.append(", ");
- }
- elem.accept(this);
- }
- // Omit braces from singleton.
- if (a.values.length != 1) sb.append('}');
- }
-
- public void visitError(Attribute.Error e) {
- sb.append("<error>");
- }
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/ClassDocImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1331 +0,0 @@
-/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import java.io.File;
-import java.io.IOException;
-import java.lang.reflect.Modifier;
-import java.net.URI;
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.tools.FileObject;
-import javax.tools.JavaFileManager.Location;
-import javax.tools.StandardJavaFileManager;
-import javax.tools.StandardLocation;
-
-import com.sun.javadoc.*;
-import com.sun.source.util.TreePath;
-import com.sun.tools.javac.code.Flags;
-import com.sun.tools.javac.code.Kinds;
-import com.sun.tools.javac.code.Kinds.KindSelector;
-import com.sun.tools.javac.code.Scope;
-import com.sun.tools.javac.code.Symbol;
-import com.sun.tools.javac.code.Symbol.*;
-import com.sun.tools.javac.code.Type;
-import com.sun.tools.javac.code.Type.ClassType;
-import com.sun.tools.javac.code.TypeTag;
-import com.sun.tools.javac.comp.AttrContext;
-import com.sun.tools.javac.comp.Env;
-import com.sun.tools.javac.tree.JCTree;
-import com.sun.tools.javac.tree.JCTree.JCFieldAccess;
-import com.sun.tools.javac.tree.JCTree.JCImport;
-import com.sun.tools.javac.tree.TreeInfo;
-import com.sun.tools.javac.util.List;
-import com.sun.tools.javac.util.ListBuffer;
-import com.sun.tools.javac.util.Name;
-import com.sun.tools.javac.util.Names;
-import com.sun.tools.javac.util.Position;
-import static com.sun.tools.javac.code.Kinds.Kind.*;
-import static com.sun.tools.javac.code.Scope.LookupKind.NON_RECURSIVE;
-import static com.sun.tools.javac.code.TypeTag.CLASS;
-import static com.sun.tools.javac.tree.JCTree.Tag.*;
-
-/**
- * Represents a java class and provides access to information
- * about the class, the class' comment and tags, and the
- * members of the class. A ClassDocImpl only exists if it was
- * processed in this run of javadoc. References to classes
- * which may or may not have been processed in this run are
- * referred to using Type (which can be converted to ClassDocImpl,
- * if possible).
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @see Type
- *
- * @since 1.2
- * @author Robert Field
- * @author Neal Gafter (rewrite)
- * @author Scott Seligman (generics, enums, annotations)
- */
-
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public class ClassDocImpl extends ProgramElementDocImpl implements ClassDoc {
-
- public final ClassType type; // protected->public for debugging
- public final ClassSymbol tsym;
-
- boolean isIncluded = false; // Set in RootDocImpl
-
- private SerializedForm serializedForm;
-
- /**
- * Constructor
- */
- public ClassDocImpl(DocEnv env, ClassSymbol sym) {
- this(env, sym, null);
- }
-
- /**
- * Constructor
- */
- public ClassDocImpl(DocEnv env, ClassSymbol sym, TreePath treePath) {
- super(env, sym, treePath);
- this.type = (ClassType)sym.type;
- this.tsym = sym;
- }
-
- public com.sun.javadoc.Type getElementType() {
- return null;
- }
-
- /**
- * Returns the flags in terms of javac's flags
- */
- protected long getFlags() {
- return getFlags(tsym);
- }
-
- /**
- * Returns the flags of a ClassSymbol in terms of javac's flags
- */
- static long getFlags(ClassSymbol clazz) {
- try {
- return clazz.flags();
- } catch (CompletionFailure ex) {
- /* Quietly ignore completion failures and try again - the type
- * for which the CompletionFailure was thrown shouldn't be completed
- * again by the completer that threw the CompletionFailure.
- */
- return getFlags(clazz);
- }
- }
-
- /**
- * Is a ClassSymbol an annotation type?
- */
- static boolean isAnnotationType(ClassSymbol clazz) {
- return (getFlags(clazz) & Flags.ANNOTATION) != 0;
- }
-
- /**
- * Identify the containing class
- */
- protected ClassSymbol getContainingClass() {
- return tsym.owner.enclClass();
- }
-
- /**
- * Return true if this is a class, not an interface.
- */
- @Override
- public boolean isClass() {
- return !Modifier.isInterface(getModifiers());
- }
-
- /**
- * Return true if this is a ordinary class,
- * not an enumeration, exception, an error, or an interface.
- */
- @Override
- public boolean isOrdinaryClass() {
- if (isEnum() || isInterface() || isAnnotationType()) {
- return false;
- }
- for (Type t = type; t.hasTag(CLASS); t = env.types.supertype(t)) {
- if (t.tsym == env.syms.errorType.tsym ||
- t.tsym == env.syms.exceptionType.tsym) {
- return false;
- }
- }
- return true;
- }
-
- /**
- * Return true if this is an enumeration.
- * (For legacy doclets, return false.)
- */
- @Override
- public boolean isEnum() {
- return (getFlags() & Flags.ENUM) != 0
- &&
- !env.legacyDoclet;
- }
-
- /**
- * Return true if this is an interface, but not an annotation type.
- * Overridden by AnnotationTypeDocImpl.
- */
- @Override
- public boolean isInterface() {
- return Modifier.isInterface(getModifiers());
- }
-
- /**
- * Return true if this is an exception class
- */
- @Override
- public boolean isException() {
- if (isEnum() || isInterface() || isAnnotationType()) {
- return false;
- }
- for (Type t = type; t.hasTag(CLASS); t = env.types.supertype(t)) {
- if (t.tsym == env.syms.exceptionType.tsym) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Return true if this is an error class
- */
- @Override
- public boolean isError() {
- if (isEnum() || isInterface() || isAnnotationType()) {
- return false;
- }
- for (Type t = type; t.hasTag(CLASS); t = env.types.supertype(t)) {
- if (t.tsym == env.syms.errorType.tsym) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Return true if this is a throwable class
- */
- public boolean isThrowable() {
- if (isEnum() || isInterface() || isAnnotationType()) {
- return false;
- }
- for (Type t = type; t.hasTag(CLASS); t = env.types.supertype(t)) {
- if (t.tsym == env.syms.throwableType.tsym) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Return true if this class is abstract
- */
- public boolean isAbstract() {
- return Modifier.isAbstract(getModifiers());
- }
-
- /**
- * Returns true if this class was synthesized by the compiler.
- */
- public boolean isSynthetic() {
- return (getFlags() & Flags.SYNTHETIC) != 0;
- }
-
- /**
- * Return true if this class is included in the active set.
- * A ClassDoc is included iff either it is specified on the
- * commandline, or if it's containing package is specified
- * on the command line, or if it is a member class of an
- * included class.
- */
-
- public boolean isIncluded() {
- if (isIncluded) {
- return true;
- }
- if (env.shouldDocument(tsym)) {
- // Class is nameable from top-level and
- // the class and all enclosing classes
- // pass the modifier filter.
- if (containingPackage().isIncluded()) {
- return isIncluded=true;
- }
- ClassDoc outer = containingClass();
- if (outer != null && outer.isIncluded()) {
- return isIncluded=true;
- }
- }
- return false;
- }
-
- /**
- * Return the package that this class is contained in.
- */
- @Override
- public PackageDoc containingPackage() {
- PackageDocImpl p = env.getPackageDoc(tsym.packge());
- if (p.setDocPath == false) {
- FileObject docPath;
- try {
- Location location = env.fileManager.hasLocation(StandardLocation.SOURCE_PATH)
- ? StandardLocation.SOURCE_PATH : StandardLocation.CLASS_PATH;
-
- docPath = env.fileManager.getFileForInput(
- location, p.qualifiedName(), "package.html");
- } catch (IOException e) {
- docPath = null;
- }
-
- if (docPath == null) {
- // fall back on older semantics of looking in same directory as
- // source file for this class
- SourcePosition po = position();
- if (env.fileManager instanceof StandardJavaFileManager &&
- po instanceof SourcePositionImpl) {
- URI uri = ((SourcePositionImpl) po).filename.toUri();
- if ("file".equals(uri.getScheme())) {
- File f = new File(uri);
- File dir = f.getParentFile();
- if (dir != null) {
- File pf = new File(dir, "package.html");
- if (pf.exists()) {
- StandardJavaFileManager sfm = (StandardJavaFileManager) env.fileManager;
- docPath = sfm.getJavaFileObjects(pf).iterator().next();
- }
- }
-
- }
- }
- }
-
- p.setDocPath(docPath);
- }
- return p;
- }
-
- /**
- * Return the class name without package qualifier - but with
- * enclosing class qualifier - as a String.
- * <pre>
- * Examples:
- * for java.util.Hashtable
- * return Hashtable
- * for java.util.Map.Entry
- * return Map.Entry
- * </pre>
- */
- public String name() {
- if (name == null) {
- name = getClassName(tsym, false);
- }
- return name;
- }
-
- private String name;
-
- /**
- * Return the qualified class name as a String.
- * <pre>
- * Example:
- * for java.util.Hashtable
- * return java.util.Hashtable
- * if no qualifier, just return flat name
- * </pre>
- */
- public String qualifiedName() {
- if (qualifiedName == null) {
- qualifiedName = getClassName(tsym, true);
- }
- return qualifiedName;
- }
-
- private String qualifiedName;
-
- /**
- * Return unqualified name of type excluding any dimension information.
- * <p>
- * For example, a two dimensional array of String returns 'String'.
- */
- public String typeName() {
- return name();
- }
-
- /**
- * Return qualified name of type excluding any dimension information.
- *<p>
- * For example, a two dimensional array of String
- * returns 'java.lang.String'.
- */
- public String qualifiedTypeName() {
- return qualifiedName();
- }
-
- /**
- * Return the simple name of this type.
- */
- public String simpleTypeName() {
- if (simpleTypeName == null) {
- simpleTypeName = tsym.name.toString();
- }
- return simpleTypeName;
- }
-
- private String simpleTypeName;
-
- /**
- * Return the qualified name and any type parameters.
- * Each parameter is a type variable with optional bounds.
- */
- @Override
- public String toString() {
- return classToString(env, tsym, true);
- }
-
- /**
- * Return the class name as a string. If "full" is true the name is
- * qualified, otherwise it is qualified by its enclosing class(es) only.
- */
- static String getClassName(ClassSymbol c, boolean full) {
- if (full) {
- return c.getQualifiedName().toString();
- } else {
- String n = "";
- for ( ; c != null; c = c.owner.enclClass()) {
- n = c.name + (n.isEmpty() ? "" : ".") + n;
- }
- return n;
- }
- }
-
- /**
- * Return the class name with any type parameters as a string.
- * Each parameter is a type variable with optional bounds.
- * If "full" is true all names are qualified, otherwise they are
- * qualified by their enclosing class(es) only.
- */
- static String classToString(DocEnv env, ClassSymbol c, boolean full) {
- StringBuilder s = new StringBuilder();
- if (!c.isInner()) { // if c is not an inner class
- s.append(getClassName(c, full));
- } else {
- // c is an inner class, so include type params of outer.
- ClassSymbol encl = c.owner.enclClass();
- s.append(classToString(env, encl, full))
- .append('.')
- .append(c.name);
- }
- s.append(TypeMaker.typeParametersString(env, c, full));
- return s.toString();
- }
-
- /**
- * Is this class (or any enclosing class) generic? That is, does
- * it have type parameters?
- */
- static boolean isGeneric(ClassSymbol c) {
- return c.type.allparams().nonEmpty();
- }
-
- /**
- * Return the formal type parameters of this class or interface.
- * Return an empty array if there are none.
- */
- public TypeVariable[] typeParameters() {
- if (env.legacyDoclet) {
- return new TypeVariable[0];
- }
- TypeVariable res[] = new TypeVariable[type.getTypeArguments().length()];
- TypeMaker.getTypes(env, type.getTypeArguments(), res);
- return res;
- }
-
- /**
- * Return the type parameter tags of this class or interface.
- */
- public ParamTag[] typeParamTags() {
- return (env.legacyDoclet)
- ? new ParamTag[0]
- : comment().typeParamTags();
- }
-
- /**
- * Return the modifier string for this class. If it's an interface
- * exclude 'abstract' keyword from the modifier string
- */
- @Override
- public String modifiers() {
- return Modifier.toString(modifierSpecifier());
- }
-
- @Override
- public int modifierSpecifier() {
- int modifiers = getModifiers();
- return (isInterface() || isAnnotationType())
- ? modifiers & ~Modifier.ABSTRACT
- : modifiers;
- }
-
- /**
- * Return the superclass of this class
- *
- * @return the ClassDocImpl for the superclass of this class, null
- * if there is no superclass.
- */
- public ClassDoc superclass() {
- if (isInterface() || isAnnotationType()) return null;
- if (tsym == env.syms.objectType.tsym) return null;
- ClassSymbol c = (ClassSymbol)env.types.supertype(type).tsym;
- if (c == null || c == tsym) c = (ClassSymbol)env.syms.objectType.tsym;
- return env.getClassDoc(c);
- }
-
- /**
- * Return the superclass of this class. Return null if this is an
- * interface. A superclass is represented by either a
- * <code>ClassDoc</code> or a <code>ParameterizedType</code>.
- */
- public com.sun.javadoc.Type superclassType() {
- if (isInterface() || isAnnotationType() ||
- (tsym == env.syms.objectType.tsym))
- return null;
- Type sup = env.types.supertype(type);
- return TypeMaker.getType(env,
- (sup.hasTag(TypeTag.NONE)) ? env.syms.objectType : sup);
- }
-
- /**
- * Test whether this class is a subclass of the specified class.
- *
- * @param cd the candidate superclass.
- * @return true if cd is a superclass of this class.
- */
- public boolean subclassOf(ClassDoc cd) {
- return tsym.isSubClass(((ClassDocImpl)cd).tsym, env.types);
- }
-
- /**
- * Return interfaces implemented by this class or interfaces
- * extended by this interface.
- *
- * @return An array of ClassDocImpl representing the interfaces.
- * Return an empty array if there are no interfaces.
- */
- public ClassDoc[] interfaces() {
- ListBuffer<ClassDocImpl> ta = new ListBuffer<>();
- for (Type t : env.types.interfaces(type)) {
- ta.append(env.getClassDoc((ClassSymbol)t.tsym));
- }
- //### Cache ta here?
- return ta.toArray(new ClassDocImpl[ta.length()]);
- }
-
- /**
- * Return interfaces implemented by this class or interfaces extended
- * by this interface. Includes only directly-declared interfaces, not
- * inherited interfaces.
- * Return an empty array if there are no interfaces.
- */
- public com.sun.javadoc.Type[] interfaceTypes() {
- //### Cache result here?
- return TypeMaker.getTypes(env, env.types.interfaces(type));
- }
-
- /**
- * Return fields in class.
- * @param filter include only the included fields if filter==true
- */
- public FieldDoc[] fields(boolean filter) {
- return fields(filter, false);
- }
-
- /**
- * Return included fields in class.
- */
- public FieldDoc[] fields() {
- return fields(true, false);
- }
-
- /**
- * Return the enum constants if this is an enum type.
- */
- public FieldDoc[] enumConstants() {
- return fields(false, true);
- }
-
- /**
- * Return fields in class.
- * @param filter if true, return only the included fields
- * @param enumConstants if true, return the enum constants instead
- */
- private FieldDoc[] fields(boolean filter, boolean enumConstants) {
- List<FieldDocImpl> fields = List.nil();
- for (Symbol sym : tsym.members().getSymbols(NON_RECURSIVE)) {
- if (sym != null && sym.kind == VAR) {
- VarSymbol s = (VarSymbol)sym;
- boolean isEnum = ((s.flags() & Flags.ENUM) != 0) &&
- !env.legacyDoclet;
- if (isEnum == enumConstants &&
- (!filter || env.shouldDocument(s))) {
- fields = fields.prepend(env.getFieldDoc(s));
- }
- }
- }
- return fields.toArray(new FieldDocImpl[fields.length()]);
- }
-
- /**
- * Return methods in class.
- * This method is overridden by AnnotationTypeDocImpl.
- *
- * @param filter include only the included methods if filter==true
- * @return an array of MethodDocImpl for representing the visible
- * methods in this class. Does not include constructors.
- */
- public MethodDoc[] methods(boolean filter) {
- Names names = tsym.name.table.names;
- List<MethodDocImpl> methods = List.nil();
- for (Symbol sym :tsym.members().getSymbols(NON_RECURSIVE)) {
- if (sym != null
- && sym.kind == MTH
- && sym.name != names.init
- && sym.name != names.clinit) {
- MethodSymbol s = (MethodSymbol)sym;
- if (!filter || env.shouldDocument(s)) {
- methods = methods.prepend(env.getMethodDoc(s));
- }
- }
- }
- //### Cache methods here?
- return methods.toArray(new MethodDocImpl[methods.length()]);
- }
-
- /**
- * Return included methods in class.
- *
- * @return an array of MethodDocImpl for representing the visible
- * methods in this class. Does not include constructors.
- */
- public MethodDoc[] methods() {
- return methods(true);
- }
-
- /**
- * Return constructors in class.
- *
- * @param filter include only the included constructors if filter==true
- * @return an array of ConstructorDocImpl for representing the visible
- * constructors in this class.
- */
- public ConstructorDoc[] constructors(boolean filter) {
- Names names = tsym.name.table.names;
- List<ConstructorDocImpl> constructors = List.nil();
- for (Symbol sym : tsym.members().getSymbols(NON_RECURSIVE)) {
- if (sym != null &&
- sym.kind == MTH && sym.name == names.init) {
- MethodSymbol s = (MethodSymbol)sym;
- if (!filter || env.shouldDocument(s)) {
- constructors = constructors.prepend(env.getConstructorDoc(s));
- }
- }
- }
- //### Cache constructors here?
- return constructors.toArray(new ConstructorDocImpl[constructors.length()]);
- }
-
- /**
- * Return included constructors in class.
- *
- * @return an array of ConstructorDocImpl for representing the visible
- * constructors in this class.
- */
- public ConstructorDoc[] constructors() {
- return constructors(true);
- }
-
- /**
- * Adds all inner classes of this class, and their
- * inner classes recursively, to the list l.
- */
- void addAllClasses(ListBuffer<ClassDocImpl> l, boolean filtered) {
- try {
- if (isSynthetic()) return;
- // sometimes synthetic classes are not marked synthetic
- if (!JavadocTool.isValidClassName(tsym.name.toString())) return;
- if (filtered && !env.shouldDocument(tsym)) return;
- if (l.contains(this)) return;
- l.append(this);
- List<ClassDocImpl> more = List.nil();
- for (Symbol sym : tsym.members().getSymbols(NON_RECURSIVE)) {
- if (sym != null && sym.kind == TYP) {
- ClassSymbol s = (ClassSymbol)sym;
- ClassDocImpl c = env.getClassDoc(s);
- if (c.isSynthetic()) continue;
- if (c != null) more = more.prepend(c);
- }
- }
- // this extra step preserves the ordering from oldjavadoc
- for (; more.nonEmpty(); more=more.tail) {
- more.head.addAllClasses(l, filtered);
- }
- } catch (CompletionFailure e) {
- // quietly ignore completion failures
- }
- }
-
- /**
- * Return inner classes within this class.
- *
- * @param filter include only the included inner classes if filter==true.
- * @return an array of ClassDocImpl for representing the visible
- * classes defined in this class. Anonymous and local classes
- * are not included.
- */
- public ClassDoc[] innerClasses(boolean filter) {
- ListBuffer<ClassDocImpl> innerClasses = new ListBuffer<>();
- for (Symbol sym : tsym.members().getSymbols(NON_RECURSIVE)) {
- if (sym != null && sym.kind == TYP) {
- ClassSymbol s = (ClassSymbol)sym;
- if ((s.flags_field & Flags.SYNTHETIC) != 0) continue;
- if (!filter || env.isVisible(s)) {
- innerClasses.prepend(env.getClassDoc(s));
- }
- }
- }
- //### Cache classes here?
- return innerClasses.toArray(new ClassDocImpl[innerClasses.length()]);
- }
-
- /**
- * Return included inner classes within this class.
- *
- * @return an array of ClassDocImpl for representing the visible
- * classes defined in this class. Anonymous and local classes
- * are not included.
- */
- public ClassDoc[] innerClasses() {
- return innerClasses(true);
- }
-
- /**
- * Find a class within the context of this class.
- * Search order: qualified name, in this class (inner),
- * in this package, in the class imports, in the package
- * imports.
- * Return the ClassDocImpl if found, null if not found.
- */
- //### The specified search order is not the normal rule the
- //### compiler would use. Leave as specified or change it?
- public ClassDoc findClass(String className) {
- ClassDoc searchResult = searchClass(className);
- if (searchResult == null) {
- ClassDocImpl enclosingClass = (ClassDocImpl)containingClass();
- //Expand search space to include enclosing class.
- while (enclosingClass != null && enclosingClass.containingClass() != null) {
- enclosingClass = (ClassDocImpl)enclosingClass.containingClass();
- }
- searchResult = enclosingClass == null ?
- null : enclosingClass.searchClass(className);
- }
- return searchResult;
- }
-
- private ClassDoc searchClass(String className) {
- Names names = tsym.name.table.names;
-
- // search by qualified name first
- ClassDoc cd = env.lookupClass(className);
- if (cd != null) {
- return cd;
- }
-
- // search inner classes
- //### Add private entry point to avoid creating array?
- //### Replicate code in innerClasses here to avoid consing?
- for (ClassDoc icd : innerClasses()) {
- if (icd.name().equals(className) ||
- //### This is from original javadoc but it looks suspicious to me...
- //### I believe it is attempting to compensate for the confused
- //### convention of including the nested class qualifiers in the
- //### 'name' of the inner class, rather than the true simple name.
- icd.name().endsWith("." + className)) {
- return icd;
- } else {
- ClassDoc innercd = ((ClassDocImpl) icd).searchClass(className);
- if (innercd != null) {
- return innercd;
- }
- }
- }
-
- // check in this package
- cd = containingPackage().findClass(className);
- if (cd != null) {
- return cd;
- }
-
- // make sure that this symbol has been completed
- tsym.complete();
-
- // search imports
-
- if (tsym.sourcefile != null) {
-
- //### This information is available only for source classes.
-
- Env<AttrContext> compenv = env.enter.getEnv(tsym);
- if (compenv == null) return null;
-
- Scope s = compenv.toplevel.namedImportScope;
- for (Symbol sym : s.getSymbolsByName(names.fromString(className))) {
- if (sym.kind == TYP) {
- ClassDoc c = env.getClassDoc((ClassSymbol)sym);
- return c;
- }
- }
-
- s = compenv.toplevel.starImportScope;
- for (Symbol sym : s.getSymbolsByName(names.fromString(className))) {
- if (sym.kind == TYP) {
- ClassDoc c = env.getClassDoc((ClassSymbol)sym);
- return c;
- }
- }
- }
-
- return null; // not found
- }
-
-
- private boolean hasParameterTypes(MethodSymbol method, String[] argTypes) {
-
- if (argTypes == null) {
- // wildcard
- return true;
- }
-
- int i = 0;
- List<Type> types = method.type.getParameterTypes();
-
- if (argTypes.length != types.length()) {
- return false;
- }
-
- for (Type t : types) {
- String argType = argTypes[i++];
- // For vararg method, "T..." matches type T[].
- if (i == argTypes.length) {
- argType = argType.replace("...", "[]");
- }
- if (!hasTypeName(env.types.erasure(t), argType)) { //###(gj)
- return false;
- }
- }
- return true;
- }
- // where
- private boolean hasTypeName(Type t, String name) {
- return
- name.equals(TypeMaker.getTypeName(t, true))
- ||
- name.equals(TypeMaker.getTypeName(t, false))
- ||
- (qualifiedName() + "." + name).equals(TypeMaker.getTypeName(t, true));
- }
-
-
-
- /**
- * Find a method in this class scope.
- * Search order: this class, interfaces, superclasses, outerclasses.
- * Note that this is not necessarily what the compiler would do!
- *
- * @param methodName the unqualified name to search for.
- * @param paramTypes the array of Strings for method parameter types.
- * @return the first MethodDocImpl which matches, null if not found.
- */
- public MethodDocImpl findMethod(String methodName, String[] paramTypes) {
- // Use hash table 'searched' to avoid searching same class twice.
- //### It is not clear how this could happen.
- return searchMethod(methodName, paramTypes, new HashSet<ClassDocImpl>());
- }
-
- private MethodDocImpl searchMethod(String methodName,
- String[] paramTypes, Set<ClassDocImpl> searched) {
- //### Note that this search is not necessarily what the compiler would do!
-
- Names names = tsym.name.table.names;
- // do not match constructors
- if (names.init.contentEquals(methodName)) {
- return null;
- }
-
- ClassDocImpl cdi;
- MethodDocImpl mdi;
-
- if (searched.contains(this)) {
- return null;
- }
- searched.add(this);
-
- //DEBUG
- /*---------------------------------*
- System.out.print("searching " + this + " for " + methodName);
- if (paramTypes == null) {
- System.out.println("()");
- } else {
- System.out.print("(");
- for (int k=0; k < paramTypes.length; k++) {
- System.out.print(paramTypes[k]);
- if ((k + 1) < paramTypes.length) {
- System.out.print(", ");
- }
- }
- System.out.println(")");
- }
- *---------------------------------*/
-
- // search current class
-
- //### Using modifier filter here isn't really correct,
- //### but emulates the old behavior. Instead, we should
- //### apply the normal rules of visibility and inheritance.
-
- if (paramTypes == null) {
- // If no parameters specified, we are allowed to return
- // any method with a matching name. In practice, the old
- // code returned the first method, which is now the last!
- // In order to provide textually identical results, we
- // attempt to emulate the old behavior.
- MethodSymbol lastFound = null;
- for (Symbol sym : tsym.members().getSymbolsByName(names.fromString(methodName))) {
- if (sym.kind == MTH) {
- //### Should intern methodName as Name.
- if (sym.name.toString().equals(methodName)) {
- lastFound = (MethodSymbol)sym;
- }
- }
- }
- if (lastFound != null) {
- return env.getMethodDoc(lastFound);
- }
- } else {
- for (Symbol sym : tsym.members().getSymbolsByName(names.fromString(methodName))) {
- if (sym != null &&
- sym.kind == MTH) {
- //### Should intern methodName as Name.
- if (hasParameterTypes((MethodSymbol)sym, paramTypes)) {
- return env.getMethodDoc((MethodSymbol)sym);
- }
- }
- }
- }
-
- //### If we found a MethodDoc above, but which did not pass
- //### the modifier filter, we should return failure here!
-
- // search superclass
- cdi = (ClassDocImpl)superclass();
- if (cdi != null) {
- mdi = cdi.searchMethod(methodName, paramTypes, searched);
- if (mdi != null) {
- return mdi;
- }
- }
-
- // search interfaces
- for (ClassDoc intf : interfaces()) {
- cdi = (ClassDocImpl) intf;
- mdi = cdi.searchMethod(methodName, paramTypes, searched);
- if (mdi != null) {
- return mdi;
- }
- }
-
- // search enclosing class
- cdi = (ClassDocImpl)containingClass();
- if (cdi != null) {
- mdi = cdi.searchMethod(methodName, paramTypes, searched);
- if (mdi != null) {
- return mdi;
- }
- }
-
- //###(gj) As a temporary measure until type variables are better
- //### handled, try again without the parameter types.
- //### This should most often find the right method, and occassionally
- //### find the wrong one.
- //if (paramTypes != null) {
- // return findMethod(methodName, null);
- //}
-
- return null;
- }
-
- /**
- * Find constructor in this class.
- *
- * @param constrName the unqualified name to search for.
- * @param paramTypes the array of Strings for constructor parameters.
- * @return the first ConstructorDocImpl which matches, null if not found.
- */
- public ConstructorDoc findConstructor(String constrName,
- String[] paramTypes) {
- Names names = tsym.name.table.names;
- for (Symbol sym : tsym.members().getSymbolsByName(names.fromString("<init>"))) {
- if (sym.kind == MTH) {
- if (hasParameterTypes((MethodSymbol)sym, paramTypes)) {
- return env.getConstructorDoc((MethodSymbol)sym);
- }
- }
- }
-
- //###(gj) As a temporary measure until type variables are better
- //### handled, try again without the parameter types.
- //### This will often find the right constructor, and occassionally
- //### find the wrong one.
- //if (paramTypes != null) {
- // return findConstructor(constrName, null);
- //}
-
- return null;
- }
-
- /**
- * Find a field in this class scope.
- * Search order: this class, outerclasses, interfaces,
- * superclasses. IMP: If see tag is defined in an inner class,
- * which extends a super class and if outerclass and the super
- * class have a visible field in common then Java compiler cribs
- * about the ambiguity, but the following code will search in the
- * above given search order.
- *
- * @param fieldName the unqualified name to search for.
- * @return the first FieldDocImpl which matches, null if not found.
- */
- public FieldDoc findField(String fieldName) {
- return searchField(fieldName, new HashSet<ClassDocImpl>());
- }
-
- private FieldDocImpl searchField(String fieldName, Set<ClassDocImpl> searched) {
- Names names = tsym.name.table.names;
- if (searched.contains(this)) {
- return null;
- }
- searched.add(this);
-
- for (Symbol sym : tsym.members().getSymbolsByName(names.fromString(fieldName))) {
- if (sym.kind == VAR) {
- //### Should intern fieldName as Name.
- return env.getFieldDoc((VarSymbol)sym);
- }
- }
-
- //### If we found a FieldDoc above, but which did not pass
- //### the modifier filter, we should return failure here!
-
- ClassDocImpl cdi = (ClassDocImpl)containingClass();
- if (cdi != null) {
- FieldDocImpl fdi = cdi.searchField(fieldName, searched);
- if (fdi != null) {
- return fdi;
- }
- }
-
- // search superclass
- cdi = (ClassDocImpl)superclass();
- if (cdi != null) {
- FieldDocImpl fdi = cdi.searchField(fieldName, searched);
- if (fdi != null) {
- return fdi;
- }
- }
-
- // search interfaces
- for (ClassDoc intf : interfaces()) {
- cdi = (ClassDocImpl) intf;
- FieldDocImpl fdi = cdi.searchField(fieldName, searched);
- if (fdi != null) {
- return fdi;
- }
- }
-
- return null;
- }
-
- /**
- * Get the list of classes declared as imported.
- * These are called "single-type-import declarations" in the JLS.
- * This method is deprecated in the ClassDoc interface.
- *
- * @return an array of ClassDocImpl representing the imported classes.
- *
- * @deprecated Import declarations are implementation details that
- * should not be exposed here. In addition, not all imported
- * classes are imported through single-type-import declarations.
- */
- @Deprecated(since="9", forRemoval=true)
- public ClassDoc[] importedClasses() {
- // information is not available for binary classfiles
- if (tsym.sourcefile == null) return new ClassDoc[0];
-
- ListBuffer<ClassDocImpl> importedClasses = new ListBuffer<>();
-
- Env<AttrContext> compenv = env.enter.getEnv(tsym);
- if (compenv == null) return new ClassDocImpl[0];
-
- Name asterisk = tsym.name.table.names.asterisk;
- for (JCTree t : compenv.toplevel.defs) {
- if (t.hasTag(IMPORT)) {
- JCTree imp = ((JCImport) t).qualid;
- if ((TreeInfo.name(imp) != asterisk) &&
- imp.type.tsym.kind.matches(KindSelector.TYP)) {
- importedClasses.append(
- env.getClassDoc((ClassSymbol)imp.type.tsym));
- }
- }
- }
-
- return importedClasses.toArray(new ClassDocImpl[importedClasses.length()]);
- }
-
- /**
- * Get the list of packages declared as imported.
- * These are called "type-import-on-demand declarations" in the JLS.
- * This method is deprecated in the ClassDoc interface.
- *
- * @return an array of PackageDocImpl representing the imported packages.
- *
- * ###NOTE: the syntax supports importing all inner classes from a class as well.
- * @deprecated Import declarations are implementation details that
- * should not be exposed here. In addition, this method's
- * return type does not allow for all type-import-on-demand
- * declarations to be returned.
- */
- @Deprecated(since="9", forRemoval=true)
- public PackageDoc[] importedPackages() {
- // information is not available for binary classfiles
- if (tsym.sourcefile == null) return new PackageDoc[0];
-
- ListBuffer<PackageDocImpl> importedPackages = new ListBuffer<>();
-
- //### Add the implicit "import java.lang.*" to the result
- Names names = tsym.name.table.names;
- importedPackages.append(env.getPackageDoc(env.syms.enterPackage(env.syms.java_base, names.java_lang)));
-
- Env<AttrContext> compenv = env.enter.getEnv(tsym);
- if (compenv == null) return new PackageDocImpl[0];
-
- for (JCTree t : compenv.toplevel.defs) {
- if (t.hasTag(IMPORT)) {
- JCTree imp = ((JCImport) t).qualid;
- if (TreeInfo.name(imp) == names.asterisk) {
- JCFieldAccess sel = (JCFieldAccess)imp;
- Symbol s = sel.selected.type.tsym;
- PackageDocImpl pdoc = env.getPackageDoc(s.packge());
- if (!importedPackages.contains(pdoc))
- importedPackages.append(pdoc);
- }
- }
- }
-
- return importedPackages.toArray(new PackageDocImpl[importedPackages.length()]);
- }
-
- /**
- * Return the type's dimension information.
- * Always return "", as this is not an array type.
- */
- public String dimension() {
- return "";
- }
-
- /**
- * Return this type as a class, which it already is.
- */
- public ClassDoc asClassDoc() {
- return this;
- }
-
- /**
- * Return null (unless overridden), as this is not an annotation type.
- */
- public AnnotationTypeDoc asAnnotationTypeDoc() {
- return null;
- }
-
- /**
- * Return null, as this is not a class instantiation.
- */
- public ParameterizedType asParameterizedType() {
- return null;
- }
-
- /**
- * Return null, as this is not a type variable.
- */
- public TypeVariable asTypeVariable() {
- return null;
- }
-
- /**
- * Return null, as this is not a wildcard type.
- */
- public WildcardType asWildcardType() {
- return null;
- }
-
- /**
- * Returns null, as this is not an annotated type.
- */
- public AnnotatedType asAnnotatedType() {
- return null;
- }
-
- /**
- * Return false, as this is not a primitive type.
- */
- public boolean isPrimitive() {
- return false;
- }
-
- //--- Serialization ---
-
- //### These methods ignore modifier filter.
-
- /**
- * Return true if this class implements <code>java.io.Serializable</code>.
- *
- * Since <code>java.io.Externalizable</code> extends
- * <code>java.io.Serializable</code>,
- * Externalizable objects are also Serializable.
- */
- public boolean isSerializable() {
- try {
- return env.types.isSubtype(type, env.syms.serializableType);
- } catch (CompletionFailure ex) {
- // quietly ignore completion failures
- return false;
- }
- }
-
- /**
- * Return true if this class implements
- * <code>java.io.Externalizable</code>.
- */
- public boolean isExternalizable() {
- try {
- return env.types.isSubtype(type, env.externalizableSym.type);
- } catch (CompletionFailure ex) {
- // quietly ignore completion failures
- return false;
- }
- }
-
- /**
- * Return the serialization methods for this class.
- *
- * @return an array of <code>MethodDocImpl</code> that represents
- * the serialization methods for this class.
- */
- public MethodDoc[] serializationMethods() {
- if (serializedForm == null) {
- serializedForm = new SerializedForm(env, tsym, this);
- }
- //### Clone this?
- return serializedForm.methods();
- }
-
- /**
- * Return the Serializable fields of class.<p>
- *
- * Return either a list of default fields documented by
- * <code>serial</code> tag<br>
- * or return a single <code>FieldDoc</code> for
- * <code>serialPersistentField</code> member.
- * There should be a <code>serialField</code> tag for
- * each Serializable field defined by an <code>ObjectStreamField</code>
- * array component of <code>serialPersistentField</code>.
- *
- * @return an array of {@code FieldDoc} for the Serializable fields
- * of this class.
- *
- * @see #definesSerializableFields()
- * @see SerialFieldTagImpl
- */
- public FieldDoc[] serializableFields() {
- if (serializedForm == null) {
- serializedForm = new SerializedForm(env, tsym, this);
- }
- //### Clone this?
- return serializedForm.fields();
- }
-
- /**
- * Return true if Serializable fields are explicitly defined with
- * the special class member <code>serialPersistentFields</code>.
- *
- * @see #serializableFields()
- * @see SerialFieldTagImpl
- */
- public boolean definesSerializableFields() {
- if (!isSerializable() || isExternalizable()) {
- return false;
- } else {
- if (serializedForm == null) {
- serializedForm = new SerializedForm(env, tsym, this);
- }
- //### Clone this?
- return serializedForm.definesSerializableFields();
- }
- }
-
- /**
- * Determine if a class is a RuntimeException.
- * <p>
- * Used only by ThrowsTagImpl.
- */
- boolean isRuntimeException() {
- return tsym.isSubClass(env.syms.runtimeExceptionType.tsym, env.types);
- }
-
- /**
- * Return the source position of the entity, or null if
- * no position is available.
- */
- @Override
- public SourcePosition position() {
- if (tsym.sourcefile == null) return null;
- return SourcePositionImpl.make(tsym.sourcefile,
- (tree==null) ? Position.NOPOS : tree.pos,
- lineMap);
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/Comment.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,462 +0,0 @@
-/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import com.sun.javadoc.*;
-import com.sun.tools.javac.util.ListBuffer;
-
-/**
- * Comment contains all information in comment part.
- * It allows users to get first sentence of this comment, get
- * comment for different tags...
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @author Kaiyang Liu (original)
- * @author Robert Field (rewrite)
- * @author Atul M Dambalkar
- * @author Neal Gafter (rewrite)
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-class Comment {
-
- /**
- * sorted comments with different tags.
- */
- private final ListBuffer<Tag> tagList = new ListBuffer<>();
-
- /**
- * text minus any tags.
- */
- private String text;
-
- /**
- * Doc environment
- */
- private final DocEnv docenv;
-
- /**
- * constructor of Comment.
- */
- Comment(final DocImpl holder, final String commentString) {
- this.docenv = holder.env;
-
- /**
- * Separate the comment into the text part and zero to N tags.
- * Simple state machine is in one of three states:
- * <pre>
- * IN_TEXT: parsing the comment text or tag text.
- * TAG_NAME: parsing the name of a tag.
- * TAG_GAP: skipping through the gap between the tag name and
- * the tag text.
- * </pre>
- */
- @SuppressWarnings("fallthrough")
- class CommentStringParser {
- /**
- * The entry point to the comment string parser
- */
- void parseCommentStateMachine() {
- final int IN_TEXT = 1;
- final int TAG_GAP = 2;
- final int TAG_NAME = 3;
- int state = TAG_GAP;
- boolean newLine = true;
- String tagName = null;
- int tagStart = 0;
- int textStart = 0;
- int lastNonWhite = -1;
- int len = commentString.length();
- for (int inx = 0; inx < len; ++inx) {
- char ch = commentString.charAt(inx);
- boolean isWhite = Character.isWhitespace(ch);
- switch (state) {
- case TAG_NAME:
- if (isWhite) {
- tagName = commentString.substring(tagStart, inx);
- state = TAG_GAP;
- }
- break;
- case TAG_GAP:
- if (isWhite) {
- break;
- }
- textStart = inx;
- state = IN_TEXT;
- /* fall thru */
- case IN_TEXT:
- if (newLine && ch == '@') {
- parseCommentComponent(tagName, textStart,
- lastNonWhite+1);
- tagStart = inx;
- state = TAG_NAME;
- }
- break;
- }
- if (ch == '\n') {
- newLine = true;
- } else if (!isWhite) {
- lastNonWhite = inx;
- newLine = false;
- }
- }
- // Finish what's currently being processed
- switch (state) {
- case TAG_NAME:
- tagName = commentString.substring(tagStart, len);
- /* fall thru */
- case TAG_GAP:
- textStart = len;
- /* fall thru */
- case IN_TEXT:
- parseCommentComponent(tagName, textStart, lastNonWhite+1);
- break;
- }
- }
-
- /**
- * Save away the last parsed item.
- */
- void parseCommentComponent(String tagName,
- int from, int upto) {
- String tx = upto <= from ? "" : commentString.substring(from, upto);
- if (tagName == null) {
- text = tx;
- } else {
- TagImpl tag;
- switch (tagName) {
- case "@exception":
- case "@throws":
- warnIfEmpty(tagName, tx);
- tag = new ThrowsTagImpl(holder, tagName, tx);
- break;
- case "@param":
- warnIfEmpty(tagName, tx);
- tag = new ParamTagImpl(holder, tagName, tx);
- break;
- case "@see":
- warnIfEmpty(tagName, tx);
- tag = new SeeTagImpl(holder, tagName, tx);
- break;
- case "@serialField":
- warnIfEmpty(tagName, tx);
- tag = new SerialFieldTagImpl(holder, tagName, tx);
- break;
- case "@return":
- warnIfEmpty(tagName, tx);
- tag = new TagImpl(holder, tagName, tx);
- break;
- case "@author":
- warnIfEmpty(tagName, tx);
- tag = new TagImpl(holder, tagName, tx);
- break;
- case "@version":
- warnIfEmpty(tagName, tx);
- tag = new TagImpl(holder, tagName, tx);
- break;
- default:
- tag = new TagImpl(holder, tagName, tx);
- break;
- }
- tagList.append(tag);
- }
- }
-
- void warnIfEmpty(String tagName, String tx) {
- if (tx.length() == 0) {
- docenv.warning(holder, "tag.tag_has_no_arguments", tagName);
- }
- }
-
- }
-
- new CommentStringParser().parseCommentStateMachine();
- }
-
- /**
- * Return the text of the comment.
- */
- String commentText() {
- return text;
- }
-
- /**
- * Return all tags in this comment.
- */
- Tag[] tags() {
- return tagList.toArray(new Tag[tagList.length()]);
- }
-
- /**
- * Return tags of the specified kind in this comment.
- */
- Tag[] tags(String tagname) {
- ListBuffer<Tag> found = new ListBuffer<>();
- String target = tagname;
- if (target.charAt(0) != '@') {
- target = "@" + target;
- }
- for (Tag tag : tagList) {
- if (tag.kind().equals(target)) {
- found.append(tag);
- }
- }
- return found.toArray(new Tag[found.length()]);
- }
-
- /**
- * Return throws tags in this comment.
- */
- ThrowsTag[] throwsTags() {
- ListBuffer<ThrowsTag> found = new ListBuffer<>();
- for (Tag next : tagList) {
- if (next instanceof ThrowsTag) {
- found.append((ThrowsTag)next);
- }
- }
- return found.toArray(new ThrowsTag[found.length()]);
- }
-
- /**
- * Return param tags (excluding type param tags) in this comment.
- */
- ParamTag[] paramTags() {
- return paramTags(false);
- }
-
- /**
- * Return type param tags in this comment.
- */
- ParamTag[] typeParamTags() {
- return paramTags(true);
- }
-
- /**
- * Return param tags in this comment. If typeParams is true
- * include only type param tags, otherwise include only ordinary
- * param tags.
- */
- private ParamTag[] paramTags(boolean typeParams) {
- ListBuffer<ParamTag> found = new ListBuffer<>();
- for (Tag next : tagList) {
- if (next instanceof ParamTag) {
- ParamTag p = (ParamTag)next;
- if (typeParams == p.isTypeParameter()) {
- found.append(p);
- }
- }
- }
- return found.toArray(new ParamTag[found.length()]);
- }
-
- /**
- * Return see also tags in this comment.
- */
- SeeTag[] seeTags() {
- ListBuffer<SeeTag> found = new ListBuffer<>();
- for (Tag next : tagList) {
- if (next instanceof SeeTag) {
- found.append((SeeTag)next);
- }
- }
- return found.toArray(new SeeTag[found.length()]);
- }
-
- /**
- * Return serialField tags in this comment.
- */
- SerialFieldTag[] serialFieldTags() {
- ListBuffer<SerialFieldTag> found = new ListBuffer<>();
- for (Tag next : tagList) {
- if (next instanceof SerialFieldTag) {
- found.append((SerialFieldTag)next);
- }
- }
- return found.toArray(new SerialFieldTag[found.length()]);
- }
-
- /**
- * Return array of tags with text and inline See Tags for a Doc comment.
- */
- static Tag[] getInlineTags(DocImpl holder, String inlinetext) {
- ListBuffer<Tag> taglist = new ListBuffer<>();
- int delimend = 0, textstart = 0, len = inlinetext.length();
- boolean inPre = false;
- DocEnv docenv = holder.env;
-
- if (len == 0) {
- return taglist.toArray(new Tag[taglist.length()]);
- }
- while (true) {
- int linkstart;
- if ((linkstart = inlineTagFound(holder, inlinetext,
- textstart)) == -1) {
- taglist.append(new TagImpl(holder, "Text",
- inlinetext.substring(textstart)));
- break;
- } else {
- inPre = scanForPre(inlinetext, textstart, linkstart, inPre);
- int seetextstart = linkstart;
- for (int i = linkstart; i < inlinetext.length(); i++) {
- char c = inlinetext.charAt(i);
- if (Character.isWhitespace(c) ||
- c == '}') {
- seetextstart = i;
- break;
- }
- }
- String linkName = inlinetext.substring(linkstart+2, seetextstart);
- if (!(inPre && (linkName.equals("code") || linkName.equals("literal")))) {
- //Move past the white space after the inline tag name.
- while (Character.isWhitespace(inlinetext.
- charAt(seetextstart))) {
- if (inlinetext.length() <= seetextstart) {
- taglist.append(new TagImpl(holder, "Text",
- inlinetext.substring(textstart, seetextstart)));
- docenv.warning(holder,
- "tag.Improper_Use_Of_Link_Tag",
- inlinetext);
- return taglist.toArray(new Tag[taglist.length()]);
- } else {
- seetextstart++;
- }
- }
- }
- taglist.append(new TagImpl(holder, "Text",
- inlinetext.substring(textstart, linkstart)));
- textstart = seetextstart; // this text is actually seetag
- if ((delimend = findInlineTagDelim(inlinetext, textstart)) == -1) {
- //Missing closing '}' character.
- // store the text as it is with the {@link.
- taglist.append(new TagImpl(holder, "Text",
- inlinetext.substring(textstart)));
- docenv.warning(holder,
- "tag.End_delimiter_missing_for_possible_SeeTag",
- inlinetext);
- return taglist.toArray(new Tag[taglist.length()]);
- } else {
- //Found closing '}' character.
- if (linkName.equals("see")
- || linkName.equals("link")
- || linkName.equals("linkplain")) {
- taglist.append( new SeeTagImpl(holder, "@" + linkName,
- inlinetext.substring(textstart, delimend)));
- } else {
- taglist.append( new TagImpl(holder, "@" + linkName,
- inlinetext.substring(textstart, delimend)));
- }
- textstart = delimend + 1;
- }
- }
- if (textstart == inlinetext.length()) {
- break;
- }
- }
- return taglist.toArray(new Tag[taglist.length()]);
- }
-
- /** regex for case-insensitive match for {@literal <pre> } and {@literal </pre> }. */
- private static final Pattern prePat = Pattern.compile("(?i)<(/?)pre>");
-
- private static boolean scanForPre(String inlinetext, int start, int end, boolean inPre) {
- Matcher m = prePat.matcher(inlinetext).region(start, end);
- while (m.find()) {
- inPre = m.group(1).isEmpty();
- }
- return inPre;
- }
-
- /**
- * Recursively find the index of the closing '}' character for an inline tag
- * and return it. If it can't be found, return -1.
- * @param inlineText the text to search in.
- * @param searchStart the index of the place to start searching at.
- * @return the index of the closing '}' character for an inline tag.
- * If it can't be found, return -1.
- */
- private static int findInlineTagDelim(String inlineText, int searchStart) {
- int delimEnd, nestedOpenBrace;
- if ((delimEnd = inlineText.indexOf("}", searchStart)) == -1) {
- return -1;
- } else if (((nestedOpenBrace = inlineText.indexOf("{", searchStart)) != -1) &&
- nestedOpenBrace < delimEnd){
- //Found a nested open brace.
- int nestedCloseBrace = findInlineTagDelim(inlineText, nestedOpenBrace + 1);
- return (nestedCloseBrace != -1) ?
- findInlineTagDelim(inlineText, nestedCloseBrace + 1) :
- -1;
- } else {
- return delimEnd;
- }
- }
-
- /**
- * Recursively search for the characters '{', '@', followed by
- * name of inline tag and white space,
- * if found
- * return the index of the text following the white space.
- * else
- * return -1.
- */
- private static int inlineTagFound(DocImpl holder, String inlinetext, int start) {
- DocEnv docenv = holder.env;
- int linkstart = inlinetext.indexOf("{@", start);
- if (start == inlinetext.length() || linkstart == -1) {
- return -1;
- } else if (inlinetext.indexOf('}', linkstart) == -1) {
- //Missing '}'.
- docenv.warning(holder, "tag.Improper_Use_Of_Link_Tag",
- inlinetext.substring(linkstart, inlinetext.length()));
- return -1;
- } else {
- return linkstart;
- }
- }
-
-
- /**
- * Return array of tags for the locale specific first sentence in the text.
- */
- static Tag[] firstSentenceTags(DocImpl holder, String text) {
- DocLocale doclocale = holder.env.doclocale;
- return getInlineTags(holder,
- doclocale.localeSpecificFirstSentence(holder, text));
- }
-
- /**
- * Return text for this Doc comment.
- */
- @Override
- public String toString() {
- return text;
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/ConstructorDocImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,105 +0,0 @@
-/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import com.sun.javadoc.*;
-
-import com.sun.source.util.TreePath;
-import com.sun.tools.javac.code.Symbol.ClassSymbol;
-import com.sun.tools.javac.code.Symbol.MethodSymbol;
-
-/**
- * Represents a constructor of a java class.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @since 1.2
- * @author Robert Field
- * @author Neal Gafter (rewrite)
- */
-
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public class ConstructorDocImpl
- extends ExecutableMemberDocImpl implements ConstructorDoc {
-
- /**
- * constructor.
- */
- public ConstructorDocImpl(DocEnv env, MethodSymbol sym) {
- super(env, sym);
- }
-
- /**
- * constructor.
- */
- public ConstructorDocImpl(DocEnv env, MethodSymbol sym, TreePath treePath) {
- super(env, sym, treePath);
- }
-
- /**
- * Return true if it is a constructor, which it is.
- *
- * @return true
- */
- public boolean isConstructor() {
- return true;
- }
-
- /**
- * Get the name.
- *
- * @return the name of the member.
- */
- public String name() {
- ClassSymbol c = sym.enclClass();
- return c.name.toString();
- }
-
- /**
- * Get the name.
- *
- * @return the qualified name of the member.
- */
- public String qualifiedName() {
- return sym.enclClass().getQualifiedName().toString();
- }
-
- /**
- * Returns a string representation of this constructor. Includes the
- * qualified signature and any type parameters.
- * Type parameters precede the class name, as they do in the syntax
- * for invoking constructors with explicit type parameters using "new".
- * (This is unlike the syntax for invoking methods with explicit type
- * parameters.)
- */
- public String toString() {
- return typeParametersString() + qualifiedName() + signature();
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/DocEnv.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,881 +0,0 @@
-/*
- * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import java.lang.reflect.Modifier;
-import java.util.*;
-
-import javax.tools.JavaFileManager;
-
-import com.sun.javadoc.*;
-import com.sun.source.tree.CompilationUnitTree;
-import com.sun.source.util.JavacTask;
-import com.sun.source.util.TreePath;
-import com.sun.tools.doclint.DocLint;
-import com.sun.tools.javac.api.BasicJavacTask;
-import com.sun.tools.javac.code.*;
-import com.sun.tools.javac.code.Symbol.*;
-import com.sun.tools.javac.code.Symbol.ClassSymbol;
-import com.sun.tools.javac.code.Symbol.CompletionFailure;
-import com.sun.tools.javac.code.Symbol.MethodSymbol;
-import com.sun.tools.javac.code.Symbol.PackageSymbol;
-import com.sun.tools.javac.code.Symbol.VarSymbol;
-import com.sun.tools.javac.code.Type.ClassType;
-import com.sun.tools.javac.comp.Check;
-import com.sun.tools.javac.comp.Enter;
-import com.sun.tools.javac.file.JavacFileManager;
-import com.sun.tools.javac.tree.JCTree;
-import com.sun.tools.javac.tree.JCTree.JCClassDecl;
-import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;
-import com.sun.tools.javac.tree.JCTree.JCPackageDecl;
-import com.sun.tools.javac.util.Context;
-import com.sun.tools.javac.util.Convert;
-import com.sun.tools.javac.util.Name;
-import com.sun.tools.javac.util.Names;
-
-/**
- * Holds the environment for a run of javadoc.
- * Holds only the information needed throughout the
- * run and not the compiler info that could be GC'ed
- * or ported.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @since 1.4
- * @author Robert Field
- * @author Neal Gafter (rewrite)
- * @author Scott Seligman (generics)
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public class DocEnv {
- protected static final Context.Key<DocEnv> docEnvKey = new Context.Key<>();
-
- public static DocEnv instance(Context context) {
- DocEnv instance = context.get(docEnvKey);
- if (instance == null)
- instance = new DocEnv(context);
- return instance;
- }
-
- DocLocale doclocale;
-
- private final Messager messager;
-
- /** Predefined symbols known to the compiler. */
- final Symtab syms;
-
- /** Referenced directly in RootDocImpl. */
- private final ClassFinder finder;
-
- /** Javadoc's own version of the compiler's enter phase. */
- final Enter enter;
-
- /** The name table. */
- private final Names names;
-
- /** The encoding name. */
- private String encoding;
-
- final Symbol externalizableSym;
-
- /** Access filter (public, protected, ...). */
- protected ModifierFilter showAccess;
-
- /** True if we are using a sentence BreakIterator. */
- boolean breakiterator;
-
- /**
- * True if we do not want to print any notifications at all.
- */
- boolean quiet = false;
-
- Check chk;
- Types types;
- JavaFileManager fileManager;
- Context context;
- DocLint doclint;
- JavaScriptScanner javaScriptScanner;
-
- WeakHashMap<JCTree, TreePath> treePaths = new WeakHashMap<>();
-
- /** Allow documenting from class files? */
- boolean docClasses = false;
-
- /** Does the doclet only expect pre-1.5 doclet API? */
- protected boolean legacyDoclet = true;
-
- /**
- * Set this to true if you would like to not emit any errors, warnings and
- * notices.
- */
- private boolean silent = false;
-
- /**
- * The source language version.
- */
- protected Source source;
-
- /**
- * Constructor
- *
- * @param context Context for this javadoc instance.
- */
- protected DocEnv(Context context) {
- context.put(docEnvKey, this);
- this.context = context;
-
- messager = Messager.instance0(context);
- syms = Symtab.instance(context);
- finder = JavadocClassFinder.instance(context);
- enter = JavadocEnter.instance(context);
- names = Names.instance(context);
- externalizableSym = syms.enterClass(syms.java_base, names.fromString("java.io.Externalizable"));
- chk = Check.instance(context);
- types = Types.instance(context);
- fileManager = context.get(JavaFileManager.class);
- if (fileManager instanceof JavacFileManager) {
- ((JavacFileManager)fileManager).setSymbolFileEnabled(false);
- }
-
- // Default. Should normally be reset with setLocale.
- this.doclocale = new DocLocale(this, "", breakiterator);
- source = Source.instance(context);
- }
-
- public void setSilent(boolean silent) {
- this.silent = silent;
- }
-
- /**
- * Look up ClassDoc by qualified name.
- */
- public ClassDocImpl lookupClass(String name) {
- ClassSymbol c = getClassSymbol(name);
- if (c != null) {
- return getClassDoc(c);
- } else {
- return null;
- }
- }
-
- /**
- * Load ClassDoc by qualified name.
- */
- public ClassDocImpl loadClass(String name) {
- try {
- Name nameImpl = names.fromString(name);
- ModuleSymbol mod = syms.inferModule(Convert.packagePart(nameImpl));
- ClassSymbol c = finder.loadClass(mod != null ? mod : syms.errModule, nameImpl);
- return getClassDoc(c);
- } catch (CompletionFailure ex) {
- chk.completionError(null, ex);
- return null;
- }
- }
-
- /**
- * Look up PackageDoc by qualified name.
- */
- public PackageDocImpl lookupPackage(String name) {
- //### Jing alleges that class check is needed
- //### to avoid a compiler bug. Most likely
- //### instead a dummy created for error recovery.
- //### Should investigate this.
- Name nameImpl = names.fromString(name);
- ModuleSymbol mod = syms.inferModule(nameImpl);
- PackageSymbol p = mod != null ? syms.getPackage(mod, nameImpl) : null;
- ClassSymbol c = getClassSymbol(name);
- if (p != null && c == null) {
- return getPackageDoc(p);
- } else {
- return null;
- }
- }
- // where
- /** Retrieve class symbol by fully-qualified name.
- */
- ClassSymbol getClassSymbol(String name) {
- // Name may contain nested class qualification.
- // Generate candidate flatnames with successively shorter
- // package qualifiers and longer nested class qualifiers.
- int nameLen = name.length();
- char[] nameChars = name.toCharArray();
- int idx = name.length();
- for (;;) {
- Name nameImpl = names.fromChars(nameChars, 0, nameLen);
- ModuleSymbol mod = syms.inferModule(Convert.packagePart(nameImpl));
- ClassSymbol s = mod != null ? syms.getClass(mod, nameImpl) : null;
- if (s != null)
- return s; // found it!
- idx = name.substring(0, idx).lastIndexOf('.');
- if (idx < 0) break;
- nameChars[idx] = '$';
- }
- return null;
- }
-
- /**
- * Set the locale.
- */
- public void setLocale(String localeName) {
- // create locale specifics
- doclocale = new DocLocale(this, localeName, breakiterator);
- // update Messager if locale has changed.
- messager.setLocale(doclocale.locale);
- }
-
- /** Check whether this member should be documented. */
- public boolean shouldDocument(VarSymbol sym) {
- long mod = sym.flags();
-
- if ((mod & Flags.SYNTHETIC) != 0) {
- return false;
- }
-
- return showAccess.checkModifier(translateModifiers(mod));
- }
-
- /** Check whether this member should be documented. */
- public boolean shouldDocument(MethodSymbol sym) {
- long mod = sym.flags();
-
- if ((mod & Flags.SYNTHETIC) != 0) {
- return false;
- }
-
- return showAccess.checkModifier(translateModifiers(mod));
- }
-
- /** check whether this class should be documented. */
- public boolean shouldDocument(ClassSymbol sym) {
- return
- (sym.flags_field&Flags.SYNTHETIC) == 0 && // no synthetics
- (docClasses || getClassDoc(sym).tree != null) &&
- isVisible(sym);
- }
-
- //### Comment below is inaccurate wrt modifier filter testing
- /**
- * Check the visibility if this is an nested class.
- * if this is not a nested class, return true.
- * if this is an static visible nested class,
- * return true.
- * if this is an visible nested class
- * if the outer class is visible return true.
- * else return false.
- * IMPORTANT: This also allows, static nested classes
- * to be defined inside an nested class, which is not
- * allowed by the compiler. So such an test case will
- * not reach upto this method itself, but if compiler
- * allows it, then that will go through.
- */
- protected boolean isVisible(ClassSymbol sym) {
- long mod = sym.flags_field;
- if (!showAccess.checkModifier(translateModifiers(mod))) {
- return false;
- }
- ClassSymbol encl = sym.owner.enclClass();
- return (encl == null || (mod & Flags.STATIC) != 0 || isVisible(encl));
- }
-
- //---------------- print forwarders ----------------//
-
- /**
- * Print error message, increment error count.
- *
- * @param msg message to print.
- */
- public void printError(String msg) {
- if (silent)
- return;
- messager.printError(msg);
- }
-
- /**
- * Print error message, increment error count.
- *
- * @param key selects message from resource
- */
- public void error(DocImpl doc, String key) {
- if (silent)
- return;
- messager.error(doc==null ? null : doc.position(), key);
- }
-
- /**
- * Print error message, increment error count.
- *
- * @param key selects message from resource
- */
- public void error(SourcePosition pos, String key) {
- if (silent)
- return;
- messager.error(pos, key);
- }
-
- /**
- * Print error message, increment error count.
- *
- * @param msg message to print.
- */
- public void printError(SourcePosition pos, String msg) {
- if (silent)
- return;
- messager.printError(pos, msg);
- }
-
- /**
- * Print error message, increment error count.
- *
- * @param key selects message from resource
- * @param a1 first argument
- */
- public void error(DocImpl doc, String key, String a1) {
- if (silent)
- return;
- messager.error(doc==null ? null : doc.position(), key, a1);
- }
-
- /**
- * Print error message, increment error count.
- *
- * @param key selects message from resource
- * @param a1 first argument
- * @param a2 second argument
- */
- public void error(DocImpl doc, String key, String a1, String a2) {
- if (silent)
- return;
- messager.error(doc==null ? null : doc.position(), key, a1, a2);
- }
-
- /**
- * Print error message, increment error count.
- *
- * @param key selects message from resource
- * @param a1 first argument
- * @param a2 second argument
- * @param a3 third argument
- */
- public void error(DocImpl doc, String key, String a1, String a2, String a3) {
- if (silent)
- return;
- messager.error(doc==null ? null : doc.position(), key, a1, a2, a3);
- }
-
- /**
- * Print warning message, increment warning count.
- *
- * @param msg message to print.
- */
- public void printWarning(String msg) {
- if (silent)
- return;
- messager.printWarning(msg);
- }
-
- /**
- * Print warning message, increment warning count.
- *
- * @param key selects message from resource
- */
- public void warning(DocImpl doc, String key) {
- if (silent)
- return;
- messager.warning(doc==null ? null : doc.position(), key);
- }
-
- /**
- * Print warning message, increment warning count.
- *
- * @param msg message to print.
- */
- public void printWarning(SourcePosition pos, String msg) {
- if (silent)
- return;
- messager.printWarning(pos, msg);
- }
-
- /**
- * Print warning message, increment warning count.
- *
- * @param key selects message from resource
- * @param a1 first argument
- */
- public void warning(DocImpl doc, String key, String a1) {
- if (silent)
- return;
- // suppress messages that have (probably) been covered by doclint
- if (doclint != null && doc != null && key.startsWith("tag"))
- return;
- messager.warning(doc==null ? null : doc.position(), key, a1);
- }
-
- /**
- * Print warning message, increment warning count.
- *
- * @param key selects message from resource
- * @param a1 first argument
- * @param a2 second argument
- */
- public void warning(DocImpl doc, String key, String a1, String a2) {
- if (silent)
- return;
- messager.warning(doc==null ? null : doc.position(), key, a1, a2);
- }
-
- /**
- * Print warning message, increment warning count.
- *
- * @param key selects message from resource
- * @param a1 first argument
- * @param a2 second argument
- * @param a3 third argument
- */
- public void warning(DocImpl doc, String key, String a1, String a2, String a3) {
- if (silent)
- return;
- messager.warning(doc==null ? null : doc.position(), key, a1, a2, a3);
- }
-
- /**
- * Print warning message, increment warning count.
- *
- * @param key selects message from resource
- * @param a1 first argument
- * @param a2 second argument
- * @param a3 third argument
- */
- public void warning(DocImpl doc, String key, String a1, String a2, String a3,
- String a4) {
- if (silent)
- return;
- messager.warning(doc==null ? null : doc.position(), key, a1, a2, a3, a4);
- }
-
- /**
- * Print a message.
- *
- * @param msg message to print.
- */
- public void printNotice(String msg) {
- if (silent || quiet)
- return;
- messager.printNotice(msg);
- }
-
-
- /**
- * Print a message.
- *
- * @param key selects message from resource
- */
- public void notice(String key) {
- if (silent || quiet)
- return;
- messager.notice(key);
- }
-
- /**
- * Print a message.
- *
- * @param msg message to print.
- */
- public void printNotice(SourcePosition pos, String msg) {
- if (silent || quiet)
- return;
- messager.printNotice(pos, msg);
- }
-
- /**
- * Print a message.
- *
- * @param key selects message from resource
- * @param a1 first argument
- */
- public void notice(String key, String a1) {
- if (silent || quiet)
- return;
- messager.notice(key, a1);
- }
-
- /**
- * Print a message.
- *
- * @param key selects message from resource
- * @param a1 first argument
- * @param a2 second argument
- */
- public void notice(String key, String a1, String a2) {
- if (silent || quiet)
- return;
- messager.notice(key, a1, a2);
- }
-
- /**
- * Print a message.
- *
- * @param key selects message from resource
- * @param a1 first argument
- * @param a2 second argument
- * @param a3 third argument
- */
- public void notice(String key, String a1, String a2, String a3) {
- if (silent || quiet)
- return;
- messager.notice(key, a1, a2, a3);
- }
-
- /**
- * Exit, reporting errors and warnings.
- */
- public void exit() {
- // Messager should be replaced by a more general
- // compilation environment. This can probably
- // subsume DocEnv as well.
- messager.exit();
- }
-
- protected Map<PackageSymbol, PackageDocImpl> packageMap = new HashMap<>();
- /**
- * Return the PackageDoc of this package symbol.
- */
- public PackageDocImpl getPackageDoc(PackageSymbol pack) {
- PackageDocImpl result = packageMap.get(pack);
- if (result != null) return result;
- result = new PackageDocImpl(this, pack);
- packageMap.put(pack, result);
- return result;
- }
-
- /**
- * Create the PackageDoc (or a subtype) for a package symbol.
- */
- void makePackageDoc(PackageSymbol pack, TreePath treePath) {
- PackageDocImpl result = packageMap.get(pack);
- if (result != null) {
- if (treePath != null) result.setTreePath(treePath);
- } else {
- result = new PackageDocImpl(this, pack, treePath);
- packageMap.put(pack, result);
- }
- }
-
-
- protected Map<ClassSymbol, ClassDocImpl> classMap = new HashMap<>();
- /**
- * Return the ClassDoc (or a subtype) of this class symbol.
- */
- public ClassDocImpl getClassDoc(ClassSymbol clazz) {
- ClassDocImpl result = classMap.get(clazz);
- if (result != null) return result;
- if (isAnnotationType(clazz)) {
- result = new AnnotationTypeDocImpl(this, clazz);
- } else {
- result = new ClassDocImpl(this, clazz);
- }
- classMap.put(clazz, result);
- return result;
- }
-
- /**
- * Create the ClassDoc (or a subtype) for a class symbol.
- */
- protected void makeClassDoc(ClassSymbol clazz, TreePath treePath) {
- ClassDocImpl result = classMap.get(clazz);
- if (result != null) {
- if (treePath != null) result.setTreePath(treePath);
- return;
- }
- if (isAnnotationType((JCClassDecl) treePath.getLeaf())) { // flags of clazz may not yet be set
- result = new AnnotationTypeDocImpl(this, clazz, treePath);
- } else {
- result = new ClassDocImpl(this, clazz, treePath);
- }
- classMap.put(clazz, result);
- }
-
- protected static boolean isAnnotationType(ClassSymbol clazz) {
- return ClassDocImpl.isAnnotationType(clazz);
- }
-
- protected static boolean isAnnotationType(JCClassDecl tree) {
- return (tree.mods.flags & Flags.ANNOTATION) != 0;
- }
-
- protected Map<VarSymbol, FieldDocImpl> fieldMap = new HashMap<>();
- /**
- * Return the FieldDoc of this var symbol.
- */
- public FieldDocImpl getFieldDoc(VarSymbol var) {
- FieldDocImpl result = fieldMap.get(var);
- if (result != null) return result;
- result = new FieldDocImpl(this, var);
- fieldMap.put(var, result);
- return result;
- }
- /**
- * Create a FieldDoc for a var symbol.
- */
- protected void makeFieldDoc(VarSymbol var, TreePath treePath) {
- FieldDocImpl result = fieldMap.get(var);
- if (result != null) {
- if (treePath != null) result.setTreePath(treePath);
- } else {
- result = new FieldDocImpl(this, var, treePath);
- fieldMap.put(var, result);
- }
- }
-
- protected Map<MethodSymbol, ExecutableMemberDocImpl> methodMap = new HashMap<>();
- /**
- * Create a MethodDoc for this MethodSymbol.
- * Should be called only on symbols representing methods.
- */
- protected void makeMethodDoc(MethodSymbol meth, TreePath treePath) {
- MethodDocImpl result = (MethodDocImpl)methodMap.get(meth);
- if (result != null) {
- if (treePath != null) result.setTreePath(treePath);
- } else {
- result = new MethodDocImpl(this, meth, treePath);
- methodMap.put(meth, result);
- }
- }
-
- /**
- * Return the MethodDoc for a MethodSymbol.
- * Should be called only on symbols representing methods.
- */
- public MethodDocImpl getMethodDoc(MethodSymbol meth) {
- assert !meth.isConstructor() : "not expecting a constructor symbol";
- MethodDocImpl result = (MethodDocImpl)methodMap.get(meth);
- if (result != null) return result;
- result = new MethodDocImpl(this, meth);
- methodMap.put(meth, result);
- return result;
- }
-
- /**
- * Create the ConstructorDoc for a MethodSymbol.
- * Should be called only on symbols representing constructors.
- */
- protected void makeConstructorDoc(MethodSymbol meth, TreePath treePath) {
- ConstructorDocImpl result = (ConstructorDocImpl)methodMap.get(meth);
- if (result != null) {
- if (treePath != null) result.setTreePath(treePath);
- } else {
- result = new ConstructorDocImpl(this, meth, treePath);
- methodMap.put(meth, result);
- }
- }
-
- /**
- * Return the ConstructorDoc for a MethodSymbol.
- * Should be called only on symbols representing constructors.
- */
- public ConstructorDocImpl getConstructorDoc(MethodSymbol meth) {
- assert meth.isConstructor() : "expecting a constructor symbol";
- ConstructorDocImpl result = (ConstructorDocImpl)methodMap.get(meth);
- if (result != null) return result;
- result = new ConstructorDocImpl(this, meth);
- methodMap.put(meth, result);
- return result;
- }
-
- /**
- * Create the AnnotationTypeElementDoc for a MethodSymbol.
- * Should be called only on symbols representing annotation type elements.
- */
- protected void makeAnnotationTypeElementDoc(MethodSymbol meth, TreePath treePath) {
- AnnotationTypeElementDocImpl result =
- (AnnotationTypeElementDocImpl)methodMap.get(meth);
- if (result != null) {
- if (treePath != null) result.setTreePath(treePath);
- } else {
- result =
- new AnnotationTypeElementDocImpl(this, meth, treePath);
- methodMap.put(meth, result);
- }
- }
-
- /**
- * Return the AnnotationTypeElementDoc for a MethodSymbol.
- * Should be called only on symbols representing annotation type elements.
- */
- public AnnotationTypeElementDocImpl getAnnotationTypeElementDoc(
- MethodSymbol meth) {
-
- AnnotationTypeElementDocImpl result =
- (AnnotationTypeElementDocImpl)methodMap.get(meth);
- if (result != null) return result;
- result = new AnnotationTypeElementDocImpl(this, meth);
- methodMap.put(meth, result);
- return result;
- }
-
-// private Map<ClassType, ParameterizedTypeImpl> parameterizedTypeMap =
-// new HashMap<ClassType, ParameterizedTypeImpl>();
- /**
- * Return the ParameterizedType of this instantiation.
-// * ### Could use Type.sameTypeAs() instead of equality matching in hashmap
-// * ### to avoid some duplication.
- */
- ParameterizedTypeImpl getParameterizedType(ClassType t) {
- return new ParameterizedTypeImpl(this, t);
-// ParameterizedTypeImpl result = parameterizedTypeMap.get(t);
-// if (result != null) return result;
-// result = new ParameterizedTypeImpl(this, t);
-// parameterizedTypeMap.put(t, result);
-// return result;
- }
-
- TreePath getTreePath(JCCompilationUnit tree) {
- TreePath p = treePaths.get(tree);
- if (p == null)
- treePaths.put(tree, p = new TreePath(tree));
- return p;
- }
-
- TreePath getTreePath(JCCompilationUnit toplevel, JCPackageDecl tree) {
- TreePath p = treePaths.get(tree);
- if (p == null)
- treePaths.put(tree, p = new TreePath(getTreePath(toplevel), tree));
- return p;
- }
-
- TreePath getTreePath(JCCompilationUnit toplevel, JCClassDecl tree) {
- TreePath p = treePaths.get(tree);
- if (p == null)
- treePaths.put(tree, p = new TreePath(getTreePath(toplevel), tree));
- return p;
- }
-
- TreePath getTreePath(JCCompilationUnit toplevel, JCClassDecl cdecl, JCTree tree) {
- return new TreePath(getTreePath(toplevel, cdecl), tree);
- }
-
- /**
- * Set the encoding.
- */
- public void setEncoding(String encoding) {
- this.encoding = encoding;
- }
-
- /**
- * Get the encoding.
- */
- public String getEncoding() {
- return encoding;
- }
-
- /**
- * Convert modifier bits from private coding used by
- * the compiler to that of java.lang.reflect.Modifier.
- */
- static int translateModifiers(long flags) {
- int result = 0;
- if ((flags & Flags.ABSTRACT) != 0)
- result |= Modifier.ABSTRACT;
- if ((flags & Flags.FINAL) != 0)
- result |= Modifier.FINAL;
- if ((flags & Flags.INTERFACE) != 0)
- result |= Modifier.INTERFACE;
- if ((flags & Flags.NATIVE) != 0)
- result |= Modifier.NATIVE;
- if ((flags & Flags.PRIVATE) != 0)
- result |= Modifier.PRIVATE;
- if ((flags & Flags.PROTECTED) != 0)
- result |= Modifier.PROTECTED;
- if ((flags & Flags.PUBLIC) != 0)
- result |= Modifier.PUBLIC;
- if ((flags & Flags.STATIC) != 0)
- result |= Modifier.STATIC;
- if ((flags & Flags.SYNCHRONIZED) != 0)
- result |= Modifier.SYNCHRONIZED;
- if ((flags & Flags.TRANSIENT) != 0)
- result |= Modifier.TRANSIENT;
- if ((flags & Flags.VOLATILE) != 0)
- result |= Modifier.VOLATILE;
- return result;
- }
-
- void initDoclint(Collection<String> opts, Collection<String> customTagNames, String htmlVersion) {
- ArrayList<String> doclintOpts = new ArrayList<>();
- boolean msgOptionSeen = false;
-
- for (String opt : opts) {
- if (opt.startsWith(DocLint.XMSGS_OPTION)) {
- if (opt.equals(DocLint.XMSGS_CUSTOM_PREFIX + "none"))
- return;
- msgOptionSeen = true;
- }
- doclintOpts.add(opt);
- }
-
- if (!msgOptionSeen) {
- doclintOpts.add(DocLint.XMSGS_OPTION);
- }
-
- String sep = "";
- StringBuilder customTags = new StringBuilder();
- for (String customTag : customTagNames) {
- customTags.append(sep);
- customTags.append(customTag);
- sep = DocLint.SEPARATOR;
- }
- doclintOpts.add(DocLint.XCUSTOM_TAGS_PREFIX + customTags.toString());
- doclintOpts.add(DocLint.XHTML_VERSION_PREFIX + htmlVersion);
-
- JavacTask t = BasicJavacTask.instance(context);
- doclint = new DocLint();
- // standard doclet normally generates H1, H2
- doclintOpts.add(DocLint.XIMPLICIT_HEADERS + "2");
- doclint.init(t, doclintOpts.toArray(new String[doclintOpts.size()]), false);
- }
-
- JavaScriptScanner initJavaScriptScanner(boolean allowScriptInComments) {
- if (allowScriptInComments) {
- javaScriptScanner = null;
- } else {
- javaScriptScanner = new JavaScriptScanner();
- }
- return javaScriptScanner;
- }
-
- boolean showTagMessages() {
- return (doclint == null);
- }
-
- Map<CompilationUnitTree, Boolean> shouldCheck = new HashMap<>();
-
- boolean shouldCheck(CompilationUnitTree unit) {
- return shouldCheck.computeIfAbsent(unit, doclint :: shouldCheck);
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/DocImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,455 +0,0 @@
-/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import java.io.DataInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.text.CollationKey;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import javax.tools.FileObject;
-
-import com.sun.javadoc.*;
-import com.sun.source.util.TreePath;
-import com.sun.tools.javac.tree.JCTree;
-import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;
-import com.sun.tools.javac.util.Position;
-
-/**
- * abstract base class of all Doc classes. Doc item's are representations
- * of java language constructs (class, package, method,...) which have
- * comments and have been processed by this run of javadoc. All Doc items
- * are unique, that is, they are == comparable.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @since 1.2
- * @author Robert Field
- * @author Atul M Dambalkar
- * @author Neal Gafter (rewrite)
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public abstract class DocImpl implements Doc, Comparable<Object> {
-
- /**
- * Doc environment
- */
- protected final DocEnv env; //### Rename this everywhere to 'docenv' ?
-
- /**
- * Back pointer to the tree node for this doc item.
- * May be null if there is no associated tree.
- */
- protected TreePath treePath;
-
- /**
- * The complex comment object, lazily initialized.
- */
- private Comment comment;
-
- /**
- * The cached sort key, to take care of Natural Language Text sorting.
- */
- private CollationKey collationkey = null;
-
- /**
- * Raw documentation string.
- */
- protected String documentation; // Accessed in PackageDocImpl, RootDocImpl
-
- /**
- * Cached first sentence.
- */
- private Tag[] firstSentence;
-
- /**
- * Cached inline tags.
- */
- private Tag[] inlineTags;
-
- /**
- * Constructor.
- */
- DocImpl(DocEnv env, TreePath treePath) {
- this.treePath = treePath;
- this.documentation = getCommentText(treePath);
- this.env = env;
- }
-
- private static String getCommentText(TreePath p) {
- if (p == null)
- return null;
-
- JCCompilationUnit topLevel = (JCCompilationUnit) p.getCompilationUnit();
- JCTree tree = (JCTree) p.getLeaf();
- return topLevel.docComments.getCommentText(tree);
- }
-
- /**
- * So subclasses have the option to do lazy initialization of
- * "documentation" string.
- */
- protected String documentation() {
- if (documentation == null) documentation = "";
- return documentation;
- }
-
- /**
- * For lazy initialization of comment.
- */
- Comment comment() {
- if (comment == null) {
- String d = documentation();
- if (env.javaScriptScanner != null) {
- env.javaScriptScanner.parse(d, new JavaScriptScanner.Reporter() {
- @Override
- public void report() {
- env.error(DocImpl.this, "javadoc.JavaScript_in_comment");
- throw new Error();
- }
- });
- }
- if (env.doclint != null
- && treePath != null
- && env.shouldCheck(treePath.getCompilationUnit())
- && d.equals(getCommentText(treePath))) {
- env.doclint.scan(treePath);
- }
- comment = new Comment(this, d);
- }
- return comment;
- }
-
- /**
- * Return the text of the comment for this doc item.
- * TagImpls have been removed.
- */
- public String commentText() {
- return comment().commentText();
- }
-
- /**
- * Return all tags in this Doc item.
- *
- * @return an array of TagImpl containing all tags on this Doc item.
- */
- public Tag[] tags() {
- return comment().tags();
- }
-
- /**
- * Return tags of the specified kind in this Doc item.
- *
- * @param tagname name of the tag kind to search for.
- * @return an array of TagImpl containing all tags whose 'kind()'
- * matches 'tagname'.
- */
- public Tag[] tags(String tagname) {
- return comment().tags(tagname);
- }
-
- /**
- * Return the see also tags in this Doc item.
- *
- * @return an array of SeeTag containing all @see tags.
- */
- public SeeTag[] seeTags() {
- return comment().seeTags();
- }
-
- public Tag[] inlineTags() {
- if (inlineTags == null) {
- inlineTags = Comment.getInlineTags(this, commentText());
- }
- return inlineTags;
- }
-
- public Tag[] firstSentenceTags() {
- if (firstSentence == null) {
- //Parse all sentences first to avoid duplicate warnings.
- inlineTags();
- try {
- env.setSilent(true);
- firstSentence = Comment.firstSentenceTags(this, commentText());
- } finally {
- env.setSilent(false);
- }
- }
- return firstSentence;
- }
-
- /**
- * Utility for subclasses which read HTML documentation files.
- */
- String readHTMLDocumentation(InputStream input, FileObject filename) throws IOException {
- byte[] filecontents = new byte[input.available()];
- try {
- DataInputStream dataIn = new DataInputStream(input);
- dataIn.readFully(filecontents);
- } finally {
- input.close();
- }
- String encoding = env.getEncoding();
- String rawDoc = (encoding!=null)
- ? new String(filecontents, encoding)
- : new String(filecontents);
- Pattern bodyPat = Pattern.compile("(?is).*<body\\b[^>]*>(.*)</body\\b.*");
- Matcher m = bodyPat.matcher(rawDoc);
- if (m.matches()) {
- return m.group(1);
- } else {
- String key = rawDoc.matches("(?is).*<body\\b.*")
- ? "javadoc.End_body_missing_from_html_file"
- : "javadoc.Body_missing_from_html_file";
- env.error(SourcePositionImpl.make(filename, Position.NOPOS, null), key);
- return "";
- }
- }
-
- /**
- * Return the full unprocessed text of the comment. Tags
- * are included as text. Used mainly for store and retrieve
- * operations like internalization.
- */
- public String getRawCommentText() {
- return documentation();
- }
-
- /**
- * Set the full unprocessed text of the comment. Tags
- * are included as text. Used mainly for store and retrieve
- * operations like internalization.
- */
- public void setRawCommentText(String rawDocumentation) {
- treePath = null;
- documentation = rawDocumentation;
- comment = null;
- }
-
- /**
- * Set the full unprocessed text of the comment and tree path.
- */
- void setTreePath(TreePath treePath) {
- this.treePath = treePath;
- documentation = getCommentText(treePath);
- comment = null;
- }
-
- /**
- * return a key for sorting.
- */
- CollationKey key() {
- if (collationkey == null) {
- collationkey = generateKey();
- }
- return collationkey;
- }
-
- /**
- * Generate a key for sorting.
- * <p>
- * Default is name().
- */
- CollationKey generateKey() {
- String k = name();
- // System.out.println("COLLATION KEY FOR " + this + " is \"" + k + "\"");
- return env.doclocale.collator.getCollationKey(k);
- }
-
- /**
- * Returns a string representation of this Doc item.
- */
- @Override
- public String toString() {
- return qualifiedName();
- }
-
- /**
- * Returns the name of this Doc item.
- *
- * @return the name
- */
- public abstract String name();
-
- /**
- * Returns the qualified name of this Doc item.
- *
- * @return the name
- */
- public abstract String qualifiedName();
-
- /**
- * Compares this Object with the specified Object for order. Returns a
- * negative integer, zero, or a positive integer as this Object is less
- * than, equal to, or greater than the given Object.
- * <p>
- * Included so that Doc item are java.lang.Comparable.
- *
- * @param obj the {@code Object} to be compared.
- * @return a negative integer, zero, or a positive integer as this Object
- * is less than, equal to, or greater than the given Object.
- * @exception ClassCastException the specified Object's type prevents it
- * from being compared to this Object.
- */
- public int compareTo(Object obj) {
- // System.out.println("COMPARE \"" + this + "\" to \"" + obj + "\" = " + key().compareTo(((DocImpl)obj).key()));
- return key().compareTo(((DocImpl)obj).key());
- }
-
- /**
- * Is this Doc item a field? False until overridden.
- *
- * @return true if it represents a field
- */
- public boolean isField() {
- return false;
- }
-
- /**
- * Is this Doc item an enum constant? False until overridden.
- *
- * @return true if it represents an enum constant
- */
- public boolean isEnumConstant() {
- return false;
- }
-
- /**
- * Is this Doc item a constructor? False until overridden.
- *
- * @return true if it represents a constructor
- */
- public boolean isConstructor() {
- return false;
- }
-
- /**
- * Is this Doc item a method (but not a constructor or annotation
- * type element)?
- * False until overridden.
- *
- * @return true if it represents a method
- */
- public boolean isMethod() {
- return false;
- }
-
- /**
- * Is this Doc item an annotation type element?
- * False until overridden.
- *
- * @return true if it represents an annotation type element
- */
- public boolean isAnnotationTypeElement() {
- return false;
- }
-
- /**
- * Is this Doc item a interface (but not an annotation type)?
- * False until overridden.
- *
- * @return true if it represents a interface
- */
- public boolean isInterface() {
- return false;
- }
-
- /**
- * Is this Doc item a exception class? False until overridden.
- *
- * @return true if it represents a exception
- */
- public boolean isException() {
- return false;
- }
-
- /**
- * Is this Doc item a error class? False until overridden.
- *
- * @return true if it represents a error
- */
- public boolean isError() {
- return false;
- }
-
- /**
- * Is this Doc item an enum type? False until overridden.
- *
- * @return true if it represents an enum type
- */
- public boolean isEnum() {
- return false;
- }
-
- /**
- * Is this Doc item an annotation type? False until overridden.
- *
- * @return true if it represents an annotation type
- */
- public boolean isAnnotationType() {
- return false;
- }
-
- /**
- * Is this Doc item an ordinary class (i.e. not an interface,
- * annotation type, enumeration, exception, or error)?
- * False until overridden.
- *
- * @return true if it represents an ordinary class
- */
- public boolean isOrdinaryClass() {
- return false;
- }
-
- /**
- * Is this Doc item a class
- * (and not an interface or annotation type)?
- * This includes ordinary classes, enums, errors and exceptions.
- * False until overridden.
- *
- * @return true if it represents a class
- */
- public boolean isClass() {
- return false;
- }
-
- /**
- * return true if this Doc is include in the active set.
- */
- public abstract boolean isIncluded();
-
- /**
- * Return the source position of the entity, or null if
- * no position is available.
- */
- public SourcePosition position() { return null; }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/DocLocale.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,243 +0,0 @@
-/*
- * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import java.text.BreakIterator;
-import java.text.Collator;
-import java.util.Locale;
-
-/**
- * This class holds the information about locales.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @since 1.4
- * @author Robert Field
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-class DocLocale {
-
- /**
- * The locale name will be set by Main, if option is provided on the
- * command line.
- */
- final String localeName;
-
- /**
- * The locale to be used. If user doesn't provide this,
- * then set it to default locale value.
- */
- final Locale locale;
-
- /**
- * The collator for this application. This is to take care of Locale
- * Specific or Natural Language Text sorting.
- */
- final Collator collator;
-
- /**
- * Enclosing DocEnv
- */
- private final DocEnv docenv;
-
- /**
- * Sentence instance from the BreakIterator.
- */
- private final BreakIterator sentenceBreaker;
-
- /**
- * True is we should use <code>BreakIterator</code>
- * to compute first sentence.
- */
- private boolean useBreakIterator = false;
-
- /**
- * The HTML sentence terminators.
- */
- static final String[] sentenceTerminators =
- {
- "<p>", "</p>", "<h1>", "<h2>",
- "<h3>", "<h4>", "<h5>", "<h6>",
- "</h1>", "</h2>", "</h3>", "</h4>", "</h5>",
- "</h6>", "<hr>", "<pre>", "</pre>"
- };
-
- /**
- * Constructor
- */
- DocLocale(DocEnv docenv, String localeName, boolean useBreakIterator) {
- this.docenv = docenv;
- this.localeName = localeName;
- this.useBreakIterator = useBreakIterator;
- locale = getLocale();
- if (locale == null) {
- docenv.exit();
- } else {
- Locale.setDefault(locale); // NOTE: updating global state
- }
- collator = Collator.getInstance(locale);
- sentenceBreaker = BreakIterator.getSentenceInstance(locale);
- }
-
- /**
- * Get the locale if specified on the command line
- * else return null and if locale option is not used
- * then return default locale.
- */
- private Locale getLocale() {
- Locale userlocale = null;
- if (localeName.length() > 0) {
- int firstuscore = localeName.indexOf('_');
- int seconduscore = -1;
- String language = null;
- String country = null;
- String variant = null;
- if (firstuscore == 2) {
- language = localeName.substring(0, firstuscore);
- seconduscore = localeName.indexOf('_', firstuscore + 1);
- if (seconduscore > 0) {
- if (seconduscore != firstuscore + 3 ||
- localeName.length() <= seconduscore + 1) {
- docenv.error(null, "main.malformed_locale_name", localeName);
- return null;
- }
- country = localeName.substring(firstuscore + 1,
- seconduscore);
- variant = localeName.substring(seconduscore + 1);
- } else if (localeName.length() == firstuscore + 3) {
- country = localeName.substring(firstuscore + 1);
- } else {
- docenv.error(null, "main.malformed_locale_name", localeName);
- return null;
- }
- } else if (firstuscore == -1 && localeName.length() == 2) {
- language = localeName;
- } else {
- docenv.error(null, "main.malformed_locale_name", localeName);
- return null;
- }
- userlocale = searchLocale(language, country, variant);
- if (userlocale == null) {
- docenv.error(null, "main.illegal_locale_name", localeName);
- return null;
- } else {
- return userlocale;
- }
- } else {
- return Locale.getDefault();
- }
- }
-
- /**
- * Search the locale for specified language, specified country and
- * specified variant.
- */
- private Locale searchLocale(String language, String country,
- String variant) {
- for (Locale loc : Locale.getAvailableLocales()) {
- if (loc.getLanguage().equals(language) &&
- (country == null || loc.getCountry().equals(country)) &&
- (variant == null || loc.getVariant().equals(variant))) {
- return loc;
- }
- }
- return null;
- }
-
- String localeSpecificFirstSentence(DocImpl doc, String s) {
- if (s == null || s.length() == 0) {
- return "";
- }
- int index = s.indexOf("-->");
- if(s.trim().startsWith("<!--") && index != -1) {
- return localeSpecificFirstSentence(doc, s.substring(index + 3, s.length()));
- }
- if (useBreakIterator || !locale.getLanguage().equals("en")) {
- sentenceBreaker.setText(s.replace('\n', ' '));
- int start = sentenceBreaker.first();
- int end = sentenceBreaker.next();
- return s.substring(start, end).trim();
- } else {
- return englishLanguageFirstSentence(s).trim();
- }
- }
-
- /**
- * Return the first sentence of a string, where a sentence ends
- * with a period followed be white space.
- */
- private String englishLanguageFirstSentence(String s) {
- if (s == null) {
- return null;
- }
- int len = s.length();
- boolean period = false;
- for (int i = 0 ; i < len ; i++) {
- switch (s.charAt(i)) {
- case '.':
- period = true;
- break;
- case ' ':
- case '\t':
- case '\n':
- case '\r':
- case '\f':
- if (period) {
- return s.substring(0, i);
- }
- break;
- case '<':
- if (i > 0) {
- if (htmlSentenceTerminatorFound(s, i)) {
- return s.substring(0, i);
- }
- }
- break;
- default:
- period = false;
- }
- }
- return s;
- }
-
- /**
- * Find out if there is any HTML tag in the given string. If found
- * return true else return false.
- */
- private boolean htmlSentenceTerminatorFound(String str, int index) {
- for (String terminator : sentenceTerminators) {
- if (str.regionMatches(true, index, terminator,
- 0, terminator.length())) {
- return true;
- }
- }
- return false;
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/DocletInvoker.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,438 +0,0 @@
-/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import java.io.File;
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.regex.Pattern;
-
-import javax.tools.DocumentationTool;
-import javax.tools.JavaFileManager;
-
-import com.sun.javadoc.*;
-import com.sun.tools.javac.util.ClientCodeException;
-import com.sun.tools.javac.util.List;
-
-/**
- * Class creates, controls and invokes doclets.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @author Neal Gafter (rewrite)
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public class DocletInvoker {
-
- private final Class<?> docletClass;
-
- private final String docletClassName;
-
- private final ClassLoader appClassLoader;
-
- private final Messager messager;
-
- /**
- * In API mode, exceptions thrown while calling the doclet are
- * propagated using ClientCodeException.
- */
- private final boolean apiMode;
-
- /**
- * Whether javadoc internal API should be exported to doclets
- * and (indirectly) to taglets
- */
- private final boolean exportInternalAPI;
-
- private static class DocletInvokeException extends Exception {
- private static final long serialVersionUID = 0;
- }
-
- private String appendPath(String path1, String path2) {
- if (path1 == null || path1.length() == 0) {
- return path2 == null ? "." : path2;
- } else if (path2 == null || path2.length() == 0) {
- return path1;
- } else {
- return path1 + File.pathSeparator + path2;
- }
- }
-
- public DocletInvoker(Messager messager, Class<?> docletClass, boolean apiMode, boolean exportInternalAPI) {
- this.messager = messager;
- this.docletClass = docletClass;
- docletClassName = docletClass.getName();
- appClassLoader = null;
- this.apiMode = apiMode;
- this.exportInternalAPI = exportInternalAPI; // for backdoor use by standard doclet for taglets
-
- // this may not be soon enough if the class has already been loaded
- if (exportInternalAPI) {
- exportInternalAPI(docletClass.getClassLoader());
- }
- }
-
- public DocletInvoker(Messager messager, JavaFileManager fileManager,
- String docletClassName, String docletPath,
- ClassLoader docletParentClassLoader,
- boolean apiMode,
- boolean exportInternalAPI) {
- this.messager = messager;
- this.docletClassName = docletClassName;
- this.apiMode = apiMode;
- this.exportInternalAPI = exportInternalAPI; // for backdoor use by standard doclet for taglets
-
- if (fileManager != null && fileManager.hasLocation(DocumentationTool.Location.DOCLET_PATH)) {
- appClassLoader = fileManager.getClassLoader(DocumentationTool.Location.DOCLET_PATH);
- } else {
- // construct class loader
- String cpString = null; // make sure env.class.path defaults to dot
-
- // do prepends to get correct ordering
- cpString = appendPath(System.getProperty("env.class.path"), cpString);
- cpString = appendPath(System.getProperty("java.class.path"), cpString);
- cpString = appendPath(docletPath, cpString);
- URL[] urls = pathToURLs(cpString);
- if (docletParentClassLoader == null)
- appClassLoader = new URLClassLoader(urls, getDelegationClassLoader(docletClassName));
- else
- appClassLoader = new URLClassLoader(urls, docletParentClassLoader);
- }
-
- if (exportInternalAPI) {
- exportInternalAPI(appClassLoader);
- }
-
- // attempt to find doclet
- Class<?> dc = null;
- try {
- dc = appClassLoader.loadClass(docletClassName);
- } catch (ClassNotFoundException exc) {
- messager.error(Messager.NOPOS, "main.doclet_class_not_found", docletClassName);
- messager.exit();
- }
- docletClass = dc;
- }
-
- /*
- * Returns the delegation class loader to use when creating
- * appClassLoader (used to load the doclet). The context class
- * loader is the best choice, but legacy behavior was to use the
- * default delegation class loader (aka system class loader).
- *
- * Here we favor using the context class loader. To ensure
- * compatibility with existing apps, we revert to legacy
- * behavior if either or both of the following conditions hold:
- *
- * 1) the doclet is loadable from the system class loader but not
- * from the context class loader,
- *
- * 2) this.getClass() is loadable from the system class loader but not
- * from the context class loader.
- */
- private ClassLoader getDelegationClassLoader(String docletClassName) {
- ClassLoader ctxCL = Thread.currentThread().getContextClassLoader();
- ClassLoader sysCL = ClassLoader.getSystemClassLoader();
- if (sysCL == null)
- return ctxCL;
- if (ctxCL == null)
- return sysCL;
-
- // Condition 1.
- try {
- sysCL.loadClass(docletClassName);
- try {
- ctxCL.loadClass(docletClassName);
- } catch (ClassNotFoundException e) {
- return sysCL;
- }
- } catch (ClassNotFoundException e) {
- }
-
- // Condition 2.
- try {
- if (getClass() == sysCL.loadClass(getClass().getName())) {
- try {
- if (getClass() != ctxCL.loadClass(getClass().getName()))
- return sysCL;
- } catch (ClassNotFoundException e) {
- return sysCL;
- }
- }
- } catch (ClassNotFoundException e) {
- }
-
- return ctxCL;
- }
-
- /**
- * Generate documentation here. Return true on success.
- */
- public boolean start(RootDoc root) {
- Object retVal;
- String methodName = "start";
- Class<?>[] paramTypes = { RootDoc.class };
- Object[] params = { root };
- try {
- retVal = invoke(methodName, null, paramTypes, params);
- } catch (DocletInvokeException exc) {
- return false;
- }
- if (retVal instanceof Boolean) {
- return ((Boolean)retVal);
- } else {
- messager.error(Messager.NOPOS, "main.must_return_boolean",
- docletClassName, methodName);
- return false;
- }
- }
-
- /**
- * Check for doclet added options here. Zero return means
- * option not known. Positive value indicates number of
- * arguments to option. Negative value means error occurred.
- */
- public int optionLength(String option) {
- Object retVal;
- String methodName = "optionLength";
- Class<?>[] paramTypes = { String.class };
- Object[] params = { option };
- try {
- retVal = invoke(methodName, 0, paramTypes, params);
- } catch (DocletInvokeException exc) {
- return -1;
- }
- if (retVal instanceof Integer) {
- return ((Integer)retVal);
- } else {
- messager.error(Messager.NOPOS, "main.must_return_int",
- docletClassName, methodName);
- return -1;
- }
- }
-
- /**
- * Let doclet check that all options are OK. Returning true means
- * options are OK. If method does not exist, assume true.
- */
- public boolean validOptions(List<String[]> optlist) {
- Object retVal;
- String options[][] = optlist.toArray(new String[optlist.length()][]);
- String methodName = "validOptions";
- DocErrorReporter reporter = messager;
- Class<?>[] paramTypes = { String[][].class, DocErrorReporter.class };
- Object[] params = { options, reporter };
- try {
- retVal = invoke(methodName, Boolean.TRUE, paramTypes, params);
- } catch (DocletInvokeException exc) {
- return false;
- }
- if (retVal instanceof Boolean) {
- return ((Boolean)retVal);
- } else {
- messager.error(Messager.NOPOS, "main.must_return_boolean",
- docletClassName, methodName);
- return false;
- }
- }
-
- /**
- * Return the language version supported by this doclet.
- * If the method does not exist in the doclet, assume version 1.1.
- */
- public LanguageVersion languageVersion() {
- try {
- Object retVal;
- String methodName = "languageVersion";
- Class<?>[] paramTypes = new Class<?>[0];
- Object[] params = new Object[0];
- try {
- retVal = invoke(methodName, LanguageVersion.JAVA_1_1, paramTypes, params);
- } catch (DocletInvokeException exc) {
- return LanguageVersion.JAVA_1_1;
- }
- if (retVal instanceof LanguageVersion) {
- return (LanguageVersion)retVal;
- } else {
- messager.error(Messager.NOPOS, "main.must_return_languageversion",
- docletClassName, methodName);
- return LanguageVersion.JAVA_1_1;
- }
- } catch (NoClassDefFoundError ex) { // for boostrapping, no Enum class.
- return null;
- }
- }
-
- /**
- * Utility method for calling doclet functionality
- */
- private Object invoke(String methodName, Object returnValueIfNonExistent,
- Class<?>[] paramTypes, Object[] params)
- throws DocletInvokeException {
- Method meth;
- try {
- meth = docletClass.getMethod(methodName, paramTypes);
- } catch (NoSuchMethodException exc) {
- if (returnValueIfNonExistent == null) {
- messager.error(Messager.NOPOS, "main.doclet_method_not_found",
- docletClassName, methodName);
- throw new DocletInvokeException();
- } else {
- return returnValueIfNonExistent;
- }
- } catch (SecurityException exc) {
- messager.error(Messager.NOPOS, "main.doclet_method_not_accessible",
- docletClassName, methodName);
- throw new DocletInvokeException();
- }
- if (!Modifier.isStatic(meth.getModifiers())) {
- messager.error(Messager.NOPOS, "main.doclet_method_must_be_static",
- docletClassName, methodName);
- throw new DocletInvokeException();
- }
- ClassLoader savedCCL =
- Thread.currentThread().getContextClassLoader();
- try {
- if (appClassLoader != null) // will be null if doclet class provided via API
- Thread.currentThread().setContextClassLoader(appClassLoader);
- return meth.invoke(null , params);
- } catch (IllegalArgumentException | NullPointerException exc) {
- messager.error(Messager.NOPOS, "main.internal_error_exception_thrown",
- docletClassName, methodName, exc.toString());
- throw new DocletInvokeException();
- } catch (IllegalAccessException exc) {
- messager.error(Messager.NOPOS, "main.doclet_method_not_accessible",
- docletClassName, methodName);
- throw new DocletInvokeException();
- }
- catch (InvocationTargetException exc) {
- Throwable err = exc.getTargetException();
- if (apiMode)
- throw new ClientCodeException(err);
- if (err instanceof java.lang.OutOfMemoryError) {
- messager.error(Messager.NOPOS, "main.out.of.memory");
- } else {
- messager.error(Messager.NOPOS, "main.exception_thrown",
- docletClassName, methodName, exc.toString());
- exc.getTargetException().printStackTrace(System.err);
- }
- throw new DocletInvokeException();
- } finally {
- Thread.currentThread().setContextClassLoader(savedCCL);
- }
- }
-
- /**
- * Export javadoc internal API to the unnamed module for a classloader.
- * This is to support continued use of existing non-standard doclets that
- * use the internal toolkit API and related classes.
- * @param cl the classloader
- */
- private void exportInternalAPI(ClassLoader cl) {
- String[] packages = {
- "com.sun.tools.doclets",
- "com.sun.tools.doclets.standard",
- "com.sun.tools.doclets.internal.toolkit",
- "com.sun.tools.doclets.internal.toolkit.taglets",
- "com.sun.tools.doclets.internal.toolkit.builders",
- "com.sun.tools.doclets.internal.toolkit.util",
- "com.sun.tools.doclets.internal.toolkit.util.links",
- "com.sun.tools.doclets.formats.html",
- "com.sun.tools.doclets.formats.html.markup"
- };
-
- try {
- Method getModuleMethod = Class.class.getDeclaredMethod("getModule");
- Object thisModule = getModuleMethod.invoke(getClass());
-
- Class<?> moduleClass = Class.forName("java.lang.Module");
- Method addExportsMethod = moduleClass.getDeclaredMethod("addExports", String.class, moduleClass);
-
- Method getUnnamedModuleMethod = ClassLoader.class.getDeclaredMethod("getUnnamedModule");
- Object target = getUnnamedModuleMethod.invoke(cl);
-
- for (String pack : packages) {
- addExportsMethod.invoke(thisModule, pack, target);
- }
- } catch (Exception e) {
- // do nothing
- }
- }
-
- /**
- * Utility method for converting a search path string to an array of directory and JAR file
- * URLs.
- *
- * Note that this method is called by the DocletInvoker.
- *
- * @param path the search path string
- * @return the resulting array of directory and JAR file URLs
- */
- private static URL[] pathToURLs(String path) {
- java.util.List<URL> urls = new ArrayList<>();
- for (String s: path.split(Pattern.quote(File.pathSeparator))) {
- if (!s.isEmpty()) {
- URL url = fileToURL(Paths.get(s));
- if (url != null) {
- urls.add(url);
- }
- }
- }
- return urls.toArray(new URL[urls.size()]);
- }
-
- /**
- * Returns the directory or JAR file URL corresponding to the specified local file name.
- *
- * @param file the Path object
- * @return the resulting directory or JAR file URL, or null if unknown
- */
- private static URL fileToURL(Path file) {
- Path p;
- try {
- p = file.toRealPath();
- } catch (IOException e) {
- p = file.toAbsolutePath();
- }
- try {
- return p.normalize().toUri().toURL();
- } catch (MalformedURLException e) {
- return null;
- }
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/ExecutableMemberDocImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,290 +0,0 @@
-/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import java.lang.reflect.Modifier;
-import java.text.CollationKey;
-
-import com.sun.javadoc.*;
-
-import com.sun.source.util.TreePath;
-import com.sun.tools.javac.code.Flags;
-import com.sun.tools.javac.code.Symbol.*;
-import com.sun.tools.javac.code.Type;
-import com.sun.tools.javac.util.List;
-import com.sun.tools.javac.util.ListBuffer;
-
-/**
- * Represents a method or constructor of a java class.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @since 1.2
- * @author Robert Field
- * @author Neal Gafter (rewrite)
- * @author Scott Seligman (generics, annotations)
- */
-
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public abstract class ExecutableMemberDocImpl
- extends MemberDocImpl implements ExecutableMemberDoc {
-
- protected final MethodSymbol sym;
-
- /**
- * Constructor.
- */
- public ExecutableMemberDocImpl(DocEnv env, MethodSymbol sym, TreePath treePath) {
- super(env, sym, treePath);
- this.sym = sym;
- }
-
- /**
- * Constructor.
- */
- public ExecutableMemberDocImpl(DocEnv env, MethodSymbol sym) {
- this(env, sym, null);
- }
-
- /**
- * Returns the flags in terms of javac's flags
- */
- protected long getFlags() {
- return sym.flags();
- }
-
- /**
- * Identify the containing class
- */
- protected ClassSymbol getContainingClass() {
- return sym.enclClass();
- }
-
- /**
- * Return true if this method is native
- */
- public boolean isNative() {
- return Modifier.isNative(getModifiers());
- }
-
- /**
- * Return true if this method is synchronized
- */
- public boolean isSynchronized() {
- return Modifier.isSynchronized(getModifiers());
- }
-
- /**
- * Return true if this method was declared to take a variable number
- * of arguments.
- */
- public boolean isVarArgs() {
- return ((sym.flags() & Flags.VARARGS) != 0
- && !env.legacyDoclet);
- }
-
- /**
- * Returns true if this field was synthesized by the compiler.
- */
- public boolean isSynthetic() {
- return ((sym.flags() & Flags.SYNTHETIC) != 0);
- }
-
- public boolean isIncluded() {
- return containingClass().isIncluded() && env.shouldDocument(sym);
- }
-
- /**
- * Return the throws tags in this method.
- *
- * @return an array of ThrowTagImpl containing all {@code @exception}
- * and {@code @throws} tags.
- */
- public ThrowsTag[] throwsTags() {
- return comment().throwsTags();
- }
-
- /**
- * Return the param tags in this method, excluding the type
- * parameter tags.
- *
- * @return an array of ParamTagImpl containing all {@code @param} tags.
- */
- public ParamTag[] paramTags() {
- return comment().paramTags();
- }
-
- /**
- * Return the type parameter tags in this method.
- */
- public ParamTag[] typeParamTags() {
- return env.legacyDoclet
- ? new ParamTag[0]
- : comment().typeParamTags();
- }
-
- /**
- * Return exceptions this method or constructor throws.
- *
- * @return an array of ClassDoc[] representing the exceptions
- * thrown by this method.
- */
- public ClassDoc[] thrownExceptions() {
- ListBuffer<ClassDocImpl> l = new ListBuffer<>();
- for (Type ex : sym.type.getThrownTypes()) {
- ex = env.types.erasure(ex);
- //### Will these casts succeed in the face of static semantic
- //### errors in the documented code?
- ClassDocImpl cdi = env.getClassDoc((ClassSymbol)ex.tsym);
- if (cdi != null) l.append(cdi);
- }
- return l.toArray(new ClassDocImpl[l.length()]);
- }
-
- /**
- * Return exceptions this method or constructor throws.
- * Each array element is either a <code>ClassDoc</code> or a
- * <code>TypeVariable</code>.
- */
- public com.sun.javadoc.Type[] thrownExceptionTypes() {
- return TypeMaker.getTypes(env, sym.type.getThrownTypes());
- }
-
- /**
- * Get argument information.
- *
- * @see ParameterImpl
- *
- * @return an array of ParameterImpl, one element per argument
- * in the order the arguments are present.
- */
- public Parameter[] parameters() {
- // generate the parameters on the fly: they're not cached
- List<VarSymbol> params = sym.params();
- Parameter result[] = new Parameter[params.length()];
-
- int i = 0;
- for (VarSymbol param : params) {
- result[i++] = new ParameterImpl(env, param);
- }
- return result;
- }
-
- /**
- * Get the receiver type of this executable element.
- *
- * @return the receiver type of this executable element.
- * @since 1.8
- */
- public com.sun.javadoc.Type receiverType() {
- Type recvtype = sym.type.asMethodType().recvtype;
- return (recvtype != null) ? TypeMaker.getType(env, recvtype, false, true) : null;
- }
-
- /**
- * Return the formal type parameters of this method or constructor.
- * Return an empty array if there are none.
- */
- public TypeVariable[] typeParameters() {
- if (env.legacyDoclet) {
- return new TypeVariable[0];
- }
- TypeVariable res[] = new TypeVariable[sym.type.getTypeArguments().length()];
- TypeMaker.getTypes(env, sym.type.getTypeArguments(), res);
- return res;
- }
-
- /**
- * Get the signature. It is the parameter list, type is qualified.
- * For instance, for a method <code>mymethod(String x, int y)</code>,
- * it will return <code>(java.lang.String,int)</code>.
- */
- public String signature() {
- return makeSignature(true);
- }
-
- /**
- * Get flat signature. All types are not qualified.
- * Return a String, which is the flat signiture of this member.
- * It is the parameter list, type is not qualified.
- * For instance, for a method <code>mymethod(String x, int y)</code>,
- * it will return <code>(String, int)</code>.
- */
- public String flatSignature() {
- return makeSignature(false);
- }
-
- private String makeSignature(boolean full) {
- StringBuilder result = new StringBuilder();
- result.append("(");
- for (List<Type> types = sym.type.getParameterTypes(); types.nonEmpty(); ) {
- Type t = types.head;
- result.append(TypeMaker.getTypeString(env, t, full));
- types = types.tail;
- if (types.nonEmpty()) {
- result.append(", ");
- }
- }
- if (isVarArgs()) {
- int len = result.length();
- result.replace(len - 2, len, "...");
- }
- result.append(")");
- return result.toString();
- }
-
- protected String typeParametersString() {
- return TypeMaker.typeParametersString(env, sym, true);
- }
-
- /**
- * Generate a key for sorting.
- */
- @Override
- CollationKey generateKey() {
- String k = name() + flatSignature() + typeParametersString();
- // ',' and '&' are between '$' and 'a': normalize to spaces.
- k = k.replace(',', ' ').replace('&', ' ');
- // System.out.println("COLLATION KEY FOR " + this + " is \"" + k + "\"");
- return env.doclocale.collator.getCollationKey(k);
- }
-
- /**
- * Return the source position of the entity, or null if
- * no position is available.
- */
- @Override
- public SourcePosition position() {
- if (sym.enclClass().sourcefile == null) return null;
- return SourcePositionImpl.make(sym.enclClass().sourcefile,
- (tree==null) ? 0 : tree.pos,
- lineMap);
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/FieldDocImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,281 +0,0 @@
-/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import com.sun.source.util.TreePath;
-import java.lang.reflect.Modifier;
-
-import com.sun.javadoc.*;
-
-import com.sun.tools.javac.code.Flags;
-import com.sun.tools.javac.code.Symbol.ClassSymbol;
-import com.sun.tools.javac.code.Symbol.VarSymbol;
-
-import static com.sun.tools.javac.code.TypeTag.BOOLEAN;
-
-/**
- * Represents a field in a java class.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @see MemberDocImpl
- *
- * @since 1.2
- * @author Robert Field
- * @author Neal Gafter (rewrite)
- * @author Scott Seligman (generics, enums, annotations)
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public class FieldDocImpl extends MemberDocImpl implements FieldDoc {
-
- protected final VarSymbol sym;
-
- /**
- * Constructor.
- */
- public FieldDocImpl(DocEnv env, VarSymbol sym, TreePath treePath) {
- super(env, sym, treePath);
- this.sym = sym;
- }
-
- /**
- * Constructor.
- */
- public FieldDocImpl(DocEnv env, VarSymbol sym) {
- this(env, sym, null);
- }
-
- /**
- * Returns the flags in terms of javac's flags
- */
- protected long getFlags() {
- return sym.flags();
- }
-
- /**
- * Identify the containing class
- */
- protected ClassSymbol getContainingClass() {
- return sym.enclClass();
- }
-
- /**
- * Get type of this field.
- */
- public com.sun.javadoc.Type type() {
- return TypeMaker.getType(env, sym.type, false);
- }
-
- /**
- * Get the value of a constant field.
- *
- * @return the value of a constant field. The value is
- * automatically wrapped in an object if it has a primitive type.
- * If the field is not constant, returns null.
- */
- public Object constantValue() {
- Object result = sym.getConstValue();
- if (result != null && sym.type.hasTag(BOOLEAN))
- // javac represents false and true as Integers 0 and 1
- result = Boolean.valueOf(((Integer)result).intValue() != 0);
- return result;
- }
-
- /**
- * Get the value of a constant field.
- *
- * @return the text of a Java language expression whose value
- * is the value of the constant. The expression uses no identifiers
- * other than primitive literals. If the field is
- * not constant, returns null.
- */
- public String constantValueExpression() {
- return constantValueExpression(constantValue());
- }
-
- /**
- * A static version of the above.
- */
- static String constantValueExpression(Object cb) {
- if (cb == null) return null;
- if (cb instanceof Character) return sourceForm(((Character)cb).charValue());
- if (cb instanceof Byte) return sourceForm(((Byte)cb).byteValue());
- if (cb instanceof String) return sourceForm((String)cb);
- if (cb instanceof Double) return sourceForm(((Double)cb).doubleValue(), 'd');
- if (cb instanceof Float) return sourceForm(((Float)cb).doubleValue(), 'f');
- if (cb instanceof Long) return cb + "L";
- return cb.toString(); // covers int, short
- }
- // where
- private static String sourceForm(double v, char suffix) {
- if (Double.isNaN(v))
- return "0" + suffix + "/0" + suffix;
- if (v == Double.POSITIVE_INFINITY)
- return "1" + suffix + "/0" + suffix;
- if (v == Double.NEGATIVE_INFINITY)
- return "-1" + suffix + "/0" + suffix;
- return v + (suffix == 'f' || suffix == 'F' ? "" + suffix : "");
- }
- private static String sourceForm(char c) {
- StringBuilder buf = new StringBuilder(8);
- buf.append('\'');
- sourceChar(c, buf);
- buf.append('\'');
- return buf.toString();
- }
- private static String sourceForm(byte c) {
- return "0x" + Integer.toString(c & 0xff, 16);
- }
- private static String sourceForm(String s) {
- StringBuilder buf = new StringBuilder(s.length() + 5);
- buf.append('\"');
- for (int i=0; i<s.length(); i++) {
- char c = s.charAt(i);
- sourceChar(c, buf);
- }
- buf.append('\"');
- return buf.toString();
- }
- private static void sourceChar(char c, StringBuilder buf) {
- switch (c) {
- case '\b': buf.append("\\b"); return;
- case '\t': buf.append("\\t"); return;
- case '\n': buf.append("\\n"); return;
- case '\f': buf.append("\\f"); return;
- case '\r': buf.append("\\r"); return;
- case '\"': buf.append("\\\""); return;
- case '\'': buf.append("\\\'"); return;
- case '\\': buf.append("\\\\"); return;
- default:
- if (isPrintableAscii(c)) {
- buf.append(c); return;
- }
- unicodeEscape(c, buf);
- return;
- }
- }
- private static void unicodeEscape(char c, StringBuilder buf) {
- final String chars = "0123456789abcdef";
- buf.append("\\u");
- buf.append(chars.charAt(15 & (c>>12)));
- buf.append(chars.charAt(15 & (c>>8)));
- buf.append(chars.charAt(15 & (c>>4)));
- buf.append(chars.charAt(15 & (c>>0)));
- }
- private static boolean isPrintableAscii(char c) {
- return c >= ' ' && c <= '~';
- }
-
- /**
- * Return true if this field is included in the active set.
- */
- public boolean isIncluded() {
- return containingClass().isIncluded() && env.shouldDocument(sym);
- }
-
- /**
- * Is this Doc item a field (but not an enum constant?
- */
- @Override
- public boolean isField() {
- return !isEnumConstant();
- }
-
- /**
- * Is this Doc item an enum constant?
- * (For legacy doclets, return false.)
- */
- @Override
- public boolean isEnumConstant() {
- return (getFlags() & Flags.ENUM) != 0 &&
- !env.legacyDoclet;
- }
-
- /**
- * Return true if this field is transient
- */
- public boolean isTransient() {
- return Modifier.isTransient(getModifiers());
- }
-
- /**
- * Return true if this field is volatile
- */
- public boolean isVolatile() {
- return Modifier.isVolatile(getModifiers());
- }
-
- /**
- * Returns true if this field was synthesized by the compiler.
- */
- public boolean isSynthetic() {
- return (getFlags() & Flags.SYNTHETIC) != 0;
- }
-
- /**
- * Return the serialField tags in this FieldDocImpl item.
- *
- * @return an array of <tt>SerialFieldTagImpl</tt> containing all
- * <code>@serialField</code> tags.
- */
- public SerialFieldTag[] serialFieldTags() {
- return comment().serialFieldTags();
- }
-
- public String name() {
- if (name == null) {
- name = sym.name.toString();
- }
- return name;
- }
-
- private String name;
-
- public String qualifiedName() {
- if (qualifiedName == null) {
- qualifiedName = sym.enclClass().getQualifiedName() + "." + name();
- }
- return qualifiedName;
- }
-
- private String qualifiedName;
-
- /**
- * Return the source position of the entity, or null if
- * no position is available.
- */
- @Override
- public SourcePosition position() {
- if (sym.enclClass().sourcefile == null) return null;
- return SourcePositionImpl.make(sym.enclClass().sourcefile,
- (tree==null) ? 0 : tree.pos,
- lineMap);
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/JavaScriptScanner.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1104 +0,0 @@
-/*
- * Copyright (c) 2012,2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-
-import com.sun.tools.javadoc.main.JavaScriptScanner.TagParser.Kind;
-
-import static com.sun.tools.javac.util.LayoutCharacters.EOI;
-
-/**
- * Parser to detect use of JavaScript in documentation comments.
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public class JavaScriptScanner {
- public static interface Reporter {
- void report();
- }
-
- static class ParseException extends Exception {
- private static final long serialVersionUID = 0;
- ParseException(String key) {
- super(key);
- }
- }
-
- private Reporter reporter;
-
- /** The input buffer, index of most recent character read,
- * index of one past last character in buffer.
- */
- protected char[] buf;
- protected int bp;
- protected int buflen;
-
- /** The current character.
- */
- protected char ch;
-
- private boolean newline = true;
-
- Map<String, TagParser> tagParsers;
- Set<String> eventAttrs;
- Set<String> uriAttrs;
-
- public JavaScriptScanner() {
- initTagParsers();
- initEventAttrs();
- initURIAttrs();
- }
-
- public void parse(String comment, Reporter r) {
- reporter = r;
- String c = comment;
- buf = new char[c.length() + 1];
- c.getChars(0, c.length(), buf, 0);
- buf[buf.length - 1] = EOI;
- buflen = buf.length - 1;
- bp = -1;
- newline = true;
- nextChar();
-
- blockContent();
- blockTags();
- }
-
- private void checkHtmlTag(String tag) {
- if (tag.equalsIgnoreCase("script")) {
- reporter.report();
- }
- }
-
- private void checkHtmlAttr(String name, String value) {
- String n = name.toLowerCase(Locale.ENGLISH);
- if (eventAttrs.contains(n)
- || uriAttrs.contains(n)
- && value != null && value.toLowerCase(Locale.ENGLISH).trim().startsWith("javascript:")) {
- reporter.report();
- }
- }
-
- void nextChar() {
- ch = buf[bp < buflen ? ++bp : buflen];
- switch (ch) {
- case '\f': case '\n': case '\r':
- newline = true;
- }
- }
-
- /**
- * Read block content, consisting of text, html and inline tags.
- * Terminated by the end of input, or the beginning of the next block tag:
- * i.e. @ as the first non-whitespace character on a line.
- */
- @SuppressWarnings("fallthrough")
- protected void blockContent() {
-
- loop:
- while (bp < buflen) {
- switch (ch) {
- case '\n': case '\r': case '\f':
- newline = true;
- // fallthrough
-
- case ' ': case '\t':
- nextChar();
- break;
-
- case '&':
- entity(null);
- break;
-
- case '<':
- html();
- break;
-
- case '>':
- newline = false;
- nextChar();
- break;
-
- case '{':
- inlineTag(null);
- break;
-
- case '@':
- if (newline) {
- break loop;
- }
- // fallthrough
-
- default:
- newline = false;
- nextChar();
- }
- }
- }
-
- /**
- * Read a series of block tags, including their content.
- * Standard tags parse their content appropriately.
- * Non-standard tags are represented by {@link UnknownBlockTag}.
- */
- protected void blockTags() {
- while (ch == '@')
- blockTag();
- }
-
- /**
- * Read a single block tag, including its content.
- * Standard tags parse their content appropriately.
- * Non-standard tags are represented by {@link UnknownBlockTag}.
- */
- protected void blockTag() {
- int p = bp;
- try {
- nextChar();
- if (isIdentifierStart(ch)) {
- String name = readTagName();
- TagParser tp = tagParsers.get(name);
- if (tp == null) {
- blockContent();
- } else {
- switch (tp.getKind()) {
- case BLOCK:
- tp.parse(p);
- return;
- case INLINE:
- return;
- }
- }
- }
- blockContent();
- } catch (ParseException e) {
- blockContent();
- }
- }
-
- protected void inlineTag(Void list) {
- newline = false;
- nextChar();
- if (ch == '@') {
- inlineTag();
- }
- }
-
- /**
- * Read a single inline tag, including its content.
- * Standard tags parse their content appropriately.
- * Non-standard tags are represented by {@link UnknownBlockTag}.
- * Malformed tags may be returned as {@link Erroneous}.
- */
- protected void inlineTag() {
- int p = bp - 1;
- try {
- nextChar();
- if (isIdentifierStart(ch)) {
- String name = readTagName();
- TagParser tp = tagParsers.get(name);
-
- if (tp == null) {
- skipWhitespace();
- inlineText(WhitespaceRetentionPolicy.REMOVE_ALL);
- nextChar();
- } else {
- skipWhitespace();
- if (tp.getKind() == TagParser.Kind.INLINE) {
- tp.parse(p);
- } else { // handle block tags (ex: @see) in inline content
- inlineText(WhitespaceRetentionPolicy.REMOVE_ALL); // skip content
- nextChar();
- }
- }
- }
- } catch (ParseException e) {
- }
- }
-
- private static enum WhitespaceRetentionPolicy {
- RETAIN_ALL,
- REMOVE_FIRST_SPACE,
- REMOVE_ALL
- }
-
- /**
- * Read plain text content of an inline tag.
- * Matching pairs of { } are skipped; the text is terminated by the first
- * unmatched }. It is an error if the beginning of the next tag is detected.
- */
- private void inlineText(WhitespaceRetentionPolicy whitespacePolicy) throws ParseException {
- switch (whitespacePolicy) {
- case REMOVE_ALL:
- skipWhitespace();
- break;
- case REMOVE_FIRST_SPACE:
- if (ch == ' ')
- nextChar();
- break;
- case RETAIN_ALL:
- default:
- // do nothing
- break;
-
- }
- int pos = bp;
- int depth = 1;
-
- loop:
- while (bp < buflen) {
- switch (ch) {
- case '\n': case '\r': case '\f':
- newline = true;
- break;
-
- case ' ': case '\t':
- break;
-
- case '{':
- newline = false;
- depth++;
- break;
-
- case '}':
- if (--depth == 0) {
- return;
- }
- newline = false;
- break;
-
- case '@':
- if (newline)
- break loop;
- newline = false;
- break;
-
- default:
- newline = false;
- break;
- }
- nextChar();
- }
- throw new ParseException("dc.unterminated.inline.tag");
- }
-
- /**
- * Read Java class name, possibly followed by member
- * Matching pairs of {@literal < >} are skipped. The text is terminated by the first
- * unmatched }. It is an error if the beginning of the next tag is detected.
- */
- // TODO: boolean allowMember should be enum FORBID, ALLOW, REQUIRE
- // TODO: improve quality of parse to forbid bad constructions.
- // TODO: update to use ReferenceParser
- @SuppressWarnings("fallthrough")
- protected void reference(boolean allowMember) throws ParseException {
- int pos = bp;
- int depth = 0;
-
- // scan to find the end of the signature, by looking for the first
- // whitespace not enclosed in () or <>, or the end of the tag
- loop:
- while (bp < buflen) {
- switch (ch) {
- case '\n': case '\r': case '\f':
- newline = true;
- // fallthrough
-
- case ' ': case '\t':
- if (depth == 0)
- break loop;
- break;
-
- case '(':
- case '<':
- newline = false;
- depth++;
- break;
-
- case ')':
- case '>':
- newline = false;
- --depth;
- break;
-
- case '}':
- if (bp == pos)
- return;
- newline = false;
- break loop;
-
- case '@':
- if (newline)
- break loop;
- // fallthrough
-
- default:
- newline = false;
-
- }
- nextChar();
- }
-
- if (depth != 0)
- throw new ParseException("dc.unterminated.signature");
- }
-
- /**
- * Read Java identifier
- * Matching pairs of { } are skipped; the text is terminated by the first
- * unmatched }. It is an error if the beginning of the next tag is detected.
- */
- @SuppressWarnings("fallthrough")
- protected void identifier() throws ParseException {
- skipWhitespace();
- int pos = bp;
-
- if (isJavaIdentifierStart(ch)) {
- readJavaIdentifier();
- return;
- }
-
- throw new ParseException("dc.identifier.expected");
- }
-
- /**
- * Read a quoted string.
- * It is an error if the beginning of the next tag is detected.
- */
- @SuppressWarnings("fallthrough")
- protected void quotedString() {
- int pos = bp;
- nextChar();
-
- loop:
- while (bp < buflen) {
- switch (ch) {
- case '\n': case '\r': case '\f':
- newline = true;
- break;
-
- case ' ': case '\t':
- break;
-
- case '"':
- nextChar();
- // trim trailing white-space?
- return;
-
- case '@':
- if (newline)
- break loop;
-
- }
- nextChar();
- }
- }
-
- /**
- * Read a term ie. one word.
- * It is an error if the beginning of the next tag is detected.
- */
- @SuppressWarnings("fallthrough")
- protected void inlineWord() {
- int pos = bp;
- int depth = 0;
- loop:
- while (bp < buflen) {
- switch (ch) {
- case '\n':
- newline = true;
- // fallthrough
-
- case '\r': case '\f': case ' ': case '\t':
- return;
-
- case '@':
- if (newline)
- break loop;
-
- case '{':
- depth++;
- break;
-
- case '}':
- if (depth == 0 || --depth == 0)
- return;
- break;
- }
- newline = false;
- nextChar();
- }
- }
-
- /**
- * Read general text content of an inline tag, including HTML entities and elements.
- * Matching pairs of { } are skipped; the text is terminated by the first
- * unmatched }. It is an error if the beginning of the next tag is detected.
- */
- @SuppressWarnings("fallthrough")
- private void inlineContent() {
-
- skipWhitespace();
- int pos = bp;
- int depth = 1;
-
- loop:
- while (bp < buflen) {
-
- switch (ch) {
- case '\n': case '\r': case '\f':
- newline = true;
- // fall through
-
- case ' ': case '\t':
- nextChar();
- break;
-
- case '&':
- entity(null);
- break;
-
- case '<':
- newline = false;
- html();
- break;
-
- case '{':
- newline = false;
- depth++;
- nextChar();
- break;
-
- case '}':
- newline = false;
- if (--depth == 0) {
- nextChar();
- return;
- }
- nextChar();
- break;
-
- case '@':
- if (newline)
- break loop;
- // fallthrough
-
- default:
- nextChar();
- break;
- }
- }
-
- }
-
- protected void entity(Void list) {
- newline = false;
- entity();
- }
-
- /**
- * Read an HTML entity.
- * {@literal &identifier; } or {@literal &#digits; } or {@literal &#xhex-digits; }
- */
- protected void entity() {
- nextChar();
- String name = null;
- if (ch == '#') {
- int namep = bp;
- nextChar();
- if (isDecimalDigit(ch)) {
- nextChar();
- while (isDecimalDigit(ch))
- nextChar();
- name = new String(buf, namep, bp - namep);
- } else if (ch == 'x' || ch == 'X') {
- nextChar();
- if (isHexDigit(ch)) {
- nextChar();
- while (isHexDigit(ch))
- nextChar();
- name = new String(buf, namep, bp - namep);
- }
- }
- } else if (isIdentifierStart(ch)) {
- name = readIdentifier();
- }
-
- if (name != null) {
- if (ch != ';')
- return;
- nextChar();
- }
- }
-
- /**
- * Read the start or end of an HTML tag, or an HTML comment
- * {@literal <identifier attrs> } or {@literal </identifier> }
- */
- protected void html() {
- int p = bp;
- nextChar();
- if (isIdentifierStart(ch)) {
- String name = readIdentifier();
- checkHtmlTag(name);
- htmlAttrs();
- if (ch == '/') {
- nextChar();
- }
- if (ch == '>') {
- nextChar();
- return;
- }
- } else if (ch == '/') {
- nextChar();
- if (isIdentifierStart(ch)) {
- readIdentifier();
- skipWhitespace();
- if (ch == '>') {
- nextChar();
- return;
- }
- }
- } else if (ch == '!') {
- nextChar();
- if (ch == '-') {
- nextChar();
- if (ch == '-') {
- nextChar();
- while (bp < buflen) {
- int dash = 0;
- while (ch == '-') {
- dash++;
- nextChar();
- }
- // Strictly speaking, a comment should not contain "--"
- // so dash > 2 is an error, dash == 2 implies ch == '>'
- // See http://www.w3.org/TR/html-markup/syntax.html#syntax-comments
- // for more details.
- if (dash >= 2 && ch == '>') {
- nextChar();
- return;
- }
-
- nextChar();
- }
- }
- }
- }
-
- bp = p + 1;
- ch = buf[bp];
- }
-
- /**
- * Read a series of HTML attributes, terminated by {@literal > }.
- * Each attribute is of the form {@literal identifier[=value] }.
- * "value" may be unquoted, single-quoted, or double-quoted.
- */
- protected void htmlAttrs() {
- skipWhitespace();
-
- loop:
- while (isIdentifierStart(ch)) {
- int namePos = bp;
- String name = readAttributeName();
- skipWhitespace();
- StringBuilder value = new StringBuilder();
- if (ch == '=') {
- nextChar();
- skipWhitespace();
- if (ch == '\'' || ch == '"') {
- char quote = ch;
- nextChar();
- while (bp < buflen && ch != quote) {
- if (newline && ch == '@') {
- // No point trying to read more.
- // In fact, all attrs get discarded by the caller
- // and superseded by a malformed.html node because
- // the html tag itself is not terminated correctly.
- break loop;
- }
- value.append(ch);
- nextChar();
- }
- nextChar();
- } else {
- while (bp < buflen && !isUnquotedAttrValueTerminator(ch)) {
- value.append(ch);
- nextChar();
- }
- }
- skipWhitespace();
- }
- checkHtmlAttr(name, value.toString());
- }
- }
-
- protected void attrValueChar(Void list) {
- switch (ch) {
- case '&':
- entity(list);
- break;
-
- case '{':
- inlineTag(list);
- break;
-
- default:
- nextChar();
- }
- }
-
- protected boolean isIdentifierStart(char ch) {
- return Character.isUnicodeIdentifierStart(ch);
- }
-
- protected String readIdentifier() {
- int start = bp;
- nextChar();
- while (bp < buflen && Character.isUnicodeIdentifierPart(ch))
- nextChar();
- return new String(buf, start, bp - start);
- }
-
- protected String readAttributeName() {
- int start = bp;
- nextChar();
- while (bp < buflen && (Character.isUnicodeIdentifierPart(ch) || ch == '-'))
- nextChar();
- return new String(buf, start, bp - start);
- }
-
- protected String readTagName() {
- int start = bp;
- nextChar();
- while (bp < buflen
- && (Character.isUnicodeIdentifierPart(ch) || ch == '.'
- || ch == '-' || ch == ':')) {
- nextChar();
- }
- return new String(buf, start, bp - start);
- }
-
- protected boolean isJavaIdentifierStart(char ch) {
- return Character.isJavaIdentifierStart(ch);
- }
-
- protected String readJavaIdentifier() {
- int start = bp;
- nextChar();
- while (bp < buflen && Character.isJavaIdentifierPart(ch))
- nextChar();
- return new String(buf, start, bp - start);
- }
-
- protected boolean isDecimalDigit(char ch) {
- return ('0' <= ch && ch <= '9');
- }
-
- protected boolean isHexDigit(char ch) {
- return ('0' <= ch && ch <= '9')
- || ('a' <= ch && ch <= 'f')
- || ('A' <= ch && ch <= 'F');
- }
-
- protected boolean isUnquotedAttrValueTerminator(char ch) {
- switch (ch) {
- case '\f': case '\n': case '\r': case '\t':
- case ' ':
- case '"': case '\'': case '`':
- case '=': case '<': case '>':
- return true;
- default:
- return false;
- }
- }
-
- protected boolean isWhitespace(char ch) {
- return Character.isWhitespace(ch);
- }
-
- protected void skipWhitespace() {
- while (isWhitespace(ch)) {
- nextChar();
- }
- }
-
- /**
- * @param start position of first character of string
- * @param end position of character beyond last character to be included
- */
- String newString(int start, int end) {
- return new String(buf, start, end - start);
- }
-
- static abstract class TagParser {
- enum Kind { INLINE, BLOCK }
-
- final Kind kind;
- final String name;
-
-
- TagParser(Kind k, String tk) {
- kind = k;
- name = tk;
- }
-
- TagParser(Kind k, String tk, boolean retainWhiteSpace) {
- this(k, tk);
- }
-
- Kind getKind() {
- return kind;
- }
-
- String getName() {
- return name;
- }
-
- abstract void parse(int pos) throws ParseException;
- }
-
- /**
- * @see <a href="http://docs.oracle.com/javase/8/docs/technotes/tools/unix/javadoc.html#CHDJGIJB">Javadoc Tags</a>
- */
- @SuppressWarnings("deprecation")
- private void initTagParsers() {
- TagParser[] parsers = {
- // @author name-text
- new TagParser(Kind.BLOCK, "author") {
- @Override
- public void parse(int pos) {
- blockContent();
- }
- },
-
- // {@code text}
- new TagParser(Kind.INLINE, "code", true) {
- @Override
- public void parse(int pos) throws ParseException {
- inlineText(WhitespaceRetentionPolicy.REMOVE_FIRST_SPACE);
- nextChar();
- }
- },
-
- // @deprecated deprecated-text
- new TagParser(Kind.BLOCK, "deprecated") {
- @Override
- public void parse(int pos) {
- blockContent();
- }
- },
-
- // {@docRoot}
- new TagParser(Kind.INLINE, "docRoot") {
- @Override
- public void parse(int pos) throws ParseException {
- if (ch == '}') {
- nextChar();
- return;
- }
- inlineText(WhitespaceRetentionPolicy.REMOVE_ALL); // skip unexpected content
- nextChar();
- throw new ParseException("dc.unexpected.content");
- }
- },
-
- // @exception class-name description
- new TagParser(Kind.BLOCK, "exception") {
- @Override
- public void parse(int pos) throws ParseException {
- skipWhitespace();
- reference(false);
- blockContent();
- }
- },
-
- // @hidden hidden-text
- new TagParser(Kind.BLOCK, "hidden") {
- @Override
- public void parse(int pos) {
- blockContent();
- }
- },
-
- // @index search-term options-description
- new TagParser(Kind.INLINE, "index") {
- @Override
- public void parse(int pos) throws ParseException {
- skipWhitespace();
- if (ch == '}') {
- throw new ParseException("dc.no.content");
- }
- if (ch == '"') quotedString(); else inlineWord();
- skipWhitespace();
- if (ch != '}') {
- inlineContent();
- } else {
- nextChar();
- }
- }
- },
-
- // {@inheritDoc}
- new TagParser(Kind.INLINE, "inheritDoc") {
- @Override
- public void parse(int pos) throws ParseException {
- if (ch == '}') {
- nextChar();
- return;
- }
- inlineText(WhitespaceRetentionPolicy.REMOVE_ALL); // skip unexpected content
- nextChar();
- throw new ParseException("dc.unexpected.content");
- }
- },
-
- // {@link package.class#member label}
- new TagParser(Kind.INLINE, "link") {
- @Override
- public void parse(int pos) throws ParseException {
- reference(true);
- inlineContent();
- }
- },
-
- // {@linkplain package.class#member label}
- new TagParser(Kind.INLINE, "linkplain") {
- @Override
- public void parse(int pos) throws ParseException {
- reference(true);
- inlineContent();
- }
- },
-
- // {@literal text}
- new TagParser(Kind.INLINE, "literal", true) {
- @Override
- public void parse(int pos) throws ParseException {
- inlineText(WhitespaceRetentionPolicy.REMOVE_FIRST_SPACE);
- nextChar();
- }
- },
-
- // @param parameter-name description
- new TagParser(Kind.BLOCK, "param") {
- @Override
- public void parse(int pos) throws ParseException {
- skipWhitespace();
-
- boolean typaram = false;
- if (ch == '<') {
- typaram = true;
- nextChar();
- }
-
- identifier();
-
- if (typaram) {
- if (ch != '>')
- throw new ParseException("dc.gt.expected");
- nextChar();
- }
-
- skipWhitespace();
- blockContent();
- }
- },
-
- // @return description
- new TagParser(Kind.BLOCK, "return") {
- @Override
- public void parse(int pos) {
- blockContent();
- }
- },
-
- // @see reference | quoted-string | HTML
- new TagParser(Kind.BLOCK, "see") {
- @Override
- public void parse(int pos) throws ParseException {
- skipWhitespace();
- switch (ch) {
- case '"':
- quotedString();
- skipWhitespace();
- if (ch == '@'
- || ch == EOI && bp == buf.length - 1) {
- return;
- }
- break;
-
- case '<':
- blockContent();
- return;
-
- case '@':
- if (newline)
- throw new ParseException("dc.no.content");
- break;
-
- case EOI:
- if (bp == buf.length - 1)
- throw new ParseException("dc.no.content");
- break;
-
- default:
- if (isJavaIdentifierStart(ch) || ch == '#') {
- reference(true);
- blockContent();
- }
- }
- throw new ParseException("dc.unexpected.content");
- }
- },
-
- // @serialData data-description
- new TagParser(Kind.BLOCK, "@serialData") {
- @Override
- public void parse(int pos) {
- blockContent();
- }
- },
-
- // @serialField field-name field-type description
- new TagParser(Kind.BLOCK, "serialField") {
- @Override
- public void parse(int pos) throws ParseException {
- skipWhitespace();
- identifier();
- skipWhitespace();
- reference(false);
- if (isWhitespace(ch)) {
- skipWhitespace();
- blockContent();
- }
- }
- },
-
- // @serial field-description | include | exclude
- new TagParser(Kind.BLOCK, "serial") {
- @Override
- public void parse(int pos) {
- blockContent();
- }
- },
-
- // @since since-text
- new TagParser(Kind.BLOCK, "since") {
- @Override
- public void parse(int pos) {
- blockContent();
- }
- },
-
- // @throws class-name description
- new TagParser(Kind.BLOCK, "throws") {
- @Override
- public void parse(int pos) throws ParseException {
- skipWhitespace();
- reference(false);
- blockContent();
- }
- },
-
- // {@value package.class#field}
- new TagParser(Kind.INLINE, "value") {
- @Override
- public void parse(int pos) throws ParseException {
- reference(true);
- skipWhitespace();
- if (ch == '}') {
- nextChar();
- return;
- }
- nextChar();
- throw new ParseException("dc.unexpected.content");
- }
- },
-
- // @version version-text
- new TagParser(Kind.BLOCK, "version") {
- @Override
- public void parse(int pos) {
- blockContent();
- }
- },
- };
-
- tagParsers = new HashMap<>();
- for (TagParser p: parsers)
- tagParsers.put(p.getName(), p);
-
- }
-
- private void initEventAttrs() {
- eventAttrs = new HashSet<>(Arrays.asList(
- // See https://www.w3.org/TR/html-markup/global-attributes.html#common.attrs.event-handler
- "onabort", "onblur", "oncanplay", "oncanplaythrough",
- "onchange", "onclick", "oncontextmenu", "ondblclick",
- "ondrag", "ondragend", "ondragenter", "ondragleave",
- "ondragover", "ondragstart", "ondrop", "ondurationchange",
- "onemptied", "onended", "onerror", "onfocus", "oninput",
- "oninvalid", "onkeydown", "onkeypress", "onkeyup",
- "onload", "onloadeddata", "onloadedmetadata", "onloadstart",
- "onmousedown", "onmousemove", "onmouseout", "onmouseover",
- "onmouseup", "onmousewheel", "onpause", "onplay",
- "onplaying", "onprogress", "onratechange", "onreadystatechange",
- "onreset", "onscroll", "onseeked", "onseeking",
- "onselect", "onshow", "onstalled", "onsubmit", "onsuspend",
- "ontimeupdate", "onvolumechange", "onwaiting",
-
- // See https://www.w3.org/TR/html4/sgml/dtd.html
- // Most of the attributes that take a %Script are also defined as event handlers
- // in HTML 5. The one exception is onunload.
- // "onchange", "onclick", "ondblclick", "onfocus",
- // "onkeydown", "onkeypress", "onkeyup", "onload",
- // "onmousedown", "onmousemove", "onmouseout", "onmouseover",
- // "onmouseup", "onreset", "onselect", "onsubmit",
- "onunload"
- ));
- }
-
- private void initURIAttrs() {
- uriAttrs = new HashSet<>(Arrays.asList(
- // See https://www.w3.org/TR/html4/sgml/dtd.html
- // https://www.w3.org/TR/html5/
- // These are all the attributes that take a %URI or a valid URL potentially surrounded
- // by spaces
- "action", "cite", "classid", "codebase", "data",
- "datasrc", "for", "href", "longdesc", "profile",
- "src", "usemap"
- ));
- }
-
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/JavadocClassFinder.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import java.util.EnumSet;
-import javax.tools.JavaFileObject;
-
-import com.sun.tools.javac.code.Symbol.PackageSymbol;
-import com.sun.tools.javac.code.ClassFinder;
-import com.sun.tools.javac.util.Context;
-import com.sun.tools.javac.util.Context.Factory;
-
-/** Javadoc uses an extended class finder that records package.html entries
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @author Neal Gafter
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public class JavadocClassFinder extends ClassFinder {
-
- public static JavadocClassFinder instance(Context context) {
- ClassFinder instance = context.get(classFinderKey);
- if (instance == null)
- instance = new JavadocClassFinder(context);
- return (JavadocClassFinder)instance;
- }
-
- public static void preRegister(Context context) {
- context.put(classFinderKey, (Factory<ClassFinder>)JavadocClassFinder::new);
- }
-
- private DocEnv docenv;
- private EnumSet<JavaFileObject.Kind> all = EnumSet.of(JavaFileObject.Kind.CLASS,
- JavaFileObject.Kind.SOURCE,
- JavaFileObject.Kind.HTML);
- private EnumSet<JavaFileObject.Kind> noSource = EnumSet.of(JavaFileObject.Kind.CLASS,
- JavaFileObject.Kind.HTML);
-
- public JavadocClassFinder(Context context) {
- super(context);
- docenv = DocEnv.instance(context);
- preferSource = true;
- }
-
- /**
- * Override getPackageFileKinds to include search for package.html
- */
- @Override
- protected EnumSet<JavaFileObject.Kind> getPackageFileKinds() {
- return docenv.docClasses ? noSource : all;
- }
-
- /**
- * Override extraFileActions to check for package documentation
- */
- @Override
- protected void extraFileActions(PackageSymbol pack, JavaFileObject fo) {
- if (fo.isNameCompatible("package", JavaFileObject.Kind.HTML))
- docenv.getPackageDoc(pack).setDocPath(fo);
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/JavadocEnter.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +0,0 @@
-/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import javax.tools.JavaFileObject;
-
-import com.sun.source.util.TreePath;
-import com.sun.tools.javac.code.Symbol.*;
-import com.sun.tools.javac.comp.Enter;
-import com.sun.tools.javac.tree.JCTree.*;
-import com.sun.tools.javac.util.Context;
-import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
-import com.sun.tools.javac.util.List;
-
-import static com.sun.tools.javac.code.Kinds.Kind.*;
-import com.sun.tools.javac.main.JavaCompiler;
-
-/**
- * Javadoc's own enter phase does a few things above and beyond that
- * done by javac.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @author Neal Gafter
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public class JavadocEnter extends Enter {
- public static JavadocEnter instance(Context context) {
- Enter instance = context.get(enterKey);
- if (instance == null)
- instance = new JavadocEnter(context);
- return (JavadocEnter)instance;
- }
-
- public static void preRegister(Context context) {
- context.put(enterKey, (Context.Factory<Enter>)JavadocEnter::new);
- }
-
- protected JavadocEnter(Context context) {
- super(context);
- messager = Messager.instance0(context);
- docenv = DocEnv.instance(context);
- compiler = JavaCompiler.instance(context);
- }
-
- final Messager messager;
- final DocEnv docenv;
- final JavaCompiler compiler;
-
- @Override
- public void main(List<JCCompilationUnit> trees) {
- // count all Enter errors as warnings.
- int nerrors = messager.nerrors;
- super.main(trees);
- compiler.enterDone();
- messager.nwarnings += (messager.nerrors - nerrors);
- messager.nerrors = nerrors;
- }
-
- @Override
- public void visitTopLevel(JCCompilationUnit tree) {
- super.visitTopLevel(tree);
- if (tree.sourcefile.isNameCompatible("package-info", JavaFileObject.Kind.SOURCE)) {
- JCPackageDecl pd = tree.getPackage();
- TreePath tp = pd == null ? docenv.getTreePath(tree) : docenv.getTreePath(tree, pd);
- docenv.makePackageDoc(tree.packge, tp);
- }
- }
-
- @Override
- public void visitClassDef(JCClassDecl tree) {
- super.visitClassDef(tree);
- if (tree.sym == null) return;
- if (tree.sym.kind == TYP || tree.sym.kind == ERR) {
- ClassSymbol c = tree.sym;
- docenv.makeClassDoc(c, docenv.getTreePath(env.toplevel, tree));
- }
- }
-
- /** Don't complain about a duplicate class. */
- @Override
- protected void duplicateClass(DiagnosticPosition pos, ClassSymbol c) {}
-
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/JavadocMemberEnter.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,207 +0,0 @@
-/*
- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import com.sun.source.util.TreePath;
-import com.sun.tools.javac.code.Flags;
-import com.sun.tools.javac.code.Symbol.*;
-import com.sun.tools.javac.comp.MemberEnter;
-import com.sun.tools.javac.tree.JCTree;
-import com.sun.tools.javac.tree.JCTree.*;
-import com.sun.tools.javac.util.Context;
-
-import static com.sun.tools.javac.code.Flags.*;
-import static com.sun.tools.javac.code.Kinds.Kind.*;
-
-/**
- * Javadoc's own memberEnter phase does a few things above and beyond that
- * done by javac.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @author Neal Gafter
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public class JavadocMemberEnter extends MemberEnter {
- public static JavadocMemberEnter instance0(Context context) {
- MemberEnter instance = context.get(memberEnterKey);
- if (instance == null)
- instance = new JavadocMemberEnter(context);
- return (JavadocMemberEnter)instance;
- }
-
- public static void preRegister(Context context) {
- context.put(memberEnterKey, (Context.Factory<MemberEnter>)JavadocMemberEnter::new);
- }
-
- final DocEnv docenv;
-
- protected JavadocMemberEnter(Context context) {
- super(context);
- docenv = DocEnv.instance(context);
- }
-
- @Override
- public void visitMethodDef(JCMethodDecl tree) {
- super.visitMethodDef(tree);
- MethodSymbol meth = tree.sym;
- if (meth == null || meth.kind != MTH) return;
- TreePath treePath = docenv.getTreePath(env.toplevel, env.enclClass, tree);
- if (meth.isConstructor())
- docenv.makeConstructorDoc(meth, treePath);
- else if (isAnnotationTypeElement(meth))
- docenv.makeAnnotationTypeElementDoc(meth, treePath);
- else
- docenv.makeMethodDoc(meth, treePath);
-
- // release resources
- tree.body = null;
- }
-
- @Override
- public void visitVarDef(JCVariableDecl tree) {
- if (tree.init != null) {
- boolean isFinal = (tree.mods.flags & FINAL) != 0
- || (env.enclClass.mods.flags & INTERFACE) != 0;
- if (!isFinal || containsNonConstantExpression(tree.init)) {
- // Avoid unnecessary analysis and release resources.
- // In particular, remove non-constant expressions
- // which may trigger Attr.attribClass, since
- // method bodies are also removed, in visitMethodDef.
- tree.init = null;
- }
- }
- super.visitVarDef(tree);
- if (tree.sym != null &&
- tree.sym.kind == VAR &&
- !isParameter(tree.sym)) {
- docenv.makeFieldDoc(tree.sym, docenv.getTreePath(env.toplevel, env.enclClass, tree));
- }
- }
-
- private static boolean isAnnotationTypeElement(MethodSymbol meth) {
- return ClassDocImpl.isAnnotationType(meth.enclClass());
- }
-
- private static boolean isParameter(VarSymbol var) {
- return (var.flags() & Flags.PARAMETER) != 0;
- }
-
- /**
- * Simple analysis of an expression tree to see if it contains tree nodes
- * for any non-constant expression. This does not include checking references
- * to other fields which may or may not be constant.
- */
- private static boolean containsNonConstantExpression(JCExpression tree) {
- return new MaybeConstantExpressionScanner().containsNonConstantExpression(tree);
- }
-
- /**
- * See JLS 15.18, Constant Expression
- */
- private static class MaybeConstantExpressionScanner extends JCTree.Visitor {
- boolean maybeConstantExpr = true;
-
- public boolean containsNonConstantExpression(JCExpression tree) {
- scan(tree);
- return !maybeConstantExpr;
- }
-
- public void scan(JCTree tree) {
- // short circuit scan when end result is definitely false
- if (maybeConstantExpr && tree != null)
- tree.accept(this);
- }
-
- @Override
- /** default for any non-overridden visit method. */
- public void visitTree(JCTree tree) {
- maybeConstantExpr = false;
- }
-
- @Override
- public void visitBinary(JCBinary tree) {
- switch (tree.getTag()) {
- case MUL: case DIV: case MOD:
- case PLUS: case MINUS:
- case SL: case SR: case USR:
- case LT: case LE: case GT: case GE:
- case EQ: case NE:
- case BITAND: case BITXOR: case BITOR:
- case AND: case OR:
- break;
- default:
- maybeConstantExpr = false;
- }
- }
-
- @Override
- public void visitConditional(JCConditional tree) {
- scan(tree.cond);
- scan(tree.truepart);
- scan(tree.falsepart);
- }
-
- @Override
- public void visitIdent(JCIdent tree) { }
-
- @Override
- public void visitLiteral(JCLiteral tree) { }
-
- @Override
- public void visitParens(JCParens tree) {
- scan(tree.expr);
- }
-
- @Override
- public void visitSelect(JCTree.JCFieldAccess tree) {
- scan(tree.selected);
- }
-
- @Override
- public void visitTypeCast(JCTypeCast tree) {
- scan(tree.clazz);
- scan(tree.expr);
- }
-
- @Override
- public void visitTypeIdent(JCPrimitiveTypeTree tree) { }
-
- @Override
- public void visitUnary(JCUnary tree) {
- switch (tree.getTag()) {
- case POS: case NEG: case COMPL: case NOT:
- break;
- default:
- maybeConstantExpr = false;
- }
- }
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/JavadocTodo.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import com.sun.tools.javac.comp.*;
-import com.sun.tools.javac.util.*;
-import com.sun.tools.javac.util.Context.Factory;
-
-/**
- * Javadoc's own todo queue doesn't queue its inputs, as javadoc
- * doesn't perform attribution of method bodies or semantic checking.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @author Neal Gafter
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public class JavadocTodo extends Todo {
- public static void preRegister(Context context) {
- context.put(todoKey, (Factory<Todo>)JavadocTodo::new);
- }
-
- protected JavadocTodo(Context context) {
- super(context);
- }
-
- @Override
- public void append(Env<AttrContext> e) {
- // do nothing; Javadoc doesn't perform attribution.
- }
-
- @Override
- public boolean offer(Env<AttrContext> e) {
- return false;
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/JavadocTool.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,440 +0,0 @@
-/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.EnumSet;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.Map;
-import java.util.Set;
-
-import javax.tools.JavaFileManager;
-import javax.tools.JavaFileManager.Location;
-import javax.tools.JavaFileObject;
-import javax.tools.StandardJavaFileManager;
-import javax.tools.StandardLocation;
-
-import com.sun.tools.javac.code.ClassFinder;
-import com.sun.tools.javac.code.Symbol.Completer;
-import com.sun.tools.javac.code.Symbol.ModuleSymbol;
-import com.sun.tools.javac.code.Symbol.PackageSymbol;
-import com.sun.tools.javac.comp.Enter;
-import com.sun.tools.javac.tree.JCTree;
-import com.sun.tools.javac.tree.JCTree.JCClassDecl;
-import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;
-import com.sun.tools.javac.util.Abort;
-import com.sun.tools.javac.util.Context;
-import com.sun.tools.javac.util.List;
-import com.sun.tools.javac.util.ListBuffer;
-import com.sun.tools.javac.util.Name;
-
-
-/**
- * This class could be the main entry point for Javadoc when Javadoc is used as a
- * component in a larger software system. It provides operations to
- * construct a new javadoc processor, and to run it on a set of source
- * files.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @author Neal Gafter
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public class JavadocTool extends com.sun.tools.javac.main.JavaCompiler {
- DocEnv docenv;
-
- final Messager messager;
- final ClassFinder javadocFinder;
- final Enter javadocEnter;
- final Set<JavaFileObject> uniquefiles;
-
- /**
- * Construct a new JavaCompiler processor, using appropriately
- * extended phases of the underlying compiler.
- */
- protected JavadocTool(Context context) {
- super(context);
- messager = Messager.instance0(context);
- javadocFinder = JavadocClassFinder.instance(context);
- javadocEnter = JavadocEnter.instance(context);
- uniquefiles = new HashSet<>();
- }
-
- /**
- * For javadoc, the parser needs to keep comments. Overrides method from JavaCompiler.
- */
- @Override
- protected boolean keepComments() {
- return true;
- }
-
- /**
- * Construct a new javadoc tool.
- */
- public static JavadocTool make0(Context context) {
- // force the use of Javadoc's class finder
- JavadocClassFinder.preRegister(context);
-
- // force the use of Javadoc's own enter phase
- JavadocEnter.preRegister(context);
-
- // force the use of Javadoc's own member enter phase
- JavadocMemberEnter.preRegister(context);
-
- // force the use of Javadoc's own todo phase
- JavadocTodo.preRegister(context);
-
- // force the use of Messager as a Log
- Messager.instance0(context);
-
- return new JavadocTool(context);
- }
-
- public RootDocImpl getRootDocImpl(String doclocale,
- String encoding,
- ModifierFilter filter,
- List<String> args,
- List<String[]> options,
- Iterable<? extends JavaFileObject> fileObjects,
- boolean breakiterator,
- List<String> subPackages,
- List<String> excludedPackages,
- boolean docClasses,
- boolean legacyDoclet,
- boolean quiet) throws IOException {
- docenv = DocEnv.instance(context);
- docenv.showAccess = filter;
- docenv.quiet = quiet;
- docenv.breakiterator = breakiterator;
- docenv.setLocale(doclocale);
- docenv.setEncoding(encoding);
- docenv.docClasses = docClasses;
- docenv.legacyDoclet = legacyDoclet;
-
- javadocFinder.sourceCompleter = docClasses ? Completer.NULL_COMPLETER : sourceCompleter;
-
- if (docClasses) {
- // If -Xclasses is set, the args should be a series of class names
- for (String arg: args) {
- if (!isValidPackageName(arg)) // checks
- docenv.error(null, "main.illegal_class_name", arg);
- }
- if (messager.nerrors() != 0) {
- return null;
- }
- return new RootDocImpl(docenv, args, options);
- }
-
- ListBuffer<JCCompilationUnit> classTrees = new ListBuffer<>();
- Set<String> includedPackages = new LinkedHashSet<>();
-
- try {
- StandardJavaFileManager fm = docenv.fileManager instanceof StandardJavaFileManager
- ? (StandardJavaFileManager) docenv.fileManager : null;
- Set<String> packageNames = new LinkedHashSet<>();
- // Normally, the args should be a series of package names or file names.
- // Parse the files and collect the package names.
- for (String arg: args) {
- if (fm != null && arg.endsWith(".java") && new File(arg).exists()) {
- if (new File(arg).getName().equals("module-info.java")) {
- docenv.warning(null, "main.file_ignored", arg);
- } else {
- parse(fm.getJavaFileObjects(arg), classTrees, true);
- }
- } else if (isValidPackageName(arg)) {
- packageNames.add(arg);
- } else if (arg.endsWith(".java")) {
- if (fm == null)
- throw new IllegalArgumentException();
- else
- docenv.error(null, "main.file_not_found", arg);
- } else {
- docenv.error(null, "main.illegal_package_name", arg);
- }
- }
-
- // Parse file objects provide via the DocumentationTool API
- parse(fileObjects, classTrees, true);
-
- modules.initModules(classTrees.toList());
-
- // Build up the complete list of any packages to be documented
- Location location = modules.multiModuleMode ? StandardLocation.MODULE_SOURCE_PATH
- : docenv.fileManager.hasLocation(StandardLocation.SOURCE_PATH) ? StandardLocation.SOURCE_PATH
- : StandardLocation.CLASS_PATH;
-
- PackageTable t = new PackageTable(docenv.fileManager, location)
- .packages(packageNames)
- .subpackages(subPackages, excludedPackages);
-
- includedPackages = t.getIncludedPackages();
-
- // Parse the files in the packages to be documented
- ListBuffer<JCCompilationUnit> packageTrees = new ListBuffer<>();
- for (String packageName: includedPackages) {
- List<JavaFileObject> files = t.getFiles(packageName);
- docenv.notice("main.Loading_source_files_for_package", packageName);
-
- if (files.isEmpty())
- messager.warning(Messager.NOPOS, "main.no_source_files_for_package", packageName);
- parse(files, packageTrees, false);
- }
- modules.enter(packageTrees.toList(), null);
-
- if (messager.nerrors() != 0) {
- return null;
- }
-
- // Enter symbols for all files
- docenv.notice("main.Building_tree");
- javadocEnter.main(classTrees.toList().appendList(packageTrees.toList()));
- } catch (Abort ex) {}
-
- if (messager.nerrors() != 0)
- return null;
-
- return new RootDocImpl(docenv, listClasses(classTrees.toList()), List.from(includedPackages), options);
- }
-
- /** Is the given string a valid package name? */
- boolean isValidPackageName(String s) {
- int index;
- while ((index = s.indexOf('.')) != -1) {
- if (!isValidClassName(s.substring(0, index))) return false;
- s = s.substring(index+1);
- }
- return isValidClassName(s);
- }
-
- private void parse(Iterable<? extends JavaFileObject> files, ListBuffer<JCCompilationUnit> trees,
- boolean trace) {
- for (JavaFileObject fo: files) {
- if (uniquefiles.add(fo)) { // ignore duplicates
- if (trace)
- docenv.notice("main.Loading_source_file", fo.getName());
- trees.append(parse(fo));
- }
- }
- }
-
- /** Are surrogates supported?
- */
- final static boolean surrogatesSupported = surrogatesSupported();
- private static boolean surrogatesSupported() {
- try {
- boolean b = Character.isHighSurrogate('a');
- return true;
- } catch (NoSuchMethodError ex) {
- return false;
- }
- }
-
- /**
- * Return true if given file name is a valid class name
- * (including "package-info").
- * @param s the name of the class to check.
- * @return true if given class name is a valid class name
- * and false otherwise.
- */
- public static boolean isValidClassName(String s) {
- if (s.length() < 1) return false;
- if (s.equals("package-info")) return true;
- if (surrogatesSupported) {
- int cp = s.codePointAt(0);
- if (!Character.isJavaIdentifierStart(cp))
- return false;
- for (int j=Character.charCount(cp); j<s.length(); j+=Character.charCount(cp)) {
- cp = s.codePointAt(j);
- if (!Character.isJavaIdentifierPart(cp))
- return false;
- }
- } else {
- if (!Character.isJavaIdentifierStart(s.charAt(0)))
- return false;
- for (int j=1; j<s.length(); j++)
- if (!Character.isJavaIdentifierPart(s.charAt(j)))
- return false;
- }
- return true;
- }
-
- /**
- * From a list of top level trees, return the list of contained class definitions
- */
- List<JCClassDecl> listClasses(List<JCCompilationUnit> trees) {
- ListBuffer<JCClassDecl> result = new ListBuffer<>();
- for (JCCompilationUnit t : trees) {
- for (JCTree def : t.defs) {
- if (def.hasTag(JCTree.Tag.CLASSDEF))
- result.append((JCClassDecl)def);
- }
- }
- return result.toList();
- }
-
- /**
- * A table to manage included and excluded packages.
- */
- class PackageTable {
- private final Map<String, Entry> entries = new LinkedHashMap<>();
- private final Set<String> includedPackages = new LinkedHashSet<>();
- private final JavaFileManager fm;
- private final Location location;
- private final Set<JavaFileObject.Kind> sourceKinds = EnumSet.of(JavaFileObject.Kind.SOURCE);
-
- /**
- * Creates a table to manage included and excluded packages.
- * @param fm The file manager used to locate source files
- * @param locn the location used to locate source files
- */
- PackageTable(JavaFileManager fm, Location locn) {
- this.fm = fm;
- this.location = locn;
- getEntry("").excluded = false;
- }
-
- PackageTable packages(Collection<String> packageNames) {
- includedPackages.addAll(packageNames);
- return this;
- }
-
- PackageTable subpackages(Collection<String> packageNames, Collection<String> excludePackageNames)
- throws IOException {
- for (String p: excludePackageNames) {
- getEntry(p).excluded = true;
- }
-
- for (String packageName: packageNames) {
- Location packageLocn = getLocation(packageName);
- for (JavaFileObject fo: fm.list(packageLocn, packageName, sourceKinds, true)) {
- String binaryName = fm.inferBinaryName(packageLocn, fo);
- String pn = getPackageName(binaryName);
- String simpleName = getSimpleName(binaryName);
- Entry e = getEntry(pn);
- if (!e.isExcluded() && isValidClassName(simpleName)) {
- includedPackages.add(pn);
- e.files = (e.files == null ? List.of(fo) : e.files.prepend(fo));
- }
- }
- }
- return this;
- }
-
- /**
- * Returns the aggregate set of included packages.
- * @return the aggregate set of included packages
- */
- Set<String> getIncludedPackages() {
- return includedPackages;
- }
-
- /**
- * Returns the set of source files for a package.
- * @param packageName the specified package
- * @return the set of file objects for the specified package
- * @throws IOException if an error occurs while accessing the files
- */
- List<JavaFileObject> getFiles(String packageName) throws IOException {
- Entry e = getEntry(packageName);
- // The files may have been found as a side effect of searching for subpackages
- if (e.files != null)
- return e.files;
-
- ListBuffer<JavaFileObject> lb = new ListBuffer<>();
- Location packageLocn = getLocation(packageName);
- for (JavaFileObject fo: fm.list(packageLocn, packageName, sourceKinds, false)) {
- String binaryName = fm.inferBinaryName(packageLocn, fo);
- String simpleName = getSimpleName(binaryName);
- if (isValidClassName(simpleName)) {
- lb.append(fo);
- }
- }
-
- return lb.toList();
- }
-
- private Location getLocation(String packageName) throws IOException {
- if (location == StandardLocation.MODULE_SOURCE_PATH) {
- // TODO: handle invalid results
- Name pack = names.fromString(packageName);
-
- for (ModuleSymbol msym : modules.allModules()) {
- PackageSymbol p = syms.getPackage(msym, pack);
- if (p != null && !p.members().isEmpty()) {
- return fm.getLocationForModule(location, msym.name.toString());
- }
- }
-
- return null;
- } else {
- return location;
- }
- }
-
- private Entry getEntry(String name) {
- Entry e = entries.get(name);
- if (e == null)
- entries.put(name, e = new Entry(name));
- return e;
- }
-
- private String getPackageName(String name) {
- int lastDot = name.lastIndexOf(".");
- return (lastDot == -1 ? "" : name.substring(0, lastDot));
- }
-
- private String getSimpleName(String name) {
- int lastDot = name.lastIndexOf(".");
- return (lastDot == -1 ? name : name.substring(lastDot + 1));
- }
-
- class Entry {
- final String name;
- Boolean excluded;
- List<JavaFileObject> files;
-
- Entry(String name) {
- this.name = name;
- }
-
- boolean isExcluded() {
- if (excluded == null)
- excluded = getEntry(getPackageName(name)).isExcluded();
- return excluded;
- }
- }
- }
-
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/MemberDocImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import com.sun.javadoc.*;
-
-import com.sun.source.util.TreePath;
-import com.sun.tools.javac.code.Symbol;
-
-/**
- * Represents a member of a java class: field, constructor, or method.
- * This is an abstract class dealing with information common to
- * method, constructor and field members. Class members of a class
- * (nested classes) are represented instead by ClassDocImpl.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @see MethodDocImpl
- * @see FieldDocImpl
- * @see ClassDocImpl
- *
- * @author Robert Field
- * @author Neal Gafter
- */
-
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public abstract class MemberDocImpl
- extends ProgramElementDocImpl
- implements MemberDoc {
-
- /**
- * constructor.
- */
- public MemberDocImpl(DocEnv env, Symbol sym, TreePath treePath) {
- super(env, sym, treePath);
- }
-
- /**
- * Returns true if this field was synthesized by the compiler.
- */
- public abstract boolean isSynthetic();
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/Messager.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,320 +0,0 @@
-/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import java.io.PrintWriter;
-import java.util.Locale;
-import java.util.ResourceBundle;
-
-import com.sun.javadoc.*;
-import com.sun.tools.javac.util.Context;
-import com.sun.tools.javac.util.Context.Factory;
-import com.sun.tools.javac.util.JCDiagnostic;
-import com.sun.tools.javac.util.JCDiagnostic.DiagnosticType;
-import com.sun.tools.javac.util.JavacMessages;
-import com.sun.tools.javac.util.Log;
-
-/**
- * Utility for integrating with javadoc tools and for localization.
- * Handle Resources. Access to error and warning counts.
- * Message formatting.
- * <br>
- * Also provides implementation for DocErrorReporter.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @see java.util.ResourceBundle
- * @see java.text.MessageFormat
- * @author Neal Gafter (rewrite)
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public class Messager extends Log implements DocErrorReporter {
- public static final SourcePosition NOPOS = null;
-
- /** Get the current messager, which is also the compiler log. */
- public static Messager instance0(Context context) {
- Log instance = context.get(logKey);
- if (instance == null || !(instance instanceof Messager))
- throw new InternalError("no messager instance!");
- return (Messager)instance;
- }
-
- public static void preRegister(Context context,
- final String programName) {
- context.put(logKey, (Factory<Log>)c -> new Messager(c, programName));
- }
- public static void preRegister(Context context,
- final String programName,
- final PrintWriter errWriter,
- final PrintWriter warnWriter,
- final PrintWriter noticeWriter) {
- context.put(logKey, (Factory<Log>)c -> new Messager(c,
- programName,
- errWriter,
- warnWriter,
- noticeWriter));
- }
-
- public class ExitJavadoc extends Error {
- private static final long serialVersionUID = 0;
- }
-
- final String programName;
-
- private Locale locale;
- private final JavacMessages messages;
- private final JCDiagnostic.Factory javadocDiags;
-
- /** The default writer for diagnostics
- */
- static final PrintWriter defaultErrWriter = new PrintWriter(System.err);
- static final PrintWriter defaultWarnWriter = new PrintWriter(System.err);
- static final PrintWriter defaultNoticeWriter = new PrintWriter(System.out);
-
- /**
- * Constructor
- * @param programName Name of the program (for error messages).
- */
- protected Messager(Context context, String programName) {
- this(context, programName, defaultErrWriter, defaultWarnWriter, defaultNoticeWriter);
- }
-
- /**
- * Constructor
- * @param programName Name of the program (for error messages).
- * @param errWriter Stream for error messages
- * @param warnWriter Stream for warnings
- * @param noticeWriter Stream for other messages
- */
- @SuppressWarnings("deprecation")
- protected Messager(Context context,
- String programName,
- PrintWriter errWriter,
- PrintWriter warnWriter,
- PrintWriter noticeWriter) {
- super(context, errWriter, warnWriter, noticeWriter);
- messages = JavacMessages.instance(context);
- messages.add(locale -> ResourceBundle.getBundle("com.sun.tools.javadoc.resources.javadoc",
- locale));
- javadocDiags = new JCDiagnostic.Factory(messages, "javadoc");
- this.programName = programName;
-
- }
-
- public void setLocale(Locale locale) {
- this.locale = locale;
- }
-
- /**
- * get and format message string from resource
- *
- * @param key selects message from resource
- * @param args arguments for the message
- */
- String getText(String key, Object... args) {
- return messages.getLocalizedString(locale, key, args);
- }
-
- /**
- * Print error message, increment error count.
- * Part of DocErrorReporter.
- *
- * @param msg message to print
- */
- public void printError(String msg) {
- printError(null, msg);
- }
-
- /**
- * Print error message, increment error count.
- * Part of DocErrorReporter.
- *
- * @param pos the position where the error occurs
- * @param msg message to print
- */
- public void printError(SourcePosition pos, String msg) {
- if (diagListener != null) {
- report(DiagnosticType.ERROR, pos, msg);
- return;
- }
-
- if (nerrors < MaxErrors) {
- String prefix = (pos == null) ? programName : pos.toString();
- PrintWriter errWriter = getWriter(WriterKind.ERROR);
- errWriter.println(prefix + ": " + getText("javadoc.error") + " - " + msg);
- errWriter.flush();
- prompt();
- nerrors++;
- }
- }
-
- /**
- * Print warning message, increment warning count.
- * Part of DocErrorReporter.
- *
- * @param msg message to print
- */
- public void printWarning(String msg) {
- printWarning(null, msg);
- }
-
- /**
- * Print warning message, increment warning count.
- * Part of DocErrorReporter.
- *
- * @param pos the position where the error occurs
- * @param msg message to print
- */
- public void printWarning(SourcePosition pos, String msg) {
- if (diagListener != null) {
- report(DiagnosticType.WARNING, pos, msg);
- return;
- }
-
- if (nwarnings < MaxWarnings) {
- String prefix = (pos == null) ? programName : pos.toString();
- PrintWriter warnWriter = getWriter(WriterKind.WARNING);
- warnWriter.println(prefix + ": " + getText("javadoc.warning") +" - " + msg);
- warnWriter.flush();
- nwarnings++;
- }
- }
-
- /**
- * Print a message.
- * Part of DocErrorReporter.
- *
- * @param msg message to print
- */
- public void printNotice(String msg) {
- printNotice(null, msg);
- }
-
- /**
- * Print a message.
- * Part of DocErrorReporter.
- *
- * @param pos the position where the error occurs
- * @param msg message to print
- */
- public void printNotice(SourcePosition pos, String msg) {
- if (diagListener != null) {
- report(DiagnosticType.NOTE, pos, msg);
- return;
- }
-
- PrintWriter noticeWriter = getWriter(WriterKind.NOTICE);
- if (pos == null)
- noticeWriter.println(msg);
- else
- noticeWriter.println(pos + ": " + msg);
- noticeWriter.flush();
- }
-
- /**
- * Print error message, increment error count.
- *
- * @param key selects message from resource
- */
- public void error(SourcePosition pos, String key, Object... args) {
- printError(pos, getText(key, args));
- }
-
- /**
- * Print warning message, increment warning count.
- *
- * @param key selects message from resource
- */
- public void warning(SourcePosition pos, String key, Object... args) {
- printWarning(pos, getText(key, args));
- }
-
- /**
- * Print a message.
- *
- * @param key selects message from resource
- */
- public void notice(String key, Object... args) {
- printNotice(getText(key, args));
- }
-
- /**
- * Return total number of errors, including those recorded
- * in the compilation log.
- */
- public int nerrors() { return nerrors; }
-
- /**
- * Return total number of warnings, including those recorded
- * in the compilation log.
- */
- public int nwarnings() { return nwarnings; }
-
- /**
- * Print exit message.
- */
- public void exitNotice() {
- if (nerrors > 0) {
- notice((nerrors > 1) ? "main.errors" : "main.error",
- "" + nerrors);
- }
- if (nwarnings > 0) {
- notice((nwarnings > 1) ? "main.warnings" : "main.warning",
- "" + nwarnings);
- }
- }
-
- /**
- * Force program exit, e.g., from a fatal error.
- * <p>
- * TODO: This method does not really belong here.
- */
- public void exit() {
- throw new ExitJavadoc();
- }
-
- private void report(DiagnosticType type, SourcePosition pos, String msg) {
- switch (type) {
- case ERROR:
- case WARNING:
- Object prefix = (pos == null) ? programName : pos;
- report(javadocDiags.create(type, null, null, "msg", prefix, msg));
- break;
-
- case NOTE:
- String key = (pos == null) ? "msg" : "pos.msg";
- report(javadocDiags.create(type, null, null, key, pos, msg));
- break;
-
- default:
- throw new IllegalArgumentException(type.toString());
- }
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/MethodDocImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,248 +0,0 @@
-/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import java.lang.reflect.Modifier;
-
-import com.sun.javadoc.*;
-import com.sun.source.util.TreePath;
-import com.sun.tools.javac.code.*;
-import com.sun.tools.javac.code.Symbol.*;
-import com.sun.tools.javac.code.Type;
-import static com.sun.tools.javac.code.TypeTag.CLASS;
-
-/**
- * Represents a method of a java class.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @since 1.2
- * @author Robert Field
- * @author Neal Gafter (rewrite)
- */
-
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public class MethodDocImpl
- extends ExecutableMemberDocImpl implements MethodDoc {
-
- /**
- * constructor.
- */
- public MethodDocImpl(DocEnv env, MethodSymbol sym) {
- super(env, sym);
- }
-
- /**
- * constructor.
- */
- public MethodDocImpl(DocEnv env, MethodSymbol sym, TreePath treePath) {
- super(env, sym, treePath);
- }
-
- /**
- * Return true if it is a method, which it is.
- * Note: constructors are not methods.
- * This method is overridden by AnnotationTypeElementDocImpl.
- *
- * @return true
- */
- public boolean isMethod() {
- return true;
- }
-
- /**
- * Return true if this method is default
- */
- public boolean isDefault() {
- return (sym.flags() & Flags.DEFAULT) != 0;
- }
-
- /**
- * Return true if this method is abstract
- */
- public boolean isAbstract() {
- return (Modifier.isAbstract(getModifiers()) && !isDefault());
- }
-
- /**
- * Get return type.
- *
- * @return the return type of this method, null if it
- * is a constructor.
- */
- public com.sun.javadoc.Type returnType() {
- return TypeMaker.getType(env, sym.type.getReturnType(), false);
- }
-
- /**
- * Return the class that originally defined the method that
- * is overridden by the current definition, or null if no
- * such class exists.
- *
- * @return a ClassDocImpl representing the superclass that
- * originally defined this method, null if this method does
- * not override a definition in a superclass.
- */
- public ClassDoc overriddenClass() {
- com.sun.javadoc.Type t = overriddenType();
- return (t != null) ? t.asClassDoc() : null;
- }
-
- /**
- * Return the type containing the method that this method overrides.
- * It may be a <code>ClassDoc</code> or a <code>ParameterizedType</code>.
- */
- public com.sun.javadoc.Type overriddenType() {
-
- if ((sym.flags() & Flags.STATIC) != 0) {
- return null;
- }
-
- ClassSymbol origin = (ClassSymbol)sym.owner;
- for (Type t = env.types.supertype(origin.type);
- t.hasTag(CLASS);
- t = env.types.supertype(t)) {
- ClassSymbol c = (ClassSymbol)t.tsym;
- for (Symbol sym2 : membersOf(c).getSymbolsByName(sym.name)) {
- if (sym.overrides(sym2, origin, env.types, true)) {
- return TypeMaker.getType(env, t);
- }
- }
- }
- return null;
- }
-
- /**
- * Return the method that this method overrides.
- *
- * @return a MethodDoc representing a method definition
- * in a superclass this method overrides, null if
- * this method does not override.
- */
- public MethodDoc overriddenMethod() {
-
- // Real overriding only. Static members are simply hidden.
- // Likewise for constructors, but the MethodSymbol.overrides
- // method takes this into account.
- if ((sym.flags() & Flags.STATIC) != 0) {
- return null;
- }
-
- // Derived from com.sun.tools.javac.comp.Check.checkOverride .
-
- ClassSymbol origin = (ClassSymbol)sym.owner;
- for (Type t = env.types.supertype(origin.type);
- t.hasTag(CLASS);
- t = env.types.supertype(t)) {
- ClassSymbol c = (ClassSymbol)t.tsym;
- for (Symbol sym2 : membersOf(c).getSymbolsByName(sym.name)) {
- if (sym.overrides(sym2, origin, env.types, true)) {
- return env.getMethodDoc((MethodSymbol)sym2);
- }
- }
- }
- return null;
- }
-
- /**Retrieve members of c, ignoring any CompletionFailures that occur. */
- private Scope membersOf(ClassSymbol c) {
- try {
- return c.members();
- } catch (CompletionFailure cf) {
- /* Quietly ignore completion failures and try again - the type
- * for which the CompletionFailure was thrown shouldn't be completed
- * again by the completer that threw the CompletionFailure.
- */
- return membersOf(c);
- }
- }
-
- /**
- * Tests whether this method overrides another.
- * The overridden method may be one declared in a superclass or
- * a superinterface (unlike {@link #overriddenMethod()}).
- *
- * <p> When a non-abstract method overrides an abstract one, it is
- * also said to <i>implement</i> the other.
- *
- * @param meth the other method to examine
- * @return <tt>true</tt> if this method overrides the other
- */
- public boolean overrides(MethodDoc meth) {
- MethodSymbol overridee = ((MethodDocImpl) meth).sym;
- ClassSymbol origin = (ClassSymbol) sym.owner;
-
- return sym.name == overridee.name &&
-
- // not reflexive as per JLS
- sym != overridee &&
-
- // we don't care if overridee is static, though that wouldn't
- // compile
- !sym.isStatic() &&
-
- // sym, whose declaring type is the origin, must be
- // in a subtype of overridee's type
- env.types.asSuper(origin.type, overridee.owner) != null &&
-
- // check access and signatures; don't check return types
- sym.overrides(overridee, origin, env.types, false);
- }
-
-
- public String name() {
- if (name == null) {
- name = sym.name.toString();
- }
- return name;
- }
-
- private String name;
-
- public String qualifiedName() {
- if (qualifiedName == null) {
- qualifiedName = sym.enclClass().getQualifiedName() + "." + sym.name;
- }
- return qualifiedName;
- }
-
- private String qualifiedName;
-
- /**
- * Returns a string representation of this method. Includes the
- * qualified signature, the qualified method name, and any type
- * parameters. Type parameters follow the class name, as they do
- * in the syntax for invoking methods with explicit type parameters.
- */
- public String toString() {
- return sym.enclClass().getQualifiedName() +
- "." + typeParametersString() + name() + signature();
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/ModifierFilter.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,127 +0,0 @@
-/*
- * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import static com.sun.tools.javac.code.Flags.*;
-
-/**
- * A class whose instances are filters over Modifier bits.
- * Filtering is done by returning boolean values.
- * Classes, methods and fields can be filtered, or filtering
- * can be done directly on modifier bits.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @see com.sun.tools.javac.code.Flags
- * @author Robert Field
- */
-
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public class ModifierFilter {
-
- /**
- * Package private access.
- * A "pseudo-" modifier bit that can be used in the
- * constructors of this class to specify package private
- * access. This is needed since there is no Modifier.PACKAGE.
- */
- public static final long PACKAGE = 0x8000000000000000L;
-
- /**
- * All access modifiers.
- * A short-hand set of modifier bits that can be used in the
- * constructors of this class to specify all access modifiers,
- * Same as PRIVATE | PROTECTED | PUBLIC | PACKAGE.
- */
- public static final long ALL_ACCESS =
- PRIVATE | PROTECTED | PUBLIC | PACKAGE;
-
- private long oneOf;
- private long must;
- private long cannot;
-
- private static final int ACCESS_BITS = PRIVATE | PROTECTED | PUBLIC;
-
- /**
- * Constructor - Specify a filter.
- *
- * @param oneOf If zero, everything passes the filter.
- * If non-zero, at least one of the specified
- * bits must be on in the modifier bits to
- * pass the filter.
- */
- public ModifierFilter(long oneOf) {
- this(oneOf, 0, 0);
- }
-
- /**
- * Constructor - Specify a filter.
- * For example, the filter below will only pass synchronized
- * methods that are private or package private access and are
- * not native or static.
- * <pre>
- * ModifierFilter( Modifier.PRIVATE | ModifierFilter.PACKAGE,
- * Modifier.SYNCHRONIZED,
- * Modifier.NATIVE | Modifier.STATIC)
- * </pre><p>
- * Each of the three arguments must either be
- * zero or the or'ed combination of the bits specified in the
- * class Modifier or this class. During filtering, these values
- * are compared against the modifier bits as follows:
- *
- * @param oneOf If zero, ignore this argument.
- * If non-zero, at least one of the bits must be on.
- * @param must All bits specified must be on.
- * @param cannot None of the bits specified can be on.
- */
- public ModifierFilter(long oneOf, long must, long cannot) {
- this.oneOf = oneOf;
- this.must = must;
- this.cannot = cannot;
- }
-
- /**
- * Filter on modifier bits.
- *
- * @param modifierBits Bits as specified in the Modifier class
- *
- * @return Whether the modifierBits pass this filter.
- */
- public boolean checkModifier(int modifierBits) {
- // Add in the "pseudo-" modifier bit PACKAGE, if needed
- long fmod = ((modifierBits & ACCESS_BITS) == 0) ?
- modifierBits | PACKAGE :
- modifierBits;
- return ((oneOf == 0) || ((oneOf & fmod) != 0)) &&
- ((must & fmod) == must) &&
- ((cannot & fmod) == 0);
- }
-
-} // end ModifierFilter
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/PackageDocImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,391 +0,0 @@
-/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import javax.tools.FileObject;
-
-import com.sun.javadoc.*;
-import com.sun.source.util.TreePath;
-import com.sun.tools.javac.code.Attribute;
-import com.sun.tools.javac.code.Symbol;
-import com.sun.tools.javac.code.Symbol.ClassSymbol;
-import com.sun.tools.javac.code.Symbol.PackageSymbol;
-import com.sun.tools.javac.tree.JCTree;
-import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;
-import com.sun.tools.javac.util.List;
-import com.sun.tools.javac.util.ListBuffer;
-import com.sun.tools.javac.util.Name;
-import com.sun.tools.javac.util.Position;
-
-import static com.sun.tools.javac.code.Scope.LookupKind.NON_RECURSIVE;
-
-/**
- * Represents a java package. Provides access to information
- * about the package, the package's comment and tags, and the
- * classes in the package.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @since 1.2
- * @author Kaiyang Liu (original)
- * @author Robert Field (rewrite)
- * @author Neal Gafter (rewrite)
- * @author Scott Seligman (package-info.java)
- */
-
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public class PackageDocImpl extends DocImpl implements PackageDoc {
-
- public final PackageSymbol sym;
- private JCCompilationUnit tree = null; // for source position
-
- public FileObject docPath = null;
- private boolean foundDoc; // found a doc comment in either
- // package.html or package-info.java
-
- boolean isIncluded = false; // Set in RootDocImpl.
- public boolean setDocPath = false; //Flag to avoid setting doc path multiple times.
-
- /**
- * Constructor
- */
- public PackageDocImpl(DocEnv env, PackageSymbol sym) {
- this(env, sym, null);
- }
-
- /**
- * Constructor
- */
- public PackageDocImpl(DocEnv env, PackageSymbol sym, TreePath treePath) {
- super(env, treePath);
- this.sym = sym;
- this.tree = (treePath == null) ? null : (JCCompilationUnit) treePath.getCompilationUnit();
- foundDoc = (documentation != null);
- }
-
- void setTree(JCTree tree) {
- this.tree = (JCCompilationUnit) tree;
- }
-
- public void setTreePath(TreePath treePath) {
- super.setTreePath(treePath);
- checkDoc();
- }
-
- /**
- * Do lazy initialization of "documentation" string.
- */
- protected String documentation() {
- if (documentation != null)
- return documentation;
- if (docPath != null) {
- // read from file
- try {
- InputStream s = docPath.openInputStream();
- documentation = readHTMLDocumentation(s, docPath);
- } catch (IOException exc) {
- documentation = "";
- env.error(null, "javadoc.File_Read_Error", docPath.getName());
- }
- } else {
- // no doc file to be had
- documentation = "";
- }
- return documentation;
- }
-
- /**
- * Cache of all classes contained in this package, including
- * member classes of those classes, and their member classes, etc.
- * Includes only those classes at the specified protection level
- * and weaker.
- */
- private List<ClassDocImpl> allClassesFiltered = null;
-
- /**
- * Cache of all classes contained in this package, including
- * member classes of those classes, and their member classes, etc.
- */
- private List<ClassDocImpl> allClasses = null;
-
- /**
- * Return a list of all classes contained in this package, including
- * member classes of those classes, and their member classes, etc.
- */
- private List<ClassDocImpl> getClasses(boolean filtered) {
- if (allClasses != null && !filtered) {
- return allClasses;
- }
- if (allClassesFiltered != null && filtered) {
- return allClassesFiltered;
- }
- ListBuffer<ClassDocImpl> classes = new ListBuffer<>();
- for (Symbol enumerated : sym.members().getSymbols(NON_RECURSIVE)) {
- if (enumerated != null) {
- ClassSymbol s = (ClassSymbol)enumerated;
- ClassDocImpl c = env.getClassDoc(s);
- if (c != null && !c.isSynthetic())
- c.addAllClasses(classes, filtered);
- }
- }
- if (filtered)
- return allClassesFiltered = classes.toList();
- else
- return allClasses = classes.toList();
- }
-
- /**
- * Add all included classes (including Exceptions and Errors)
- * and interfaces.
- */
- public void addAllClassesTo(ListBuffer<ClassDocImpl> list) {
- list.appendList(getClasses(true));
- }
-
- /**
- * Get all classes (including Exceptions and Errors)
- * and interfaces.
- * @since J2SE1.4.
- *
- * @return all classes and interfaces in this package, filtered to include
- * only the included classes if filter==true.
- */
- public ClassDoc[] allClasses(boolean filter) {
- List<ClassDocImpl> classes = getClasses(filter);
- return classes.toArray(new ClassDocImpl[classes.length()]);
- }
-
- /**
- * Get all included classes (including Exceptions and Errors)
- * and interfaces. Same as allClasses(true).
- *
- * @return all included classes and interfaces in this package.
- */
- public ClassDoc[] allClasses() {
- return allClasses(true);
- }
-
- /**
- * Get ordinary classes (that is, exclude exceptions, errors,
- * enums, interfaces, and annotation types) in this package.
- *
- * @return included ordinary classes in this package.
- */
- public ClassDoc[] ordinaryClasses() {
- ListBuffer<ClassDocImpl> ret = new ListBuffer<>();
- for (ClassDocImpl c : getClasses(true)) {
- if (c.isOrdinaryClass()) {
- ret.append(c);
- }
- }
- return ret.toArray(new ClassDocImpl[ret.length()]);
- }
-
- /**
- * Get Exception classes in this package.
- *
- * @return included Exceptions in this package.
- */
- public ClassDoc[] exceptions() {
- ListBuffer<ClassDocImpl> ret = new ListBuffer<>();
- for (ClassDocImpl c : getClasses(true)) {
- if (c.isException()) {
- ret.append(c);
- }
- }
- return ret.toArray(new ClassDocImpl[ret.length()]);
- }
-
- /**
- * Get Error classes in this package.
- *
- * @return included Errors in this package.
- */
- public ClassDoc[] errors() {
- ListBuffer<ClassDocImpl> ret = new ListBuffer<>();
- for (ClassDocImpl c : getClasses(true)) {
- if (c.isError()) {
- ret.append(c);
- }
- }
- return ret.toArray(new ClassDocImpl[ret.length()]);
- }
-
- /**
- * Get included enum types in this package.
- *
- * @return included enum types in this package.
- */
- public ClassDoc[] enums() {
- ListBuffer<ClassDocImpl> ret = new ListBuffer<>();
- for (ClassDocImpl c : getClasses(true)) {
- if (c.isEnum()) {
- ret.append(c);
- }
- }
- return ret.toArray(new ClassDocImpl[ret.length()]);
- }
-
- /**
- * Get included interfaces in this package, omitting annotation types.
- *
- * @return included interfaces in this package.
- */
- public ClassDoc[] interfaces() {
- ListBuffer<ClassDocImpl> ret = new ListBuffer<>();
- for (ClassDocImpl c : getClasses(true)) {
- if (c.isInterface()) {
- ret.append(c);
- }
- }
- return ret.toArray(new ClassDocImpl[ret.length()]);
- }
-
- /**
- * Get included annotation types in this package.
- *
- * @return included annotation types in this package.
- */
- public AnnotationTypeDoc[] annotationTypes() {
- ListBuffer<AnnotationTypeDocImpl> ret = new ListBuffer<>();
- for (ClassDocImpl c : getClasses(true)) {
- if (c.isAnnotationType()) {
- ret.append((AnnotationTypeDocImpl)c);
- }
- }
- return ret.toArray(new AnnotationTypeDocImpl[ret.length()]);
- }
-
- /**
- * Get the annotations of this package.
- * Return an empty array if there are none.
- */
- public AnnotationDesc[] annotations() {
- AnnotationDesc res[] = new AnnotationDesc[sym.getRawAttributes().length()];
- int i = 0;
- for (Attribute.Compound a : sym.getRawAttributes()) {
- res[i++] = new AnnotationDescImpl(env, a);
- }
- return res;
- }
-
-
- /**
- * Lookup for a class within this package.
- *
- * @return ClassDocImpl of found class, or null if not found.
- */
- public ClassDoc findClass(String className) {
- final boolean filtered = true;
- for (ClassDocImpl c : getClasses(filtered)) {
- if (c.name().equals(className)) {
- return c;
- }
- }
- return null;
- }
-
- /**
- * Return true if this package is included in the active set.
- */
- public boolean isIncluded() {
- return isIncluded;
- }
-
- /**
- * Get package name.
- *
- * Note that we do not provide a means of obtaining the simple
- * name of a package -- package names are always returned in their
- * uniquely qualified form.
- */
- public String name() {
- return qualifiedName();
- }
-
- /**
- * Get package name.
- */
- public String qualifiedName() {
- if (qualifiedName == null) {
- Name fullname = sym.getQualifiedName();
- // Some bogus tests depend on the interned "" being returned.
- // See 6457276.
- qualifiedName = fullname.isEmpty() ? "" : fullname.toString();
- }
- return qualifiedName;
- }
-
- private String qualifiedName;
-
- /**
- * set doc path for an unzipped directory
- */
- public void setDocPath(FileObject path) {
- setDocPath = true;
- if (path == null)
- return;
- if (!path.equals(docPath)) {
- docPath = path;
- checkDoc();
- }
- }
-
- // Has checkDoc() sounded off yet?
- private boolean checkDocWarningEmitted = false;
-
- /**
- * Invoked when a source of package doc comments is located.
- * Emits a diagnostic if this is the second one.
- */
- private void checkDoc() {
- if (foundDoc) {
- if (!checkDocWarningEmitted) {
- env.warning(null, "javadoc.Multiple_package_comments", name());
- checkDocWarningEmitted = true;
- }
- } else {
- foundDoc = true;
- }
- }
-
- /**
- * Return the source position of the entity, or null if
- * no position is available.
- */
- public SourcePosition position() {
- return (tree != null)
- ? SourcePositionImpl.make(tree.sourcefile, tree.pos, tree.lineMap)
- : SourcePositionImpl.make(docPath, Position.NOPOS, null);
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/ParamTagImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,121 +0,0 @@
-/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import java.util.regex.*;
-
-import com.sun.javadoc.*;
-
-/**
- * Represents an @param documentation tag.
- * Parses and stores the name and comment parts of the parameter tag.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @author Robert Field
- *
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-class ParamTagImpl extends TagImpl implements ParamTag {
-
- private static final Pattern typeParamRE = Pattern.compile("<([^<>]+)>");
-
- private final String parameterName;
- private final String parameterComment;
- private final boolean isTypeParameter;
-
- /**
- * Cached inline tags.
- */
- private Tag[] inlineTags;
-
- ParamTagImpl(DocImpl holder, String name, String text) {
- super(holder, name, text);
- String[] sa = divideAtWhite();
-
- Matcher m = typeParamRE.matcher(sa[0]);
- isTypeParameter = m.matches();
- parameterName = isTypeParameter ? m.group(1) : sa[0];
- parameterComment = sa[1];
- }
-
- /**
- * Return the parameter name.
- */
- public String parameterName() {
- return parameterName;
- }
-
- /**
- * Return the parameter comment.
- */
- public String parameterComment() {
- return parameterComment;
- }
-
- /**
- * Return the kind of this tag.
- */
- @Override
- public String kind() {
- return "@param";
- }
-
- /**
- * Return true if this ParamTag corresponds to a type parameter.
- */
- public boolean isTypeParameter() {
- return isTypeParameter;
- }
-
- /**
- * convert this object to a string.
- */
- @Override
- public String toString() {
- return name + ":" + text;
- }
-
- /**
- * For the parameter comment with embedded @link tags return the array of
- * TagImpls consisting of SeeTagImpl(s) and text containing TagImpl(s).
- *
- * @return TagImpl[] Array of tags with inline SeeTagImpls.
- * @see TagImpl#inlineTags()
- * @see ThrowsTagImpl#inlineTags()
- */
- @Override
- public Tag[] inlineTags() {
- if (inlineTags == null) {
- inlineTags = Comment.getInlineTags(holder, parameterComment);
- }
- return inlineTags;
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/ParameterImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +0,0 @@
-/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import com.sun.javadoc.*;
-
-import com.sun.tools.javac.code.Attribute;
-import com.sun.tools.javac.code.Symbol.VarSymbol;
-
-/**
- * ParameterImpl information.
- * This includes a parameter type and parameter name.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @author Kaiyang Liu (original)
- * @author Robert Field (rewrite)
- * @author Scott Seligman (generics, annotations)
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-class ParameterImpl implements Parameter {
-
- private final DocEnv env;
- private final VarSymbol sym;
- private final com.sun.javadoc.Type type;
-
- /**
- * Constructor of parameter info class.
- */
- ParameterImpl(DocEnv env, VarSymbol sym) {
- this.env = env;
- this.sym = sym;
- this.type = TypeMaker.getType(env, sym.type, false);
- }
-
- /**
- * Get the type of this parameter.
- */
- public com.sun.javadoc.Type type() {
- return type;
- }
-
- /**
- * Get local name of this parameter.
- * For example if parameter is the short 'index', returns "index".
- */
- public String name() {
- return sym.toString();
- }
-
- /**
- * Get type name of this parameter.
- * For example if parameter is the short 'index', returns "short".
- */
- public String typeName() {
- return (type instanceof ClassDoc || type instanceof TypeVariable)
- ? type.typeName() // omit formal type params or bounds
- : type.toString();
- }
-
- /**
- * Returns a string representation of the parameter.
- * <p>
- * For example if parameter is the short 'index', returns "short index".
- *
- * @return type name and parameter name of this parameter.
- */
- public String toString() {
- return typeName() + " " + sym;
- }
-
- /**
- * Get the annotations of this parameter.
- * Return an empty array if there are none.
- */
- public AnnotationDesc[] annotations() {
- AnnotationDesc res[] = new AnnotationDesc[sym.getRawAttributes().length()];
- int i = 0;
- for (Attribute.Compound a : sym.getRawAttributes()) {
- res[i++] = new AnnotationDescImpl(env, a);
- }
- return res;
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/ParameterizedTypeImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,150 +0,0 @@
-/*
- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import com.sun.javadoc.*;
-
-import com.sun.tools.javac.code.Symbol.ClassSymbol;
-import com.sun.tools.javac.code.Type;
-import com.sun.tools.javac.code.Type.ClassType;
-
-import static com.sun.tools.javac.code.TypeTag.CLASS;
-
-
-/**
- * Implementation of <code>ParameterizedType</code>, which
- * represents an invocation of a generic class or interface.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public class ParameterizedTypeImpl
- extends AbstractTypeImpl implements ParameterizedType {
-
- ParameterizedTypeImpl(DocEnv env, Type type) {
- super(env, type);
- }
-
- /**
- * Return the generic class or interface that declared this type.
- */
- @Override
- public ClassDoc asClassDoc() {
- return env.getClassDoc((ClassSymbol)type.tsym);
- }
-
- /**
- * Return the actual type arguments of this type.
- */
- public com.sun.javadoc.Type[] typeArguments() {
- return TypeMaker.getTypes(env, type.getTypeArguments());
- }
-
- /**
- * Return the class type that is a direct supertype of this one.
- * Return null if this is an interface type.
- */
- public com.sun.javadoc.Type superclassType() {
- if (asClassDoc().isInterface()) {
- return null;
- }
- Type sup = env.types.supertype(type);
- return TypeMaker.getType(env,
- (sup != type) ? sup : env.syms.objectType);
- }
-
- /**
- * Return the interface types directly implemented by or extended by this
- * parameterized type.
- * Return an empty array if there are no interfaces.
- */
- public com.sun.javadoc.Type[] interfaceTypes() {
- return TypeMaker.getTypes(env, env.types.interfaces(type));
- }
-
- /**
- * Return the type that contains this type as a member.
- * Return null is this is a top-level type.
- */
- public com.sun.javadoc.Type containingType() {
- if (type.getEnclosingType().hasTag(CLASS)) {
- // This is the type of an inner class.
- return TypeMaker.getType(env, type.getEnclosingType());
- }
- ClassSymbol enclosing = type.tsym.owner.enclClass();
- if (enclosing != null) {
- // Nested but not inner. Return the ClassDoc of the enclosing
- // class or interface.
- // See java.lang.reflect.ParameterizedType.getOwnerType().
- return env.getClassDoc(enclosing);
- }
- return null;
- }
-
-
- // Asking for the "name" of a parameterized type doesn't exactly make
- // sense. It's a type expression. Return the name of its generic
- // type.
- @Override
- public String typeName() {
- return TypeMaker.getTypeName(type, false);
- }
-
- @Override
- public ParameterizedType asParameterizedType() {
- return this;
- }
-
- @Override
- public String toString() {
- return parameterizedTypeToString(env, (ClassType)type, true);
- }
-
- static String parameterizedTypeToString(DocEnv env, ClassType cl,
- boolean full) {
- if (env.legacyDoclet) {
- return TypeMaker.getTypeName(cl, full);
- }
- StringBuilder s = new StringBuilder();
- if (!(cl.getEnclosingType().hasTag(CLASS))) { // if not an inner class...
- s.append(TypeMaker.getTypeName(cl, full));
- } else {
- ClassType encl = (ClassType)cl.getEnclosingType();
- s.append(parameterizedTypeToString(env, encl, full))
- .append('.')
- .append(cl.tsym.name.toString());
- }
- s.append(TypeMaker.typeArgumentsString(env, cl, full));
- return s.toString();
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/PrimitiveType.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,163 +0,0 @@
-/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import com.sun.javadoc.*;
-
-/**
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-class PrimitiveType implements com.sun.javadoc.Type {
-
- private final String name;
-
- static final PrimitiveType voidType = new PrimitiveType("void");
- static final PrimitiveType booleanType = new PrimitiveType("boolean");
- static final PrimitiveType byteType = new PrimitiveType("byte");
- static final PrimitiveType charType = new PrimitiveType("char");
- static final PrimitiveType shortType = new PrimitiveType("short");
- static final PrimitiveType intType = new PrimitiveType("int");
- static final PrimitiveType longType = new PrimitiveType("long");
- static final PrimitiveType floatType = new PrimitiveType("float");
- static final PrimitiveType doubleType = new PrimitiveType("double");
-
- // error type, should never actually be used
- static final PrimitiveType errorType = new PrimitiveType("");
-
- PrimitiveType(String name) {
- this.name = name;
- }
-
- /**
- * Return unqualified name of type excluding any dimension information.
- * <p>
- * For example, a two dimensional array of String returns 'String'.
- */
- public String typeName() {
- return name;
- }
-
- public com.sun.javadoc.Type getElementType() {
- return null;
- }
-
- /**
- * Return qualified name of type excluding any dimension information.
- *<p>
- * For example, a two dimensional array of String
- * returns 'java.lang.String'.
- */
- public String qualifiedTypeName() {
- return name;
- }
-
- /**
- * Return the simple name of this type.
- */
- public String simpleTypeName() {
- return name;
- }
-
- /**
- * Return the type's dimension information, as a string.
- * <p>
- * For example, a two dimensional array of String returns '[][]'.
- */
- public String dimension() {
- return "";
- }
-
- /**
- * Return this type as a class. Array dimensions are ignored.
- *
- * @return a ClassDocImpl if the type is a Class.
- * Return null if it is a primitive type..
- */
- public ClassDoc asClassDoc() {
- return null;
- }
-
- /**
- * Return null, as this is not an annotation type.
- */
- public AnnotationTypeDoc asAnnotationTypeDoc() {
- return null;
- }
-
- /**
- * Return null, as this is not an instantiation.
- */
- public ParameterizedType asParameterizedType() {
- return null;
- }
-
- /**
- * Return null, as this is not a type variable.
- */
- public TypeVariable asTypeVariable() {
- return null;
- }
-
- /**
- * Return null, as this is not a wildcard type.
- */
- public WildcardType asWildcardType() {
- return null;
- }
-
- /**
- * Return null, as this is not an annotated type.
- */
- public AnnotatedType asAnnotatedType() {
- return null;
- }
-
- /**
- * Returns a string representation of the type.
- *
- * Return name of type including any dimension information.
- * <p>
- * For example, a two dimensional array of String returns
- * <code>String[][]</code>.
- *
- * @return name of type including any dimension information.
- */
- public String toString() {
- return qualifiedTypeName();
- }
-
- /**
- * Return true if this is a primitive type.
- */
- public boolean isPrimitive() {
- return true;
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/ProgramElementDocImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,233 +0,0 @@
-/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import java.lang.reflect.Modifier;
-import java.text.CollationKey;
-
-import com.sun.javadoc.*;
-import com.sun.source.util.TreePath;
-import com.sun.tools.javac.code.Attribute;
-import com.sun.tools.javac.code.Symbol;
-import com.sun.tools.javac.code.Symbol.ClassSymbol;
-import com.sun.tools.javac.tree.JCTree;
-import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;
-import com.sun.tools.javac.util.Position;
-
-/**
- * Represents a java program element: class, interface, field,
- * constructor, or method.
- * This is an abstract class dealing with information common to
- * these elements.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @see MemberDocImpl
- * @see ClassDocImpl
- *
- * @author Robert Field
- * @author Neal Gafter (rewrite)
- * @author Scott Seligman (generics, enums, annotations)
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public abstract class ProgramElementDocImpl
- extends DocImpl implements ProgramElementDoc {
-
- private final Symbol sym;
-
- // For source position information.
- JCTree tree = null;
- Position.LineMap lineMap = null;
-
-
- // Cache for getModifiers().
- private int modifiers = -1;
-
- protected ProgramElementDocImpl(DocEnv env, Symbol sym, TreePath treePath) {
- super(env, treePath);
- this.sym = sym;
- if (treePath != null) {
- tree = (JCTree) treePath.getLeaf();
- lineMap = ((JCCompilationUnit) treePath.getCompilationUnit()).lineMap;
- }
- }
-
- @Override
- void setTreePath(TreePath treePath) {
- super.setTreePath(treePath);
- this.tree = (JCTree) treePath.getLeaf();
- this.lineMap = ((JCCompilationUnit) treePath.getCompilationUnit()).lineMap;
- }
-
- /**
- * Subclasses override to identify the containing class
- */
- protected abstract ClassSymbol getContainingClass();
-
- /**
- * Returns the flags in terms of javac's flags
- */
- abstract protected long getFlags();
-
- /**
- * Returns the modifier flags in terms of java.lang.reflect.Modifier.
- */
- protected int getModifiers() {
- if (modifiers == -1) {
- modifiers = DocEnv.translateModifiers(getFlags());
- }
- return modifiers;
- }
-
- /**
- * Get the containing class of this program element.
- *
- * @return a ClassDocImpl for this element's containing class.
- * If this is a class with no outer class, return null.
- */
- public ClassDoc containingClass() {
- if (getContainingClass() == null) {
- return null;
- }
- return env.getClassDoc(getContainingClass());
- }
-
- /**
- * Return the package that this member is contained in.
- * Return "" if in unnamed package.
- */
- public PackageDoc containingPackage() {
- return env.getPackageDoc(getContainingClass().packge());
- }
-
- /**
- * Get the modifier specifier integer.
- *
- * @see java.lang.reflect.Modifier
- */
- public int modifierSpecifier() {
- int modifiers = getModifiers();
- if (isMethod() && containingClass().isInterface())
- // Remove the implicit abstract modifier.
- return modifiers & ~Modifier.ABSTRACT;
- return modifiers;
- }
-
- /**
- * Get modifiers string.
- * <pre>
- * Example, for:
- * public abstract int foo() { ... }
- * modifiers() would return:
- * 'public abstract'
- * </pre>
- * Annotations are not included.
- */
- public String modifiers() {
- int modifiers = getModifiers();
- if (isAnnotationTypeElement() ||
- (isMethod() && containingClass().isInterface())) {
- // Remove the implicit abstract modifier.
- return Modifier.toString(modifiers & ~Modifier.ABSTRACT);
- } else {
- return Modifier.toString(modifiers);
- }
- }
-
- /**
- * Get the annotations of this program element.
- * Return an empty array if there are none.
- */
- public AnnotationDesc[] annotations() {
- AnnotationDesc res[] = new AnnotationDesc[sym.getRawAttributes().length()];
- int i = 0;
- for (Attribute.Compound a : sym.getRawAttributes()) {
- res[i++] = new AnnotationDescImpl(env, a);
- }
- return res;
- }
-
- /**
- * Return true if this program element is public
- */
- public boolean isPublic() {
- int modifiers = getModifiers();
- return Modifier.isPublic(modifiers);
- }
-
- /**
- * Return true if this program element is protected
- */
- public boolean isProtected() {
- int modifiers = getModifiers();
- return Modifier.isProtected(modifiers);
- }
-
- /**
- * Return true if this program element is private
- */
- public boolean isPrivate() {
- int modifiers = getModifiers();
- return Modifier.isPrivate(modifiers);
- }
-
- /**
- * Return true if this program element is package private
- */
- public boolean isPackagePrivate() {
- return !(isPublic() || isPrivate() || isProtected());
- }
-
- /**
- * Return true if this program element is static
- */
- public boolean isStatic() {
- int modifiers = getModifiers();
- return Modifier.isStatic(modifiers);
- }
-
- /**
- * Return true if this program element is final
- */
- public boolean isFinal() {
- int modifiers = getModifiers();
- return Modifier.isFinal(modifiers);
- }
-
- /**
- * Generate a key for sorting.
- */
- CollationKey generateKey() {
- String k = name();
- // System.out.println("COLLATION KEY FOR " + this + " is \"" + k + "\"");
- return env.doclocale.collator.getCollationKey(k);
- }
-
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/RootDocImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,401 +0,0 @@
-/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import java.io.IOException;
-import java.util.Collection;
-import java.util.Locale;
-
-import javax.tools.JavaFileManager;
-import javax.tools.JavaFileObject;
-import javax.tools.StandardJavaFileManager;
-
-import com.sun.javadoc.*;
-import com.sun.tools.javac.code.Source.Feature;
-import com.sun.tools.javac.tree.JCTree.JCClassDecl;
-import com.sun.tools.javac.util.List;
-import com.sun.tools.javac.util.ListBuffer;
-import com.sun.tools.javac.util.Position;
-
-/**
- * This class holds the information from one run of javadoc.
- * Particularly the packages, classes and options specified
- * by the user.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @since 1.2
- * @author Robert Field
- * @author Atul M Dambalkar
- * @author Neal Gafter (rewrite)
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public class RootDocImpl extends DocImpl implements RootDoc {
-
- /**
- * list of classes specified on the command line.
- */
- private List<ClassDocImpl> cmdLineClasses;
-
- /**
- * list of packages specified on the command line.
- */
- private List<PackageDocImpl> cmdLinePackages;
-
- /**
- * a collection of all options.
- */
- private List<String[]> options;
-
- /**
- * Constructor used when reading source files.
- *
- * @param env the documentation environment, state for this javadoc run
- * @param classes list of classes specified on the commandline
- * @param packages list of package names specified on the commandline
- * @param options list of options
- */
- public RootDocImpl(DocEnv env, List<JCClassDecl> classes, List<String> packages, List<String[]> options) {
- super(env, null);
- this.options = options;
- setPackages(env, packages);
- setClasses(env, classes);
- }
-
- /**
- * Constructor used when reading class files.
- *
- * @param env the documentation environment, state for this javadoc run
- * @param classes list of class names specified on the commandline
- * @param options list of options
- */
- public RootDocImpl(DocEnv env, List<String> classes, List<String[]> options) {
- super(env, null);
- this.options = options;
- cmdLinePackages = List.nil();
- ListBuffer<ClassDocImpl> classList = new ListBuffer<>();
- for (String className : classes) {
- ClassDocImpl c = env.loadClass(className);
- if (c == null)
- env.error(null, "javadoc.class_not_found", className);
- else
- classList = classList.append(c);
- }
- cmdLineClasses = classList.toList();
- }
-
- /**
- * Initialize classes information. Those classes are input from
- * command line.
- *
- * @param env the compilation environment
- * @param classes a list of ClassDeclaration
- */
- private void setClasses(DocEnv env, List<JCClassDecl> classes) {
- ListBuffer<ClassDocImpl> result = new ListBuffer<>();
- for (JCClassDecl def : classes) {
- //### Do we want modifier check here?
- if (env.shouldDocument(def.sym)) {
- ClassDocImpl cd = env.getClassDoc(def.sym);
- if (cd != null) {
- cd.isIncluded = true;
- result.append(cd);
- } //else System.out.println(" (classdoc is null)");//DEBUG
- } //else System.out.println(" (env.shouldDocument() returned false)");//DEBUG
- }
- cmdLineClasses = result.toList();
- }
-
- /**
- * Initialize packages information.
- *
- * @param env the compilation environment
- * @param packages a list of package names (String)
- */
- private void setPackages(DocEnv env, List<String> packages) {
- ListBuffer<PackageDocImpl> packlist = new ListBuffer<>();
- for (String name : packages) {
- PackageDocImpl pkg = env.lookupPackage(name);
- if (pkg != null) {
- pkg.isIncluded = true;
- packlist.append(pkg);
- } else {
- env.warning(null, "main.no_source_files_for_package", name);
- }
- }
- cmdLinePackages = packlist.toList();
- }
-
- /**
- * Command line options.
- *
- * <pre>
- * For example, given:
- * javadoc -foo this that -bar other ...
- *
- * This method will return:
- * options()[0][0] = "-foo"
- * options()[0][1] = "this"
- * options()[0][2] = "that"
- * options()[1][0] = "-bar"
- * options()[1][1] = "other"
- * </pre>
- *
- * @return an array of arrays of String.
- */
- public String[][] options() {
- return options.toArray(new String[options.length()][]);
- }
-
- /**
- * Packages specified on the command line.
- */
- public PackageDoc[] specifiedPackages() {
- return (PackageDoc[])cmdLinePackages
- .toArray(new PackageDocImpl[cmdLinePackages.length()]);
- }
-
- /**
- * Classes and interfaces specified on the command line.
- */
- public ClassDoc[] specifiedClasses() {
- ListBuffer<ClassDocImpl> classesToDocument = new ListBuffer<>();
- for (ClassDocImpl cd : cmdLineClasses) {
- cd.addAllClasses(classesToDocument, true);
- }
- return (ClassDoc[])classesToDocument.toArray(new ClassDocImpl[classesToDocument.length()]);
- }
-
- /**
- * Return all classes and interfaces (including those inside
- * packages) to be documented.
- */
- public ClassDoc[] classes() {
- ListBuffer<ClassDocImpl> classesToDocument = new ListBuffer<>();
- for (ClassDocImpl cd : cmdLineClasses) {
- cd.addAllClasses(classesToDocument, true);
- }
- for (PackageDocImpl pd : cmdLinePackages) {
- pd.addAllClassesTo(classesToDocument);
- }
- return classesToDocument.toArray(new ClassDocImpl[classesToDocument.length()]);
- }
-
- /**
- * Return a ClassDoc for the specified class/interface name
- *
- * @param qualifiedName qualified class name
- * (i.e. includes package name).
- *
- * @return a ClassDocImpl holding the specified class, null if
- * this class is not referenced.
- */
- public ClassDoc classNamed(String qualifiedName) {
- return env.lookupClass(qualifiedName);
- }
-
- /**
- * Return a PackageDoc for the specified package name
- *
- * @param name package name
- *
- * @return a PackageDoc holding the specified package, null if
- * this package is not referenced.
- */
- public PackageDoc packageNamed(String name) {
- return env.lookupPackage(name);
- }
-
- /**
- * Return the name of this Doc item.
- *
- * @return the string <code>"*RootDocImpl*"</code>.
- */
- public String name() {
- return "*RootDocImpl*";
- }
-
- /**
- * Return the name of this Doc item.
- *
- * @return the string <code>"*RootDocImpl*"</code>.
- */
- public String qualifiedName() {
- return "*RootDocImpl*";
- }
-
- /**
- * Return true if this Doc is include in the active set.
- * RootDocImpl isn't even a program entity so it is always false.
- */
- public boolean isIncluded() {
- return false;
- }
-
- /**
- * Print error message, increment error count.
- *
- * @param msg message to print
- */
- public void printError(String msg) {
- env.printError(msg);
- }
-
- /**
- * Print error message, increment error count.
- *
- * @param msg message to print
- */
- public void printError(SourcePosition pos, String msg) {
- env.printError(pos, msg);
- }
-
- /**
- * Print warning message, increment warning count.
- *
- * @param msg message to print
- */
- public void printWarning(String msg) {
- env.printWarning(msg);
- }
-
- /**
- * Print warning message, increment warning count.
- *
- * @param msg message to print
- */
- public void printWarning(SourcePosition pos, String msg) {
- env.printWarning(pos, msg);
- }
-
- /**
- * Print a message.
- *
- * @param msg message to print
- */
- public void printNotice(String msg) {
- env.printNotice(msg);
- }
-
- /**
- * Print a message.
- *
- * @param msg message to print
- */
- public void printNotice(SourcePosition pos, String msg) {
- env.printNotice(pos, msg);
- }
-
- /**
- * Return the path of the overview file and null if it does not exist.
- * @return the path of the overview file and null if it does not exist.
- */
- private JavaFileObject getOverviewPath() {
- for (String[] opt : options) {
- if (opt[0].equals("-overview")) {
- if (env.fileManager instanceof StandardJavaFileManager) {
- StandardJavaFileManager fm = (StandardJavaFileManager) env.fileManager;
- return fm.getJavaFileObjects(opt[1]).iterator().next();
- }
- }
- }
- return null;
- }
-
- /**
- * Do lazy initialization of "documentation" string.
- */
- @Override
- protected String documentation() {
- if (documentation == null) {
- JavaFileObject overviewPath = getOverviewPath();
- if (overviewPath == null) {
- // no doc file to be had
- documentation = "";
- } else {
- // read from file
- try {
- documentation = readHTMLDocumentation(
- overviewPath.openInputStream(),
- overviewPath);
- } catch (IOException exc) {
- documentation = "";
- env.error(null, "javadoc.File_Read_Error", overviewPath.getName());
- }
- }
- }
- return documentation;
- }
-
- /**
- * Return the source position of the entity, or null if
- * no position is available.
- */
- @Override
- public SourcePosition position() {
- JavaFileObject path;
- return ((path = getOverviewPath()) == null) ?
- null :
- SourcePositionImpl.make(path, Position.NOPOS, null);
- }
-
- /**
- * Return the locale provided by the user or the default locale value.
- */
- public Locale getLocale() {
- return env.doclocale.locale;
- }
-
- /**
- * Return the current file manager.
- */
- public JavaFileManager getFileManager() {
- return env.fileManager;
- }
-
- public void initDocLint(Collection<String> opts, Collection<String> customTagNames,
- String htmlVersion) {
- env.initDoclint(opts, customTagNames, htmlVersion);
- }
-
- public JavaScriptScanner initJavaScriptScanner(boolean allowScriptInComments) {
- return env.initJavaScriptScanner(allowScriptInComments);
- }
-
- public boolean isFunctionalInterface(AnnotationDesc annotationDesc) {
- return Feature.LAMBDA.allowedInSource(env.source)
- && annotationDesc.annotationType().qualifiedName().equals(
- env.syms.functionalInterfaceType.toString());
- }
-
- public boolean showTagMessages() {
- return env.showTagMessages();
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/SeeTagImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,544 +0,0 @@
-/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import java.io.File;
-import java.util.Locale;
-
-import com.sun.javadoc.*;
-import com.sun.tools.javac.code.Printer;
-import com.sun.tools.javac.code.Symbol;
-import com.sun.tools.javac.code.Type.CapturedType;
-import com.sun.tools.javac.util.*;
-
-import static com.sun.tools.javac.code.Kinds.Kind.*;
-
-/**
- * Represents a see also documentation tag.
- * The @see tag can be plain text, or reference a class or member.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @author Kaiyang Liu (original)
- * @author Robert Field (rewrite)
- * @author Atul M Dambalkar
- *
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-class SeeTagImpl extends TagImpl implements SeeTag, LayoutCharacters {
-
- //### TODO: Searching for classes, fields, and methods
- //### should follow the normal rules applied by the compiler.
-
- /**
- * where of where#what - i.e. the class name (may be empty)
- */
- private String where;
-
- /**
- * what of where#what - i.e. the member (may be null)
- */
- private String what;
-
- private PackageDoc referencedPackage;
- private ClassDoc referencedClass;
- private MemberDoc referencedMember;
-
- String label = "";
-
- SeeTagImpl(DocImpl holder, String name, String text) {
- super(holder, name, text);
- parseSeeString();
- if (where != null) {
- ClassDocImpl container = null;
- if (holder instanceof MemberDoc) {
- container =
- (ClassDocImpl)((ProgramElementDoc)holder).containingClass();
- } else if (holder instanceof ClassDoc) {
- container = (ClassDocImpl)holder;
- }
- findReferenced(container);
- if (showRef) showRef();
- }
- }
-
- private static final boolean showRef = false;
-
- private void showRef() {
- Symbol sym;
- if (referencedMember != null) {
- if (referencedMember instanceof MethodDocImpl)
- sym = ((MethodDocImpl) referencedMember).sym;
- else if (referencedMember instanceof FieldDocImpl)
- sym = ((FieldDocImpl) referencedMember).sym;
- else
- sym = ((ConstructorDocImpl) referencedMember).sym;
- } else if (referencedClass != null) {
- sym = ((ClassDocImpl) referencedClass).tsym;
- } else if (referencedPackage != null) {
- sym = ((PackageDocImpl) referencedPackage).sym;
- } else
- return;
-
- final JavacMessages messages = JavacMessages.instance(docenv().context);
- Locale locale = Locale.getDefault();
- Printer printer = new Printer() {
- int count;
- @Override
- protected String localize(Locale locale, String key, Object... args) {
- return messages.getLocalizedString(locale, key, args);
- }
- @Override
- protected String capturedVarId(CapturedType t, Locale locale) {
- return "CAP#" + (++count);
- }
- };
-
- String s = text.replaceAll("\\s+", " "); // normalize white space
- int sp = s.indexOf(" ");
- int lparen = s.indexOf("(");
- int rparen = s.indexOf(")");
- String seetext = (sp == -1) ? s
- : (lparen == -1 || sp < lparen) ? s.substring(0, sp)
- : s.substring(0, rparen + 1);
-
- File file = new File(holder.position().file().getAbsoluteFile().toURI().normalize());
-
- StringBuilder sb = new StringBuilder();
- sb.append("+++ ").append(file).append(": ")
- .append(name()).append(" ").append(seetext).append(": ");
- sb.append(sym.getKind()).append(" ");
- if (sym.kind == MTH || sym.kind == VAR)
- sb.append(printer.visit(sym.owner, locale)).append(".");
- sb.append(printer.visit(sym, locale));
-
- System.err.println(sb);
- }
-
- /**
- * get the class name part of @see, For instance,
- * if the comment is @see String#startsWith(java.lang.String) .
- * This function returns String.
- * Returns null if format was not that of java reference.
- * Return empty string if class name was not specified..
- */
- public String referencedClassName() {
- return where;
- }
-
- /**
- * get the package referenced by @see. For instance,
- * if the comment is @see java.lang
- * This function returns a PackageDocImpl for java.lang
- * Returns null if no known package found.
- */
- public PackageDoc referencedPackage() {
- return referencedPackage;
- }
-
- /**
- * get the class referenced by the class name part of @see, For instance,
- * if the comment is @see String#startsWith(java.lang.String) .
- * This function returns a ClassDocImpl for java.lang.String.
- * Returns null if class is not a class specified on the javadoc command line..
- */
- public ClassDoc referencedClass() {
- return referencedClass;
- }
-
- /**
- * get the name of the member referenced by the prototype part of @see,
- * For instance,
- * if the comment is @see String#startsWith(java.lang.String) .
- * This function returns "startsWith(java.lang.String)"
- * Returns null if format was not that of java reference.
- * Return empty string if member name was not specified..
- */
- public String referencedMemberName() {
- return what;
- }
-
- /**
- * get the member referenced by the prototype part of @see,
- * For instance,
- * if the comment is @see String#startsWith(java.lang.String) .
- * This function returns a MethodDocImpl for startsWith.
- * Returns null if member could not be determined.
- */
- public MemberDoc referencedMember() {
- return referencedMember;
- }
-
-
- /**
- * parse @see part of comment. Determine 'where' and 'what'
- */
- private void parseSeeString() {
- int len = text.length();
- if (len == 0) {
- return;
- }
- switch (text.charAt(0)) {
- case '<':
- if (text.charAt(len-1) != '>') {
- docenv().warning(holder,
- "tag.see.no_close_bracket_on_url",
- name, text);
- }
- return;
- case '"':
- if (len == 1 || text.charAt(len-1) != '"') {
- docenv().warning(holder,
- "tag.see.no_close_quote",
- name, text);
- } else {
-// text = text.substring(1,len-1); // strip quotes
- }
- return;
- }
-
- // check that the text is one word, with possible parentheses
- // this part of code doesn't allow
- // @see <a href=.....>asfd</a>
- // comment it.
-
- // the code assumes that there is no initial white space.
- int parens = 0;
- int commentstart = 0;
- int start = 0;
- int cp;
- for (int i = start; i < len ; i += Character.charCount(cp)) {
- cp = text.codePointAt(i);
- switch (cp) {
- case '(': parens++; break;
- case ')': parens--; break;
- case '[': case ']': case '.': case '#': break;
- case ',':
- if (parens <= 0) {
- docenv().warning(holder,
- "tag.see.malformed_see_tag",
- name, text);
- return;
- }
- break;
- case ' ': case '\t': case '\n': case CR:
- if (parens == 0) { //here onwards the comment starts.
- commentstart = i;
- i = len;
- }
- break;
- default:
- if (!Character.isJavaIdentifierPart(cp)) {
- docenv().warning(holder,
- "tag.see.illegal_character",
- name, ""+cp, text);
- }
- break;
- }
- }
- if (parens != 0) {
- docenv().warning(holder,
- "tag.see.malformed_see_tag",
- name, text);
- return;
- }
-
- String seetext = "";
- String labeltext = "";
-
- if (commentstart > 0) {
- seetext = text.substring(start, commentstart);
- labeltext = text.substring(commentstart + 1);
- // strip off the white space which can be between seetext and the
- // actual label.
- for (int i = 0; i < labeltext.length(); i++) {
- char ch2 = labeltext.charAt(i);
- if (!(ch2 == ' ' || ch2 == '\t' || ch2 == '\n')) {
- label = labeltext.substring(i);
- break;
- }
- }
- } else {
- seetext = text;
- label = "";
- }
-
- int sharp = seetext.indexOf('#');
- if (sharp >= 0) {
- // class#member
- where = seetext.substring(0, sharp);
- what = seetext.substring(sharp + 1);
- } else {
- if (seetext.indexOf('(') >= 0) {
- docenv().warning(holder,
- "tag.see.missing_sharp",
- name, text);
- where = "";
- what = seetext;
- }
- else {
- // no member specified, text names class
- where = seetext;
- what = null;
- }
- }
- }
-
- /**
- * Find what is referenced by the see also. If possible, sets
- * referencedClass and referencedMember.
- *
- * @param containingClass the class containing the comment containing
- * the tag. May be null, if, for example, it is a package comment.
- */
- private void findReferenced(ClassDocImpl containingClass) {
- if (where.length() > 0) {
- if (containingClass != null) {
- referencedClass = containingClass.findClass(where);
- } else {
- referencedClass = docenv().lookupClass(where);
- }
- if (referencedClass == null && holder() instanceof ProgramElementDoc) {
- referencedClass = docenv().lookupClass(
- ((ProgramElementDoc) holder()).containingPackage().name() + "." + where);
- }
-
- if (referencedClass == null) { /* may just not be in this run */
- // check if it's a package name
- referencedPackage = docenv().lookupPackage(where);
- return;
- }
- } else {
- if (containingClass == null) {
- docenv().warning(holder,
- "tag.see.class_not_specified",
- name, text);
- return;
- } else {
- referencedClass = containingClass;
- }
- }
- where = referencedClass.qualifiedName();
-
- if (what == null) {
- return;
- } else {
- int paren = what.indexOf('(');
- String memName = (paren >= 0 ? what.substring(0, paren) : what);
- String[] paramarr;
- if (paren > 0) {
- // has parameter list -- should be method or constructor
- paramarr = new ParameterParseMachine(what.
- substring(paren, what.length())).parseParameters();
- if (paramarr != null) {
- referencedMember = findExecutableMember(memName, paramarr,
- referencedClass);
- } else {
- referencedMember = null;
- }
- } else {
- // no parameter list -- should be field
- referencedMember = findExecutableMember(memName, null,
- referencedClass);
- FieldDoc fd = ((ClassDocImpl)referencedClass).
- findField(memName);
- // when no args given, prefer fields over methods
- if (referencedMember == null ||
- (fd != null &&
- fd.containingClass()
- .subclassOf(referencedMember.containingClass()))) {
- referencedMember = fd;
- }
- }
- if (referencedMember == null) {
- docenv().warning(holder,
- "tag.see.can_not_find_member",
- name, what, where);
- }
- }
- }
-
- private MemberDoc findReferencedMethod(String memName, String[] paramarr,
- ClassDoc referencedClass) {
- MemberDoc meth = findExecutableMember(memName, paramarr, referencedClass);
- if (meth == null) {
- for (ClassDoc nestedClass : referencedClass.innerClasses()) {
- meth = findReferencedMethod(memName, paramarr, nestedClass);
- if (meth != null) {
- return meth;
- }
- }
- }
- return null;
- }
-
- private MemberDoc findExecutableMember(String memName, String[] paramarr,
- ClassDoc referencedClass) {
- String className = referencedClass.name();
- if (memName.equals(className.substring(className.lastIndexOf(".") + 1))) {
- return ((ClassDocImpl)referencedClass).findConstructor(memName,
- paramarr);
- } else { // it's a method.
- return ((ClassDocImpl)referencedClass).findMethod(memName,
- paramarr);
- }
- }
-
- // separate "int, String" from "(int, String)"
- // (int i, String s) ==> [0] = "int", [1] = String
- // (int[][], String[]) ==> [0] = "int[][]" // [1] = "String[]"
- class ParameterParseMachine {
- static final int START = 0;
- static final int TYPE = 1;
- static final int NAME = 2;
- static final int TNSPACE = 3; // space between type and name
- static final int ARRAYDECORATION = 4;
- static final int ARRAYSPACE = 5;
-
- String parameters;
-
- StringBuilder typeId;
-
- ListBuffer<String> paramList;
-
- ParameterParseMachine(String parameters) {
- this.parameters = parameters;
- this.paramList = new ListBuffer<>();
- typeId = new StringBuilder();
- }
-
- public String[] parseParameters() {
- if (parameters.equals("()")) {
- return new String[0];
- } // now strip off '(' and ')'
- int state = START;
- int prevstate = START;
- parameters = parameters.substring(1, parameters.length() - 1);
- int cp;
- for (int index = 0; index < parameters.length(); index += Character.charCount(cp)) {
- cp = parameters.codePointAt(index);
- switch (state) {
- case START:
- if (Character.isJavaIdentifierStart(cp)) {
- typeId.append(Character.toChars(cp));
- state = TYPE;
- }
- prevstate = START;
- break;
- case TYPE:
- if (Character.isJavaIdentifierPart(cp) || cp == '.') {
- typeId.append(Character.toChars(cp));
- } else if (cp == '[') {
- typeId.append('[');
- state = ARRAYDECORATION;
- } else if (Character.isWhitespace(cp)) {
- state = TNSPACE;
- } else if (cp == ',') { // no name, just type
- addTypeToParamList();
- state = START;
- }
- prevstate = TYPE;
- break;
- case TNSPACE:
- if (Character.isJavaIdentifierStart(cp)) { // name
- if (prevstate == ARRAYDECORATION) {
- docenv().warning(holder,
- "tag.missing_comma_space",
- name,
- "(" + parameters + ")");
- return (String[])null;
- }
- addTypeToParamList();
- state = NAME;
- } else if (cp == '[') {
- typeId.append('[');
- state = ARRAYDECORATION;
- } else if (cp == ',') { // just the type
- addTypeToParamList();
- state = START;
- } // consume rest all
- prevstate = TNSPACE;
- break;
- case ARRAYDECORATION:
- if (cp == ']') {
- typeId.append(']');
- state = TNSPACE;
- } else if (!Character.isWhitespace(cp)) {
- docenv().warning(holder,
- "tag.illegal_char_in_arr_dim",
- name,
- "(" + parameters + ")");
- return (String[])null;
- }
- prevstate = ARRAYDECORATION;
- break;
- case NAME:
- if (cp == ',') { // just consume everything till ','
- state = START;
- }
- prevstate = NAME;
- break;
- }
- }
- if (state == ARRAYDECORATION ||
- (state == START && prevstate == TNSPACE)) {
- docenv().warning(holder,
- "tag.illegal_see_tag",
- "(" + parameters + ")");
- }
- if (typeId.length() > 0) {
- paramList.append(typeId.toString());
- }
- return paramList.toArray(new String[paramList.length()]);
- }
-
- void addTypeToParamList() {
- if (typeId.length() > 0) {
- paramList.append(typeId.toString());
- typeId.setLength(0);
- }
- }
- }
-
- /**
- * Return the kind of this tag.
- */
- @Override
- public String kind() {
- return "@see";
- }
-
- /**
- * Return the label of the see tag.
- */
- public String label() {
- return label;
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/SerialFieldTagImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,269 +0,0 @@
-/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import com.sun.javadoc.*;
-
-/**
- * Documents a Serializable field defined by an ObjectStreamField.
- * <pre>
- * The class parses and stores the three serialField tag parameters:
- *
- * - field name
- * - field type name
- * (fully-qualified or visible from the current import context)
- * - description of the valid values for the field
-
- * </pre>
- * This tag is only allowed in the javadoc for the special member
- * serialPersistentFields.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @author Joe Fialli
- * @author Neal Gafter
- *
- * @see java.io.ObjectStreamField
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-class SerialFieldTagImpl
- extends TagImpl
- implements SerialFieldTag, Comparable<Object>
-{
- //### These could be final, except that the constructor
- //### does not set them directly.
-
- private String fieldName; // Required Argument 1 of serialField
- private String fieldType; // Required Argument 2 of serialField
- private String description; // Optional Remaining Arguments of serialField
-
- private ClassDoc containingClass; // Class containing serialPersistentField member
- private ClassDoc fieldTypeDoc; // ClassDocImpl of fieldType
- private FieldDocImpl matchingField; // FieldDocImpl with same name as fieldName
-
- /* Constructor. */
- SerialFieldTagImpl(DocImpl holder, String name, String text) {
- super(holder, name, text);
- parseSerialFieldString();
- if (holder instanceof MemberDoc) {
- containingClass = ((MemberDocImpl)holder).containingClass();
- }
- }
-
- /*
- * The serialField tag is composed of three entities.
- *
- * serialField serializableFieldName serisliableFieldType
- * description of field.
- *
- * The fieldName and fieldType must be legal Java Identifiers.
- */
- private void parseSerialFieldString() {
- int len = text.length();
- if (len == 0) {
- return;
- }
-
- // if no white space found
- /* Skip white space. */
- int inx = 0;
- int cp;
- for (; inx < len; inx += Character.charCount(cp)) {
- cp = text.codePointAt(inx);
- if (!Character.isWhitespace(cp)) {
- break;
- }
- }
-
- /* find first word. */
- int first = inx;
- int last = inx;
- cp = text.codePointAt(inx);
- if (! Character.isJavaIdentifierStart(cp)) {
- docenv().warning(holder,
- "tag.serialField.illegal_character",
- new String(Character.toChars(cp)), text);
- return;
- }
-
- for (inx += Character.charCount(cp); inx < len; inx += Character.charCount(cp)) {
- cp = text.codePointAt(inx);
- if (!Character.isJavaIdentifierPart(cp)) {
- break;
- }
- }
-
- if (inx < len && ! Character.isWhitespace(cp = text.codePointAt(inx))) {
- docenv().warning(holder,
- "tag.serialField.illegal_character",
- new String(Character.toChars(cp)), text);
- return;
- }
-
- last = inx;
- fieldName = text.substring(first, last);
-
- /* Skip white space. */
- for (; inx < len; inx += Character.charCount(cp)) {
- cp = text.codePointAt(inx);
- if (!Character.isWhitespace(cp)) {
- break;
- }
- }
-
- /* find second word. */
- first = inx;
- last = inx;
-
- for (; inx < len; inx += Character.charCount(cp)) {
- cp = text.codePointAt(inx);
- if (Character.isWhitespace(cp)) {
- break;
- }
- }
- if (inx < len && ! Character.isWhitespace(cp = text.codePointAt(inx))) {
- docenv().warning(holder,
- "tag.serialField.illegal_character",
- new String(Character.toChars(cp)), text);
- return;
- }
- last = inx;
- fieldType = text.substring(first, last);
-
- /* Skip leading white space. Rest of string is description for serialField.*/
- for (; inx < len; inx += Character.charCount(cp)) {
- cp = text.codePointAt(inx);
- if (!Character.isWhitespace(cp)) {
- break;
- }
- }
- description = text.substring(inx);
- }
-
- /**
- * return a key for sorting.
- */
- String key() {
- return fieldName;
- }
-
- /*
- * Optional. Link this serialField tag to its corrsponding
- * field in the class. Note: there is no requirement that
- * there be a field in the class that matches serialField tag.
- */
- void mapToFieldDocImpl(FieldDocImpl fd) {
- matchingField = fd;
- }
-
- /**
- * Return the serialziable field name.
- */
- public String fieldName() {
- return fieldName;
- }
-
- /**
- * Return the field type string.
- */
- public String fieldType() {
- return fieldType;
- }
-
- /**
- * Return the ClassDocImpl for field type.
- *
- * @returns null if no ClassDocImpl for field type is visible from
- * containingClass context.
- */
- public ClassDoc fieldTypeDoc() {
- if (fieldTypeDoc == null && containingClass != null) {
- fieldTypeDoc = containingClass.findClass(fieldType);
- }
- return fieldTypeDoc;
- }
-
- /**
- * Return the corresponding FieldDocImpl for this SerialFieldTagImpl.
- *
- * @returns null if no matching FieldDocImpl.
- */
- FieldDocImpl getMatchingField() {
- return matchingField;
- }
-
- /**
- * Return the field comment. If there is no serialField comment, return
- * javadoc comment of corresponding FieldDocImpl.
- */
- public String description() {
- if (description.length() == 0 && matchingField != null) {
-
- //check for javadoc comment of corresponding field.
- Comment comment = matchingField.comment();
- if (comment != null) {
- return comment.commentText();
- }
- }
- return description;
- }
-
- /**
- * Return the kind of this tag.
- */
- public String kind() {
- return "@serialField";
- }
-
- /**
- * Convert this object to a string.
- */
- public String toString() {
- return name + ":" + text;
- }
-
- /**
- * Compares this Object with the specified Object for order. Returns a
- * negative integer, zero, or a positive integer as this Object is less
- * than, equal to, or greater than the given Object.
- * <p>
- * Included to make SerialFieldTagImpl items java.lang.Comparable.
- *
- * @param obj the <code>Object</code> to be compared.
- * @return a negative integer, zero, or a positive integer as this Object
- * is less than, equal to, or greater than the given Object.
- * @exception ClassCastException the specified Object's type prevents it
- * from being compared to this Object.
- * @since 1.2
- */
- public int compareTo(Object obj) {
- return key().compareTo(((SerialFieldTagImpl)obj).key());
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/SerializedForm.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,289 +0,0 @@
-/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import com.sun.javadoc.*;
-import com.sun.tools.javac.code.*;
-import com.sun.tools.javac.code.Symbol.ClassSymbol;
-import com.sun.tools.javac.code.Symbol.MethodSymbol;
-import com.sun.tools.javac.code.Symbol.VarSymbol;
-import com.sun.tools.javac.util.*;
-
-import static com.sun.tools.javac.code.Kinds.Kind.*;
-import static com.sun.tools.javac.code.Scope.LookupKind.NON_RECURSIVE;
-
-/**
- * The serialized form is the specification of a class' serialization
- * state. <p>
- *
- * It consists of the following information:<p>
- *
- * <pre>
- * 1. Whether class is Serializable or Externalizable.
- * 2. Javadoc for serialization methods.
- * a. For Serializable, the optional readObject, writeObject,
- * readResolve and writeReplace.
- * serialData tag describes, in prose, the sequence and type
- * of optional data written by writeObject.
- * b. For Externalizable, writeExternal and readExternal.
- * serialData tag describes, in prose, the sequence and type
- * of optional data written by writeExternal.
- * 3. Javadoc for serialization data layout.
- * a. For Serializable, the name,type and description
- * of each Serializable fields.
- * b. For Externalizable, data layout is described by 2(b).
- * </pre>
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @since 1.2
- * @author Joe Fialli
- * @author Neal Gafter (rewrite but not too proud)
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-class SerializedForm {
- ListBuffer<MethodDoc> methods = new ListBuffer<>();
-
- /* List of FieldDocImpl - Serializable fields.
- * Singleton list if class defines Serializable fields explicitly.
- * Otherwise, list of default serializable fields.
- * 0 length list for Externalizable.
- */
- private final ListBuffer<FieldDocImpl> fields = new ListBuffer<>();
-
- /* True if class specifies serializable fields explicitly.
- * using special static member, serialPersistentFields.
- */
- private boolean definesSerializableFields = false;
-
- // Specially treated field/method names defined by Serialization.
- private static final String SERIALIZABLE_FIELDS = "serialPersistentFields";
- private static final String READOBJECT = "readObject";
- private static final String WRITEOBJECT = "writeObject";
- private static final String READRESOLVE = "readResolve";
- private static final String WRITEREPLACE = "writeReplace";
- private static final String READOBJECTNODATA = "readObjectNoData";
-
- /**
- * Constructor.
- *
- * Catalog Serializable fields for Serializable class.
- * Catalog serialization methods for Serializable and
- * Externalizable classes.
- */
- SerializedForm(DocEnv env, ClassSymbol def, ClassDocImpl cd) {
- if (cd.isExternalizable()) {
- /* look up required public accessible methods,
- * writeExternal and readExternal.
- */
- String[] readExternalParamArr = { "java.io.ObjectInput" };
- String[] writeExternalParamArr = { "java.io.ObjectOutput" };
- MethodDoc md = cd.findMethod("readExternal", readExternalParamArr);
- if (md != null) {
- methods.append(md);
- }
- md = cd.findMethod("writeExternal", writeExternalParamArr);
- if (md != null) {
- methods.append(md);
- Tag tag[] = md.tags("serialData");
- }
- // } else { // isSerializable() //### ???
- } else if (cd.isSerializable()) {
-
- VarSymbol dsf = getDefinedSerializableFields(def);
- if (dsf != null) {
-
- /* Define serializable fields with array of ObjectStreamField.
- * Each ObjectStreamField should be documented by a
- * serialField tag.
- */
- definesSerializableFields = true;
- //### No modifier filtering applied here.
- FieldDocImpl dsfDoc = env.getFieldDoc(dsf);
- fields.append(dsfDoc);
- mapSerialFieldTagImplsToFieldDocImpls(dsfDoc, env, def);
- } else {
-
- /* Calculate default Serializable fields as all
- * non-transient, non-static fields.
- * Fields should be documented by serial tag.
- */
- computeDefaultSerializableFields(env, def, cd);
- }
-
- /* Check for optional customized readObject, writeObject,
- * readResolve and writeReplace, which can all contain
- * the serialData tag. */
- addMethodIfExist(env, def, READOBJECT);
- addMethodIfExist(env, def, WRITEOBJECT);
- addMethodIfExist(env, def, READRESOLVE);
- addMethodIfExist(env, def, WRITEREPLACE);
- addMethodIfExist(env, def, READOBJECTNODATA);
- }
- }
-
- /*
- * Check for explicit Serializable fields.
- * Check for a private static array of ObjectStreamField with
- * name SERIALIZABLE_FIELDS.
- */
- private VarSymbol getDefinedSerializableFields(ClassSymbol def) {
- Names names = def.name.table.names;
-
- /* SERIALIZABLE_FIELDS can be private,
- * so must lookup by ClassSymbol, not by ClassDocImpl.
- */
- for (Symbol sym : def.members().getSymbolsByName(names.fromString(SERIALIZABLE_FIELDS))) {
- if (sym.kind == VAR) {
- VarSymbol f = (VarSymbol)sym;
- if ((f.flags() & Flags.STATIC) != 0 &&
- (f.flags() & Flags.PRIVATE) != 0) {
- return f;
- }
- }
- }
- return null;
- }
-
- /*
- * Compute default Serializable fields from all members of ClassSymbol.
- *
- * Since the fields of ClassDocImpl might not contain private or
- * package accessible fields, must walk over all members of ClassSymbol.
- */
- private void computeDefaultSerializableFields(DocEnv env,
- ClassSymbol def,
- ClassDocImpl cd) {
- for (Symbol sym : def.members().getSymbols(NON_RECURSIVE)) {
- if (sym != null && sym.kind == VAR) {
- VarSymbol f = (VarSymbol)sym;
- if ((f.flags() & Flags.STATIC) == 0 &&
- (f.flags() & Flags.TRANSIENT) == 0) {
- //### No modifier filtering applied here.
- FieldDocImpl fd = env.getFieldDoc(f);
- //### Add to beginning.
- //### Preserve order used by old 'javadoc'.
- fields.prepend(fd);
- }
- }
- }
- }
-
- /*
- * Catalog Serializable method if it exists in current ClassSymbol.
- * Do not look for method in superclasses.
- *
- * Serialization requires these methods to be non-static.
- *
- * @param method should be an unqualified Serializable method
- * name either READOBJECT, WRITEOBJECT, READRESOLVE
- * or WRITEREPLACE.
- * @param visibility the visibility flag for the given method.
- */
- private void addMethodIfExist(DocEnv env, ClassSymbol def, String methodName) {
- Names names = def.name.table.names;
-
- for (Symbol sym : def.members().getSymbolsByName(names.fromString(methodName))) {
- if (sym.kind == MTH) {
- MethodSymbol md = (MethodSymbol)sym;
- if ((md.flags() & Flags.STATIC) == 0) {
- /*
- * WARNING: not robust if unqualifiedMethodName is overloaded
- * method. Signature checking could make more robust.
- * READOBJECT takes a single parameter, java.io.ObjectInputStream.
- * WRITEOBJECT takes a single parameter, java.io.ObjectOutputStream.
- */
- methods.append(env.getMethodDoc(md));
- }
- }
- }
- }
-
- /*
- * Associate serialField tag fieldName with FieldDocImpl member.
- * Note: A serialField tag does not have to map an existing field
- * of a class.
- */
- private void mapSerialFieldTagImplsToFieldDocImpls(FieldDocImpl spfDoc,
- DocEnv env,
- ClassSymbol def) {
- Names names = def.name.table.names;
- for (SerialFieldTag tag : spfDoc.serialFieldTags()) {
- if (tag.fieldName() == null || tag.fieldType() == null) // ignore malformed @serialField tags
- continue;
-
- Name fieldName = names.fromString(tag.fieldName());
-
- // Look for a FieldDocImpl that is documented by serialFieldTagImpl.
- for (Symbol sym : def.members().getSymbolsByName(fieldName)) {
- if (sym.kind == VAR) {
- VarSymbol f = (VarSymbol) sym;
- FieldDocImpl fdi = env.getFieldDoc(f);
- ((SerialFieldTagImpl) (tag)).mapToFieldDocImpl(fdi);
- break;
- }
- }
- }
- }
-
- /**
- * Return serializable fields in class. <p>
- *
- * Returns either a list of default fields documented by serial tag comment or
- * javadoc comment<p>
- * Or Returns a single FieldDocImpl for serialPersistentField. There is a
- * serialField tag for each serializable field.<p>
- *
- * @return an array of FieldDocImpl for representing the visible
- * fields in this class.
- */
- FieldDoc[] fields() {
- return (FieldDoc[])fields.toArray(new FieldDocImpl[fields.length()]);
- }
-
- /**
- * Return serialization methods in class.
- *
- * @return an array of MethodDocImpl for serialization methods in this class.
- */
- MethodDoc[] methods() {
- return methods.toArray(new MethodDoc[methods.length()]);
- }
-
- /**
- * Returns true if Serializable fields are defined explicitly using
- * member, serialPersistentFields.
- *
- * @see #fields()
- */
- boolean definesSerializableFields() {
- return definesSerializableFields;
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/SourcePositionImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,124 +0,0 @@
-/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import java.io.File;
-import javax.tools.FileObject;
-
-import com.sun.javadoc.SourcePosition;
-import com.sun.tools.javac.util.Position;
-
-
-/**
- * A source position: filename, line number, and column number.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @since J2SE1.4
- * @author Neal M Gafter
- * @author Michael Van De Vanter (position representation changed to char offsets)
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public class SourcePositionImpl implements SourcePosition {
- FileObject filename;
- int position;
- Position.LineMap lineMap;
-
- /** The source file. Returns null if no file information is
- * available. */
- public File file() {
- return (filename == null) ? null : new File(filename.getName());
- }
-
- /** The source file. Returns null if no file information is
- * available. */
- public FileObject fileObject() {
- return filename;
- }
-
- /** The line in the source file. The first line is numbered 1;
- * 0 means no line number information is available. */
- public int line() {
- if (lineMap == null) {
- return 0;
- } else {
- return lineMap.getLineNumber(position);
- }
- }
-
- /** The column in the source file. The first column is
- * numbered 1; 0 means no column information is available.
- * Columns count characters in the input stream; a tab
- * advances the column number to the next 8-column tab stop.
- */
- public int column() {
- if (lineMap == null) {
- return 0;
- }else {
- return lineMap.getColumnNumber(position);
- }
- }
-
- private SourcePositionImpl(FileObject file, int position,
- Position.LineMap lineMap) {
- super();
- this.filename = file;
- this.position = position;
- this.lineMap = lineMap;
- }
-
- public static SourcePosition make(FileObject file, int pos,
- Position.LineMap lineMap) {
- if (file == null) return null;
- return new SourcePositionImpl(file, pos, lineMap);
- }
-
- public String toString() {
- // Backwards compatibility hack. ZipFileObjects use the format
- // zipfile(zipentry) but javadoc has been using zipfile/zipentry
- String fn = filename.getName();
- if (fn.endsWith(")")) {
- int paren = fn.lastIndexOf("(");
- if (paren != -1) {
- int i = paren+1;
- if (fn.charAt(i) == '/')
- i++;
- fn = fn.substring(0, paren)
- + File.separatorChar
- + fn.substring(i, fn.length() - 1);
- }
- }
-
- if (position == Position.NOPOS)
- return fn;
- else
- return fn + ":" + line();
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/Start.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,578 +0,0 @@
-/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Objects;
-
-import javax.tools.JavaFileManager;
-import javax.tools.JavaFileObject;
-
-import com.sun.javadoc.*;
-import com.sun.tools.javac.file.JavacFileManager;
-import com.sun.tools.javac.file.BaseFileManager;
-import com.sun.tools.javac.main.Arguments;
-import com.sun.tools.javac.main.CommandLine;
-import com.sun.tools.javac.main.DelegatingJavaFileManager;
-import com.sun.tools.javac.main.Option;
-import com.sun.tools.javac.main.OptionHelper;
-import com.sun.tools.javac.main.OptionHelper.GrumpyHelper;
-import com.sun.tools.javac.platform.PlatformDescription;
-import com.sun.tools.javac.platform.PlatformUtils;
-import com.sun.tools.javac.util.ClientCodeException;
-import com.sun.tools.javac.util.Context;
-import com.sun.tools.javac.util.List;
-import com.sun.tools.javac.util.ListBuffer;
-import com.sun.tools.javac.util.Log;
-import com.sun.tools.javac.util.Options;
-
-import static com.sun.tools.javac.code.Flags.*;
-
-/**
- * Main program of Javadoc.
- * Previously named "Main".
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @since 1.2
- * @author Robert Field
- * @author Neal Gafter (rewrite)
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public class Start extends ToolOption.Helper {
- /** Context for this invocation. */
- private final Context context;
-
- private final String defaultDocletClassName;
- private final ClassLoader docletParentClassLoader;
-
- private static final String javadocName = "javadoc";
-
- private static final String standardDocletClassName =
- "com.sun.tools.doclets.standard.Standard";
-
- private final long defaultFilter = PUBLIC | PROTECTED;
-
- private final Messager messager;
-
- private DocletInvoker docletInvoker;
-
- /**
- * In API mode, exceptions thrown while calling the doclet are
- * propagated using ClientCodeException.
- */
- private boolean apiMode;
-
- private JavaFileManager fileManager;
-
- public Start(String programName,
- PrintWriter errWriter,
- PrintWriter warnWriter,
- PrintWriter noticeWriter,
- String defaultDocletClassName) {
- this(programName, errWriter, warnWriter, noticeWriter, defaultDocletClassName, null);
- }
-
- public Start(PrintWriter pw) {
- this(javadocName, pw, pw, pw, standardDocletClassName);
- }
-
- public Start(String programName,
- PrintWriter errWriter,
- PrintWriter warnWriter,
- PrintWriter noticeWriter,
- String defaultDocletClassName,
- ClassLoader docletParentClassLoader) {
- context = new Context();
- messager = new Messager(context, programName, errWriter, warnWriter, noticeWriter);
- this.defaultDocletClassName = defaultDocletClassName;
- this.docletParentClassLoader = docletParentClassLoader;
- }
-
- public Start(String programName, String defaultDocletClassName) {
- this(programName, defaultDocletClassName, null);
- }
-
- public Start(String programName, String defaultDocletClassName,
- ClassLoader docletParentClassLoader) {
- context = new Context();
- messager = new Messager(context, programName);
- this.defaultDocletClassName = defaultDocletClassName;
- this.docletParentClassLoader = docletParentClassLoader;
- }
-
- public Start(String programName, ClassLoader docletParentClassLoader) {
- this(programName, standardDocletClassName, docletParentClassLoader);
- }
-
- public Start(String programName) {
- this(programName, standardDocletClassName);
- }
-
- public Start(ClassLoader docletParentClassLoader) {
- this(javadocName, docletParentClassLoader);
- }
-
- public Start() {
- this(javadocName);
- }
-
- public Start(Context context) {
- this.context = Objects.requireNonNull(context);
- apiMode = true;
- defaultDocletClassName = standardDocletClassName;
- docletParentClassLoader = null;
-
- Log log = context.get(Log.logKey);
- if (log instanceof Messager)
- messager = (Messager) log;
- else {
- PrintWriter out = context.get(Log.errKey);
- messager = (out == null) ? new Messager(context, javadocName)
- : new Messager(context, javadocName, out, out, out);
- }
- }
-
- /**
- * Usage
- */
- @Override
- void usage() {
- usage(true);
- }
-
- void usage(boolean exit) {
- usage("main.usage", "-help", "main.usage.foot", exit);
- }
-
- @Override
- void Xusage() {
- Xusage(true);
- }
-
- void Xusage(boolean exit) {
- usage("main.Xusage", "-X", "main.Xusage.foot", exit);
- }
-
- private void usage(String main, String doclet, String foot, boolean exit) {
- // RFE: it would be better to replace the following with code to
- // write a header, then help for each option, then a footer.
- messager.notice(main);
-
- // let doclet print usage information (does nothing on error)
- if (docletInvoker != null) {
- // RFE: this is a pretty bad way to get the doclet to show
- // help info. Moreover, the output appears on stdout,
- // and <i>not</i> on any of the standard streams passed
- // to javadoc, and in particular, not to the noticeWriter
- // But, to fix this, we need to fix the Doclet API.
- docletInvoker.optionLength(doclet);
- }
-
- if (foot != null)
- messager.notice(foot);
-
- if (exit) exit();
- }
-
- /**
- * Exit
- */
- private void exit() {
- messager.exit();
- }
-
-
- /**
- * Main program - external wrapper
- */
- public int begin(String... argv) {
- boolean ok = begin(null, argv, Collections.emptySet());
- return ok ? 0 : 1;
- }
-
- public boolean begin(Class<?> docletClass, Iterable<String> options, Iterable<? extends JavaFileObject> fileObjects) {
- Collection<String> opts = new ArrayList<>();
- for (String opt: options) opts.add(opt);
- return begin(docletClass, opts.toArray(new String[opts.size()]), fileObjects);
- }
-
- private boolean begin(Class<?> docletClass, String[] options, Iterable<? extends JavaFileObject> fileObjects) {
- boolean failed = false;
-
- try {
- failed = !parseAndExecute(docletClass, options, fileObjects);
- } catch (Messager.ExitJavadoc exc) {
- // ignore, we just exit this way
- } catch (OutOfMemoryError ee) {
- messager.error(Messager.NOPOS, "main.out.of.memory");
- failed = true;
- } catch (ClientCodeException e) {
- // simply rethrow these exceptions, to be caught and handled by JavadocTaskImpl
- throw e;
- } catch (Error ee) {
- ee.printStackTrace(System.err);
- messager.error(Messager.NOPOS, "main.fatal.error");
- failed = true;
- } catch (Exception ee) {
- ee.printStackTrace(System.err);
- messager.error(Messager.NOPOS, "main.fatal.exception");
- failed = true;
- } finally {
- if (fileManager != null
- && fileManager instanceof BaseFileManager
- && ((BaseFileManager) fileManager).autoClose) {
- try {
- fileManager.close();
- } catch (IOException ignore) {
- }
- }
- messager.exitNotice();
- messager.flush();
- }
- failed |= messager.nerrors() > 0;
- failed |= rejectWarnings && messager.nwarnings() > 0;
- return !failed;
- }
-
- /**
- * Main program - internal
- */
- private boolean parseAndExecute(
- Class<?> docletClass,
- String[] argv,
- Iterable<? extends JavaFileObject> fileObjects) throws IOException {
- long tm = System.currentTimeMillis();
-
- ListBuffer<String> javaNames = new ListBuffer<>();
-
- // Preprocess @file arguments
- try {
- argv = CommandLine.parse(argv);
- } catch (FileNotFoundException e) {
- messager.error(Messager.NOPOS, "main.cant.read", e.getMessage());
- exit();
- } catch (IOException e) {
- e.printStackTrace(System.err);
- exit();
- }
-
-
- fileManager = context.get(JavaFileManager.class);
-
- setDocletInvoker(docletClass, fileManager, argv);
-
- compOpts = Options.instance(context);
- // Make sure no obsolete source/target messages are reported
- compOpts.put("-Xlint:-options", "-Xlint:-options");
-
- // Parse arguments
- for (int i = 0 ; i < argv.length ; i++) {
- String arg = argv[i];
-
- ToolOption o = ToolOption.get(arg);
- if (o != null) {
- // hack: this restriction should be removed
- if (o == ToolOption.LOCALE && i > 0)
- usageError("main.locale_first");
-
- try {
- if (o.hasArg) {
- oneArg(argv, i++);
- o.process(this, argv[i]);
- } else {
- setOption(arg);
- o.process(this);
- }
- } catch (Option.InvalidValueException e) {
- usageError("main.option.invalid.value", e.getMessage());
- }
- } else if (arg.equals("-XDaccessInternalAPI")) {
- // pass this hidden option down to the doclet, if it wants it
- if (docletInvoker.optionLength("-XDaccessInternalAPI") == 1) {
- setOption(arg);
- }
- } else if (arg.startsWith("-XD")) {
- // hidden javac options
- String s = arg.substring("-XD".length());
- int eq = s.indexOf('=');
- String key = (eq < 0) ? s : s.substring(0, eq);
- String value = (eq < 0) ? s : s.substring(eq+1);
- compOpts.put(key, value);
- }
- // call doclet for its options
- // other arg starts with - is invalid
- else if (arg.startsWith("-")) {
- int optionLength;
- optionLength = docletInvoker.optionLength(arg);
- if (optionLength < 0) {
- // error already displayed
- exit();
- } else if (optionLength == 0) {
- // option not found
- usageError("main.invalid_flag", arg);
- } else {
- // doclet added option
- if ((i + optionLength) > argv.length) {
- usageError("main.requires_argument", arg);
- }
- ListBuffer<String> args = new ListBuffer<>();
- for (int j = 0; j < optionLength-1; ++j) {
- args.append(argv[++i]);
- }
- setOption(arg, args.toList());
- }
- } else {
- javaNames.append(arg);
- }
- }
-
- if (fileManager == null) {
- JavacFileManager.preRegister(context);
- fileManager = context.get(JavaFileManager.class);
- if (fileManager instanceof BaseFileManager) {
- ((BaseFileManager) fileManager).autoClose = true;
- }
- }
- if (fileManager instanceof BaseFileManager) {
- ((BaseFileManager) fileManager).handleOptions(fileManagerOpts);
- }
-
- Arguments arguments = Arguments.instance(context);
- arguments.init(messager.programName);
- arguments.allowEmpty();
- arguments.validate();
-
- String platformString = compOpts.get("--release");
-
- if (platformString != null) {
- if (compOpts.isSet(Option.SOURCE.primaryName)) {
- usageError("main.release.bootclasspath.conflict", Option.SOURCE.primaryName);
- }
- if (fileManagerOpts.containsKey(Option.BOOT_CLASS_PATH)) {
- usageError("main.release.bootclasspath.conflict", Option.BOOT_CLASS_PATH.getPrimaryName());
- }
-
- PlatformDescription platformDescription =
- PlatformUtils.lookupPlatformDescription(platformString);
-
- if (platformDescription == null) {
- usageError("main.unsupported.release.version", platformString);
- }
-
- compOpts.put(Option.SOURCE, platformDescription.getSourceVersion());
-
- context.put(PlatformDescription.class, platformDescription);
-
- JavaFileManager platformFM = platformDescription.getFileManager();
- DelegatingJavaFileManager.installReleaseFileManager(context,
- platformFM,
- fileManager);
- }
-
- compOpts.notifyListeners();
-
- if (javaNames.isEmpty() && subPackages.isEmpty() && isEmpty(fileObjects)) {
- usageError("main.No_packages_or_classes_specified");
- }
-
- if (!docletInvoker.validOptions(options.toList())) {
- // error message already displayed
- exit();
- }
-
- JavadocTool comp = JavadocTool.make0(context);
- if (comp == null) return false;
-
- if (showAccess == null) {
- setFilter(defaultFilter);
- }
-
- LanguageVersion languageVersion = docletInvoker.languageVersion();
- RootDocImpl root = comp.getRootDocImpl(
- docLocale,
- encoding,
- showAccess,
- javaNames.toList(),
- options.toList(),
- fileObjects,
- breakiterator,
- subPackages.toList(),
- excludedPackages.toList(),
- docClasses,
- // legacy?
- languageVersion == null || languageVersion == LanguageVersion.JAVA_1_1,
- quiet);
-
- // release resources
- comp = null;
-
- // pass off control to the doclet
- boolean ok = root != null;
- if (ok) ok = docletInvoker.start(root);
-
- // We're done.
- if (compOpts.get("-verbose") != null) {
- tm = System.currentTimeMillis() - tm;
- messager.notice("main.done_in", Long.toString(tm));
- }
-
- return ok;
- }
-
- private <T> boolean isEmpty(Iterable<T> iter) {
- return !iter.iterator().hasNext();
- }
-
- /**
- * Init the doclet invoker.
- * The doclet class may be given explicitly, or via the -doclet option in
- * argv.
- * If the doclet class is not given explicitly, it will be loaded from
- * the file manager's DOCLET_PATH location, if available, or via the
- * -doclet path option in argv.
- * @param docletClass The doclet class. May be null.
- * @param fileManager The file manager used to get the class loader to load
- * the doclet class if required. May be null.
- * @param argv Args containing -doclet and -docletpath, in case they are required.
- */
- private void setDocletInvoker(Class<?> docletClass, JavaFileManager fileManager, String[] argv) {
- boolean exportInternalAPI = false;
- String docletClassName = null;
- String docletPath = null;
-
- // Parse doclet specifying arguments
- for (int i = 0 ; i < argv.length ; i++) {
- String arg = argv[i];
- if (arg.equals(ToolOption.DOCLET.opt)) {
- oneArg(argv, i++);
- if (docletClassName != null) {
- usageError("main.more_than_one_doclet_specified_0_and_1",
- docletClassName, argv[i]);
- }
- docletClassName = argv[i];
- } else if (arg.equals(ToolOption.DOCLETPATH.opt)) {
- oneArg(argv, i++);
- if (docletPath == null) {
- docletPath = argv[i];
- } else {
- docletPath += File.pathSeparator + argv[i];
- }
- } else if (arg.equals("-XDaccessInternalAPI")) {
- exportInternalAPI = true;
- }
- }
-
- if (docletClass != null) {
- // TODO, check no -doclet, -docletpath
- docletInvoker = new DocletInvoker(messager, docletClass, apiMode, exportInternalAPI);
- } else {
- if (docletClassName == null) {
- docletClassName = defaultDocletClassName;
- }
-
- // attempt to find doclet
- docletInvoker = new DocletInvoker(messager, fileManager,
- docletClassName, docletPath,
- docletParentClassLoader,
- apiMode,
- exportInternalAPI);
- }
- }
-
- /**
- * Set one arg option.
- * Error and exit if one argument is not provided.
- */
- private void oneArg(String[] args, int index) {
- if ((index + 1) < args.length) {
- setOption(args[index], args[index+1]);
- } else {
- usageError("main.requires_argument", args[index]);
- }
- }
-
- @Override
- void usageError(String key, Object... args) {
- messager.error(Messager.NOPOS, key, args);
- usage(true);
- }
-
- /**
- * indicate an option with no arguments was given.
- */
- private void setOption(String opt) {
- String[] option = { opt };
- options.append(option);
- }
-
- /**
- * indicate an option with one argument was given.
- */
- private void setOption(String opt, String argument) {
- String[] option = { opt, argument };
- options.append(option);
- }
-
- /**
- * indicate an option with the specified list of arguments was given.
- */
- private void setOption(String opt, List<String> arguments) {
- String[] args = new String[arguments.length() + 1];
- int k = 0;
- args[k++] = opt;
- for (List<String> i = arguments; i.nonEmpty(); i=i.tail) {
- args[k++] = i.head;
- }
- options.append(args);
- }
-
- @Override
- OptionHelper getOptionHelper() {
- return new GrumpyHelper(messager) {
- @Override
- public String get(com.sun.tools.javac.main.Option option) {
- return compOpts.get(option);
- }
-
- @Override
- public void put(String name, String value) {
- compOpts.put(name, value);
- }
- };
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/TagImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,190 +0,0 @@
-/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import com.sun.javadoc.*;
-
-/**
- * Represents a documentation tag, e.g. @since, @author, @version.
- * Given a tag (e.g. "@since 1.2"), holds tag name (e.g. "@since")
- * and tag text (e.g. "1.2"). TagImpls with structure or which require
- * special processing are handled by subclasses (ParamTagImpl, SeeTagImpl,
- * and ThrowsTagImpl
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @author Robert Field
- * @author Atul M Dambalkar
- * @author Neal M Gafter
- * @see SeeTagImpl
- * @see ParamTagImpl
- * @see ThrowsTagImpl
- * @see Doc#tags()
- *
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-class TagImpl implements Tag {
-
- protected final String text;
- protected final String name;
- protected final DocImpl holder;
-
- /**
- * Cached first sentence.
- */
- private Tag[] firstSentence;
-
- /**
- * Cached inline tags.
- */
- private Tag[] inlineTags;
-
- /**
- * Constructor
- */
- TagImpl(DocImpl holder, String name, String text) {
- this.holder = holder;
- this.name = name;
- this.text = text;
- }
-
- /**
- * Return the name of this tag.
- */
- public String name() {
- return name;
- }
-
- /**
- * Return the containing {@link Doc} of this Tag element.
- */
- public Doc holder() {
- return holder;
- }
-
- /**
- * Return the kind of this tag.
- */
- public String kind() {
- return name;
- }
-
- /**
- * Return the text of this tag, that is, portion beyond tag name.
- */
- public String text() {
- return text;
- }
-
- DocEnv docenv() {
- return holder.env;
- }
-
- /**
- * for use by subclasses which have two part tag text.
- */
- String[] divideAtWhite() {
- String[] sa = new String[2];
- int len = text.length();
- // if no white space found
- sa[0] = text;
- sa[1] = "";
- for (int inx = 0; inx < len; ++inx) {
- char ch = text.charAt(inx);
- if (Character.isWhitespace(ch)) {
- sa[0] = text.substring(0, inx);
- for (; inx < len; ++inx) {
- ch = text.charAt(inx);
- if (!Character.isWhitespace(ch)) {
- sa[1] = text.substring(inx, len);
- break;
- }
- }
- break;
- }
- }
- return sa;
- }
-
- /**
- * convert this object to a string.
- */
- public String toString() {
- return name + ":" + text;
- }
-
- /**
- * For documentation comment with embedded @link tags, return the array of
- * TagImpls consisting of SeeTagImpl(s) and text containing TagImpl(s).
- * Within a comment string "This is an example of inline tags for a
- * documentation comment {@link Doc {@link Doc commentlabel}}",
- * where inside the inner braces, the first "Doc" carries exctly the same
- * syntax as a SeeTagImpl and the second "commentlabel" is label for the Html
- * Link, will return an array of TagImpl(s) with first element as TagImpl with
- * comment text "This is an example of inline tags for a documentation
- * comment" and second element as SeeTagImpl with referenced class as "Doc"
- * and the label for the Html Link as "commentlabel".
- *
- * @return TagImpl[] Array of tags with inline SeeTagImpls.
- * @see ParamTagImpl
- * @see ThrowsTagImpl
- */
- public Tag[] inlineTags() {
- if (inlineTags == null) {
- inlineTags = Comment.getInlineTags(holder, text);
- }
- return inlineTags;
- }
-
- /**
- * Return array of tags for the first sentence in the doc comment text.
- */
- public Tag[] firstSentenceTags() {
- if (firstSentence == null) {
- //Parse all sentences first to avoid duplicate warnings.
- inlineTags();
- try {
- docenv().setSilent(true);
- firstSentence = Comment.firstSentenceTags(holder, text);
- } finally {
- docenv().setSilent(false);
- }
- }
- return firstSentence;
- }
-
- /**
- * Return the doc item to which this tag is attached.
- * @return the doc item to which this tag is attached.
- */
- public SourcePosition position() {
- return holder.position();
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/ThrowsTagImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,128 +0,0 @@
-/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import com.sun.javadoc.*;
-
-/**
- * Represents a @throws or @exception documentation tag.
- * Parses and holds the exception name and exception comment.
- * The exception name my be the name of a type variable.
- * Note: @exception is a backwards compatible synonymy for @throws.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @author Robert Field
- * @author Atul M Dambalkar
- * @see ExecutableMemberDocImpl#throwsTags()
- *
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-class ThrowsTagImpl extends TagImpl implements ThrowsTag {
-
- private final String exceptionName;
- private final String exceptionComment;
-
- /**
- * Cached inline tags.
- */
- private Tag[] inlineTags;
-
- ThrowsTagImpl(DocImpl holder, String name, String text) {
- super(holder, name, text);
- String[] sa = divideAtWhite();
- exceptionName = sa[0];
- exceptionComment = sa[1];
- }
-
- /**
- * Return the exception name.
- */
- public String exceptionName() {
- return exceptionName;
- }
-
- /**
- * Return the exception comment.
- */
- public String exceptionComment() {
- return exceptionComment;
- }
-
- /**
- * Return the exception as a ClassDocImpl.
- */
- public ClassDoc exception() {
- ClassDocImpl exceptionClass;
- if (!(holder instanceof ExecutableMemberDoc)) {
- exceptionClass = null;
- } else {
- ExecutableMemberDocImpl emd = (ExecutableMemberDocImpl)holder;
- ClassDocImpl con = (ClassDocImpl)emd.containingClass();
- exceptionClass = (ClassDocImpl)con.findClass(exceptionName);
- }
- return exceptionClass;
- }
-
- /**
- * Return the type that represents the exception.
- * This may be a <code>ClassDoc</code> or a <code>TypeVariable</code>.
- */
- public Type exceptionType() {
- //###(gj) TypeVariable not yet supported.
- return exception();
- }
-
-
- /**
- * Return the kind of this tag. Always "@throws" for instances
- * of ThrowsTagImpl.
- */
- @Override
- public String kind() {
- return "@throws";
- }
-
- /**
- * For the exception comment with embedded @link tags return the array of
- * TagImpls consisting of SeeTagImpl(s) and text containing TagImpl(s).
- *
- * @return TagImpl[] Array of tags with inline SeeTagImpls.
- * @see TagImpl#inlineTags()
- * @see ParamTagImpl#inlineTags()
- */
- @Override
- public Tag[] inlineTags() {
- if (inlineTags == null) {
- inlineTags = Comment.getInlineTags(holder, exceptionComment());
- }
- return inlineTags;
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/ToolOption.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,454 +0,0 @@
-/*
- * Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.StringTokenizer;
-
-import com.sun.tools.javac.code.Flags;
-import com.sun.tools.javac.main.Option;
-import com.sun.tools.javac.main.Option.InvalidValueException;
-import com.sun.tools.javac.main.OptionHelper;
-import com.sun.tools.javac.util.ListBuffer;
-import com.sun.tools.javac.util.Options;
-
-
-/**
- * javadoc tool options.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public enum ToolOption {
- // ----- options for underlying compiler -----
-
- BOOTCLASSPATH("-bootclasspath", true) {
- @Override
- public void process(Helper helper, String arg) {
- helper.setFileManagerOpt(Option.BOOT_CLASS_PATH, arg);
- }
- },
-
- CLASSPATH("-classpath", true) {
- @Override
- public void process(Helper helper, String arg) {
- helper.setFileManagerOpt(Option.CLASS_PATH, arg);
- }
- },
-
- CP("-cp", true) {
- @Override
- public void process(Helper helper, String arg) {
- helper.setFileManagerOpt(Option.CLASS_PATH, arg);
- }
- },
-
- CLASS_PATH("--class-path", true) {
- @Override
- public void process(Helper helper, String arg) {
- helper.setFileManagerOpt(Option.CLASS_PATH, arg);
- }
- },
-
- EXTDIRS("-extdirs", true) {
- @Override
- public void process(Helper helper, String arg) {
- helper.setFileManagerOpt(Option.EXTDIRS, arg);
- }
- },
-
- SOURCEPATH("-sourcepath", true) {
- @Override
- public void process(Helper helper, String arg) {
- helper.setFileManagerOpt(Option.SOURCE_PATH, arg);
- }
- },
-
- SOURCE_PATH("--source-path", true) {
- @Override
- public void process(Helper helper, String arg) {
- helper.setFileManagerOpt(Option.SOURCE_PATH, arg);
- }
- },
-
- SYSCLASSPATH("-sysclasspath", true) {
- @Override
- public void process(Helper helper, String arg) {
- helper.setFileManagerOpt(Option.BOOT_CLASS_PATH, arg);
- }
- },
-
- MODULE_SOURCE_PATH("--module-source-path", true) {
- @Override
- public void process(Helper helper, String arg) {
- helper.setFileManagerOpt(Option.MODULE_SOURCE_PATH, arg);
- }
- },
-
- UPGRADE_MODULE_PATH("--upgrade-module-path", true) {
- @Override
- public void process(Helper helper, String arg) {
- helper.setFileManagerOpt(Option.UPGRADE_MODULE_PATH, arg);
- }
- },
-
- SYSTEM_("--system", true) {
- @Override
- public void process(Helper helper, String arg) {
- helper.setFileManagerOpt(Option.SYSTEM, arg);
- }
- },
-
- MODULE_PATH("--module-path", true) {
- @Override
- public void process(Helper helper, String arg) {
- helper.setFileManagerOpt(Option.MODULE_PATH, arg);
- }
- },
-
- P("-p", true) {
- @Override
- public void process(Helper helper, String arg) {
- helper.setFileManagerOpt(Option.MODULE_PATH, arg);
- }
- },
-
- ADD_MODULES("--add-modules", true) {
- @Override
- public void process(Helper helper, String arg) throws InvalidValueException {
- Option.ADD_MODULES.process(helper.getOptionHelper(), opt, arg);
- }
- },
-
- LIMIT_MODULES("--limit-modules", true) {
- @Override
- public void process(Helper helper, String arg) throws InvalidValueException {
- Option.LIMIT_MODULES.process(helper.getOptionHelper(), opt, arg);
- }
- },
-
- ENCODING("-encoding", true) {
- @Override
- public void process(Helper helper, String arg) {
- helper.encoding = arg;
- helper.setCompilerOpt(opt, arg);
- helper.setFileManagerOpt(Option.ENCODING, arg);
- }
- },
-
- RELEASE("--release", true) {
- @Override
- public void process(Helper helper, String arg) {
- helper.setCompilerOpt(opt, arg);
- }
- },
-
- SOURCE("-source", true) {
- @Override
- public void process(Helper helper, String arg) {
- helper.setCompilerOpt("--source", arg);
- }
- },
-
- SOURCE2("--source", true) {
- @Override
- public void process(Helper helper, String arg) {
- helper.setCompilerOpt(opt, arg);
- }
- },
-
- XMAXERRS("-Xmaxerrs", true) {
- @Override
- public void process(Helper helper, String arg) {
- helper.setCompilerOpt(opt, arg);
- }
- },
-
- XMAXWARNS("-Xmaxwarns", true) {
- @Override
- public void process(Helper helper, String arg) {
- helper.setCompilerOpt(opt, arg);
- }
- },
-
- ADD_READS("--add-reads", true) {
- @Override
- public void process(Helper helper, String arg) throws InvalidValueException {
- Option.ADD_READS.process(helper.getOptionHelper(), opt, arg);
- }
- },
-
- ADD_EXPORTS("--add-exports", true) {
- @Override
- public void process(Helper helper, String arg) throws InvalidValueException {
- Option.ADD_EXPORTS.process(helper.getOptionHelper(), opt, arg);
- }
- },
-
- PATCH_MODULE("--patch-module", true) {
- @Override
- public void process(Helper helper, String arg) throws InvalidValueException {
- Option.PATCH_MODULE.process(helper.getOptionHelper(), opt, arg);
- }
- },
-
- ADD_OPENS("--add-opens", true) {
- @Override
- public void process(Helper helper, String arg) throws InvalidValueException {
- Option.ADD_OPENS.process(helper.getOptionHelper(), opt, arg);
- }
- },
-
- // ----- doclet options -----
-
- DOCLET("-doclet", true), // handled in setDocletInvoker
-
- DOCLETPATH("-docletpath", true), // handled in setDocletInvoker
-
- // ----- selection options -----
-
- SUBPACKAGES("-subpackages", true) {
- @Override
- public void process(Helper helper, String arg) {
- helper.addToList(helper.subPackages, arg);
- }
- },
-
- EXCLUDE("-exclude", true) {
- @Override
- public void process(Helper helper, String arg) {
- helper.addToList(helper.excludedPackages, arg);
- }
- },
-
- // ----- filtering options -----
-
- PACKAGE("-package") {
- @Override
- public void process(Helper helper) {
- helper.setFilter(
- Flags.PUBLIC | Flags.PROTECTED | ModifierFilter.PACKAGE);
- }
- },
-
- PRIVATE("-private") {
- @Override
- public void process(Helper helper) {
- helper.setFilter(ModifierFilter.ALL_ACCESS);
- }
- },
-
- PROTECTED("-protected") {
- @Override
- public void process(Helper helper) {
- helper.setFilter(Flags.PUBLIC | Flags.PROTECTED);
- }
- },
-
- PUBLIC("-public") {
- @Override
- public void process(Helper helper) {
- helper.setFilter(Flags.PUBLIC);
- }
- },
-
- // ----- output control options -----
-
- PROMPT("-prompt") {
- @Override
- public void process(Helper helper) {
- helper.compOpts.put("-prompt", "-prompt");
- helper.promptOnError = true;
- }
- },
-
- QUIET("-quiet") {
- @Override
- public void process(Helper helper) {
- helper.quiet = true;
- }
- },
-
- VERBOSE("-verbose") {
- @Override
- public void process(Helper helper) {
- helper.compOpts.put("-verbose", "");
- }
- },
-
- XWERROR("-Xwerror") {
- @Override
- public void process(Helper helper) {
- helper.rejectWarnings = true;
-
- }
- },
-
- // ----- other options -----
-
- BREAKITERATOR("-breakiterator") {
- @Override
- public void process(Helper helper) {
- helper.breakiterator = true;
- }
- },
-
- LOCALE("-locale", true) {
- @Override
- public void process(Helper helper, String arg) {
- helper.docLocale = arg;
- }
- },
-
- OVERVIEW("-overview", true),
-
- XCLASSES("-Xclasses") {
- @Override
- public void process(Helper helper) {
- helper.docClasses = true;
-
- }
- },
-
- // ----- help options -----
-
- HELP("-help") {
- @Override
- public void process(Helper helper) {
- helper.usage();
- }
- },
-
- X("-X") {
- @Override
- public void process(Helper helper) {
- helper.Xusage();
- }
- };
-
- public final String opt;
- public final boolean hasArg;
-
- ToolOption(String opt) {
- this(opt, false);
- }
-
- ToolOption(String opt, boolean hasArg) {
- this.opt = opt;
- this.hasArg = hasArg;
- }
-
- void process(Helper helper, String arg) throws Option.InvalidValueException { }
-
- void process(Helper helper) { }
-
- static ToolOption get(String name) {
- for (ToolOption o: values()) {
- if (name.equals(o.opt))
- return o;
- }
- return null;
- }
-
- static abstract class Helper {
- /** List of decoded options. */
- final ListBuffer<String[]> options = new ListBuffer<>();
-
- /** Selected packages, from -subpackages. */
- final ListBuffer<String> subPackages = new ListBuffer<>();
-
- /** Excluded packages, from -exclude. */
- final ListBuffer<String> excludedPackages = new ListBuffer<>();
-
- // File manager options
- final Map<Option, String> fileManagerOpts = new LinkedHashMap<>();
-
- /** javac options, set by various options. */
- Options compOpts; // = Options.instance(context)
-
- /* Encoding for javac, and files written? set by -encoding. */
- String encoding = null;
-
- /** Set by -breakiterator. */
- boolean breakiterator = false;
-
- /** Set by -quiet. */
- boolean quiet = false;
-
- /** Set by -Xclasses. */
- boolean docClasses = false;
-
- /** Set by -Xwerror. */
- boolean rejectWarnings = false;
-
- /** Set by -prompt. */
- boolean promptOnError;
-
- /** Set by -locale. */
- String docLocale = "";
-
- /** Set by -public, private, -protected, -package. */
- ModifierFilter showAccess = null;
-
- abstract void usage();
- abstract void Xusage();
-
- abstract void usageError(String msg, Object... args);
- abstract OptionHelper getOptionHelper();
-
- void addToList(ListBuffer<String> list, String str){
- StringTokenizer st = new StringTokenizer(str, ":");
- String current;
- while(st.hasMoreTokens()){
- current = st.nextToken();
- list.append(current);
- }
- }
-
- void setFilter(long filterBits) {
- if (showAccess != null) {
- usageError("main.incompatible.access.flags");
- }
- showAccess = new ModifierFilter(filterBits);
- }
-
- void setCompilerOpt(String opt, String arg) {
- if (compOpts.get(opt) != null) {
- usageError("main.option.already.seen", opt);
- }
- compOpts.put(opt, arg);
- }
-
- void setFileManagerOpt(Option opt, String arg) {
- fileManagerOpts.put(opt, arg);
- }
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/TypeMaker.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,352 +0,0 @@
-/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import com.sun.javadoc.*;
-import com.sun.tools.javac.code.Symbol;
-import com.sun.tools.javac.code.Symbol.ClassSymbol;
-import com.sun.tools.javac.code.Symbol.CompletionFailure;
-import com.sun.tools.javac.code.Type;
-import com.sun.tools.javac.code.Type.ArrayType;
-import com.sun.tools.javac.code.Type.ClassType;
-import com.sun.tools.javac.code.Type.TypeVar;
-import com.sun.tools.javac.util.List;
-import static com.sun.tools.javac.code.TypeTag.ARRAY;
-
-/**
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public class TypeMaker {
-
- public static com.sun.javadoc.Type getType(DocEnv env, Type t) {
- return getType(env, t, true);
- }
-
- /**
- * @param errToClassDoc if true, ERROR type results in a ClassDoc;
- * false preserves legacy behavior
- */
- public static com.sun.javadoc.Type getType(DocEnv env, Type t,
- boolean errorToClassDoc) {
- return getType(env, t, errorToClassDoc, true);
- }
-
- public static com.sun.javadoc.Type getType(DocEnv env, Type t,
- boolean errToClassDoc, boolean considerAnnotations) {
- try {
- return getTypeImpl(env, t, errToClassDoc, considerAnnotations);
- } catch (CompletionFailure cf) {
- /* Quietly ignore completion failures and try again - the type
- * for which the CompletionFailure was thrown shouldn't be completed
- * again by the completer that threw the CompletionFailure.
- */
- return getType(env, t, errToClassDoc, considerAnnotations);
- }
- }
-
- @SuppressWarnings("fallthrough")
- private static com.sun.javadoc.Type getTypeImpl(DocEnv env, Type t,
- boolean errToClassDoc, boolean considerAnnotations) {
- if (env.legacyDoclet) {
- t = env.types.erasure(t);
- }
-
- if (considerAnnotations && t.isAnnotated()) {
- return new AnnotatedTypeImpl(env, t);
- }
-
- switch (t.getTag()) {
- case CLASS:
- if (ClassDocImpl.isGeneric((ClassSymbol)t.tsym)) {
- return env.getParameterizedType((ClassType)t);
- } else {
- return env.getClassDoc((ClassSymbol)t.tsym);
- }
- case WILDCARD:
- Type.WildcardType a = (Type.WildcardType)t;
- return new WildcardTypeImpl(env, a);
- case TYPEVAR: return new TypeVariableImpl(env, (TypeVar)t);
- case ARRAY: return new ArrayTypeImpl(env, t);
- case BYTE: return PrimitiveType.byteType;
- case CHAR: return PrimitiveType.charType;
- case SHORT: return PrimitiveType.shortType;
- case INT: return PrimitiveType.intType;
- case LONG: return PrimitiveType.longType;
- case FLOAT: return PrimitiveType.floatType;
- case DOUBLE: return PrimitiveType.doubleType;
- case BOOLEAN: return PrimitiveType.booleanType;
- case VOID: return PrimitiveType.voidType;
- case ERROR:
- if (errToClassDoc)
- return env.getClassDoc((ClassSymbol)t.tsym);
- // FALLTHRU
- default:
- return new PrimitiveType(t.tsym.getQualifiedName().toString());
- }
- }
-
- /**
- * Convert a list of javac types into an array of javadoc types.
- */
- public static com.sun.javadoc.Type[] getTypes(DocEnv env, List<Type> ts) {
- return getTypes(env, ts, new com.sun.javadoc.Type[ts.length()]);
- }
-
- /**
- * Like the above version, but use and return the array given.
- */
- public static com.sun.javadoc.Type[] getTypes(DocEnv env, List<Type> ts,
- com.sun.javadoc.Type res[]) {
- int i = 0;
- for (Type t : ts) {
- res[i++] = getType(env, t);
- }
- return res;
- }
-
- public static String getTypeName(Type t, boolean full) {
- switch (t.getTag()) {
- case ARRAY:
- StringBuilder s = new StringBuilder();
- while (t.hasTag(ARRAY)) {
- s.append("[]");
- t = ((ArrayType)t).elemtype;
- }
- s.insert(0, getTypeName(t, full));
- return s.toString();
- case CLASS:
- return ClassDocImpl.getClassName((ClassSymbol)t.tsym, full);
- default:
- return t.tsym.getQualifiedName().toString();
- }
- }
-
- /**
- * Return the string representation of a type use. Bounds of type
- * variables are not included; bounds of wildcard types are.
- * Class names are qualified if "full" is true.
- */
- static String getTypeString(DocEnv env, Type t, boolean full) {
- // TODO: should annotations be included here?
- switch (t.getTag()) {
- case ARRAY:
- StringBuilder s = new StringBuilder();
- while (t.hasTag(ARRAY)) {
- s.append("[]");
- t = env.types.elemtype(t);
- }
- s.insert(0, getTypeString(env, t, full));
- return s.toString();
- case CLASS:
- return ParameterizedTypeImpl.
- parameterizedTypeToString(env, (ClassType)t, full);
- case WILDCARD:
- Type.WildcardType a = (Type.WildcardType)t;
- return WildcardTypeImpl.wildcardTypeToString(env, a, full);
- default:
- return t.tsym.getQualifiedName().toString();
- }
- }
-
- /**
- * Return the formal type parameters of a class or method as an
- * angle-bracketed string. Each parameter is a type variable with
- * optional bounds. Class names are qualified if "full" is true.
- * Return "" if there are no type parameters or we're hiding generics.
- */
- static String typeParametersString(DocEnv env, Symbol sym, boolean full) {
- if (env.legacyDoclet || sym.type.getTypeArguments().isEmpty()) {
- return "";
- }
- StringBuilder s = new StringBuilder();
- for (Type t : sym.type.getTypeArguments()) {
- s.append(s.length() == 0 ? "<" : ", ");
- s.append(TypeVariableImpl.typeVarToString(env, (TypeVar)t, full));
- }
- s.append(">");
- return s.toString();
- }
-
- /**
- * Return the actual type arguments of a parameterized type as an
- * angle-bracketed string. Class name are qualified if "full" is true.
- * Return "" if there are no type arguments or we're hiding generics.
- */
- static String typeArgumentsString(DocEnv env, ClassType cl, boolean full) {
- if (env.legacyDoclet || cl.getTypeArguments().isEmpty()) {
- return "";
- }
- StringBuilder s = new StringBuilder();
- for (Type t : cl.getTypeArguments()) {
- s.append(s.length() == 0 ? "<" : ", ");
- s.append(getTypeString(env, t, full));
- }
- s.append(">");
- return s.toString();
- }
-
-
- private static class ArrayTypeImpl implements com.sun.javadoc.Type {
-
- Type arrayType;
-
- DocEnv env;
-
- ArrayTypeImpl(DocEnv env, Type arrayType) {
- this.env = env;
- this.arrayType = arrayType;
- }
-
- private com.sun.javadoc.Type skipArraysCache = null;
-
- public com.sun.javadoc.Type getElementType() {
- return TypeMaker.getType(env, env.types.elemtype(arrayType));
- }
-
- private com.sun.javadoc.Type skipArrays() {
- if (skipArraysCache == null) {
- Type t;
- for (t = arrayType; t.hasTag(ARRAY); t = env.types.elemtype(t)) { }
- skipArraysCache = TypeMaker.getType(env, t);
- }
- return skipArraysCache;
- }
-
- /**
- * Return the type's dimension information, as a string.
- * <p>
- * For example, a two dimensional array of String returns '[][]'.
- */
- public String dimension() {
- StringBuilder dimension = new StringBuilder();
- for (Type t = arrayType; t.hasTag(ARRAY); t = env.types.elemtype(t)) {
- dimension.append("[]");
- }
- return dimension.toString();
- }
-
- /**
- * Return unqualified name of type excluding any dimension information.
- * <p>
- * For example, a two dimensional array of String returns 'String'.
- */
- public String typeName() {
- return skipArrays().typeName();
- }
-
- /**
- * Return qualified name of type excluding any dimension information.
- *<p>
- * For example, a two dimensional array of String
- * returns 'java.lang.String'.
- */
- public String qualifiedTypeName() {
- return skipArrays().qualifiedTypeName();
- }
-
- /**
- * Return the simple name of this type excluding any dimension information.
- */
- public String simpleTypeName() {
- return skipArrays().simpleTypeName();
- }
-
- /**
- * Return this type as a class. Array dimensions are ignored.
- *
- * @return a ClassDocImpl if the type is a Class.
- * Return null if it is a primitive type..
- */
- public ClassDoc asClassDoc() {
- return skipArrays().asClassDoc();
- }
-
- /**
- * Return this type as a <code>ParameterizedType</code> if it
- * represents a parameterized type. Array dimensions are ignored.
- */
- public ParameterizedType asParameterizedType() {
- return skipArrays().asParameterizedType();
- }
-
- /**
- * Return this type as a <code>TypeVariable</code> if it represents
- * a type variable. Array dimensions are ignored.
- */
- public TypeVariable asTypeVariable() {
- return skipArrays().asTypeVariable();
- }
-
- /**
- * Return null, as there are no arrays of wildcard types.
- */
- public WildcardType asWildcardType() {
- return null;
- }
-
- /**
- * Return null, as there are no annotations of the type
- */
- public AnnotatedType asAnnotatedType() {
- return null;
- }
-
- /**
- * Return this type as an <code>AnnotationTypeDoc</code> if it
- * represents an annotation type. Array dimensions are ignored.
- */
- public AnnotationTypeDoc asAnnotationTypeDoc() {
- return skipArrays().asAnnotationTypeDoc();
- }
-
- /**
- * Return true if this is an array of a primitive type.
- */
- public boolean isPrimitive() {
- return skipArrays().isPrimitive();
- }
-
- /**
- * Return a string representation of the type.
- *
- * Return name of type including any dimension information.
- * <p>
- * For example, a two dimensional array of String returns
- * <code>String[][]</code>.
- *
- * @return name of type including any dimension information.
- */
- @Override
- public String toString() {
- return qualifiedTypeName() + dimension();
- }
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/TypeVariableImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,154 +0,0 @@
-/*
- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import com.sun.javadoc.*;
-
-import com.sun.tools.javac.code.Attribute;
-import com.sun.tools.javac.code.Attribute.TypeCompound;
-import com.sun.tools.javac.code.Kinds;
-import com.sun.tools.javac.code.Kinds.KindSelector;
-import com.sun.tools.javac.code.Symbol;
-import com.sun.tools.javac.code.Symbol.ClassSymbol;
-import com.sun.tools.javac.code.Symbol.MethodSymbol;
-import com.sun.tools.javac.code.Type;
-import com.sun.tools.javac.code.Type.TypeVar;
-import com.sun.tools.javac.util.List;
-import com.sun.tools.javac.util.Name;
-import com.sun.tools.javac.util.Names;
-
-/**
- * Implementation of <code>TypeVariable</code>, which
- * represents a type variable.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public class TypeVariableImpl extends AbstractTypeImpl implements TypeVariable {
-
- TypeVariableImpl(DocEnv env, TypeVar type) {
- super(env, type);
- }
-
- /**
- * Return the bounds of this type variable.
- */
- public com.sun.javadoc.Type[] bounds() {
- return TypeMaker.getTypes(env, getBounds((TypeVar)type, env));
- }
-
- /**
- * Return the class, interface, method, or constructor within
- * which this type variable is declared.
- */
- public ProgramElementDoc owner() {
- Symbol osym = type.tsym.owner;
- if (osym.kind.matches(KindSelector.TYP)) {
- return env.getClassDoc((ClassSymbol)osym);
- }
- Names names = osym.name.table.names;
- if (osym.name == names.init) {
- return env.getConstructorDoc((MethodSymbol)osym);
- } else {
- return env.getMethodDoc((MethodSymbol)osym);
- }
- }
-
- /**
- * Return the ClassDoc of the erasure of this type variable.
- */
- @Override
- public ClassDoc asClassDoc() {
- return env.getClassDoc((ClassSymbol)env.types.erasure(type).tsym);
- }
-
- @Override
- public TypeVariable asTypeVariable() {
- return this;
- }
-
- @Override
- public String toString() {
- return typeVarToString(env, (TypeVar)type, true);
- }
-
-
- /**
- * Return the string form of a type variable along with any
- * "extends" clause. Class names are qualified if "full" is true.
- */
- static String typeVarToString(DocEnv env, TypeVar v, boolean full) {
- StringBuilder s = new StringBuilder(v.toString());
- List<Type> bounds = getBounds(v, env);
- if (bounds.nonEmpty()) {
- boolean first = true;
- for (Type b : bounds) {
- s.append(first ? " extends " : " & ");
- s.append(TypeMaker.getTypeString(env, b, full));
- first = false;
- }
- }
- return s.toString();
- }
-
- /**
- * Get the bounds of a type variable as listed in the "extends" clause.
- */
- private static List<Type> getBounds(TypeVar v, DocEnv env) {
- final Type upperBound = v.getUpperBound();
- Name boundname = upperBound.tsym.getQualifiedName();
- if (boundname == boundname.table.names.java_lang_Object
- && !upperBound.isAnnotated()) {
- return List.nil();
- } else {
- return env.types.getBounds(v);
- }
- }
-
- /**
- * Get the annotations of this program element.
- * Return an empty array if there are none.
- */
- public AnnotationDesc[] annotations() {
- if (!type.isAnnotated()) {
- return new AnnotationDesc[0];
- }
- List<? extends TypeCompound> tas = type.getAnnotationMirrors();
- AnnotationDesc res[] = new AnnotationDesc[tas.length()];
- int i = 0;
- for (Attribute.Compound a : tas) {
- res[i++] = new AnnotationDescImpl(env, a);
- }
- return res;
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/WildcardTypeImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,141 +0,0 @@
-/*
- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.main;
-
-import com.sun.javadoc.*;
-
-import com.sun.tools.javac.code.Symbol.ClassSymbol;
-import com.sun.tools.javac.code.Type;
-import com.sun.tools.javac.util.List;
-
-
-/**
- * Implementation of <code>WildcardType</code>, which
- * represents a wildcard type.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own risk.
- * This code and its internal interfaces are subject to change or
- * deletion without notice.</b>
- *
- * @author Scott Seligman
- * @since 1.5
- */
-@Deprecated(since="9", forRemoval=true)
-@SuppressWarnings("removal")
-public class WildcardTypeImpl extends AbstractTypeImpl implements WildcardType {
-
- WildcardTypeImpl(DocEnv env, Type.WildcardType type) {
- super(env, type);
- }
-
- /**
- * Return the upper bounds of this wildcard type argument
- * as given by the <i>extends</i> clause.
- * Return an empty array if no such bounds are explicitly given.
- */
- public com.sun.javadoc.Type[] extendsBounds() {
- return TypeMaker.getTypes(env, getExtendsBounds((Type.WildcardType)type));
- }
-
- /**
- * Return the lower bounds of this wildcard type argument
- * as given by the <i>super</i> clause.
- * Return an empty array if no such bounds are explicitly given.
- */
- public com.sun.javadoc.Type[] superBounds() {
- return TypeMaker.getTypes(env, getSuperBounds((Type.WildcardType)type));
- }
-
- /**
- * Return the ClassDoc of the erasure of this wildcard type.
- */
- @Override
- public ClassDoc asClassDoc() {
- return env.getClassDoc((ClassSymbol)env.types.erasure(type).tsym);
- }
-
- @Override
- public WildcardType asWildcardType() {
- return this;
- }
-
- @Override
- public String typeName() { return "?"; }
- @Override
- public String qualifiedTypeName() { return "?"; }
- @Override
- public String simpleTypeName() { return "?"; }
-
- @Override
- public String toString() {
- return wildcardTypeToString(env, (Type.WildcardType)type, true);
- }
-
-
- /**
- * Return the string form of a wildcard type ("?") along with any
- * "extends" or "super" clause. Delimiting brackets are not
- * included. Class names are qualified if "full" is true.
- */
- static String wildcardTypeToString(DocEnv env,
- Type.WildcardType wildThing, boolean full) {
- if (env.legacyDoclet) {
- return TypeMaker.getTypeName(env.types.erasure(wildThing), full);
- }
- StringBuilder s = new StringBuilder("?");
- List<Type> bounds = getExtendsBounds(wildThing);
- if (bounds.nonEmpty()) {
- s.append(" extends ");
- } else {
- bounds = getSuperBounds(wildThing);
- if (bounds.nonEmpty()) {
- s.append(" super ");
- }
- }
- boolean first = true; // currently only one bound is allowed
- for (Type b : bounds) {
- if (!first) {
- s.append(" & ");
- }
- s.append(TypeMaker.getTypeString(env, b, full));
- first = false;
- }
- return s.toString();
- }
-
- private static List<Type> getExtendsBounds(Type.WildcardType wild) {
- return wild.isSuperBound()
- ? List.nil()
- : List.of(wild.type);
- }
-
- private static List<Type> getSuperBounds(Type.WildcardType wild) {
- return wild.isExtendsBound()
- ? List.nil()
- : List.of(wild.type);
- }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/package-info.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 2000, 2016, 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.
- */
-
-/**
- * This package and its contents are deprecated and
- * may be removed in a future release.
- * See
- * {@code javax.tools.ToolProvider.getSystemDocumentationTool}
- * and
- * {@code javax.tools.DocumentationTool}
- * for replacement functionality.
- */
-package com.sun.tools.javadoc;
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/resources/javadoc.properties Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,155 +0,0 @@
-#
-# Copyright (c) 1997, 2018, 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.
-#
-
-main.errors={0} errors
-main.error={0} error
-main.warnings={0} warnings
-main.warning={0} warning
-
-main.usage=Usage: javadoc [options] [packagenames] [sourcefiles] [@files]\n\
-\ -overview <file> Read overview documentation from HTML file\n\
-\ -public Show only public classes and members\n\
-\ -protected Show protected/public classes and members (default)\n\
-\ -package Show package/protected/public classes and members\n\
-\ -private Show all classes and members\n\
-\ --help Display command line options and exit\n\
-\ -doclet <class> Generate output via alternate doclet\n\
-\ -docletpath <path> Specify where to find doclet class files\n\
-\ --module-source-path <path> Specify where to find input source files for multiple modules\n\
-\ --upgrade-module-path <path> Override location of upgradeable modules\n\
-\ --module-path <path>, -p <path> Specify where to find application modules\n\
-\ --add-modules <module>(,<module>)*\n\
-\ Root modules to resolve in addition to the initial modules,\n\
-\ or all modules on the module path if <module> is ALL-MODULE-PATH.\n\
-\ --limit-modules <module>(,<module>)*\n\
-\ Limit the universe of observable modules\n\
-\ --source-path <path> Specify where to find source files\n\
-\ -sourcepath <path> Specify where to find source files\n\
-\ --class-path <path> Specify where to find user class files\n\
-\ -classpath <path> Specify where to find user class files\n\
-\ -cp <path> Specify where to find user class files\n\
-\ -exclude <pkglist> Specify a list of packages to exclude\n\
-\ -subpackages <subpkglist> Specify subpackages to recursively load\n\
-\ -breakiterator Compute first sentence with BreakIterator\n\
-\ -bootclasspath <path> Override location of platform class files\n\
-\ used for non-modular releases\n\
-\ --system <jdk> Override location of system modules used\n\
-\ for modular releases.\n\
-\ -source <release> Provide source compatibility with specified release\n\
-\ --release <release> Provide source compatibility with specified release\n\
-\ -extdirs <dirlist> Override location of installed extensions\n\
-\ -verbose Output messages about what Javadoc is doing\n\
-\ -locale <name> Locale to be used, e.g. en_US or en_US_WIN\n\
-\ -encoding <name> Source file encoding name\n\
-\ -quiet Do not display status messages\n\
-\ -J<flag> Pass <flag> directly to the runtime system\n\
-\ -X Print a synopsis of nonstandard options and exit\n
-
-main.usage.foot=\n\
-GNU-style options may use '=' instead whitespace to separate the name of an option\n\
-from its value.\n
-
-main.Xusage=\
-\ -Xmaxerrs <number> Set the maximum number of errors to print\n\
-\ -Xmaxwarns <number> Set the maximum number of warnings to print\n\
-\ --add-exports <module>/<package>=<other-module>(,<other-module>)*\n\
-\ Specify a package to be considered as exported from its \n\
-\ defining module to additional modules, or to all unnamed \n\
-\ modules if <other-module> is ALL-UNNAMED.\n\
-\ --add-reads <module>=<other-module>(,<other-module>)*\n\
-\ Specify additional modules to be considered as required by a\n\
-\ given module. <other-module> may be ALL-UNNAMED to require\n\
-\ the unnamed module.\n\
-\ --patch-module <module>=<file>(:<file>)*\n\
-\ Override or augment a module with classes and resources\n\
-\ in JAR files or directories\n
-
-main.Xusage.foot=\
-These options are non-standard and subject to change without notice.
-
-main.option.already.seen=The {0} option may be specified no more than once.
-main.requires_argument=option {0} requires an argument.
-main.locale_first=option -locale must be first on the command line.
-main.invalid_flag=invalid flag: {0}
-main.No_packages_or_classes_specified=No packages or classes specified.
-main.incompatible.access.flags=More than one of -public, -private, -package, or -protected specified.
-main.cant.read=cannot read {0}
-main.Loading_source_files_for_package=Loading source files for package {0}...
-main.Loading_source_file=Loading source file {0}...
-main.Building_tree=Constructing Javadoc information...
-main.no_source_files_for_package=No source files for package {0}
-main.fatal.error=fatal error
-main.fatal.exception=fatal exception
-main.out.of.memory=java.lang.OutOfMemoryError: Please increase memory.\n\
-For example, on the JDK Classic or HotSpot VMs, add the option -J-Xmx\n\
-such as -J-Xmx32m.
-main.done_in=[done in {0} ms]
-main.doclet_method_must_be_static=In doclet class {0}, method {1} must be static.
-main.must_return_int=In doclet class {0}, method {1} must return int.
-main.must_return_boolean=In doclet class {0}, method {1} must return boolean.
-main.must_return_languageversion=In doclet class {0}, method {1} must return LanguageVersion.
-main.more_than_one_doclet_specified_0_and_1=More than one doclet specified ({0} and {1}).
-main.doclet_class_not_found=Cannot find doclet class {0}
-main.doclet_method_not_found=Doclet class {0} does not contain a {1} method
-main.doclet_method_not_accessible=In doclet class {0}, method {1} not accessible
-main.internal_error_exception_thrown=Internal error: In doclet class {0}, method {1} has thrown an exception {2}
-main.exception_thrown=In doclet class {0}, method {1} has thrown an exception {2}
-main.illegal_locale_name=Locale not available: {0}
-main.malformed_locale_name=Malformed locale name: {0}
-main.file_not_found=File not found: "{0}"
-main.file_ignored=File ignored: "{0}" (not yet supported)
-main.illegal_class_name=Illegal class name: "{0}"
-main.illegal_package_name=Illegal package name: "{0}"
-main.release.bootclasspath.conflict=option {0} cannot be used together with -release
-main.unsupported.release.version=release version {0} not supported
-main.option.invalid.value={0}
-tag.illegal_char_in_arr_dim=Tag {0}: Syntax Error in array dimension, method parameters: {1}
-tag.illegal_see_tag=Tag {0}: Syntax Error in method parameters: {1}
-tag.missing_comma_space=Tag {0}: Missing comma or space in method parameters: {1}
-tag.tag_has_no_arguments={0} tag has no arguments.
-tag.see.missing_sharp=Tag {0}: missing ''#'': "{1}"
-tag.see.can_not_find_member=Tag {0}: can''t find {1} in {2}
-tag.see.no_close_bracket_on_url=Tag {0}: missing final ''>'': "{1}"
-tag.see.no_close_quote=Tag {0}: no final close quote: "{1}"
-tag.see.class_not_specified=Tag {0}: class not specified: "{1}"
-tag.see.illegal_character=Tag {0}:illegal character: "{1}" in "{2}"
-tag.see.malformed_see_tag=Tag {0}: malformed: "{1}"
-tag.End_delimiter_missing_for_possible_SeeTag=End Delimiter } missing for possible See Tag in comment string: "{0}"
-tag.Improper_Use_Of_Link_Tag=Missing closing ''}'' character for inline tag: "{0}"
-tag.serialField.illegal_character=illegal character {0} in @serialField tag: {1}.
-javadoc.File_Read_Error=Error while reading file {0}
-javadoc.Body_missing_from_html_file=Body tag missing from HTML file
-javadoc.End_body_missing_from_html_file=Close body tag missing from HTML file
-javadoc.Multiple_package_comments=Multiple sources of package comments found for package "{0}"
-javadoc.JavaScript_in_comment=JavaScript found in documentation comment.\n\
- Use --allow-script-in-comments to allow use of JavaScript.
-javadoc.class_not_found=Class {0} not found.
-javadoc.error=error
-javadoc.warning=warning
-
-javadoc.error.msg={0}: error - {1}
-javadoc.warning.msg={0}: warning - {1}
-javadoc.note.msg = {1}
-javadoc.note.pos.msg= {0}: {1}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/resources/javadoc_ja.properties Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-#
-# Copyright (c) 1997, 2018, 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.
-#
-
-main.errors=\u30A8\u30E9\u30FC{0}\u500B
-main.error=\u30A8\u30E9\u30FC{0}\u500B
-main.warnings=\u8B66\u544A{0}\u500B
-main.warning=\u8B66\u544A{0}\u500B
-
-main.usage=\u4F7F\u7528\u65B9\u6CD5: javadoc [options] [packagenames] [sourcefiles] [@files]\n -overview <file> HTML\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u6982\u8981\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u8AAD\u307F\u8FBC\u3080\n -public public\u30AF\u30E9\u30B9\u3068\u30E1\u30F3\u30D0\u30FC\u306E\u307F\u3092\u793A\u3059\n -protected protected/public\u30AF\u30E9\u30B9\u3068\u30E1\u30F3\u30D0\u30FC\u3092\u793A\u3059(\u30C7\u30D5\u30A9\u30EB\u30C8)\n -package package/protected/public\u30AF\u30E9\u30B9\u3068\u30E1\u30F3\u30D0\u30FC\u3092\u793A\u3059\n -private \u3059\u3079\u3066\u306E\u30AF\u30E9\u30B9\u3068\u30E1\u30F3\u30D0\u30FC\u3092\u793A\u3059\n --help \u30B3\u30DE\u30F3\u30C9\u884C\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u8868\u793A\u3057\u3066\u7D42\u4E86\u3059\u308B\n -doclet <class> \u4EE3\u66FFdoclet\u3092\u4ECB\u3057\u3066\u51FA\u529B\u3092\u751F\u6210\u3059\u308B\n -docletpath <path> doclet\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u3042\u308B\u5834\u6240\u3092\u6307\u5B9A\u3059\u308B\n --module-source-path <path> \u8907\u6570\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u5165\u529B\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u3042\u308B\u5834\u6240\u3092\u6307\u5B9A\u3059\u308B\n --upgrade-module-path <path> \u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9\u53EF\u80FD\u306A\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u5834\u6240\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3059\u308B\n --module-path <path>\u3001-p <path> \u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u3042\u308B\u5834\u6240\u3092\u6307\u5B9A\u3059\u308B\n --add-modules <module>(,<module>)*\n \u521D\u671F\u30E2\u30B8\u30E5\u30FC\u30EB\u306B\u52A0\u3048\u3066\u89E3\u6C7A\u3059\u308B\u30EB\u30FC\u30C8\u30FB\u30E2\u30B8\u30E5\u30FC\u30EB\u3001\u307E\u305F\u306F\n <module>\u304CALL-MODULE-PATH\u3067\u3042\u308B\u5834\u5408\u306F\u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30D1\u30B9\u306E\u3059\u3079\u3066\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u3002\n --limit-modules <module>(,<module>)*\n \u53C2\u7167\u53EF\u80FD\u306A\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u9818\u57DF\u3092\u5236\u9650\u3059\u308B\n --source-path <path> \u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u3042\u308B\u5834\u6240\u3092\u6307\u5B9A\u3059\u308B\n -sourcepath <path> \u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u3042\u308B\u5834\u6240\u3092\u6307\u5B9A\u3059\u308B\n --class-path <path> \u30E6\u30FC\u30B6\u30FC\u30FB\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u3042\u308B\u5834\u6240\u3092\u6307\u5B9A\u3059\u308B\n -classpath <path> \u30E6\u30FC\u30B6\u30FC\u30FB\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u3042\u308B\u5834\u6240\u3092\u6307\u5B9A\u3059\u308B\n -cp <path> \u30E6\u30FC\u30B6\u30FC\u30FB\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u3042\u308B\u5834\u6240\u3092\u6307\u5B9A\u3059\u308B\n -exclude <pkglist> \u9664\u5916\u3059\u308B\u30D1\u30C3\u30B1\u30FC\u30B8\u30FB\u30EA\u30B9\u30C8\u3092\u6307\u5B9A\u3059\u308B\n -subpackages <subpkglist> \u518D\u5E30\u7684\u306B\u30ED\u30FC\u30C9\u3059\u308B\u30B5\u30D6\u30D1\u30C3\u30B1\u30FC\u30B8\u3092\u6307\u5B9A\u3059\u308B\n -breakiterator BreakIterator\u3067\u6700\u521D\u306E\u6587\u3092\u8A08\u7B97\u3059\u308B\n -bootclasspath <path> \u975E\u30E2\u30B8\u30E5\u30E9\u30FB\u30EA\u30EA\u30FC\u30B9\u3067\u4F7F\u7528\u3055\u308C\u308B\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u30FB\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\n \
-\u306E\u5834\u6240\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3059\u308B\n --system <jdk> \u30E2\u30B8\u30E5\u30E9\u30FB\u30EA\u30EA\u30FC\u30B9\u3067\u4F7F\u7528\u3055\u308C\u308B\u30B7\u30B9\u30C6\u30E0\u30FB\u30E2\u30B8\u30E5\u30FC\u30EB\n \u306E\u5834\u6240\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3059\u308B\u3002\n -source <release> \u6307\u5B9A\u3055\u308C\u305F\u30EA\u30EA\u30FC\u30B9\u3068\u30BD\u30FC\u30B9\u306E\u4E92\u63DB\u6027\u3092\u63D0\u4F9B\u3059\u308B\n --release <release> \u6307\u5B9A\u3055\u308C\u305F\u30EA\u30EA\u30FC\u30B9\u3068\u30BD\u30FC\u30B9\u306E\u4E92\u63DB\u6027\u3092\u63D0\u4F9B\u3059\u308B\n -extdirs <dirlist> \u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u305F\u62E1\u5F35\u6A5F\u80FD\u306E\u5834\u6240\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3059\u308B\n -verbose Javadoc\u306E\u52D5\u4F5C\u306B\u3064\u3044\u3066\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u529B\u3059\u308B\n -locale <name> en_US\u3084en_US_WIN\u306A\u3069\u306E\u4F7F\u7528\u3059\u308B\u30ED\u30B1\u30FC\u30EB\n -encoding <name> \u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u540D\n -quiet \u72B6\u614B\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u8868\u793A\u3057\u306A\u3044\n -J<flag> <flag>\u3092\u5B9F\u884C\u6642\u30B7\u30B9\u30C6\u30E0\u306B\u76F4\u63A5\u6E21\u3059\n -X \u975E\u6A19\u6E96\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u6982\u8981\u3092\u51FA\u529B\u3057\u7D42\u4E86\u3059\u308B\n
-
-main.usage.foot=\nGNU\u30B9\u30BF\u30A4\u30EB\u30FB\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u306F\u3001\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u540D\u524D\u3068\u305D\u306E\u5024\u3092\u533A\u5207\u308B\u305F\u3081\u306B\u7A7A\u767D\u3067\u306F\u306A\u304F'='\u3092\n\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n
-
-main.Xusage=\ -Xmaxerrs <number> \u51FA\u529B\u3059\u308B\u6700\u5927\u30A8\u30E9\u30FC\u6570\u3092\u8A2D\u5B9A\u3057\u307E\u3059\n -Xmaxwarns <number> \u51FA\u529B\u3059\u308B\u6700\u5927\u8B66\u544A\u6570\u3092\u8A2D\u5B9A\u3057\u307E\u3059\n --add-exports <module>/<package>=<other-module>(,<other-module>)*\n \u305D\u306E\u5B9A\u7FA9\u30E2\u30B8\u30E5\u30FC\u30EB\u304B\u3089\u3001\u8FFD\u52A0\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u3001\u307E\u305F\u306F<other-module>\u304C \n ALL-UNNAMED\u3067\u3042\u308B\u5834\u5408\u306F\u3059\u3079\u3066\u306E\u540D\u524D\u306E\u306A\u3044\u30E2\u30B8\u30E5\u30FC\u30EB\u306B \n \u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u6E08\u3068\u307F\u306A\u3055\u308C\u308B\u3088\u3046\u306B\u30D1\u30C3\u30B1\u30FC\u30B8\u3092\u6307\u5B9A\u3057\u307E\u3059\u3002\n --add-reads <module>=<other-module>(,<other-module>)*\n \u6307\u5B9A\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u3067\u5FC5\u9808\u3068\u307F\u306A\u3055\u308C\u308B\u3088\u3046\u306B\u8FFD\u52A0\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u6307\u5B9A\u3057\u307E\u3059\u3002\n \u540D\u524D\u306E\u306A\u3044\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u5FC5\u8981\u3068\u3059\u308B\u5834\u5408\u3001<other-module>\u306FALL-UNNAMED\n \u306B\u3057\u307E\u3059\u3002\n --patch-module <module>=<file>(:<file>)*\n JAR\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30AF\u30E9\u30B9\u304A\u3088\u3073\u30EA\u30BD\u30FC\u30B9\u3067\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\n \u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u307E\u305F\u306F\u62E1\u5F35\u3057\u307E\u3059\n
-
-main.Xusage.foot=\u3053\u308C\u3089\u306F\u975E\u6A19\u6E96\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u3042\u308A\u4E88\u544A\u306A\u3057\u306B\u5909\u66F4\u3055\u308C\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002
-
-main.option.already.seen={0}\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u8907\u6570\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002
-main.requires_argument=\u30AA\u30D7\u30B7\u30E7\u30F3{0}\u306B\u306F\u5F15\u6570\u304C\u5FC5\u8981\u3067\u3059\u3002
-main.locale_first=\u30AA\u30D7\u30B7\u30E7\u30F3-locale\u306F\u3001\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u306E\u6700\u521D\u306B\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
-main.invalid_flag={0}\u306F\u7121\u52B9\u306A\u30D5\u30E9\u30B0\u3067\u3059
-main.No_packages_or_classes_specified=\u30D1\u30C3\u30B1\u30FC\u30B8\u307E\u305F\u306F\u30AF\u30E9\u30B9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
-main.incompatible.access.flags=-public\u3001-private\u3001-package\u307E\u305F\u306F-protected\u306E\u3046\u3061\u306E2\u3064\u4EE5\u4E0A\u3092\u6307\u5B9A\u3057\u307E\u3057\u305F\u3002
-main.cant.read={0}\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093
-main.Loading_source_files_for_package=\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u306E\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u8FBC\u3093\u3067\u3044\u307E\u3059...
-main.Loading_source_file=\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB{0}\u3092\u8AAD\u307F\u8FBC\u3093\u3067\u3044\u307E\u3059...
-main.Building_tree=Javadoc\u60C5\u5831\u3092\u69CB\u7BC9\u3057\u3066\u3044\u307E\u3059...
-main.no_source_files_for_package=\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u306E\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u304C\u3042\u308A\u307E\u305B\u3093
-main.fatal.error=\u81F4\u547D\u7684\u30A8\u30E9\u30FC
-main.fatal.exception=\u81F4\u547D\u7684\u4F8B\u5916
-main.out.of.memory=java.lang.OutOfMemoryError: \u30E1\u30E2\u30EA\u30FC\u3092\u5897\u3084\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\u305F\u3068\u3048\u3070\u3001JDK\u306Eclassic\u3082\u3057\u304F\u306Fhotspot VM\u3067\u306F\u3001-J-Xmx32m\u306E\u3088\u3046\u306B\n-J-Xmx\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002
-main.done_in=[{0}\u30DF\u30EA\u79D2\u3067\u5B8C\u4E86]
-main.doclet_method_must_be_static=doclet\u30AF\u30E9\u30B9{0}\u3067\u306F\u3001\u30E1\u30BD\u30C3\u30C9{1}\u306Fstatic\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
-main.must_return_int=doclet\u30AF\u30E9\u30B9{0}\u3067\u306F\u3001\u30E1\u30BD\u30C3\u30C9{1}\u306Fint\u3092\u8FD4\u3059\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
-main.must_return_boolean=doclet\u30AF\u30E9\u30B9{0}\u3067\u306F\u3001\u30E1\u30BD\u30C3\u30C9{1}\u306Fboolean\u3092\u8FD4\u3059\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
-main.must_return_languageversion=doclet\u30AF\u30E9\u30B9{0}\u3067\u306F\u3001\u30E1\u30BD\u30C3\u30C9{1}\u306FLanguageVersion\u3092\u8FD4\u3059\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
-main.more_than_one_doclet_specified_0_and_1=\u8907\u6570\u306Edoclet({0}\u3068{1})\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002
-main.doclet_class_not_found=doclet\u30AF\u30E9\u30B9{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
-main.doclet_method_not_found=doclet\u30AF\u30E9\u30B9{0}\u306B\u306F\u30E1\u30BD\u30C3\u30C9{1}\u304C\u3042\u308A\u307E\u305B\u3093
-main.doclet_method_not_accessible=doclet\u30AF\u30E9\u30B9{0}\u3067\u306F\u3001\u30E1\u30BD\u30C3\u30C9{1}\u306B\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093
-main.internal_error_exception_thrown=doclet\u30AF\u30E9\u30B9{0}\u306E\u5185\u90E8\u30A8\u30E9\u30FC\u3067\u3059\u3002\u30E1\u30BD\u30C3\u30C9{1}\u306F\u4F8B\u5916{2}\u3092\u30B9\u30ED\u30FC\u3057\u307E\u3057\u305F
-main.exception_thrown=doclet\u30AF\u30E9\u30B9{0}\u3067\u306F\u3001\u30E1\u30BD\u30C3\u30C9{1}\u306F\u4F8B\u5916{2}\u3092\u30B9\u30ED\u30FC\u3057\u307E\u3057\u305F
-main.illegal_locale_name=\u30ED\u30B1\u30FC\u30EB{0}\u304C\u7121\u52B9\u3067\u3059
-main.malformed_locale_name=\u30ED\u30B1\u30FC\u30EB\u540D{0}\u306E\u66F8\u5F0F\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093
-main.file_not_found=\u30D5\u30A1\u30A4\u30EB"{0}"\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
-main.file_ignored=\u30D5\u30A1\u30A4\u30EB\u306F\u7121\u8996\u3055\u308C\u307E\u3057\u305F: "{0}" (\u307E\u3060\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093)
-main.illegal_class_name=\u30AF\u30E9\u30B9\u540D\u304C\u4E0D\u6B63\u3067\u3059: "{0}"
-main.illegal_package_name=\u30D1\u30C3\u30B1\u30FC\u30B8\u540D"{0}"\u306F\u4E0D\u6B63\u3067\u3059
-main.release.bootclasspath.conflict=\u30AA\u30D7\u30B7\u30E7\u30F3{0}\u306F-release\u3068\u4E00\u7DD2\u306B\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093
-main.unsupported.release.version=\u30EA\u30EA\u30FC\u30B9\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3{0}\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
-main.option.invalid.value={0}
-tag.illegal_char_in_arr_dim=\u30BF\u30B0{0}: \u914D\u5217\u306E\u5927\u304D\u3055\u3001\u30E1\u30BD\u30C3\u30C9\u30FB\u30D1\u30E9\u30E1\u30FC\u30BF{1}\u306B\u69CB\u6587\u30A8\u30E9\u30FC\u304C\u3042\u308A\u307E\u3059
-tag.illegal_see_tag=\u30BF\u30B0{0}: \u30E1\u30BD\u30C3\u30C9\u30FB\u30D1\u30E9\u30E1\u30FC\u30BF{1}\u306B\u69CB\u6587\u30A8\u30E9\u30FC\u304C\u3042\u308A\u307E\u3059
-tag.missing_comma_space=\u30BF\u30B0{0}: \u30E1\u30BD\u30C3\u30C9\u30FB\u30D1\u30E9\u30E1\u30FC\u30BF{1}\u306B\u30AB\u30F3\u30DE\u307E\u305F\u306F\u7A7A\u767D\u6587\u5B57\u304C\u3042\u308A\u307E\u305B\u3093
-tag.tag_has_no_arguments={0}\u30BF\u30B0\u306B\u5F15\u6570\u304C\u3042\u308A\u307E\u305B\u3093\u3002
-tag.see.missing_sharp=\u30BF\u30B0{0}: ''#''\u304C\u3042\u308A\u307E\u305B\u3093: "{1}"
-tag.see.can_not_find_member=\u30BF\u30B0{0}: {2}\u3067{1}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
-tag.see.no_close_bracket_on_url=\u30BF\u30B0{0}: \u9589\u3058\u30BF\u30B0''>''\u304C\u3042\u308A\u307E\u305B\u3093: "{1}"
-tag.see.no_close_quote=\u30BF\u30B0{0}: \u9589\u3058\u5F15\u7528\u7B26\u304C\u3042\u308A\u307E\u305B\u3093: "{1}"
-tag.see.class_not_specified=\u30BF\u30B0{0}: \u30AF\u30E9\u30B9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093: "{1}"
-tag.see.illegal_character=\u30BF\u30B0{0}: "{2}"\u306B\u4E0D\u6B63\u306A\u6587\u5B57"{1}"\u304C\u3042\u308A\u307E\u3059
-tag.see.malformed_see_tag=\u30BF\u30B0{0}: \u66F8\u5F0F\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093: "{1}"
-tag.End_delimiter_missing_for_possible_SeeTag=\u30B3\u30E1\u30F3\u30C8\u6587\u5B57\u5217"{0}"\u3067\u3001\u6709\u52B9\u306Asee\u30BF\u30B0\u306B\u7D42\u7AEF\u30C7\u30EA\u30DF\u30BF}\u304C\u3042\u308A\u307E\u305B\u3093
-tag.Improper_Use_Of_Link_Tag=\u30A4\u30F3\u30E9\u30A4\u30F3\u30FB\u30BF\u30B0"{0}"\u306B\u7D42\u4E86\u6587\u5B57''}''\u304C\u3042\u308A\u307E\u305B\u3093
-tag.serialField.illegal_character=@serialField\u30BF\u30B0\u306B\u4E0D\u6B63\u306A\u6587\u5B57{0}\u304C\u3042\u308A\u307E\u3059: {1}\u3002
-javadoc.File_Read_Error=\u30D5\u30A1\u30A4\u30EB{0}\u306E\u8AAD\u8FBC\u307F\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F
-javadoc.Body_missing_from_html_file=HTML\u306Bbody\u30BF\u30B0\u304C\u3042\u308A\u307E\u305B\u3093
-javadoc.End_body_missing_from_html_file=HTML\u30D5\u30A1\u30A4\u30EB\u306Bbody\u306E\u9589\u3058\u30BF\u30B0\u304C\u3042\u308A\u307E\u305B\u3093
-javadoc.Multiple_package_comments=\u30D1\u30C3\u30B1\u30FC\u30B8"{0}"\u306B\u8907\u6570\u306E\u30D1\u30C3\u30B1\u30FC\u30B8\u30FB\u30B3\u30E1\u30F3\u30C8\u306E\u30BD\u30FC\u30B9\u304C\u691C\u51FA\u3055\u308C\u307E\u3057\u305F
-javadoc.JavaScript_in_comment=\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u30FB\u30B3\u30E1\u30F3\u30C8\u306BJavaScript\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F\u3002\n--allow-script-in-comments\u3092\u4F7F\u7528\u3057\u3066\u3001JavaScript\u306E\u4F7F\u7528\u3092\u8A31\u53EF\u3057\u3066\u304F\u3060\u3055\u3044\u3002
-javadoc.class_not_found=\u30AF\u30E9\u30B9{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002
-javadoc.error=\u30A8\u30E9\u30FC
-javadoc.warning=\u8B66\u544A
-
-javadoc.error.msg={0}: \u30A8\u30E9\u30FC - {1}
-javadoc.warning.msg={0}: \u8B66\u544A - {1}
-javadoc.note.msg = {1}
-javadoc.note.pos.msg= {0}: {1}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/resources/javadoc_zh_CN.properties Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-#
-# Copyright (c) 1997, 2018, 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.
-#
-
-main.errors={0} \u4E2A\u9519\u8BEF
-main.error={0} \u4E2A\u9519\u8BEF
-main.warnings={0} \u4E2A\u8B66\u544A
-main.warning={0} \u4E2A\u8B66\u544A
-
-main.usage=\u7528\u6CD5\uFF1Ajavadoc [\u9009\u9879] [\u7A0B\u5E8F\u5305\u540D\u79F0] [\u6E90\u6587\u4EF6] [@files]\n -overview <\u6587\u4EF6> \u4ECE HTML \u6587\u4EF6\u8BFB\u53D6\u6982\u89C8\u6587\u6863\n -public \u4EC5\u663E\u793A\u516C\u5171\u7C7B\u548C\u6210\u5458\n -protected \u663E\u793A\u53D7\u4FDD\u62A4/\u516C\u5171\u7C7B\u548C\u6210\u5458\uFF08\u9ED8\u8BA4\u503C\uFF09\n -package \u663E\u793A\u7A0B\u5E8F\u5305/\u53D7\u4FDD\u62A4/\u516C\u5171\u7C7B\u548C\u6210\u5458\n -private \u663E\u793A\u6240\u6709\u7C7B\u548C\u6210\u5458\n --help \u663E\u793A\u547D\u4EE4\u884C\u9009\u9879\u5E76\u9000\u51FA\n -doclet <\u7C7B> \u901A\u8FC7\u66FF\u4EE3 doclet \u751F\u6210\u8F93\u51FA\n -docletpath <\u8DEF\u5F84> \u6307\u5B9A\u67E5\u627E doclet \u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E\n --module-source-path <\u8DEF\u5F84> \u6307\u5B9A\u67E5\u627E\u591A\u4E2A\u6A21\u5757\u7684\u8F93\u5165\u6E90\u6587\u4EF6\u7684\u4F4D\u7F6E\n --upgrade-module-path <\u8DEF\u5F84> \u8986\u76D6\u53EF\u5347\u7EA7\u6A21\u5757\u4F4D\u7F6E\n --module-path <\u8DEF\u5F84>, -p <\u8DEF\u5F84> \u6307\u5B9A\u67E5\u627E\u5E94\u7528\u7A0B\u5E8F\u6A21\u5757\u7684\u4F4D\u7F6E\n --add-modules <\u6A21\u5757>(,<\u6A21\u5757>)*\n \u9664\u4E86\u521D\u59CB\u6A21\u5757\u4E4B\u5916\u8981\u89E3\u6790\u7684\u6839\u6A21\u5757\uFF0C\n \u5982\u679C <\u6A21\u5757>\u4E3A ALL-MODULE-PATH\uFF0C\u5219\u4E3A\u6A21\u5757\u8DEF\u5F84\u4E2D\u7684\u6240\u6709\u6A21\u5757\u3002\n --limit-modules <\u6A21\u5757>(,<\u6A21\u5757>)*\n \u9650\u5236\u53EF\u89C2\u5BDF\u6A21\u5757\u7684\u9886\u57DF\n --source-path <\u8DEF\u5F84> \u6307\u5B9A\u67E5\u627E\u6E90\u6587\u4EF6\u7684\u4F4D\u7F6E\n -sourcepath <\u8DEF\u5F84> \u6307\u5B9A\u67E5\u627E\u6E90\u6587\u4EF6\u7684\u4F4D\u7F6E\n --class-path <\u8DEF\u5F84> \u6307\u5B9A\u67E5\u627E\u7528\u6237\u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E\n -classpath <\u8DEF\u5F84> \u6307\u5B9A\u67E5\u627E\u7528\u6237\u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E\n -cp <\u8DEF\u5F84> \u6307\u5B9A\u67E5\u627E\u7528\u6237\u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E\n -exclude <\u7A0B\u5E8F\u5305\u5217\u8868> \u6307\u5B9A\u8981\u6392\u9664\u7684\u7A0B\u5E8F\u5305\u5217\u8868\n -subpackages <\u7A0B\u5E8F\u5305\u5217\u8868> \u6307\u5B9A\u8981\u9012\u5F52\u52A0\u8F7D\u7684\u5B50\u7A0B\u5E8F\u5305\n -breakiterator \u8BA1\u7B97\u5E26\u6709 BreakIterator \u7684\u7B2C\u4E00\u4E2A\u8BED\u53E5\n -bootclasspath <\u8DEF\u5F84> \u8986\u76D6\u7528\u4E8E\u975E\u6A21\u5757\u5316\u53D1\u884C\u7248\u7684\n \u5E73\u53F0\u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E\n --system <jdk> \u8986\u76D6\u7528\u4E8E\u6A21\u5757\u5316\u53D1\u884C\u7248\u7684\n \u7CFB\u7EDF\u6A21\u5757\u7684\u4F4D\u7F6E\u3002\n -source <\u53D1\u884C\u7248> \u63D0\u4F9B\u4E0E\u6307\u5B9A\u53D1\u884C\u7248\u7684\u6E90\u517C\u5BB9\u6027\n --release <\u53D1\u884C\u7248> \u63D0\u4F9B\u4E0E\u6307\u5B9A\u53D1\u884C\u7248\u7684\u6E90\u517C\u5BB9\u6027\n -extdirs <\u76EE\u5F55\u5217\u8868> \u8986\u76D6\u6240\u5B89\u88C5\u6269\u5C55\u7684\u4F4D\u7F6E\n -verbose \u8F93\u51FA\u6709\u5173 Javadoc \u6B63\u5728\u6267\u884C\u7684\u64CD\u4F5C\u7684\u6D88\u606F\n -locale <\u540D\u79F0> \u8981\u4F7F\u7528\u7684\u533A\u57DF\u8BBE\u7F6E\uFF0C\u4F8B\u5982 en_US \u6216 en_US_WIN\n -encoding <\u540D\u79F0> \u6E90\u6587\u4EF6\u7F16\u7801\u540D\u79F0\n -quiet \u4E0D\u663E\u793A\u72B6\u6001\u6D88\u606F\n -J<\u6807\u8BB0> \
-\u76F4\u63A5\u5C06 <\u6807\u8BB0> \u4F20\u9012\u5230\u8FD0\u884C\u65F6\u7CFB\u7EDF\n -X \u8F93\u51FA\u975E\u6807\u51C6\u9009\u9879\u7684\u63D0\u8981\u5E76\u9000\u51FA\n
-
-main.usage.foot=\nGNU \u6837\u5F0F\u7684\u9009\u9879\u53EF\u4F7F\u7528 '=' (\u800C\u975E\u7A7A\u767D) \u6765\u5206\u9694\u9009\u9879\u540D\u79F0\n\u53CA\u5176\u503C\u3002\n
-
-main.Xusage=\ -Xmaxerrs <\u6570\u5B57> \u8BBE\u7F6E\u8981\u8F93\u51FA\u7684\u9519\u8BEF\u7684\u6700\u5927\u6570\u76EE\n -Xmaxwarns <\u6570\u5B57> \u8BBE\u7F6E\u8981\u8F93\u51FA\u7684\u8B66\u544A\u7684\u6700\u5927\u6570\u76EE\n --add-exports <\u6A21\u5757>/<\u7A0B\u5E8F\u5305>=<\u5176\u4ED6\u6A21\u5757>(,<\u5176\u4ED6\u6A21\u5757>)*\n \u6307\u5B9A\u5C06\u7A0B\u5E8F\u5305\u89C6\u4E3A\u4ECE\u5176\u5B9A\u4E49\u6A21\u5757\u5BFC\u51FA\u5230\u5176\u4ED6\u6A21\u5757, \n \u5982\u679C <\u5176\u4ED6\u6A21\u5757> \u4E3A ALL-UNNAMED, \u5219\u89C6\u4E3A \n \u5BFC\u51FA\u5230\u6240\u6709\u672A\u547D\u540D\u6A21\u5757\u3002\n --add-reads <\u6A21\u5757>=<\u5176\u4ED6\u6A21\u5757>(,<\u5176\u4ED6\u6A21\u5757>)*\n \u6307\u5B9A\u88AB\u89C6\u4E3A\u7ED9\u5B9A\u6A21\u5757\u9700\u8981\u7684\u5176\u4ED6\u6A21\u5757\u3002\n <\u5176\u4ED6\u6A21\u5757> \u53EF\u4EE5\u4E3A ALL-UNNAMED \u4EE5\u4FBF\u8981\u6C42\n \u672A\u547D\u540D\u6A21\u5757\u3002\n --patch-module <\u6A21\u5757>=<\u6587\u4EF6>(:<\u6587\u4EF6>)*\n \u4F7F\u7528 JAR \u6587\u4EF6\u6216\u76EE\u5F55\u4E2D\u7684\u7C7B\u548C\u8D44\u6E90\n \u8986\u76D6\u6216\u589E\u5F3A\u6A21\u5757\n
-
-main.Xusage.foot=\u8FD9\u4E9B\u9009\u9879\u90FD\u662F\u975E\u6807\u51C6\u9009\u9879, \u5982\u6709\u66F4\u6539, \u6055\u4E0D\u53E6\u884C\u901A\u77E5\u3002
-
-main.option.already.seen={0}\u9009\u9879\u53EA\u80FD\u6307\u5B9A\u4E00\u6B21\u3002
-main.requires_argument=\u9009\u9879{0}\u9700\u8981\u53C2\u6570\u3002
-main.locale_first=\u5728\u547D\u4EE4\u884C\u4E2D, \u9009\u9879 -locale \u5FC5\u987B\u4E3A\u7B2C\u4E00\u4E2A\u9009\u9879\u3002
-main.invalid_flag=\u65E0\u6548\u7684\u6807\u8BB0: {0}
-main.No_packages_or_classes_specified=\u672A\u6307\u5B9A\u7A0B\u5E8F\u5305\u6216\u7C7B\u3002
-main.incompatible.access.flags=\u6307\u5B9A\u4E86\u591A\u4E2A -public, -private, -package \u6216 -protected\u3002
-main.cant.read=\u65E0\u6CD5\u8BFB\u53D6{0}
-main.Loading_source_files_for_package=\u6B63\u5728\u52A0\u8F7D\u7A0B\u5E8F\u5305{0}\u7684\u6E90\u6587\u4EF6...
-main.Loading_source_file=\u6B63\u5728\u52A0\u8F7D\u6E90\u6587\u4EF6{0}...
-main.Building_tree=\u6B63\u5728\u6784\u9020 Javadoc \u4FE1\u606F...
-main.no_source_files_for_package=\u6CA1\u6709\u7A0B\u5E8F\u5305{0}\u7684\u6E90\u6587\u4EF6
-main.fatal.error=\u81F4\u547D\u9519\u8BEF
-main.fatal.exception=\u81F4\u547D\u5F02\u5E38\u9519\u8BEF
-main.out.of.memory=java.lang.OutOfMemoryError: \u8BF7\u589E\u5927\u5185\u5B58\u3002\n\u4F8B\u5982, \u5BF9\u4E8E JDK \u7ECF\u5178\u6216 HotSpot VM, \u8BF7\u589E\u5927\u9009\u9879 -J-Xmx,\n\u4F8B\u5982 -J-Xmx32m\u3002
-main.done_in=[\u5728 {0} \u6BEB\u79D2\u5185\u5B8C\u6210]
-main.doclet_method_must_be_static=\u5728 doclet \u7C7B{0}\u4E2D, \u65B9\u6CD5{1}\u5FC5\u987B\u4E3A\u9759\u6001\u3002
-main.must_return_int=\u5728 doclet \u7C7B{0}\u4E2D, \u65B9\u6CD5{1}\u5FC5\u987B\u8FD4\u56DE\u6574\u578B\u503C\u3002
-main.must_return_boolean=\u5728 doclet \u7C7B{0}\u4E2D, \u65B9\u6CD5{1}\u5FC5\u987B\u8FD4\u56DE\u5E03\u5C14\u503C\u3002
-main.must_return_languageversion=\u5728 doclet \u7C7B{0}\u4E2D, \u65B9\u6CD5{1}\u5FC5\u987B\u8FD4\u56DE\u8BED\u8A00\u7248\u672C\u3002
-main.more_than_one_doclet_specified_0_and_1=\u6307\u5B9A\u4E86\u591A\u4E2A doclet ({0}\u548C{1})\u3002
-main.doclet_class_not_found=\u627E\u4E0D\u5230 doclet \u7C7B{0}
-main.doclet_method_not_found=doclet \u7C7B{0}\u4E0D\u5305\u542B{1}\u65B9\u6CD5
-main.doclet_method_not_accessible=\u5728 doclet \u7C7B{0}\u4E2D, \u65E0\u6CD5\u8BBF\u95EE\u65B9\u6CD5{1}
-main.internal_error_exception_thrown=\u5185\u90E8\u9519\u8BEF: \u5728 doclet \u7C7B{0}\u4E2D, \u65B9\u6CD5{1}\u5DF2\u629B\u51FA\u5F02\u5E38\u9519\u8BEF{2}
-main.exception_thrown=\u5728 doclet \u7C7B{0}\u4E2D, \u65B9\u6CD5{1}\u5DF2\u629B\u51FA\u5F02\u5E38\u9519\u8BEF{2}
-main.illegal_locale_name=\u8BED\u8A00\u73AF\u5883\u4E0D\u53EF\u7528: {0}
-main.malformed_locale_name=\u683C\u5F0F\u9519\u8BEF\u7684\u8BED\u8A00\u73AF\u5883\u540D\u79F0: {0}
-main.file_not_found=\u627E\u4E0D\u5230\u6587\u4EF6: "{0}"
-main.file_ignored=\u5DF2\u5FFD\u7565\u6587\u4EF6: "{0}" (\u5C1A\u4E0D\u652F\u6301)
-main.illegal_class_name=\u975E\u6CD5\u7C7B\u540D: "{0}"
-main.illegal_package_name=\u975E\u6CD5\u7684\u7A0B\u5E8F\u5305\u540D\u79F0: "{0}"
-main.release.bootclasspath.conflict=\u9009\u9879{0}\u65E0\u6CD5\u4E0E -release \u4E00\u8D77\u4F7F\u7528
-main.unsupported.release.version=\u4E0D\u652F\u6301\u53D1\u884C\u7248\u672C {0}
-main.option.invalid.value={0}
-tag.illegal_char_in_arr_dim=\u6807\u8BB0{0}: \u6570\u7EC4\u7EF4\u4E2D\u6709\u8BED\u6CD5\u9519\u8BEF, \u65B9\u6CD5\u53C2\u6570: {1}
-tag.illegal_see_tag=\u6807\u8BB0{0}: \u65B9\u6CD5\u53C2\u6570\u4E2D\u6709\u8BED\u6CD5\u9519\u8BEF: {1}
-tag.missing_comma_space=\u6807\u8BB0{0}: \u65B9\u6CD5\u53C2\u6570\u4E2D\u7F3A\u5C11\u9017\u53F7\u6216\u7A7A\u683C: {1}
-tag.tag_has_no_arguments={0} \u6807\u8BB0\u6CA1\u6709\u53C2\u6570\u3002
-tag.see.missing_sharp=\u6807\u8BB0{0}: \u7F3A\u5C11 ''#'': "{1}"
-tag.see.can_not_find_member=\u6807\u8BB0{0}: \u5728{2}\u4E2D\u627E\u4E0D\u5230{1}
-tag.see.no_close_bracket_on_url=\u6807\u8BB0{0}: \u7F3A\u5C11\u6700\u540E\u7684 ''>'': "{1}"
-tag.see.no_close_quote=\u6807\u8BB0{0}: \u65E0\u53F3\u5F15\u53F7: "{1}"
-tag.see.class_not_specified=\u6807\u8BB0{0}: \u672A\u6307\u5B9A\u7C7B: "{1}"
-tag.see.illegal_character=\u6807\u8BB0{0}: "{2}" \u4E2D\u7684 "{1}" \u4E3A\u975E\u6CD5\u5B57\u7B26
-tag.see.malformed_see_tag=\u6807\u8BB0{0}: \u683C\u5F0F\u9519\u8BEF: "{1}"
-tag.End_delimiter_missing_for_possible_SeeTag=\u6CE8\u91CA\u5B57\u7B26\u4E32\u4E2D\u53EF\u80FD\u51FA\u73B0\u7684 See \u6807\u8BB0\u7F3A\u5C11\u7ED3\u675F\u5206\u9694\u7B26 }: "{0}"
-tag.Improper_Use_Of_Link_Tag=\u5185\u5D4C\u6807\u8BB0\u7F3A\u5C11\u7ED3\u675F ''}'' \u5B57\u7B26: "{0}"
-tag.serialField.illegal_character=@serialField \u6807\u8BB0\u4E2D\u7684\u975E\u6CD5\u5B57\u7B26 {0}: {1}\u3002
-javadoc.File_Read_Error=\u8BFB\u53D6\u6587\u4EF6{0}\u65F6\u51FA\u9519
-javadoc.Body_missing_from_html_file=HTML \u6587\u4EF6\u4E2D\u7F3A\u5C11\u4E3B\u4F53\u6807\u8BB0
-javadoc.End_body_missing_from_html_file=HTML \u6587\u4EF6\u4E2D\u7F3A\u5C11\u4E3B\u4F53\u7ED3\u675F\u6807\u8BB0
-javadoc.Multiple_package_comments=\u627E\u5230\u7A0B\u5E8F\u5305 "{0}" \u7684\u591A\u4E2A\u7A0B\u5E8F\u5305\u6CE8\u91CA\u6E90
-javadoc.JavaScript_in_comment=\u6587\u6863\u6CE8\u91CA\u4E2D\u53D1\u73B0 JavaScript\u3002\n\u4F7F\u7528 --allow-script-in-comments \u53EF\u5141\u8BB8\u4F7F\u7528 JavaScript\u3002
-javadoc.class_not_found=\u627E\u4E0D\u5230\u7C7B{0}\u3002
-javadoc.error=\u9519\u8BEF
-javadoc.warning=\u8B66\u544A
-
-javadoc.error.msg={0}: \u9519\u8BEF - {1}
-javadoc.warning.msg={0}: \u8B66\u544A - {1}
-javadoc.note.msg = {1}
-javadoc.note.pos.msg= {0}: {1}
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractModuleIndexWriter.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractModuleIndexWriter.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2019, 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,7 +33,6 @@
import javax.lang.model.element.ModuleElement;
import javax.lang.model.element.PackageElement;
-import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
@@ -124,11 +123,13 @@
* methods from the sub-class in order to generate Frame or Non
* Frame format.
*
- * @param title the title of the window.
+ * @param title the title of the window
+ * @param description the content for the description META tag
* @param includeScript boolean set true if windowtitle script is to be included
* @throws DocFileIOException if there is a problem building the module index file
*/
- protected void buildModuleIndexFile(String title, boolean includeScript) throws DocFileIOException {
+ protected void buildModuleIndexFile(String title, String description, boolean includeScript)
+ throws DocFileIOException {
String windowOverview = resources.getText(title);
Content body = getBody(includeScript, getWindowTitle(windowOverview));
Content header = HtmlTree.HEADER();
@@ -142,8 +143,10 @@
body.addContent(header);
body.addContent(main);
body.addContent(footer);
- printHtmlDocument(configuration.metakeywords.getOverviewMetaKeywords(title,
- configuration.doctitle), includeScript, body);
+ printHtmlDocument(
+ configuration.metakeywords.getOverviewMetaKeywords(title, configuration.doctitle),
+ description,
+ body);
}
/**
@@ -152,11 +155,12 @@
* Frame format.
*
* @param title the title of the window.
+ * @param description the content for the description META tag
* @param includeScript boolean set true if windowtitle script is to be included
* @param mdle the name of the module being documented
* @throws DocFileIOException if there is an exception building the module packages index file
*/
- protected void buildModulePackagesIndexFile(String title,
+ protected void buildModulePackagesIndexFile(String title, String description,
boolean includeScript, ModuleElement mdle) throws DocFileIOException {
String windowOverview = resources.getText(title);
Content body = getBody(includeScript, getWindowTitle(windowOverview));
@@ -171,8 +175,10 @@
body.addContent(header);
body.addContent(main);
body.addContent(footer);
- printHtmlDocument(configuration.metakeywords.getOverviewMetaKeywords(title,
- configuration.doctitle), includeScript, body);
+ printHtmlDocument(
+ configuration.metakeywords.getOverviewMetaKeywords(title, configuration.doctitle),
+ description,
+ body);
}
/**
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractPackageIndexWriter.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractPackageIndexWriter.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -29,7 +29,6 @@
import javax.lang.model.element.PackageElement;
-import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
@@ -109,11 +108,13 @@
* methods from the sub-class in order to generate Frame or Non
* Frame format.
*
- * @param title the title of the window.
+ * @param title the title of the window
+ * @param description the content for the description META tag
* @param includeScript boolean set true if windowtitle script is to be included
* @throws DocFileIOException if there is a problem building the package index file
*/
- protected void buildPackageIndexFile(String title, boolean includeScript) throws DocFileIOException {
+ protected void buildPackageIndexFile(String title, String description, boolean includeScript)
+ throws DocFileIOException {
String windowOverview = resources.getText(title);
Content body = getBody(includeScript, getWindowTitle(windowOverview));
Content header = HtmlTree.HEADER();
@@ -127,8 +128,9 @@
body.addContent(header);
body.addContent(main);
body.addContent(footer);
- printHtmlDocument(configuration.metakeywords.getOverviewMetaKeywords(title,
- configuration.doctitle), includeScript, body);
+ printHtmlDocument(
+ configuration.metakeywords.getOverviewMetaKeywords(title, configuration.doctitle),
+ description, body);
}
/**
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AllClassesFrameWriter.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AllClassesFrameWriter.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -29,7 +29,6 @@
import javax.lang.model.element.Element;
import javax.lang.model.element.TypeElement;
-import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
@@ -122,7 +121,7 @@
HtmlTree div = HtmlTree.DIV(HtmlStyle.indexContainer, ul);
htmlTree.addContent(div);
body.addContent(htmlTree);
- printHtmlDocument(null, false, body);
+ printHtmlDocument(null, "all classes (frame)", body);
}
/**
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AllClassesIndexWriter.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AllClassesIndexWriter.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, 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
@@ -117,7 +117,7 @@
footer.addContent(navBar.getContent(false));
addBottom(footer);
bodyTree.addContent(footer);
- printHtmlDocument(null, true, bodyTree);
+ printHtmlDocument(null, "class index", bodyTree);
}
/**
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AllPackagesIndexWriter.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AllPackagesIndexWriter.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, 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
@@ -105,7 +105,7 @@
footer.addContent(navBar.getContent(false));
addBottom(footer);
bodyTree.addContent(footer);
- printHtmlDocument(null, true, bodyTree);
+ printHtmlDocument(null, "package index", bodyTree);
}
/**
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeWriterImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeWriterImpl.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2019, 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
@@ -152,8 +152,11 @@
*/
@Override
public void printDocument(Content contentTree) throws DocFileIOException {
+ String description = getDescription("declaration", annotationType);
+ PackageElement pkg = utils.containingPackage(this.annotationType);
+ Content stylesheetContent = getLocalStylesheetContent(pkg);
printHtmlDocument(configuration.metakeywords.getMetaKeywords(annotationType),
- true, contentTree);
+ description, stylesheetContent, contentTree);
}
/**
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassUseWriter.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassUseWriter.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -27,7 +27,6 @@
import jdk.javadoc.internal.doclets.formats.html.markup.Table;
-import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -241,7 +240,8 @@
footer.addContent(navBar.getContent(false));
addBottom(footer);
body.addContent(footer);
- printHtmlDocument(null, true, body);
+ String description = getDescription("use", typeElement);
+ printHtmlDocument(null, description, body);
}
/**
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassWriterImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassWriterImpl.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, 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
@@ -177,8 +177,11 @@
*/
@Override
public void printDocument(Content contentTree) throws DocFileIOException {
+ String description = getDescription("declaration", typeElement);
+ PackageElement pkg = utils.containingPackage(typeElement);
+ Content stylesheetContent = getLocalStylesheetContent(pkg);
printHtmlDocument(configuration.metakeywords.getMetaKeywords(typeElement),
- true, contentTree);
+ description, stylesheetContent, contentTree);
}
/**
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConstantsSummaryWriterImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConstantsSummaryWriterImpl.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -328,6 +328,6 @@
*/
@Override
public void printDocument(Content contentTree) throws DocFileIOException {
- printHtmlDocument(null, true, contentTree);
+ printHtmlDocument(null, "summary of constants", contentTree);
}
}
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/DeprecatedListWriter.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/DeprecatedListWriter.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, 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
@@ -308,7 +308,8 @@
htmlTree.addContent(navBar.getContent(false));
addBottom(htmlTree);
body.addContent(htmlTree);
- printHtmlDocument(null, true, body);
+ String description = "deprecated elements";
+ printHtmlDocument(null, description, body);
}
/**
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/DocFilesHandlerImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/DocFilesHandlerImpl.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -31,7 +31,6 @@
import com.sun.source.doctree.TextTree;
import com.sun.source.util.DocTreeFactory;
import com.sun.tools.doclint.HtmlTag;
-import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
import jdk.javadoc.internal.doclets.formats.html.markup.Navigation;
import jdk.javadoc.internal.doclets.toolkit.Content;
@@ -125,6 +124,16 @@
}
}
+ public List<DocPath> getStylesheets() throws DocFileIOException {
+ List<DocPath> stylesheets = new ArrayList<DocPath>();
+ for (DocFile srcdir : DocFile.list(configuration, location, source)) {
+ for (DocFile srcFile : srcdir.list()) {
+ if (srcFile.getName().endsWith(".css"))
+ stylesheets.add(DocPaths.DOC_FILES.resolve(srcFile.getName()));
+ }
+ }
+ return stylesheets;
+ }
private void copyDirectory(DocFile srcdir, final DocPath dstDocPath,
boolean first) throws DocFileIOException {
@@ -197,7 +206,7 @@
footer.addContent(navBar.getContent(false));
docletWriter.addBottom(footer);
htmlContent.addContent(footer);
- docletWriter.printHtmlDocument(Collections.emptyList(), false, localTagsContent, htmlContent);
+ docletWriter.printHtmlDocument(Collections.emptyList(), null, localTagsContent, htmlContent);
}
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/FrameOutputWriter.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/FrameOutputWriter.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -128,6 +128,8 @@
Head head = new Head(path, configuration.docletVersion)
.setTimestamp(!configuration.notimestamp)
.setTitle(title)
+ .setDescription("frames")
+ .setGenerator(getGenerator(getClass()))
.setCharset(configuration.charset)
.setStylesheets(configuration.getMainStylesheet(), configuration.getAdditionalStylesheets())
.addDefaultScript(false)
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HelpWriter.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HelpWriter.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -100,7 +100,7 @@
htmlTree.addContent(navBar.getContent(false));
addBottom(htmlTree);
body.addContent(htmlTree);
- printHtmlDocument(null, true, body);
+ printHtmlDocument(null, "help", body);
}
/**
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlConfiguration.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlConfiguration.java Fri Feb 22 12:05:05 2019 +0530
@@ -240,6 +240,8 @@
public DocPaths docPaths;
+ public Map<Element, List<DocPath>> localStylesheetMap = new HashMap<>();
+
/**
* Creates an object to hold the configuration for a doclet.
*
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2019, 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
@@ -41,6 +41,7 @@
import javax.lang.model.element.ModuleElement;
import javax.lang.model.element.Name;
import javax.lang.model.element.PackageElement;
+import javax.lang.model.element.QualifiedNameable;
import javax.lang.model.element.TypeElement;
import javax.lang.model.element.VariableElement;
import javax.lang.model.type.DeclaredType;
@@ -421,14 +422,15 @@
* @param metakeywords Array of String keywords for META tag. Each element
* of the array is assigned to a separate META tag.
* Pass in null for no array
- * @param includeScript true if printing windowtitle script
- * false for files that appear in the left-hand frames
+ * @param description the content for the description META tag.
* @param body the body htmltree to be included in the document
* @throws DocFileIOException if there is a problem writing the file
*/
- public void printHtmlDocument(List<String> metakeywords, boolean includeScript,
- Content body) throws DocFileIOException {
- printHtmlDocument(metakeywords, includeScript, new ContentBuilder(), body);
+ public void printHtmlDocument(List<String> metakeywords,
+ String description,
+ Content body)
+ throws DocFileIOException {
+ printHtmlDocument(metakeywords, description, new ContentBuilder(), body);
}
/**
@@ -437,24 +439,28 @@
* @param metakeywords Array of String keywords for META tag. Each element
* of the array is assigned to a separate META tag.
* Pass in null for no array
- * @param includeScript true if printing windowtitle script
- * false for files that appear in the left-hand frames
- * @param extraContent any additional content to be included in the HEAD element
+ * @param description the content for the description META tag.
+ * @param extraHeadContent any additional content to be included in the HEAD element
* @param body the body htmltree to be included in the document
* @throws DocFileIOException if there is a problem writing the file
*/
- public void printHtmlDocument(List<String> metakeywords, boolean includeScript, Content extraContent,
- Content body) throws DocFileIOException {
+ public void printHtmlDocument(List<String> metakeywords,
+ String description,
+ Content extraHeadContent,
+ Content body)
+ throws DocFileIOException {
Content htmlComment = contents.newPage;
Head head = new Head(path, configuration.docletVersion)
.setTimestamp(!configuration.notimestamp)
+ .setDescription(description)
+ .setGenerator(getGenerator(getClass()))
.setTitle(winTitle)
.setCharset(configuration.charset)
.addKeywords(metakeywords)
.setStylesheets(configuration.getMainStylesheet(), configuration.getAdditionalStylesheets())
.setUseModuleDirectories(configuration.useModuleDirectories)
.setIndex(configuration.createindex, mainBodyScript)
- .addContent(extraContent);
+ .addContent(extraHeadContent);
Content htmlTree = HtmlTree.HTML(configuration.getLocale().getLanguage(), head.toContent(), body);
HtmlDocument htmlDocument = new HtmlDocument(htmlComment, htmlTree);
@@ -1646,7 +1652,7 @@
* If this link appeared in the index, we would redirect
* the link like this:
*
- * {@literal <a href="./com/sun/javadoc/package-summary.html">The package Page</a>}
+ * {@literal <a href="./jdk/javadoc/doclet/package-summary.html">The package Page</a>}
*
* @param element the Element object whose documentation is being written.
* @param tt the text being written.
@@ -2111,6 +2117,55 @@
}
/**
+ * Generates a string for use in a description meta element,
+ * based on an element and its enclosing elements
+ * @param prefix a prefix for the string
+ * @param elem the element
+ * @return the description
+ */
+ static String getDescription(String prefix, Element elem) {
+ LinkedList<Element> chain = new LinkedList<>();
+ for (Element e = elem; e != null; e = e.getEnclosingElement()) {
+ // ignore unnamed enclosing elements
+ if (e.getSimpleName().length() == 0 && e != elem) {
+ break;
+ }
+ chain.addFirst(e);
+ }
+ StringBuilder sb = new StringBuilder();
+ for (Element e: chain) {
+ CharSequence name;
+ switch (e.getKind()) {
+ case MODULE:
+ case PACKAGE:
+ name = ((QualifiedNameable) e).getQualifiedName();
+ if (name.length() == 0) {
+ name = "<unnamed>";
+ }
+ break;
+
+ default:
+ name = e.getSimpleName();
+ break;
+ }
+
+ if (sb.length() == 0) {
+ sb.append(prefix).append(": ");
+ } else {
+ sb.append(", ");
+ }
+ sb.append(e.getKind().toString().toLowerCase(Locale.US).replace("_", " "))
+ .append(": ")
+ .append(name);
+ }
+ return sb.toString();
+ }
+
+ static String getGenerator(Class<?> clazz) {
+ return "javadoc/" + clazz.getSimpleName();
+ }
+
+ /**
* Returns an HtmlTree for the SCRIPT tag.
*
* @return an HtmlTree for the SCRIPT tag
@@ -2158,4 +2213,21 @@
Script getMainBodyScript() {
return mainBodyScript;
}
+
+ Content getLocalStylesheetContent(Element element) throws DocFileIOException {
+ Content stylesheetContent = new ContentBuilder();
+ List<DocPath> localStylesheets = configuration.localStylesheetMap.get(element);
+ if (localStylesheets == null) {
+ DocFilesHandlerImpl docFilesHandler = (DocFilesHandlerImpl)configuration
+ .getWriterFactory().getDocFilesHandler(element);
+ localStylesheets = docFilesHandler.getStylesheets();
+ configuration.localStylesheetMap.put(element, localStylesheets);
+ }
+ for (DocPath stylesheet : localStylesheets) {
+ stylesheetContent.addContent(HtmlTree.LINK("stylesheet",
+ "text/css", stylesheet.getPath(), "Style"));
+ }
+ return stylesheetContent;
+ }
+
}
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/IndexRedirectWriter.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/IndexRedirectWriter.java Fri Feb 22 12:05:05 2019 +0530
@@ -79,6 +79,8 @@
Content htmlComment = contents.newPage;
Head head = new Head(path, configuration.docletVersion)
.setTimestamp(true)
+ .setDescription("index redirect")
+ .setGenerator(getGenerator(getClass()))
.setStylesheets(configuration.getMainStylesheet(), Collections.emptyList()) // avoid reference to default stylesheet
.addDefaultScript(false);
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleFrameWriter.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleFrameWriter.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -36,7 +36,6 @@
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
-import jdk.javadoc.internal.doclets.formats.html.markup.Links;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
import jdk.javadoc.internal.doclets.toolkit.Content;
import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException;
@@ -111,7 +110,9 @@
htmlTree.addContent(div);
body.addContent(htmlTree);
mdlgen.printHtmlDocument(
- configuration.metakeywords.getMetaKeywordsForModule(moduleElement), false, body);
+ configuration.metakeywords.getMetaKeywordsForModule(moduleElement),
+ "module summary (frame)",
+ body);
}
/**
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleIndexFrameWriter.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleIndexFrameWriter.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2019, 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
@@ -77,7 +77,7 @@
public static void generate(HtmlConfiguration configuration) throws DocFileIOException {
DocPath filename = DocPaths.MODULE_OVERVIEW_FRAME;
ModuleIndexFrameWriter modulegen = new ModuleIndexFrameWriter(configuration, filename);
- modulegen.buildModuleIndexFile("doclet.Window_Overview", false);
+ modulegen.buildModuleIndexFile("doclet.Window_Overview", "module overview (frame)", false);
}
/**
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleIndexWriter.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleIndexWriter.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2019, 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
@@ -74,7 +74,7 @@
public static void generate(HtmlConfiguration configuration) throws DocFileIOException {
DocPath filename = DocPaths.overviewSummary(configuration.frames);
ModuleIndexWriter mdlgen = new ModuleIndexWriter(configuration, filename);
- mdlgen.buildModuleIndexFile("doclet.Window_Overview_Summary", true);
+ mdlgen.buildModuleIndexFile("doclet.Window_Overview_Summary", "module index", true);
}
/**
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModulePackageIndexFrameWriter.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModulePackageIndexFrameWriter.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2019, 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
@@ -77,7 +77,10 @@
public static void generate(HtmlConfiguration configuration, ModuleElement mdle) throws DocFileIOException {
DocPath filename = configuration.docPaths.moduleFrame(mdle);
ModulePackageIndexFrameWriter modpackgen = new ModulePackageIndexFrameWriter(configuration, filename);
- modpackgen.buildModulePackagesIndexFile("doclet.Window_Overview", false, mdle);
+ modpackgen.buildModulePackagesIndexFile("doclet.Window_Overview",
+ getDescription("module package index", mdle) + " (frame)",
+ false,
+ mdle);
}
/**
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleWriterImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleWriterImpl.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2019, 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
@@ -915,7 +915,8 @@
@Override
public void printDocument(Content contentTree) throws DocFileIOException {
printHtmlDocument(configuration.metakeywords.getMetaKeywordsForModule(mdle),
- true, contentTree);
+ getDescription("declaration", mdle),
+ contentTree);
}
/**
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageFrameWriter.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageFrameWriter.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2019, 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
@@ -89,7 +89,7 @@
/**
* Generate a package summary page for the left-hand bottom frame. Construct
- * the PackageFrameWriter object and then uses it generate the file.
+ * the PackageFrameWriter object and then use it generate the file.
*
* @param configuration the current configuration of the doclet.
* @param packageElement The package for which "pacakge-frame.html" is to be generated.
@@ -111,7 +111,9 @@
htmlTree.addContent(div);
body.addContent(htmlTree);
packgen.printHtmlDocument(
- configuration.metakeywords.getMetaKeywords(packageElement), false, body);
+ configuration.metakeywords.getMetaKeywords(packageElement),
+ getDescription("package summary (frame)", packageElement),
+ body);
}
/**
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageIndexFrameWriter.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageIndexFrameWriter.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -31,7 +31,6 @@
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
-import jdk.javadoc.internal.doclets.formats.html.markup.Links;
import jdk.javadoc.internal.doclets.formats.html.markup.RawHtml;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
import jdk.javadoc.internal.doclets.toolkit.Content;
@@ -70,7 +69,9 @@
public static void generate(HtmlConfiguration configuration) throws DocFileIOException {
DocPath filename = DocPaths.OVERVIEW_FRAME;
PackageIndexFrameWriter packgen = new PackageIndexFrameWriter(configuration, filename);
- packgen.buildPackageIndexFile("doclet.Window_Overview", false);
+ packgen.buildPackageIndexFile("doclet.Window_Overview",
+ "package index (frame)",
+ false);
}
/**
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageIndexWriter.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageIndexWriter.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -78,7 +78,7 @@
public static void generate(HtmlConfiguration configuration) throws DocFileIOException {
DocPath filename = DocPaths.overviewSummary(configuration.frames);
PackageIndexWriter packgen = new PackageIndexWriter(configuration, filename);
- packgen.buildPackageIndexFile("doclet.Window_Overview_Summary", true);
+ packgen.buildPackageIndexFile("doclet.Window_Overview_Summary", "package index", true);
}
/**
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageTreeWriter.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageTreeWriter.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2019, 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
@@ -121,7 +121,7 @@
footer.addContent(navBar.getContent(false));
addBottom(footer);
body.addContent(footer);
- printHtmlDocument(null, true, body);
+ printHtmlDocument(null, getDescription("tree", packageElement), body);
}
/**
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageUseWriter.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageUseWriter.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2019, 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
@@ -141,7 +141,9 @@
footer.addContent(navBar.getContent(false));
addBottom(footer);
body.addContent(footer);
- printHtmlDocument(null, true, body);
+ printHtmlDocument(null,
+ getDescription("use", packageElement),
+ body);
}
/**
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageWriterImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageWriterImpl.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, 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
@@ -316,7 +316,9 @@
*/
@Override
public void printDocument(Content contentTree) throws DocFileIOException {
+ String description = getDescription("declaration", packageElement);
+ Content stylesheetContent = getLocalStylesheetContent(packageElement);
printHtmlDocument(configuration.metakeywords.getMetaKeywords(packageElement),
- true, contentTree);
+ description, stylesheetContent, contentTree);
}
}
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SerializedFormWriterImpl.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SerializedFormWriterImpl.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2019, 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
@@ -255,7 +255,7 @@
*/
@Override
public void printDocument(Content serializedTree) throws DocFileIOException {
- printHtmlDocument(null, true, serializedTree);
+ printHtmlDocument(null, "serialized forms", serializedTree);
}
/**
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SingleIndexWriter.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SingleIndexWriter.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2019, 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
@@ -121,7 +121,7 @@
addBottom(htmlTree);
body.addContent(htmlTree);
createSearchIndexFiles();
- printHtmlDocument(null, true, body);
+ printHtmlDocument(null, "index", body);
}
/**
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SourceToHTMLConverter.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SourceToHTMLConverter.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -196,7 +196,7 @@
addBlankLines(pre);
Content div = HtmlTree.DIV(HtmlStyle.sourceContainer, pre);
body.addContent(HtmlTree.MAIN(div));
- writeToFile(body, outputdir.resolve(configuration.docPaths.forClass(te)));
+ writeToFile(body, outputdir.resolve(configuration.docPaths.forClass(te)), te);
} catch (IOException e) {
String message = resources.getText("doclet.exception.read.file", fo.getName());
throw new SimpleDocletException(message, e);
@@ -209,11 +209,13 @@
* @param body the documentation content to be written to the file.
* @param path the path for the file.
*/
- private void writeToFile(Content body, DocPath path) throws DocFileIOException {
+ private void writeToFile(Content body, DocPath path, TypeElement te) throws DocFileIOException {
Head head = new Head(path, configuration.docletVersion)
// .setTimestamp(!configuration.notimestamp) // temporary: compatibility!
.setTitle(resources.getText("doclet.Window_Source_title"))
// .setCharset(configuration.charset) // temporary: compatibility!
+ .setDescription(HtmlDocletWriter.getDescription("source", te))
+ .setGenerator(HtmlDocletWriter.getGenerator(getClass()))
.addDefaultScript(false)
.setStylesheets(configuration.getMainStylesheet(), configuration.getAdditionalStylesheets());
Content htmlTree = HtmlTree.HTML(configuration.getLocale().getLanguage(),
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SplitIndexWriter.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SplitIndexWriter.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2019, 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
@@ -144,7 +144,8 @@
footer.addContent(navBar.getContent(false));
addBottom(footer);
body.addContent(footer);
- printHtmlDocument(null, true, body);
+ String description = "index: " + unicode;
+ printHtmlDocument(null, description, body);
}
/**
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TreeWriter.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TreeWriter.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, 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
@@ -127,7 +127,7 @@
htmlTree.addContent(navBar.getContent(false));
addBottom(htmlTree);
body.addContent(htmlTree);
- printHtmlDocument(null, true, body);
+ printHtmlDocument(null, "class tree", body);
}
/**
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Head.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Head.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2019, 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
@@ -56,6 +56,8 @@
private String title;
private String charset;
private final List<String> keywords;
+ private String description;
+ private String generator;
private boolean showTimestamp;
private boolean useModuleDirectories;
private DocFile mainStylesheetFile;
@@ -111,6 +113,22 @@
}
/**
+ * Sets the content for the description META element.
+ */
+ public Head setDescription(String description) {
+ this.description = description;
+ return this;
+ }
+
+ /**
+ * Sets the content for the generator META element.
+ */
+ public Head setGenerator(String generator) {
+ this.generator = generator;
+ return this;
+ }
+
+ /**
* Adds a list of keywords to appear in META [@code keywords} elements.
*
* @param keywords the list of keywords, or null if none need to be added
@@ -245,6 +263,14 @@
tree.addContent(HtmlTree.META("dc.created", dateFormat.format(now)));
}
+ if (description != null) {
+ tree.addContent(HtmlTree.META("description", description));
+ }
+
+ if (generator != null) {
+ tree.addContent(HtmlTree.META("generator", generator));
+ }
+
for (String k : keywords) {
tree.addContent(HtmlTree.META("keywords", k));
}
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/DocFilesHandler.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/DocFilesHandler.java Fri Feb 22 12:05:05 2019 +0530
@@ -26,6 +26,9 @@
package jdk.javadoc.internal.doclets.toolkit;
+import java.util.List;
+
+import jdk.javadoc.internal.doclets.toolkit.util.DocPath;
/**
* The interface for copying doc-files to the output.
*
@@ -37,4 +40,5 @@
public interface DocFilesHandler {
void copyDocFiles() throws DocletException;
+ List<DocPath> getStylesheets() throws DocletException;
}
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/package-info.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/package-info.java Fri Feb 22 12:05:05 2019 +0530
@@ -35,16 +35,6 @@
* while doclets provide a user-selectable backend for determining
* how to process the documentation comments.
*
- * <p><em>Historical Note:</em> Prior to the introduction of the
- * {@link javax.lang.model Language Model API} in JDK 6, it was
- * not unusual to use the {@link com.sun.javadoc} API as a
- * modeling API. But the Language Model API, and associated
- * {@link javax.annotation.processing Annotation Processing API}
- * provided a better way to model programs, and in JDK 9,
- * javadoc itself was converted to using the Language Model API,
- * with the {@code com.sun.javadoc API} being deprecated for
- * eventual removal.
- * </p>
*
* <p><b>This is NOT part of any supported API.
* If you write code that depends on this, you do so at your own risk.
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/JavadocTool.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/JavadocTool.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,8 +25,9 @@
package jdk.javadoc.internal.tool;
-
-import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.InvalidPathException;
+import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.LinkedHashSet;
@@ -165,7 +166,7 @@
// Normally, the args should be a series of package names or file names.
// Parse the files and collect the package names.
for (String arg: javaNames) {
- if (fm != null && arg.endsWith(".java") && new File(arg).exists()) {
+ if (fm != null && arg.endsWith(".java") && isRegularFile(arg)) {
parse(fm.getJavaFileObjects(arg), classTrees, true);
} else if (isValidPackageName(arg)) {
packageNames.add(arg);
@@ -247,6 +248,14 @@
return toolEnv.docEnv;
}
+ private boolean isRegularFile(String s) {
+ try {
+ return Files.isRegularFile(Paths.get(s));
+ } catch (InvalidPathException e) {
+ return false;
+ }
+ }
+
/** Is the given string a valid package name? */
boolean isValidPackageName(String s) {
if (s.contains("/")) {
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/Start.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/Start.java Fri Feb 22 12:05:05 2019 +0530
@@ -408,23 +408,8 @@
return ERROR;
}
} else {
- if (apiMode) {
- com.sun.tools.javadoc.main.Start ostart
- = new com.sun.tools.javadoc.main.Start(context);
- return ostart.begin(docletClass, options, fileObjects)
- ? OK
- : ERROR;
- }
- warn("main.legacy_api");
- String[] array = options.toArray(new String[options.size()]);
- int rc = com.sun.tools.javadoc.Main.execute(
- messager.programName,
- messager.getWriter(WriterKind.ERROR),
- messager.getWriter(WriterKind.WARNING),
- messager.getWriter(WriterKind.NOTICE),
- docletClass.getName(),
- array);
- return (rc == 0) ? OK : ERROR;
+ error("main.not_a_doclet", docletClass.getName());
+ return ERROR;
}
Result result = OK;
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/resources/javadoc.properties Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/resources/javadoc.properties Fri Feb 22 12:05:05 2019 +0530
@@ -299,12 +299,9 @@
Please file a bug against the javadoc tool via the Java bug reporting page\n\
(http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com)\n\
for duplicates. Include error messages and the following diagnostic in your report. Thank you.
-main.legacy_api=The old Doclet and Taglet APIs in the packages\n\
- com.sun.javadoc, com.sun.tools.doclets and their implementations\n\
- are planned to be removed in a future JDK release. These\n\
- components have been superseded by the new APIs in jdk.javadoc.doclet.\n\
- Users are strongly recommended to migrate to the new APIs.\n
-
+main.not_a_doclet=\
+ Class {0} is not a valid doclet.\n\
+ Note: As of JDK 13, the com.sun.javadoc API is no longer supported.
javadoc.class_not_found=Class {0} not found.
javadoc.error=error
javadoc.warning=warning
--- a/src/jdk.javadoc/share/classes/module-info.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.javadoc/share/classes/module-info.java Fri Feb 22 12:05:05 2019 +0530
@@ -63,9 +63,6 @@
requires transitive java.compiler;
requires transitive jdk.compiler;
- exports com.sun.javadoc;
- exports com.sun.tools.javadoc;
-
exports jdk.javadoc.doclet;
provides java.util.spi.ToolProvider with
--- a/src/jdk.jcmd/share/classes/sun/tools/jmap/JMap.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.jcmd/share/classes/sun/tools/jmap/JMap.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2019, 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
@@ -145,22 +145,52 @@
vm.detach();
}
+ private static String parseFileName(String opt) {
+ // opt starts with "file="
+ if (opt.length() > 5) {
+ // pass whole "file=" string
+ String filename = opt.substring(5);
+ try {
+ // Get the canonical path - important to avoid just
+ // passing a "heap.bin" and having the dump created
+ // in the target VM working directory rather than the
+ // directory where jmap is executed.
+ return new File(filename).getCanonicalPath();
+ } catch (IOException ioe) {
+ return null;
+ }
+ }
+ // no filename
+ return null;
+ }
+
private static void histo(String pid, String options)
throws AttachNotSupportedException, IOException,
UnsupportedEncodingException {
String liveopt = "-all";
- if (options.isEmpty() || options.equals("all")) {
- // pass
- }
- else if (options.equals("live")) {
- liveopt = "-live";
- }
- else {
- usage(1);
+ String filename = null;
+ String subopts[] = options.split(",");
+
+ for (int i = 0; i < subopts.length; i++) {
+ String subopt = subopts[i];
+ if (subopt.equals("") || subopt.equals("all")) {
+ // pass
+ } else if (subopt.equals("live")) {
+ liveopt = "-live";
+ } else if (subopt.startsWith("file=")) {
+ filename = parseFileName(subopt);
+ if (filename == null) {
+ usage(1); // invalid options or no filename
+ }
+ } else {
+ usage(1);
+ }
}
+ System.out.flush();
+
// inspectHeap is not the same as jcmd GC.class_histogram
- executeCommandForPid(pid, "inspectheap", liveopt);
+ executeCommandForPid(pid, "inspectheap", filename, liveopt);
}
private static void dump(String pid, String options)
@@ -176,10 +206,7 @@
if (subopt.equals("live")) {
liveopt = "-live";
} else if (subopt.startsWith("file=")) {
- // file=<file> - check that <file> is specified
- if (subopt.length() > 5) {
- filename = subopt.substring(5);
- }
+ filename = parseFileName(subopt);
}
}
@@ -187,11 +214,6 @@
usage(1); // invalid options or no filename
}
- // get the canonical path - important to avoid just passing
- // a "heap.bin" and having the dump created in the target VM
- // working directory rather than the directory where jmap
- // is executed.
- filename = new File(filename).getCanonicalPath();
// dumpHeap is not the same as jcmd GC.heap_dump
executeCommandForPid(pid, "dumpheap", filename, liveopt);
}
@@ -246,21 +268,27 @@
System.err.println(" to connect to running process and print class loader statistics");
System.err.println(" jmap -finalizerinfo <pid>");
System.err.println(" to connect to running process and print information on objects awaiting finalization");
- System.err.println(" jmap -histo[:live] <pid>");
+ System.err.println(" jmap -histo[:[<histo-options>]] <pid>");
System.err.println(" to connect to running process and print histogram of java object heap");
- System.err.println(" if the \"live\" suboption is specified, only count live objects");
System.err.println(" jmap -dump:<dump-options> <pid>");
System.err.println(" to connect to running process and dump java heap");
System.err.println(" jmap -? -h --help");
System.err.println(" to print this help message");
System.err.println("");
System.err.println(" dump-options:");
- System.err.println(" live dump only live objects; if not specified,");
- System.err.println(" all objects in the heap are dumped.");
+ System.err.println(" live dump only live objects");
+ System.err.println(" all dump all objects in the heap (default if one of \"live\" or \"all\" is not specified");
System.err.println(" format=b binary format");
System.err.println(" file=<file> dump heap to <file>");
System.err.println("");
System.err.println(" Example: jmap -dump:live,format=b,file=heap.bin <pid>");
+ System.err.println("");
+ System.err.println(" histo-options:");
+ System.err.println(" live count only live objects");
+ System.err.println(" all count all objects in the heap (default if one of \"live\" or \"all\" is not specified)");
+ System.err.println(" file=<file> dump data to <file>");
+ System.err.println("");
+ System.err.println(" Example: jmap -histo:live,file=/tmp/histo.data <pid>");
System.exit(exit);
}
}
--- a/src/jdk.jdi/share/classes/com/sun/tools/example/debug/tty/Env.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.jdi/share/classes/com/sun/tools/example/debug/tty/Env.java Fri Feb 22 12:05:05 2019 +0530
@@ -211,58 +211,14 @@
ReferenceType clazz = ref.referenceType();
long id = ref.uniqueID();
if (clazz == null) {
- return toHex(id);
+ return Long.toString(id);
} else {
- return MessageOutput.format("object description and hex id",
+ return MessageOutput.format("object description and id",
new Object [] {clazz.name(),
- toHex(id)});
+ Long.toString(id)});
}
}
- /** Convert a long to a hexadecimal string. */
- static String toHex(long n) {
- char s1[] = new char[16];
- char s2[] = new char[18];
-
- /* Store digits in reverse order. */
- int i = 0;
- do {
- long d = n & 0xf;
- s1[i++] = (char)((d < 10) ? ('0' + d) : ('a' + d - 10));
- } while ((n >>>= 4) > 0);
-
- /* Now reverse the array. */
- s2[0] = '0';
- s2[1] = 'x';
- int j = 2;
- while (--i >= 0) {
- s2[j++] = s1[i];
- }
- return new String(s2, 0, j);
- }
-
- /** Convert hexadecimal strings to longs. */
- static long fromHex(String hexStr) {
- String str = hexStr.startsWith("0x") ?
- hexStr.substring(2).toLowerCase() : hexStr.toLowerCase();
- if (hexStr.length() == 0) {
- throw new NumberFormatException();
- }
-
- long ret = 0;
- for (int i = 0; i < str.length(); i++) {
- int c = str.charAt(i);
- if (c >= '0' && c <= '9') {
- ret = (ret * 16) + (c - '0');
- } else if (c >= 'a' && c <= 'f') {
- ret = (ret * 16) + (c - 'a' + 10);
- } else {
- throw new NumberFormatException();
- }
- }
- return ret;
- }
-
static ReferenceType getReferenceTypeFromToken(String idToken) {
ReferenceType cls = null;
if (Character.isDigit(idToken.charAt(0))) {
--- a/src/jdk.jdi/share/classes/com/sun/tools/example/debug/tty/TTY.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.jdi/share/classes/com/sun/tools/example/debug/tty/TTY.java Fri Feb 22 12:05:05 2019 +0530
@@ -931,7 +931,7 @@
// Old-style options (These should remain in place as long as
// the standard VM accepts them)
token.equals("-noasyncgc") || token.equals("-prof") ||
- token.equals("-verify") || token.equals("-noverify") ||
+ token.equals("-verify") ||
token.equals("-verifyremote") ||
token.equals("-verbosegc") ||
token.startsWith("-ms") || token.startsWith("-mx") ||
--- a/src/jdk.jdi/share/classes/com/sun/tools/example/debug/tty/TTYResources.java Wed Feb 20 17:00:40 2019 +0530
+++ b/src/jdk.jdi/share/classes/com/sun/tools/example/debug/tty/TTYResources.java Fri Feb 22 12:05:05 2019 +0530
@@ -235,7 +235,7 @@
{"Not owned", " Not owned"},
{"Not waiting for a monitor", " Not waiting for a monitor"},
{"Nothing suspended.", "Nothing suspended."},
- {"object description and hex id", "({0}){1}"},
+ {"object description and id", "({0}){1}"},
{"Operation is not supported on the target VM", "Operation is not supported on the target VM"},
{"operation not yet supported", "operation not yet supported"},
{"Owned by:", " Owned by: {0}, entry count: {1,number,integer}"},
--- a/test/hotspot/gtest/logging/logTestFixture.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/gtest/logging/logTestFixture.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2019, 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,11 +33,12 @@
#include "utilities/ostream.hpp"
LogTestFixture::LogTestFixture() : _n_snapshots(0), _configuration_snapshot(NULL) {
- // Set up TestLogFileName to include PID, testcase name and test name
- int ret = jio_snprintf(_filename, sizeof(_filename), "testlog.pid%d.%s.%s.log",
- os::current_process_id(),
- ::testing::UnitTest::GetInstance()->current_test_info()->test_case_name(),
- ::testing::UnitTest::GetInstance()->current_test_info()->name());
+
+ // Set up TestLogFileName to include temp_dir, PID, testcase name and test name.
+ const testing::TestInfo* test_info = ::testing::UnitTest::GetInstance()->current_test_info();
+ int ret = jio_snprintf(_filename, sizeof(_filename), "%s%stestlog.pid%d.%s.%s.log",
+ os::get_temp_directory(), os::file_separator(), os::current_process_id(),
+ test_info->test_case_name(), test_info->name());
EXPECT_GT(ret, 0) << "_filename buffer issue";
TestLogFileName = _filename;
--- a/test/hotspot/gtest/logging/logTestUtils.inline.hpp Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/gtest/logging/logTestUtils.inline.hpp Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2019, 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
@@ -88,6 +88,30 @@
guarantee(success, "Failed to disable logging to file '%s'", filename);
}
+static const char* tmp_dir = os::get_temp_directory();
+static const char* file_sep = os::file_separator();
+
+// Prepend filename with the temp directory and pid and return the result as a
+// resource allocated string.
+static inline char* prepend_temp_dir(const char* filename) {
+ size_t temp_file_len = strlen(tmp_dir) + strlen(file_sep) + strlen(filename) + 28;
+ char* temp_file = NEW_RESOURCE_ARRAY(char, temp_file_len);
+ int ret = jio_snprintf(temp_file, temp_file_len, "%s%spid%d.%s",
+ tmp_dir, file_sep,
+ os::current_process_id(), filename);
+ return temp_file;
+}
+
+// Prepend filename with specified prefix and the temp directory and return the
+// result as a malloc allocated string. This is used by test_logFileOutput.cpp.
+static inline char* prepend_prefix_temp_dir(const char* prefix, const char* filename) {
+ size_t temp_file_len = strlen(prefix) + strlen(tmp_dir) + strlen(file_sep) + strlen(filename) + 1;
+ char* temp_file = (char*)os::malloc(temp_file_len, mtLogging);
+ int ret = jio_snprintf(temp_file, temp_file_len, "%s%s%s%s",
+ prefix, tmp_dir, file_sep, filename);
+ return temp_file;
+}
+
// Read a complete line from fp and return it as a resource allocated string.
// Returns NULL on EOF.
static inline char* read_line(FILE* fp) {
--- a/test/hotspot/gtest/logging/test_logConfiguration.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/gtest/logging/test_logConfiguration.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2019, 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
@@ -403,16 +403,15 @@
// Make sure prefixes are ignored when used within quotes
// (this should create a log with "file=" in its filename)
- int ret = jio_snprintf(buf, sizeof(buf), "\"file=%s\"", TestLogFileName);
- ASSERT_NE(-1, ret);
- set_log_config(buf, "logging=trace");
+ // Note that the filename cannot contain directories because
+ // it is being prefixed with "file=".
+ const char* leafFileName = "\"file=leaf_file_name\"";
+ set_log_config(leafFileName, "logging=trace");
EXPECT_TRUE(is_described("#3: ")) << "prefix within quotes not ignored as it should be";
- set_log_config(buf, "all=off");
+ set_log_config(leafFileName, "all=off");
// Remove the extra log file created
- ret = jio_snprintf(buf, sizeof(buf), "file=%s", TestLogFileName);
- ASSERT_NE(-1, ret);
- delete_file(buf);
+ delete_file("file=leaf_file_name");
}
static size_t count_occurrences(const char* haystack, const char* needle) {
--- a/test/hotspot/gtest/logging/test_logFileOutput.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/gtest/logging/test_logFileOutput.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -31,7 +31,7 @@
#include "utilities/globalDefinitions.hpp"
#include "utilities/ostream.hpp"
-static const char* name = "file=testlog.pid%p.%t.log";
+static const char* name = prepend_prefix_temp_dir("file=", "testlog.pid%p.%t.log");
// Test parsing a bunch of valid file output options
TEST_VM(LogFileOutput, parse_valid) {
@@ -46,11 +46,6 @@
// Override LogOutput's vm_start time to get predictable file name
LogFileOutput::set_file_name_parameters(0);
- char expected_filename[1 * K];
- int ret = jio_snprintf(expected_filename, sizeof(expected_filename),
- "testlog.pid%d.1970-01-01_01-00-00.log",
- os::current_process_id());
- ASSERT_GT(ret, 0) << "Buffer too small";
for (size_t i = 0; i < ARRAY_SIZE(valid_options); i++) {
ResourceMark rm;
@@ -60,8 +55,8 @@
EXPECT_STREQ(name, fo.name());
EXPECT_TRUE(fo.initialize(valid_options[i], &ss))
<< "Did not accept valid option(s) '" << valid_options[i] << "': " << ss.as_string();
+ remove(fo.cur_log_file_name());
}
- remove(expected_filename);
}
}
@@ -105,11 +100,11 @@
}
TEST_VM(LogFileOutput, startup_rotation) {
+ ResourceMark rm;
const size_t rotations = 5;
- const char* filename = "start-rotate-test";
+ const char* filename = prepend_temp_dir("start-rotate-test");
char* rotated_file[rotations];
- ResourceMark rm;
for (size_t i = 0; i < rotations; i++) {
size_t len = strlen(filename) + 3;
rotated_file[i] = NEW_RESOURCE_ARRAY(char, len);
@@ -142,8 +137,9 @@
}
TEST_VM(LogFileOutput, startup_truncation) {
- const char* filename = "start-truncate-test";
- const char* archived_filename = "start-truncate-test.0";
+ ResourceMark rm;
+ const char* filename = prepend_temp_dir("start-truncate-test");
+ const char* archived_filename = prepend_temp_dir("start-truncate-test.0");
delete_file(filename);
delete_file(archived_filename);
--- a/test/hotspot/gtest/logging/test_logMessageTest.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/gtest/logging/test_logMessageTest.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -39,6 +39,8 @@
~LogMessageTest();
};
+Log(logging) LogMessageTest::_log;
+
const char* LogMessageTest::_level_filename[] = {
NULL, // LogLevel::Off
#define LOG_LEVEL(name, printname) "multiline-" #printname ".log",
--- a/test/hotspot/gtest/logging/test_logTagSetDescriptions.cpp Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/gtest/logging/test_logTagSetDescriptions.cpp Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -48,7 +48,8 @@
}
TEST_VM(LogTagSetDescriptions, command_line_help) {
- const char* filename = "logtagset_descriptions";
+ ResourceMark rm;
+ const char* filename = prepend_temp_dir("logtagset_descriptions");
FILE* fp = fopen(filename, "w+");
ASSERT_NE((void*)NULL, fp);
fileStream stream(fp);
--- a/test/hotspot/jtreg/ProblemList-graal.txt Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/ProblemList-graal.txt Fri Feb 22 12:05:05 2019 +0530
@@ -226,4 +226,4 @@
org.graalvm.compiler.hotspot.test.ReservedStackAccessTest 8213567 windows-all
-org.graalvm.compiler.hotspot.test.CheckGraalIntrinsics 8218698
+org.graalvm.compiler.hotspot.test.CheckGraalIntrinsics 8218074
--- a/test/hotspot/jtreg/ProblemList.txt Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/ProblemList.txt Fri Feb 22 12:05:05 2019 +0530
@@ -57,9 +57,9 @@
compiler/runtime/Test8168712.java 8211769,8211771 generic-ppc64,generic-ppc64le,linux-s390x
-applications/ctw/modules/java_desktop.java 8189604 windows-all
-applications/ctw/modules/java_desktop_2.java 8189604 windows-all
-applications/ctw/modules/jdk_jconsole.java 8189604 windows-all
+applications/ctw/modules/java_desktop.java 8205016 windows-all
+applications/ctw/modules/java_desktop_2.java 8205016 windows-all
+applications/ctw/modules/jdk_jconsole.java 8205016 windows-all
#############################################################################
@@ -81,6 +81,7 @@
# :hotspot_runtime
runtime/handshake/HandshakeWalkSuspendExitTest.java 8214174 generic-all
+runtime/NMT/CheckForProperDetailStackTrace.java 8218458 generic-all
runtime/SharedArchiveFile/SASymbolTableTest.java 8193639 solaris-all
#############################################################################
--- a/test/hotspot/jtreg/compiler/linkage/TestLinkageErrorInGenerateOopMap.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/compiler/linkage/TestLinkageErrorInGenerateOopMap.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -42,7 +42,9 @@
public static void main(String args[]) throws Exception {
if (args.length == 0) {
// Spawn new VM instance to execute test
- String[] flags = {"-noverify", "-XX:-TieredCompilation",
+ String[] flags = {"-XX:-BytecodeVerificationRemote",
+ "-XX:-BytecodeVerificationLocal",
+ "-XX:-TieredCompilation",
"-XX:CompileCommand=dontinline,compiler/linkage/OSRWithBadOperandStack.m*",
"compiler.linkage.TestLinkageErrorInGenerateOopMap", "run"};
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(flags);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/unsafe/MaybeOffHeapUnsafeAccessToNewObject.java Fri Feb 22 12:05:05 2019 +0530
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2019, Red Hat, Inc. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8219335
+ * @summary "failed: unexpected type" assert failure in ConnectionGraph::split_unique_types() with unsafe accesses
+ *
+ * @modules java.base/jdk.internal.misc
+ * @run main/othervm -XX:-UseOnStackReplacement -XX:-BackgroundCompilation -XX:-TieredCompilation -Xcomp -XX:CompileOnly=MaybeOffHeapUnsafeAccessToNewObject::test1 -XX:+IgnoreUnrecognizedVMOptions -XX:+AlwaysIncrementalInline MaybeOffHeapUnsafeAccessToNewObject
+ */
+
+import java.lang.reflect.Field;
+import jdk.internal.misc.Unsafe;
+
+public class MaybeOffHeapUnsafeAccessToNewObject {
+ public volatile int f_int = -1;
+
+
+ public static Unsafe unsafe = Unsafe.getUnsafe();
+ public static final long f_int_off;
+
+ static {
+ Field f_int_field = null;
+ try {
+ f_int_field = MaybeOffHeapUnsafeAccessToNewObject.class.getField("f_int");
+ } catch (Exception e) {
+ System.out.println("reflection failed " + e);
+ e.printStackTrace();
+ }
+ f_int_off = unsafe.objectFieldOffset(f_int_field);
+ }
+
+ static public void main(String[] args) {
+ MaybeOffHeapUnsafeAccessToNewObject o = new MaybeOffHeapUnsafeAccessToNewObject();
+ test1();
+ }
+
+ static Object test1_helper1(Object t) {
+ return t;
+ }
+
+ static long test1_helper2(long off) {
+ return off;
+ }
+
+ static int test1() {
+ MaybeOffHeapUnsafeAccessToNewObject t = new MaybeOffHeapUnsafeAccessToNewObject();
+ Object o = test1_helper1(t);
+ long off = test1_helper2(f_int_off);
+ return unsafe.getInt(o, off);
+ }
+
+}
--- a/test/hotspot/jtreg/gc/g1/TestGCLogMessages.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/gc/g1/TestGCLogMessages.java Fri Feb 22 12:05:05 2019 +0530
@@ -100,12 +100,16 @@
new LogMessageWithLevel("Processed Buffers", Level.DEBUG),
new LogMessageWithLevel("Scanned Cards", Level.DEBUG),
new LogMessageWithLevel("Skipped Cards", Level.DEBUG),
- new LogMessageWithLevel("Scan HCC", Level.TRACE),
+ new LogMessageWithLevel("Scan HCC", Level.DEBUG),
// Scan RS
new LogMessageWithLevel("Scan RS", Level.DEBUG),
new LogMessageWithLevel("Scanned Cards", Level.DEBUG),
new LogMessageWithLevel("Claimed Cards", Level.DEBUG),
new LogMessageWithLevel("Skipped Cards", Level.DEBUG),
+ // Object Copy
+ new LogMessageWithLevel("Object Copy", Level.DEBUG),
+ new LogMessageWithLevel("Scanned Cards", Level.DEBUG),
+ new LogMessageWithLevel("Claimed Cards", Level.DEBUG),
// Ext Root Scan
new LogMessageWithLevel("Thread Roots", Level.TRACE),
new LogMessageWithLevel("Universe Roots", Level.TRACE),
--- a/test/hotspot/jtreg/gc/shenandoah/mxbeans/TestMemoryMXBeans.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/gc/shenandoah/mxbeans/TestMemoryMXBeans.java Fri Feb 22 12:05:05 2019 +0530
@@ -52,8 +52,10 @@
public static void testMemoryBean(long initSize, long maxSize) {
MemoryMXBean memoryMXBean = ManagementFactory.getMemoryMXBean();
long heapInit = memoryMXBean.getHeapMemoryUsage().getInit();
+ long heapCommitted = memoryMXBean.getHeapMemoryUsage().getCommitted();
long heapMax = memoryMXBean.getHeapMemoryUsage().getMax();
long nonHeapInit = memoryMXBean.getNonHeapMemoryUsage().getInit();
+ long nonHeapCommitted = memoryMXBean.getNonHeapMemoryUsage().getCommitted();
long nonHeapMax = memoryMXBean.getNonHeapMemoryUsage().getMax();
if (initSize > 0 && heapInit != initSize) {
@@ -62,5 +64,9 @@
if (maxSize > 0 && heapMax != maxSize) {
throw new IllegalStateException("Max heap size is wrong: " + heapMax + " vs " + maxSize);
}
+ if (initSize > 0 && maxSize > 0 && initSize != maxSize && heapCommitted == heapMax) {
+ throw new IllegalStateException("Init committed heap size is wrong: " + heapCommitted +
+ " (init: " + initSize + ", max: " + maxSize + ")");
+ }
}
}
--- a/test/hotspot/jtreg/runtime/Nestmates/privateMethods/TestInvokeErrors.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/runtime/Nestmates/privateMethods/TestInvokeErrors.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2019, 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,7 @@
* MissingMethodWithSuper.jcod
* MissingNestHost.jcod
* @run main TestInvokeErrors true
- * @run main/othervm -Xverify:none TestInvokeErrors false
+ * @run main/othervm -XX:-BytecodeVerificationRemote -XX:-BytecodeVerificationLocal TestInvokeErrors false
*/
public class TestInvokeErrors {
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/SpaceUtilizationCheck.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/runtime/SharedArchiveFile/SpaceUtilizationCheck.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2019, 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
@@ -102,8 +102,8 @@
}
}
}
- if (checked.size() != 5) {
- throw new RuntimeException("Must have 5 consecutive, fully utilized regions");
+ if (checked.size() != 4) {
+ throw new RuntimeException("Must have 4 consecutive, fully utilized regions");
}
}
}
--- a/test/hotspot/jtreg/runtime/appcds/VerifierTest.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/runtime/appcds/VerifierTest.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -38,7 +38,7 @@
// Test verification settings for dumping & runtime
static final String VFY_ALL = "-Xverify:all";
static final String VFY_REMOTE = "-Xverify:remote"; // default
- static final String VFY_NONE = "-Xverify:none";
+ static final String VFY_NONE = "-XX:-BytecodeVerificationRemote, -XX:-BytecodeVerificationLocal";
static final String ERR =
"ERROR: class VerifierTestC was loaded unexpectedly";
@@ -140,7 +140,7 @@
{"app", VFY_ALL, VFY_REMOTE, VFY_ERR },
{"app", VFY_ALL, VFY_ALL, VFY_ERR },
{"app", VFY_ALL, VFY_NONE, ERR },
- // Dump app/ext with -Xverify:none
+ // Dump app/ext with verifier turned off
{"app", VFY_NONE, VFY_REMOTE, VFY_ERR},
{"app", VFY_NONE, VFY_ALL, MAP_FAIL},
{"app", VFY_NONE, VFY_NONE, ERR },
@@ -152,7 +152,7 @@
{"noApp", VFY_ALL, VFY_REMOTE, VFY_ERR},
{"noApp", VFY_ALL, VFY_ALL, VFY_ERR},
{"noApp", VFY_ALL, VFY_NONE, ERR},
- // Dump sys only with -Xverify:none
+ // Dump sys only with verifier turned off
{"noApp", VFY_NONE, VFY_REMOTE, VFY_ERR},
{"noApp", VFY_NONE, VFY_ALL, VFY_ERR},
{"noApp", VFY_NONE, VFY_NONE, ERR},
@@ -186,8 +186,19 @@
" with " + dump_setting +
", run with " + runtime_setting);
if (!dump_setting.equals(prev_dump_setting)) {
+ String dump_arg1;
+ String dump_arg2;
+ // Need to break this into two separate arguments.
+ if (dump_setting.equals(VFY_NONE)) {
+ dump_arg1 = "-XX:-BytecodeVerificationRemote";
+ dump_arg2 = "-XX:-BytecodeVerificationLocal";
+ } else {
+ // Redundant args should be harmless.
+ dump_arg1 = dump_arg2 = dump_setting;
+ }
+
OutputAnalyzer dumpOutput = TestCommon.dump(
- jar, dump_list, dump_setting,
+ jar, dump_list, dump_arg1, dump_arg2,
CDS_LOGGING,
// FIXME: the following options are for working around a GC
// issue - assert failure when dumping archive with the -Xverify:all
@@ -198,8 +209,17 @@
dumpOutput.shouldContain(VFY_INFO_MESSAGE);
}
}
+ String runtime_arg1;
+ String runtime_arg2;
+ if (runtime_setting.equals(VFY_NONE)) {
+ runtime_arg1 = "-XX:-BytecodeVerificationRemote";
+ runtime_arg2 = "-XX:-BytecodeVerificationLocal";
+ } else {
+ // Redundant args should be harmless.
+ runtime_arg1 = runtime_arg2 = runtime_setting;
+ }
TestCommon.run("-cp", jar,
- runtime_setting,
+ runtime_arg1, runtime_arg2,
"VerifierTest0")
.ifNoMappingFailure(output -> checkRuntimeOutput(output, expected_output_str));
prev_dump_setting = dump_setting;
@@ -229,7 +249,7 @@
{"app", VFY_ALL, VFY_REMOTE, PASS_RESULT },
{"app", VFY_ALL, VFY_ALL, PASS_RESULT },
{"app", VFY_ALL, VFY_NONE, PASS_RESULT },
- // Dump app/ext with -Xverify:none
+ // Dump app/ext with verifier turned off
{"app", VFY_NONE, VFY_REMOTE, PASS_RESULT},
{"app", VFY_NONE, VFY_ALL, MAP_FAIL},
{"app", VFY_NONE, VFY_NONE, PASS_RESULT },
@@ -244,8 +264,17 @@
" with " + dump_setting +
", run with " + runtime_setting);
if (!dump_setting.equals(prev_dump_setting)) {
+ String dump_arg1;
+ String dump_arg2;
+ if (dump_setting.equals(VFY_NONE)) {
+ dump_arg1 = "-XX:-BytecodeVerificationRemote";
+ dump_arg2 = "-XX:-BytecodeVerificationLocal";
+ } else {
+ // Redundant args should be harmless.
+ dump_arg1 = dump_arg2 = dump_setting;
+ }
OutputAnalyzer dumpOutput = TestCommon.dump(
- jar, appClasses, dump_setting,
+ jar, appClasses, dump_arg1, dump_arg2,
CDS_LOGGING,
// FIXME: the following options are for working around a GC
// issue - assert failure when dumping archive with the -Xverify:all
@@ -256,8 +285,17 @@
dumpOutput.shouldContain(VFY_INFO_MESSAGE);
}
}
+ String runtime_arg1;
+ String runtime_arg2;
+ if (runtime_setting.equals(VFY_NONE)) {
+ runtime_arg1 = "-XX:-BytecodeVerificationRemote";
+ runtime_arg2 = "-XX:-BytecodeVerificationLocal";
+ } else {
+ // Redundant args should be harmless.
+ runtime_arg1 = runtime_arg2 = runtime_setting;
+ }
TestCommon.run("-cp", jar,
- runtime_setting,
+ runtime_arg1, runtime_arg2,
"Hi")
.ifNoMappingFailure(output -> checkRuntimeOutput(output, expected_output_str));
prev_dump_setting = dump_setting;
--- a/test/hotspot/jtreg/runtime/clone/invokevirtual/HasLocalClone.jasm Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/runtime/clone/invokevirtual/HasLocalClone.jasm Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2019, 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,7 @@
* @summary Check that invokevirtual of clone() finds the clone() method that
* is local to the calling class.
* @compile DefMethClone.jasm SuperClass.jasm I1.java HasLocalClone.jasm
- * @run main/othervm -noverify HasLocalClone
+ * @run main/othervm -XX:-BytecodeVerificationRemote -XX:-BytecodeVerificationLocal HasLocalClone
*/
// The below .jasm code implements the following java code:
--- a/test/hotspot/jtreg/runtime/clone/invokevirtual/NoLocalClone.jasm Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/runtime/clone/invokevirtual/NoLocalClone.jasm Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2019, 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,7 @@
* @summary Check that invokevirtual of clone() calls java.lang.Object.clone()
* even if a superinterface has a default method named clone().
* @compile DefMethClone.jasm SuperClass.jasm I1.java NoLocalClone.jasm
- * @run main/othervm -noverify NoLocalClone
+ * @run main/othervm -XX:-BytecodeVerificationRemote -XX:-BytecodeVerificationLocal NoLocalClone
*/
// The below .jasm code implements the following java code:
--- a/test/hotspot/jtreg/runtime/clone/invokevirtual/NoLocalCloneAbstr.jasm Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/runtime/clone/invokevirtual/NoLocalCloneAbstr.jasm Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2019, 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,7 @@
* @summary Check that invokevirtual of clone() calls java.lang.Object.clone()
* even if a superinterface has an abstract method named clone().
* @compile DefMethClone.jasm SuperClass.jasm I1Abstr.java NoLocalCloneAbstr.jasm
- * @run main/othervm -noverify NoLocalCloneAbstr
+ * @run main/othervm -XX:-BytecodeVerificationRemote -XX:-BytecodeVerificationLocal NoLocalCloneAbstr
*/
// The below .jasm code implements the following java code:
--- a/test/hotspot/jtreg/runtime/lambda-features/TestStaticandInstance.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/runtime/lambda-features/TestStaticandInstance.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -26,7 +26,7 @@
* @bug 8087342
* @summary Test linkresolver search static, instance and overpass duplicates
* @modules java.base/jdk.internal.org.objectweb.asm
- * @run main/othervm -Xverify:none TestStaticandInstance
+ * @run main/othervm -XX:-BytecodeVerificationRemote -XX:-BytecodeVerificationLocal TestStaticandInstance
*/
@@ -94,7 +94,7 @@
default int q() { return 3; } // trigger defmeth processing: C gets AME overpass
}
-// C gets static, private and AME overpass m()I with -Xverify:none
+// C gets static, private and AME overpass m()I with the verifier turned off
class C implements I {
static int m() { return 1;} // javac with "n()" and patch to "m()"
private int m() { return 2;} // javac with public and patch to private
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdb/interrupt/interrupt001/interrupt001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdb/interrupt/interrupt001/interrupt001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2019, 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,7 +94,13 @@
static int numThreads = nsk.jdb.interrupt.interrupt001.interrupt001a.numThreads;
- private static Pattern tidPattern = Pattern.compile("(0x[0-9a-f]+)");
+ /*
+ * Pattern for finding the thread ID in a line like the following:
+ * (nsk.jdb.interrupt.interrupt001.interrupt001a$MyThread)651 Thread-0 cond. waiting
+ * Note we can't match on DEBUGGEE_THREAD because it includes a $, which Pattern
+ * uses to match the end of a line.
+ */
+ private static Pattern tidPattern = Pattern.compile("\\(.+" + MYTHREAD + "\\)(\\S+)");
protected void runCases() {
String[] reply;
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -159,7 +159,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("location001a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/newInstance/newinstance001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/newInstance/newinstance001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -170,7 +170,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/newInstance/newinstance002.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/newInstance/newinstance002.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -167,7 +167,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/setValue/setvalue001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/setValue/setvalue001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -139,7 +139,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/setValue/setvalue002.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/setValue/setvalue002.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -150,7 +150,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/setValue/setvalue003.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/setValue/setvalue003.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -143,7 +143,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/setValue/setvalue004.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/setValue/setvalue004.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -135,7 +135,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/setValue/setvalue005.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/setValue/setvalue005.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -132,7 +132,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/LocalVariable/isVisible/isvisible001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/LocalVariable/isVisible/isvisible001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -159,7 +159,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("setvalue003a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/Locatable/location/location001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/Locatable/location/location001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -133,7 +133,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("location001a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/Locatable/location/location004.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/Locatable/location/location004.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -148,7 +148,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("setvalue003a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/Locatable/location/location005.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/Locatable/location/location005.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -148,7 +148,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("setvalue003a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/codeIndex/codeindex001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/codeIndex/codeindex001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -131,7 +131,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/declaringType/declaringtype001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/declaringType/declaringtype001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -137,7 +137,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/equals/equals001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/equals/equals001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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,7 +136,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/hashCode/hashcode001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/hashCode/hashcode001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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,7 +136,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/lineNumber/linenumber001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/lineNumber/linenumber001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -129,7 +129,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/lineNumber_s/linenumber_s001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/lineNumber_s/linenumber_s001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -124,7 +124,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/sourceName/sourcename001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/sourceName/sourcename001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -135,7 +135,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/sourceName_s/sourcename_s001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/sourceName_s/sourcename_s001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -130,7 +130,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/sourcePath/sourcepath001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/sourcePath/sourcepath001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -128,7 +128,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/sourcePath_s/sourcepath_s001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/Location/sourcePath_s/sourcepath_s001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -128,7 +128,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/allLineLocations/alllinelocations001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/allLineLocations/alllinelocations001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -125,7 +125,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/allLineLocations/alllinelocations002.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/allLineLocations/alllinelocations002.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -127,7 +127,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/allLineLocations_ss/alllinelocations_ss001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/allLineLocations_ss/alllinelocations_ss001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -127,7 +127,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/locationOfCodeIndex/locationofcodeindex001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/locationOfCodeIndex/locationofcodeindex001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -139,7 +139,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/locationsOfLine/locationsofline001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/locationsOfLine/locationsofline001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -132,7 +132,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/locationsOfLine_ssi/locationsofline_ssi001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/Method/locationsOfLine_ssi/locationsofline_ssi001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -130,7 +130,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/Mirror/toString/tostring001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/Mirror/toString/tostring001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -133,7 +133,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/Mirror/virtualMachine/virtualmachine001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/Mirror/virtualMachine/virtualmachine001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -133,7 +133,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/disableCollection/disablecollection001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/disableCollection/disablecollection001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -133,7 +133,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/entryCount/entrycount001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/entryCount/entrycount001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -134,7 +134,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/equals/equals001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/equals/equals001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -142,7 +142,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/getValue/getvalue001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/getValue/getvalue001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -154,7 +154,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/getValue/getvalue002.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/getValue/getvalue002.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -158,7 +158,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/getValue/getvalue003.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/getValue/getvalue003.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -135,7 +135,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/getValue/getvalue004.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/getValue/getvalue004.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -135,7 +135,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/getValues/getvalues001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/getValues/getvalues001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -139,7 +139,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/getValues/getvalues002.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/getValues/getvalues002.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -139,7 +139,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/getValues/getvalues003.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/getValues/getvalues003.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -142,7 +142,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/hashCode/hashcode001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/hashCode/hashcode001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -142,7 +142,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/invokeMethod/invokemethod001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -162,7 +162,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/isCollected/iscollected001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/isCollected/iscollected001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -132,7 +132,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/owningThread/owningthread001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/owningThread/owningthread001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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,7 +136,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/referenceType/referencetype001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/referenceType/referencetype001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -139,7 +139,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/referenceType/referencetype002.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/referenceType/referencetype002.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -137,7 +137,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/referenceType/referencetype003.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/referenceType/referencetype003.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -137,7 +137,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/referenceType/referencetype004.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/referenceType/referencetype004.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -138,7 +138,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/referenceType/referencetype005.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/referenceType/referencetype005.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -139,7 +139,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/referenceType/referencetype006.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/referenceType/referencetype006.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -139,7 +139,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/referenceType/referencetype007.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/referenceType/referencetype007.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -138,7 +138,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/setValue/setvalue001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/setValue/setvalue001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -130,7 +130,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/uniqueID/uniqueid001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/uniqueID/uniqueid001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -131,7 +131,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/PathSearchingVirtualMachine/baseDirectory/directory001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/PathSearchingVirtualMachine/baseDirectory/directory001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -124,7 +124,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/PathSearchingVirtualMachine/bootClassPath/bootpath001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/PathSearchingVirtualMachine/bootClassPath/bootpath001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -125,7 +125,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/PrimitiveValue/doubleValue/doublevalue002.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/PrimitiveValue/doubleValue/doublevalue002.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -139,7 +139,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allLineLocations/alllinelocations001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allLineLocations/alllinelocations001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -125,7 +125,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allLineLocations_ss/alllinelocations_ss001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/allLineLocations_ss/alllinelocations_ss001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -124,7 +124,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/availableStrata/availablestrata001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/availableStrata/availablestrata001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -131,7 +131,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/defaultStratum/defaultstratum001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/defaultStratum/defaultstratum001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -128,7 +128,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/locationsOfLine_i/locationsofline_i001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/locationsOfLine_i/locationsofline_i001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -127,7 +127,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/locationsOfLine_ssi/locationsofline_ssi001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/locationsOfLine_ssi/locationsofline_ssi001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -128,7 +128,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/sourceNames/sourcenames001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/sourceNames/sourcenames001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -130,7 +130,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/sourcePaths/sourcepaths001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/sourcePaths/sourcepaths001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -131,7 +131,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/location/location001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/location/location001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -160,7 +160,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("location001a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/setValue/setvalue003/setvalue003.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/setValue/setvalue003/setvalue003.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -247,7 +247,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("setvalue003a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/thisObject/thisobject001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/thisObject/thisobject001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -156,7 +156,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("setvalue003a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/thisObject/thisobject002.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/thisObject/thisobject002.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -155,7 +155,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("setvalue003a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/thread/thread001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/thread/thread001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -153,7 +153,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("location001a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/visibleVariableByName/visiblevarbyname001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/visibleVariableByName/visiblevarbyname001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -158,7 +158,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("setvalue003a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/visibleVariableByName/visiblevarbyname002.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/visibleVariableByName/visiblevarbyname002.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -149,7 +149,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("setvalue003a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/visibleVariables/visiblevariables001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/visibleVariables/visiblevariables001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -153,7 +153,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("setvalue003a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/visibleVariables/visiblevariables002.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/StackFrame/visibleVariables/visiblevariables002.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -150,7 +150,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("setvalue003a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadGroupReference/name/name001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadGroupReference/name/name001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -154,7 +154,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadGroupReference/parent/parent001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadGroupReference/parent/parent001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -156,7 +156,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadGroupReference/resume/resume001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadGroupReference/resume/resume001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -153,7 +153,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadGroupReference/suspend/suspend001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadGroupReference/suspend/suspend001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -152,7 +152,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadGroupReference/threadGroups/threadgroups001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadGroupReference/threadGroups/threadgroups001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -151,7 +151,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadGroupReference/threads/threads001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadGroupReference/threads/threads001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -151,7 +151,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/currentContendedMonitor/currentcm001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/currentContendedMonitor/currentcm001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -144,7 +144,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/frame/frame001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/frame/frame001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -170,7 +170,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/frameCount/framecount001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/frameCount/framecount001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -161,7 +161,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/frames/frames001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/frames/frames001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -175,7 +175,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/frames_ii/frames_ii001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/frames_ii/frames_ii001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -176,7 +176,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/frames_ii/frames_ii002.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/frames_ii/frames_ii002.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -159,7 +159,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/interrupt/interrupt001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/interrupt/interrupt001.java Fri Feb 22 12:05:05 2019 +0530
@@ -153,7 +153,7 @@
pipe = debuggee.createIOPipe();
debuggee.redirectStderr(out);
- log2("interrupt002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
try {
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/isAtBreakpoint/isatbreakpoint001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/isAtBreakpoint/isatbreakpoint001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -153,7 +153,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/isSuspended/issuspended002.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/isSuspended/issuspended002.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -159,7 +159,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/name/name001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/name/name001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -148,7 +148,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/resume/resume001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/resume/resume001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -153,7 +153,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/stop/stop001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/stop/stop001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -154,7 +154,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/suspend/suspend001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/suspend/suspend001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -152,7 +152,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/suspendCount/suspendcount001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/suspendCount/suspendcount001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -152,7 +152,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/threadGroup/threadgroup001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/threadGroup/threadgroup001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -161,7 +161,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/Value/_itself_/value001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/Value/_itself_/value001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -146,7 +146,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/Value/type/type002/type002.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/Value/type/type002/type002.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -196,7 +196,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("setvalue003a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/allThreads/allthreads001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/allThreads/allthreads001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -155,7 +155,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("location001a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canGetBytecodes/cangetbytecodes001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canGetBytecodes/cangetbytecodes001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -140,7 +140,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canGetCurrentContendedMonitor/cangccm001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canGetCurrentContendedMonitor/cangccm001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -151,7 +151,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canGetMonitorInfo/cangetmonitorinfo001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canGetMonitorInfo/cangetmonitorinfo001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -159,7 +159,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canGetOwnedMonitorInfo/cangetinfo001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canGetOwnedMonitorInfo/cangetinfo001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -151,7 +151,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canGetSourceDebugExtension/cangetsde001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canGetSourceDebugExtension/cangetsde001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -123,7 +123,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canGetSyntheticAttribute/cangetattr001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canGetSyntheticAttribute/cangetattr001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -140,7 +140,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/description/description001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/description/description001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -124,7 +124,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/dispose/dispose001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/dispose/dispose001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -134,7 +134,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/dispose/dispose002.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/dispose/dispose002.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -150,7 +150,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/dispose/dispose003.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/dispose/dispose003.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -143,7 +143,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/dispose/dispose004.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/dispose/dispose004.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -144,7 +144,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/dispose/dispose005.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/dispose/dispose005.java Fri Feb 22 12:05:05 2019 +0530
@@ -192,7 +192,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/eventQueue/eventqueue001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/eventQueue/eventqueue001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -133,7 +133,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/eventRequestManager/eventrmanager001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/eventRequestManager/eventrmanager001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -134,7 +134,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/exit/exit001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/exit/exit001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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,7 +136,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/exit/exit002.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/exit/exit002.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -135,7 +135,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/getDefaultStratum/getdefaultstratum001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/getDefaultStratum/getdefaultstratum001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -128,7 +128,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/name/name001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/name/name001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -124,7 +124,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/process/process001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/process/process001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -128,7 +128,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/setDefaultStratum/setdefaultstratum001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/setDefaultStratum/setdefaultstratum001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -128,7 +128,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/suspend/suspend001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/suspend/suspend001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -155,7 +155,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/topLevelThreadGroups/toplevelgroups001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/topLevelThreadGroups/toplevelgroups001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -128,7 +128,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/version/version001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/version/version001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -124,7 +124,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachineManager/connectedVirtualMachines/convm001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachineManager/connectedVirtualMachines/convm001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -143,7 +143,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachineManager/connectedVirtualMachines/convm002.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachineManager/connectedVirtualMachines/convm002.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -145,7 +145,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachineManager/connectedVirtualMachines/convm003.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachineManager/connectedVirtualMachines/convm003.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -142,7 +142,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("issuspended002a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VoidValue/equals/equals001/equals001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VoidValue/equals/equals001/equals001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -204,7 +204,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("setvalue003a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/hotspot/jtreg/vmTestbase/nsk/jdi/VoidValue/hashCode/hashcode001/hashcode001.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jdi/VoidValue/hashCode/hashcode001/hashcode001.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, 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
@@ -204,7 +204,7 @@
IOPipe pipe = new IOPipe(debuggee);
debuggee.redirectStderr(out);
- log2("setvalue003a debuggee launched");
+ log2(debuggeeName + " debuggee launched");
debuggee.resume();
String line = pipe.readln();
--- a/test/jdk/ProblemList-Xcomp.txt Wed Feb 20 17:00:40 2019 +0530
+++ b/test/jdk/ProblemList-Xcomp.txt Fri Feb 22 12:05:05 2019 +0530
@@ -28,5 +28,4 @@
#############################################################################
java/lang/invoke/MethodHandles/CatchExceptionTest.java 8146623 generic-all
-java/util/concurrent/CountDownLatch/Basic.java 8195057 generic-all
java/util/stream/test/org/openjdk/tests/java/util/stream/StreamLinkTest.java 8216317 solaris-all
--- a/test/jdk/java/lang/instrument/appendToClassLoaderSearch/ClassUnloadTest.sh Wed Feb 20 17:00:40 2019 +0530
+++ b/test/jdk/java/lang/instrument/appendToClassLoaderSearch/ClassUnloadTest.sh Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2019, 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,5 +80,5 @@
# Finally we run the test
(cd "${TESTCLASSES}"; \
- $JAVA ${TESTVMOPTS} -Xverify:none -Xlog:class+unload \
+ $JAVA ${TESTVMOPTS} -Xlog:class+unload \
-javaagent:ClassUnloadTest.jar ClassUnloadTest "${OTHERDIR}" Bar.jar)
--- a/test/jdk/java/nio/Buffer/Basic-X.java.template Wed Feb 20 17:00:40 2019 +0530
+++ b/test/jdk/java/nio/Buffer/Basic-X.java.template Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, 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,18 @@
}
}
+ private static void absBulkGet($Type$Buffer b) {
+ int n = b.capacity();
+ int len = n - 7*2;
+ $type$[] a = new $type$[n + 7];
+ b.position(42);
+ b.get(7, a, 7, len);
+ ck(b, b.position() == 42);
+ for (int i = 0; i < len; i++) {
+ ck(b, (long)a[i + 7], (long)(($type$)ic(i)));
+ }
+ }
+
private static void relPut($Type$Buffer b) {
int n = b.capacity();
b.clear();
@@ -136,6 +148,20 @@
}
}
+ private static void absBulkPutArray($Type$Buffer b) {
+ int n = b.capacity();
+ b.clear();
+ int lim = n - 7;
+ int len = lim - 7;
+ b.limit(lim);
+ $type$[] a = new $type$[len + 7];
+ for (int i = 0; i < len; i++)
+ a[i + 7] = ($type$)ic(i);
+ b.position(42);
+ b.put(7, a, 7, len);
+ ck(b, b.position() == 42);
+ }
+
//6231529
private static void callReset($Type$Buffer b) {
b.position(0);
@@ -452,6 +478,10 @@
fail(problem + String.format(": x=%s y=%s", x, y), xb, yb);
}
+ private static void catchNullArgument(Buffer b, Runnable thunk) {
+ tryCatch(b, NullPointerException.class, thunk);
+ }
+
private static void catchIllegalArgument(Buffer b, Runnable thunk) {
tryCatch(b, IllegalArgumentException.class, thunk);
}
@@ -476,7 +506,10 @@
if (ex.isAssignableFrom(x.getClass())) {
caught = true;
} else {
- fail(x.getMessage() + " not expected");
+ String s = x.getMessage();
+ if (s == null)
+ s = x.getClass().getName();
+ fail(s + " not expected");
}
}
if (!caught) {
@@ -513,6 +546,9 @@
bulkPutBuffer(b);
relGet(b);
+ absBulkPutArray(b);
+ absBulkGet(b);
+
#if[char]
bulkPutString(b);
@@ -612,6 +648,26 @@
}
}
+ // Exceptions in absolute bulk operations
+
+ catchNullArgument(b, () -> b.get(7, null, 0, 42));
+ catchNullArgument(b, () -> b.put(7, ($type$[])null, 0, 42));
+
+ $type$[] tmpa = new $type$[42];
+ catchIndexOutOfBounds(b, () -> b.get(7, tmpa, -1, 42));
+ catchIndexOutOfBounds(b, () -> b.get(7, tmpa, 42, 1));
+ catchIndexOutOfBounds(b, () -> b.get(7, tmpa, 41, -1));
+ catchIndexOutOfBounds(b, () -> b.get(-1, tmpa, 0, 1));
+ catchIndexOutOfBounds(b, () -> b.get(b.limit(), tmpa, 0, 1));
+ catchIndexOutOfBounds(b, () -> b.get(b.limit() - 41, tmpa, 0, 42));
+
+ catchIndexOutOfBounds(b, () -> b.put(7, tmpa, -1, 42));
+ catchIndexOutOfBounds(b, () -> b.put(7, tmpa, 42, 1));
+ catchIndexOutOfBounds(b, () -> b.put(7, tmpa, 41, -1));
+ catchIndexOutOfBounds(b, () -> b.put(-1, tmpa, 0, 1));
+ catchIndexOutOfBounds(b, () -> b.put(b.limit(), tmpa, 0, 1));
+ catchIndexOutOfBounds(b, () -> b.put(b.limit() - 41, tmpa, 0, 42));
+
// Values
b.clear();
@@ -819,6 +875,7 @@
catchReadOnlyBuffer(b, () -> absPut(rb));
catchReadOnlyBuffer(b, () -> bulkPutArray(rb));
catchReadOnlyBuffer(b, () -> bulkPutBuffer(rb));
+ catchReadOnlyBuffer(b, () -> absBulkPutArray(rb));
// put($Type$Buffer) should not change source position
final $Type$Buffer src = $Type$Buffer.allocate(1);
@@ -903,6 +960,13 @@
b.position(6);
ck(b, b.subSequence(0,3).toString().equals("ghi"));
+ // absolute bulk get
+ char[] c = new char[end + 1 - (start - 1) + 1]; // [start - 1, end + 1]
+ b.limit(end + 2);
+ b.get(start - 1, c, 0, c.length);
+ for (int i = 0; i < c.length; i++)
+ ck(b, c[i], s.charAt(start - 1 + i));
+
// The index, relative to the position, must be non-negative and
// smaller than remaining().
catchIndexOutOfBounds(b, () -> b.charAt(-1));
--- a/test/jdk/java/nio/Buffer/Basic.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/jdk/java/nio/Buffer/Basic.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, 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
@@ -24,9 +24,9 @@
/* @test
* @summary Unit test for buffers
* @bug 4413135 4414911 4416536 4416562 4418782 4471053 4472779 4490253 4523725
- * 4526177 4463011 4660660 4661219 4663521 4782970 4804304 4938424 6231529
- * 6221101 6234263 6535542 6591971 6593946 6795561 7190219 7199551 8065556
- * 8149469
+ * 4526177 4463011 4660660 4661219 4663521 4782970 4804304 4938424 5029431
+ * 6231529 6221101 6234263 6535542 6591971 6593946 6795561 7190219 7199551
+ * 8065556 8149469
* @modules java.base/java.nio:open
* java.base/jdk.internal.misc
* @author Mark Reinhold
--- a/test/jdk/java/nio/Buffer/BasicByte.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/jdk/java/nio/Buffer/BasicByte.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, 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,18 @@
}
}
+ private static void absBulkGet(ByteBuffer b) {
+ int n = b.capacity();
+ int len = n - 7*2;
+ byte[] a = new byte[n + 7];
+ b.position(42);
+ b.get(7, a, 7, len);
+ ck(b, b.position() == 42);
+ for (int i = 0; i < len; i++) {
+ ck(b, (long)a[i + 7], (long)((byte)ic(i)));
+ }
+ }
+
private static void relPut(ByteBuffer b) {
int n = b.capacity();
b.clear();
@@ -136,6 +148,20 @@
}
}
+ private static void absBulkPutArray(ByteBuffer b) {
+ int n = b.capacity();
+ b.clear();
+ int lim = n - 7;
+ int len = lim - 7;
+ b.limit(lim);
+ byte[] a = new byte[len + 7];
+ for (int i = 0; i < len; i++)
+ a[i + 7] = (byte)ic(i);
+ b.position(42);
+ b.put(7, a, 7, len);
+ ck(b, b.position() == 42);
+ }
+
//6231529
private static void callReset(ByteBuffer b) {
b.position(0);
@@ -452,6 +478,10 @@
fail(problem + String.format(": x=%s y=%s", x, y), xb, yb);
}
+ private static void catchNullArgument(Buffer b, Runnable thunk) {
+ tryCatch(b, NullPointerException.class, thunk);
+ }
+
private static void catchIllegalArgument(Buffer b, Runnable thunk) {
tryCatch(b, IllegalArgumentException.class, thunk);
}
@@ -476,7 +506,10 @@
if (ex.isAssignableFrom(x.getClass())) {
caught = true;
} else {
- fail(x.getMessage() + " not expected");
+ String s = x.getMessage();
+ if (s == null)
+ s = x.getClass().getName();
+ fail(s + " not expected");
}
}
if (!caught) {
@@ -513,6 +546,9 @@
bulkPutBuffer(b);
relGet(b);
+ absBulkPutArray(b);
+ absBulkGet(b);
+
@@ -612,6 +648,26 @@
}
}
+ // Exceptions in absolute bulk operations
+
+ catchNullArgument(b, () -> b.get(7, null, 0, 42));
+ catchNullArgument(b, () -> b.put(7, (byte[])null, 0, 42));
+
+ byte[] tmpa = new byte[42];
+ catchIndexOutOfBounds(b, () -> b.get(7, tmpa, -1, 42));
+ catchIndexOutOfBounds(b, () -> b.get(7, tmpa, 42, 1));
+ catchIndexOutOfBounds(b, () -> b.get(7, tmpa, 41, -1));
+ catchIndexOutOfBounds(b, () -> b.get(-1, tmpa, 0, 1));
+ catchIndexOutOfBounds(b, () -> b.get(b.limit(), tmpa, 0, 1));
+ catchIndexOutOfBounds(b, () -> b.get(b.limit() - 41, tmpa, 0, 42));
+
+ catchIndexOutOfBounds(b, () -> b.put(7, tmpa, -1, 42));
+ catchIndexOutOfBounds(b, () -> b.put(7, tmpa, 42, 1));
+ catchIndexOutOfBounds(b, () -> b.put(7, tmpa, 41, -1));
+ catchIndexOutOfBounds(b, () -> b.put(-1, tmpa, 0, 1));
+ catchIndexOutOfBounds(b, () -> b.put(b.limit(), tmpa, 0, 1));
+ catchIndexOutOfBounds(b, () -> b.put(b.limit() - 41, tmpa, 0, 42));
+
// Values
b.clear();
@@ -819,6 +875,7 @@
catchReadOnlyBuffer(b, () -> absPut(rb));
catchReadOnlyBuffer(b, () -> bulkPutArray(rb));
catchReadOnlyBuffer(b, () -> bulkPutBuffer(rb));
+ catchReadOnlyBuffer(b, () -> absBulkPutArray(rb));
// put(ByteBuffer) should not change source position
final ByteBuffer src = ByteBuffer.allocate(1);
@@ -928,6 +985,13 @@
+
+
+
+
+
+
+
public static void test(final byte [] ba) {
int offset = 47;
int length = 900;
--- a/test/jdk/java/nio/Buffer/BasicChar.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/jdk/java/nio/Buffer/BasicChar.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, 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,18 @@
}
}
+ private static void absBulkGet(CharBuffer b) {
+ int n = b.capacity();
+ int len = n - 7*2;
+ char[] a = new char[n + 7];
+ b.position(42);
+ b.get(7, a, 7, len);
+ ck(b, b.position() == 42);
+ for (int i = 0; i < len; i++) {
+ ck(b, (long)a[i + 7], (long)((char)ic(i)));
+ }
+ }
+
private static void relPut(CharBuffer b) {
int n = b.capacity();
b.clear();
@@ -136,6 +148,20 @@
}
}
+ private static void absBulkPutArray(CharBuffer b) {
+ int n = b.capacity();
+ b.clear();
+ int lim = n - 7;
+ int len = lim - 7;
+ b.limit(lim);
+ char[] a = new char[len + 7];
+ for (int i = 0; i < len; i++)
+ a[i + 7] = (char)ic(i);
+ b.position(42);
+ b.put(7, a, 7, len);
+ ck(b, b.position() == 42);
+ }
+
//6231529
private static void callReset(CharBuffer b) {
b.position(0);
@@ -452,6 +478,10 @@
fail(problem + String.format(": x=%s y=%s", x, y), xb, yb);
}
+ private static void catchNullArgument(Buffer b, Runnable thunk) {
+ tryCatch(b, NullPointerException.class, thunk);
+ }
+
private static void catchIllegalArgument(Buffer b, Runnable thunk) {
tryCatch(b, IllegalArgumentException.class, thunk);
}
@@ -476,7 +506,10 @@
if (ex.isAssignableFrom(x.getClass())) {
caught = true;
} else {
- fail(x.getMessage() + " not expected");
+ String s = x.getMessage();
+ if (s == null)
+ s = x.getClass().getName();
+ fail(s + " not expected");
}
}
if (!caught) {
@@ -513,6 +546,9 @@
bulkPutBuffer(b);
relGet(b);
+ absBulkPutArray(b);
+ absBulkGet(b);
+
bulkPutString(b);
@@ -612,6 +648,26 @@
}
}
+ // Exceptions in absolute bulk operations
+
+ catchNullArgument(b, () -> b.get(7, null, 0, 42));
+ catchNullArgument(b, () -> b.put(7, (char[])null, 0, 42));
+
+ char[] tmpa = new char[42];
+ catchIndexOutOfBounds(b, () -> b.get(7, tmpa, -1, 42));
+ catchIndexOutOfBounds(b, () -> b.get(7, tmpa, 42, 1));
+ catchIndexOutOfBounds(b, () -> b.get(7, tmpa, 41, -1));
+ catchIndexOutOfBounds(b, () -> b.get(-1, tmpa, 0, 1));
+ catchIndexOutOfBounds(b, () -> b.get(b.limit(), tmpa, 0, 1));
+ catchIndexOutOfBounds(b, () -> b.get(b.limit() - 41, tmpa, 0, 42));
+
+ catchIndexOutOfBounds(b, () -> b.put(7, tmpa, -1, 42));
+ catchIndexOutOfBounds(b, () -> b.put(7, tmpa, 42, 1));
+ catchIndexOutOfBounds(b, () -> b.put(7, tmpa, 41, -1));
+ catchIndexOutOfBounds(b, () -> b.put(-1, tmpa, 0, 1));
+ catchIndexOutOfBounds(b, () -> b.put(b.limit(), tmpa, 0, 1));
+ catchIndexOutOfBounds(b, () -> b.put(b.limit() - 41, tmpa, 0, 42));
+
// Values
b.clear();
@@ -819,6 +875,7 @@
catchReadOnlyBuffer(b, () -> absPut(rb));
catchReadOnlyBuffer(b, () -> bulkPutArray(rb));
catchReadOnlyBuffer(b, () -> bulkPutBuffer(rb));
+ catchReadOnlyBuffer(b, () -> absBulkPutArray(rb));
// put(CharBuffer) should not change source position
final CharBuffer src = CharBuffer.allocate(1);
@@ -903,6 +960,13 @@
b.position(6);
ck(b, b.subSequence(0,3).toString().equals("ghi"));
+ // absolute bulk get
+ char[] c = new char[end + 1 - (start - 1) + 1]; // [start - 1, end + 1]
+ b.limit(end + 2);
+ b.get(start - 1, c, 0, c.length);
+ for (int i = 0; i < c.length; i++)
+ ck(b, c[i], s.charAt(start - 1 + i));
+
// The index, relative to the position, must be non-negative and
// smaller than remaining().
catchIndexOutOfBounds(b, () -> b.charAt(-1));
--- a/test/jdk/java/nio/Buffer/BasicDouble.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/jdk/java/nio/Buffer/BasicDouble.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, 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,18 @@
}
}
+ private static void absBulkGet(DoubleBuffer b) {
+ int n = b.capacity();
+ int len = n - 7*2;
+ double[] a = new double[n + 7];
+ b.position(42);
+ b.get(7, a, 7, len);
+ ck(b, b.position() == 42);
+ for (int i = 0; i < len; i++) {
+ ck(b, (long)a[i + 7], (long)((double)ic(i)));
+ }
+ }
+
private static void relPut(DoubleBuffer b) {
int n = b.capacity();
b.clear();
@@ -136,6 +148,20 @@
}
}
+ private static void absBulkPutArray(DoubleBuffer b) {
+ int n = b.capacity();
+ b.clear();
+ int lim = n - 7;
+ int len = lim - 7;
+ b.limit(lim);
+ double[] a = new double[len + 7];
+ for (int i = 0; i < len; i++)
+ a[i + 7] = (double)ic(i);
+ b.position(42);
+ b.put(7, a, 7, len);
+ ck(b, b.position() == 42);
+ }
+
//6231529
private static void callReset(DoubleBuffer b) {
b.position(0);
@@ -452,6 +478,10 @@
fail(problem + String.format(": x=%s y=%s", x, y), xb, yb);
}
+ private static void catchNullArgument(Buffer b, Runnable thunk) {
+ tryCatch(b, NullPointerException.class, thunk);
+ }
+
private static void catchIllegalArgument(Buffer b, Runnable thunk) {
tryCatch(b, IllegalArgumentException.class, thunk);
}
@@ -476,7 +506,10 @@
if (ex.isAssignableFrom(x.getClass())) {
caught = true;
} else {
- fail(x.getMessage() + " not expected");
+ String s = x.getMessage();
+ if (s == null)
+ s = x.getClass().getName();
+ fail(s + " not expected");
}
}
if (!caught) {
@@ -513,6 +546,9 @@
bulkPutBuffer(b);
relGet(b);
+ absBulkPutArray(b);
+ absBulkGet(b);
+
@@ -612,6 +648,26 @@
}
}
+ // Exceptions in absolute bulk operations
+
+ catchNullArgument(b, () -> b.get(7, null, 0, 42));
+ catchNullArgument(b, () -> b.put(7, (double[])null, 0, 42));
+
+ double[] tmpa = new double[42];
+ catchIndexOutOfBounds(b, () -> b.get(7, tmpa, -1, 42));
+ catchIndexOutOfBounds(b, () -> b.get(7, tmpa, 42, 1));
+ catchIndexOutOfBounds(b, () -> b.get(7, tmpa, 41, -1));
+ catchIndexOutOfBounds(b, () -> b.get(-1, tmpa, 0, 1));
+ catchIndexOutOfBounds(b, () -> b.get(b.limit(), tmpa, 0, 1));
+ catchIndexOutOfBounds(b, () -> b.get(b.limit() - 41, tmpa, 0, 42));
+
+ catchIndexOutOfBounds(b, () -> b.put(7, tmpa, -1, 42));
+ catchIndexOutOfBounds(b, () -> b.put(7, tmpa, 42, 1));
+ catchIndexOutOfBounds(b, () -> b.put(7, tmpa, 41, -1));
+ catchIndexOutOfBounds(b, () -> b.put(-1, tmpa, 0, 1));
+ catchIndexOutOfBounds(b, () -> b.put(b.limit(), tmpa, 0, 1));
+ catchIndexOutOfBounds(b, () -> b.put(b.limit() - 41, tmpa, 0, 42));
+
// Values
b.clear();
@@ -819,6 +875,7 @@
catchReadOnlyBuffer(b, () -> absPut(rb));
catchReadOnlyBuffer(b, () -> bulkPutArray(rb));
catchReadOnlyBuffer(b, () -> bulkPutBuffer(rb));
+ catchReadOnlyBuffer(b, () -> absBulkPutArray(rb));
// put(DoubleBuffer) should not change source position
final DoubleBuffer src = DoubleBuffer.allocate(1);
@@ -928,6 +985,13 @@
+
+
+
+
+
+
+
public static void test(final double [] ba) {
int offset = 47;
int length = 900;
--- a/test/jdk/java/nio/Buffer/BasicFloat.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/jdk/java/nio/Buffer/BasicFloat.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, 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,18 @@
}
}
+ private static void absBulkGet(FloatBuffer b) {
+ int n = b.capacity();
+ int len = n - 7*2;
+ float[] a = new float[n + 7];
+ b.position(42);
+ b.get(7, a, 7, len);
+ ck(b, b.position() == 42);
+ for (int i = 0; i < len; i++) {
+ ck(b, (long)a[i + 7], (long)((float)ic(i)));
+ }
+ }
+
private static void relPut(FloatBuffer b) {
int n = b.capacity();
b.clear();
@@ -136,6 +148,20 @@
}
}
+ private static void absBulkPutArray(FloatBuffer b) {
+ int n = b.capacity();
+ b.clear();
+ int lim = n - 7;
+ int len = lim - 7;
+ b.limit(lim);
+ float[] a = new float[len + 7];
+ for (int i = 0; i < len; i++)
+ a[i + 7] = (float)ic(i);
+ b.position(42);
+ b.put(7, a, 7, len);
+ ck(b, b.position() == 42);
+ }
+
//6231529
private static void callReset(FloatBuffer b) {
b.position(0);
@@ -452,6 +478,10 @@
fail(problem + String.format(": x=%s y=%s", x, y), xb, yb);
}
+ private static void catchNullArgument(Buffer b, Runnable thunk) {
+ tryCatch(b, NullPointerException.class, thunk);
+ }
+
private static void catchIllegalArgument(Buffer b, Runnable thunk) {
tryCatch(b, IllegalArgumentException.class, thunk);
}
@@ -476,7 +506,10 @@
if (ex.isAssignableFrom(x.getClass())) {
caught = true;
} else {
- fail(x.getMessage() + " not expected");
+ String s = x.getMessage();
+ if (s == null)
+ s = x.getClass().getName();
+ fail(s + " not expected");
}
}
if (!caught) {
@@ -513,6 +546,9 @@
bulkPutBuffer(b);
relGet(b);
+ absBulkPutArray(b);
+ absBulkGet(b);
+
@@ -612,6 +648,26 @@
}
}
+ // Exceptions in absolute bulk operations
+
+ catchNullArgument(b, () -> b.get(7, null, 0, 42));
+ catchNullArgument(b, () -> b.put(7, (float[])null, 0, 42));
+
+ float[] tmpa = new float[42];
+ catchIndexOutOfBounds(b, () -> b.get(7, tmpa, -1, 42));
+ catchIndexOutOfBounds(b, () -> b.get(7, tmpa, 42, 1));
+ catchIndexOutOfBounds(b, () -> b.get(7, tmpa, 41, -1));
+ catchIndexOutOfBounds(b, () -> b.get(-1, tmpa, 0, 1));
+ catchIndexOutOfBounds(b, () -> b.get(b.limit(), tmpa, 0, 1));
+ catchIndexOutOfBounds(b, () -> b.get(b.limit() - 41, tmpa, 0, 42));
+
+ catchIndexOutOfBounds(b, () -> b.put(7, tmpa, -1, 42));
+ catchIndexOutOfBounds(b, () -> b.put(7, tmpa, 42, 1));
+ catchIndexOutOfBounds(b, () -> b.put(7, tmpa, 41, -1));
+ catchIndexOutOfBounds(b, () -> b.put(-1, tmpa, 0, 1));
+ catchIndexOutOfBounds(b, () -> b.put(b.limit(), tmpa, 0, 1));
+ catchIndexOutOfBounds(b, () -> b.put(b.limit() - 41, tmpa, 0, 42));
+
// Values
b.clear();
@@ -819,6 +875,7 @@
catchReadOnlyBuffer(b, () -> absPut(rb));
catchReadOnlyBuffer(b, () -> bulkPutArray(rb));
catchReadOnlyBuffer(b, () -> bulkPutBuffer(rb));
+ catchReadOnlyBuffer(b, () -> absBulkPutArray(rb));
// put(FloatBuffer) should not change source position
final FloatBuffer src = FloatBuffer.allocate(1);
@@ -928,6 +985,13 @@
+
+
+
+
+
+
+
public static void test(final float [] ba) {
int offset = 47;
int length = 900;
--- a/test/jdk/java/nio/Buffer/BasicInt.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/jdk/java/nio/Buffer/BasicInt.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, 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,18 @@
}
}
+ private static void absBulkGet(IntBuffer b) {
+ int n = b.capacity();
+ int len = n - 7*2;
+ int[] a = new int[n + 7];
+ b.position(42);
+ b.get(7, a, 7, len);
+ ck(b, b.position() == 42);
+ for (int i = 0; i < len; i++) {
+ ck(b, (long)a[i + 7], (long)((int)ic(i)));
+ }
+ }
+
private static void relPut(IntBuffer b) {
int n = b.capacity();
b.clear();
@@ -136,6 +148,20 @@
}
}
+ private static void absBulkPutArray(IntBuffer b) {
+ int n = b.capacity();
+ b.clear();
+ int lim = n - 7;
+ int len = lim - 7;
+ b.limit(lim);
+ int[] a = new int[len + 7];
+ for (int i = 0; i < len; i++)
+ a[i + 7] = (int)ic(i);
+ b.position(42);
+ b.put(7, a, 7, len);
+ ck(b, b.position() == 42);
+ }
+
//6231529
private static void callReset(IntBuffer b) {
b.position(0);
@@ -452,6 +478,10 @@
fail(problem + String.format(": x=%s y=%s", x, y), xb, yb);
}
+ private static void catchNullArgument(Buffer b, Runnable thunk) {
+ tryCatch(b, NullPointerException.class, thunk);
+ }
+
private static void catchIllegalArgument(Buffer b, Runnable thunk) {
tryCatch(b, IllegalArgumentException.class, thunk);
}
@@ -476,7 +506,10 @@
if (ex.isAssignableFrom(x.getClass())) {
caught = true;
} else {
- fail(x.getMessage() + " not expected");
+ String s = x.getMessage();
+ if (s == null)
+ s = x.getClass().getName();
+ fail(s + " not expected");
}
}
if (!caught) {
@@ -513,6 +546,9 @@
bulkPutBuffer(b);
relGet(b);
+ absBulkPutArray(b);
+ absBulkGet(b);
+
@@ -612,6 +648,26 @@
}
}
+ // Exceptions in absolute bulk operations
+
+ catchNullArgument(b, () -> b.get(7, null, 0, 42));
+ catchNullArgument(b, () -> b.put(7, (int[])null, 0, 42));
+
+ int[] tmpa = new int[42];
+ catchIndexOutOfBounds(b, () -> b.get(7, tmpa, -1, 42));
+ catchIndexOutOfBounds(b, () -> b.get(7, tmpa, 42, 1));
+ catchIndexOutOfBounds(b, () -> b.get(7, tmpa, 41, -1));
+ catchIndexOutOfBounds(b, () -> b.get(-1, tmpa, 0, 1));
+ catchIndexOutOfBounds(b, () -> b.get(b.limit(), tmpa, 0, 1));
+ catchIndexOutOfBounds(b, () -> b.get(b.limit() - 41, tmpa, 0, 42));
+
+ catchIndexOutOfBounds(b, () -> b.put(7, tmpa, -1, 42));
+ catchIndexOutOfBounds(b, () -> b.put(7, tmpa, 42, 1));
+ catchIndexOutOfBounds(b, () -> b.put(7, tmpa, 41, -1));
+ catchIndexOutOfBounds(b, () -> b.put(-1, tmpa, 0, 1));
+ catchIndexOutOfBounds(b, () -> b.put(b.limit(), tmpa, 0, 1));
+ catchIndexOutOfBounds(b, () -> b.put(b.limit() - 41, tmpa, 0, 42));
+
// Values
b.clear();
@@ -819,6 +875,7 @@
catchReadOnlyBuffer(b, () -> absPut(rb));
catchReadOnlyBuffer(b, () -> bulkPutArray(rb));
catchReadOnlyBuffer(b, () -> bulkPutBuffer(rb));
+ catchReadOnlyBuffer(b, () -> absBulkPutArray(rb));
// put(IntBuffer) should not change source position
final IntBuffer src = IntBuffer.allocate(1);
@@ -928,6 +985,13 @@
+
+
+
+
+
+
+
public static void test(final int [] ba) {
int offset = 47;
int length = 900;
--- a/test/jdk/java/nio/Buffer/BasicLong.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/jdk/java/nio/Buffer/BasicLong.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, 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,18 @@
}
}
+ private static void absBulkGet(LongBuffer b) {
+ int n = b.capacity();
+ int len = n - 7*2;
+ long[] a = new long[n + 7];
+ b.position(42);
+ b.get(7, a, 7, len);
+ ck(b, b.position() == 42);
+ for (int i = 0; i < len; i++) {
+ ck(b, (long)a[i + 7], (long)((long)ic(i)));
+ }
+ }
+
private static void relPut(LongBuffer b) {
int n = b.capacity();
b.clear();
@@ -136,6 +148,20 @@
}
}
+ private static void absBulkPutArray(LongBuffer b) {
+ int n = b.capacity();
+ b.clear();
+ int lim = n - 7;
+ int len = lim - 7;
+ b.limit(lim);
+ long[] a = new long[len + 7];
+ for (int i = 0; i < len; i++)
+ a[i + 7] = (long)ic(i);
+ b.position(42);
+ b.put(7, a, 7, len);
+ ck(b, b.position() == 42);
+ }
+
//6231529
private static void callReset(LongBuffer b) {
b.position(0);
@@ -452,6 +478,10 @@
fail(problem + String.format(": x=%s y=%s", x, y), xb, yb);
}
+ private static void catchNullArgument(Buffer b, Runnable thunk) {
+ tryCatch(b, NullPointerException.class, thunk);
+ }
+
private static void catchIllegalArgument(Buffer b, Runnable thunk) {
tryCatch(b, IllegalArgumentException.class, thunk);
}
@@ -476,7 +506,10 @@
if (ex.isAssignableFrom(x.getClass())) {
caught = true;
} else {
- fail(x.getMessage() + " not expected");
+ String s = x.getMessage();
+ if (s == null)
+ s = x.getClass().getName();
+ fail(s + " not expected");
}
}
if (!caught) {
@@ -513,6 +546,9 @@
bulkPutBuffer(b);
relGet(b);
+ absBulkPutArray(b);
+ absBulkGet(b);
+
@@ -612,6 +648,26 @@
}
}
+ // Exceptions in absolute bulk operations
+
+ catchNullArgument(b, () -> b.get(7, null, 0, 42));
+ catchNullArgument(b, () -> b.put(7, (long[])null, 0, 42));
+
+ long[] tmpa = new long[42];
+ catchIndexOutOfBounds(b, () -> b.get(7, tmpa, -1, 42));
+ catchIndexOutOfBounds(b, () -> b.get(7, tmpa, 42, 1));
+ catchIndexOutOfBounds(b, () -> b.get(7, tmpa, 41, -1));
+ catchIndexOutOfBounds(b, () -> b.get(-1, tmpa, 0, 1));
+ catchIndexOutOfBounds(b, () -> b.get(b.limit(), tmpa, 0, 1));
+ catchIndexOutOfBounds(b, () -> b.get(b.limit() - 41, tmpa, 0, 42));
+
+ catchIndexOutOfBounds(b, () -> b.put(7, tmpa, -1, 42));
+ catchIndexOutOfBounds(b, () -> b.put(7, tmpa, 42, 1));
+ catchIndexOutOfBounds(b, () -> b.put(7, tmpa, 41, -1));
+ catchIndexOutOfBounds(b, () -> b.put(-1, tmpa, 0, 1));
+ catchIndexOutOfBounds(b, () -> b.put(b.limit(), tmpa, 0, 1));
+ catchIndexOutOfBounds(b, () -> b.put(b.limit() - 41, tmpa, 0, 42));
+
// Values
b.clear();
@@ -819,6 +875,7 @@
catchReadOnlyBuffer(b, () -> absPut(rb));
catchReadOnlyBuffer(b, () -> bulkPutArray(rb));
catchReadOnlyBuffer(b, () -> bulkPutBuffer(rb));
+ catchReadOnlyBuffer(b, () -> absBulkPutArray(rb));
// put(LongBuffer) should not change source position
final LongBuffer src = LongBuffer.allocate(1);
@@ -928,6 +985,13 @@
+
+
+
+
+
+
+
public static void test(final long [] ba) {
int offset = 47;
int length = 900;
--- a/test/jdk/java/nio/Buffer/BasicShort.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/jdk/java/nio/Buffer/BasicShort.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, 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,18 @@
}
}
+ private static void absBulkGet(ShortBuffer b) {
+ int n = b.capacity();
+ int len = n - 7*2;
+ short[] a = new short[n + 7];
+ b.position(42);
+ b.get(7, a, 7, len);
+ ck(b, b.position() == 42);
+ for (int i = 0; i < len; i++) {
+ ck(b, (long)a[i + 7], (long)((short)ic(i)));
+ }
+ }
+
private static void relPut(ShortBuffer b) {
int n = b.capacity();
b.clear();
@@ -136,6 +148,20 @@
}
}
+ private static void absBulkPutArray(ShortBuffer b) {
+ int n = b.capacity();
+ b.clear();
+ int lim = n - 7;
+ int len = lim - 7;
+ b.limit(lim);
+ short[] a = new short[len + 7];
+ for (int i = 0; i < len; i++)
+ a[i + 7] = (short)ic(i);
+ b.position(42);
+ b.put(7, a, 7, len);
+ ck(b, b.position() == 42);
+ }
+
//6231529
private static void callReset(ShortBuffer b) {
b.position(0);
@@ -452,6 +478,10 @@
fail(problem + String.format(": x=%s y=%s", x, y), xb, yb);
}
+ private static void catchNullArgument(Buffer b, Runnable thunk) {
+ tryCatch(b, NullPointerException.class, thunk);
+ }
+
private static void catchIllegalArgument(Buffer b, Runnable thunk) {
tryCatch(b, IllegalArgumentException.class, thunk);
}
@@ -476,7 +506,10 @@
if (ex.isAssignableFrom(x.getClass())) {
caught = true;
} else {
- fail(x.getMessage() + " not expected");
+ String s = x.getMessage();
+ if (s == null)
+ s = x.getClass().getName();
+ fail(s + " not expected");
}
}
if (!caught) {
@@ -513,6 +546,9 @@
bulkPutBuffer(b);
relGet(b);
+ absBulkPutArray(b);
+ absBulkGet(b);
+
@@ -612,6 +648,26 @@
}
}
+ // Exceptions in absolute bulk operations
+
+ catchNullArgument(b, () -> b.get(7, null, 0, 42));
+ catchNullArgument(b, () -> b.put(7, (short[])null, 0, 42));
+
+ short[] tmpa = new short[42];
+ catchIndexOutOfBounds(b, () -> b.get(7, tmpa, -1, 42));
+ catchIndexOutOfBounds(b, () -> b.get(7, tmpa, 42, 1));
+ catchIndexOutOfBounds(b, () -> b.get(7, tmpa, 41, -1));
+ catchIndexOutOfBounds(b, () -> b.get(-1, tmpa, 0, 1));
+ catchIndexOutOfBounds(b, () -> b.get(b.limit(), tmpa, 0, 1));
+ catchIndexOutOfBounds(b, () -> b.get(b.limit() - 41, tmpa, 0, 42));
+
+ catchIndexOutOfBounds(b, () -> b.put(7, tmpa, -1, 42));
+ catchIndexOutOfBounds(b, () -> b.put(7, tmpa, 42, 1));
+ catchIndexOutOfBounds(b, () -> b.put(7, tmpa, 41, -1));
+ catchIndexOutOfBounds(b, () -> b.put(-1, tmpa, 0, 1));
+ catchIndexOutOfBounds(b, () -> b.put(b.limit(), tmpa, 0, 1));
+ catchIndexOutOfBounds(b, () -> b.put(b.limit() - 41, tmpa, 0, 42));
+
// Values
b.clear();
@@ -819,6 +875,7 @@
catchReadOnlyBuffer(b, () -> absPut(rb));
catchReadOnlyBuffer(b, () -> bulkPutArray(rb));
catchReadOnlyBuffer(b, () -> bulkPutBuffer(rb));
+ catchReadOnlyBuffer(b, () -> absBulkPutArray(rb));
// put(ShortBuffer) should not change source position
final ShortBuffer src = ShortBuffer.allocate(1);
@@ -928,6 +985,13 @@
+
+
+
+
+
+
+
public static void test(final short [] ba) {
int offset = 47;
int length = 900;
--- a/test/jdk/java/util/Base64/TestEncodingDecodingLength.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/jdk/java/util/Base64/TestEncodingDecodingLength.java Fri Feb 22 12:05:05 2019 +0530
@@ -30,7 +30,7 @@
* @bug 8210583 8217969 8218265
* @summary Tests Base64.Encoder.encode and Base64.Decoder.decode
* with the large size of input array/buffer
- * @requires os.maxMemory >= 8g
+ * @requires os.maxMemory >= 10g
* @run main/othervm -Xms6g -Xmx8g TestEncodingDecodingLength
*
*/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/util/logging/IsLoggableHandlerTest.java Fri Feb 22 12:05:05 2019 +0530
@@ -0,0 +1,96 @@
+/*
+ * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8216363
+ * @summary Test that Handler.isLoggable(null) returns false
+ * @run main/othervm IsLoggableHandlerTest
+ */
+import java.io.File;
+import java.io.IOException;
+import java.util.UUID;
+import java.util.logging.ConsoleHandler;
+import java.util.logging.FileHandler;
+import java.util.logging.Handler;
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
+import java.util.logging.MemoryHandler;
+import java.util.logging.StreamHandler;
+import java.util.stream.Stream;
+
+public class IsLoggableHandlerTest {
+
+
+ public static void main(String... args) throws IOException {
+ String userDir = System.getProperty("user.dir", ".");
+ File logfile = new File(userDir, "IsLoggableHandlerTest_" + UUID.randomUUID() + ".log");
+ try {
+ System.out.println("Dummy logfile: " + logfile.getAbsolutePath());
+ Handler h = new CustomHandler();
+ testIsLoggable(h);
+ testIsLoggable(new MemoryHandler(h, 1, Level.ALL));
+ testIsLoggable(new StreamHandler(System.out, new java.util.logging.SimpleFormatter()));
+ testIsLoggable(new FileHandler(logfile.getAbsolutePath()));
+ testIsLoggable(new ConsoleHandler());
+ } finally {
+ if (logfile.canRead()) {
+ try {
+ System.out.println("Deleting dummy logfile: " + logfile.getAbsolutePath());
+ logfile.delete();
+ } catch (Throwable t) {
+ System.out.println("Warning: failed to delete dummy logfile: " + t);
+ t.printStackTrace();
+ }
+ }
+ }
+ }
+
+ public static void testIsLoggable(Handler h) {
+ System.out.println("Testing " + h.getClass().getName());
+ // should not throw NPE but return false
+ if (h.isLoggable(null)) {
+ throw new AssertionError(h.getClass().getName()
+ + ": null record should not be loggable");
+ }
+ h.setLevel(Level.ALL);
+ // should still not throw NPE but return false
+ if (h.isLoggable(null)) {
+ throw new AssertionError(h.getClass().getName()
+ + ": null record should not be loggable");
+ }
+ // should not throw NPE
+ h.publish(null);
+ }
+
+ public static final class CustomHandler extends Handler {
+ @Override
+ public void publish(LogRecord record) { }
+ @Override
+ public void flush() { }
+ @Override
+ public void close() throws SecurityException { }
+ }
+
+
+}
--- a/test/jdk/java/util/logging/TestLoggerWeakRefLeak.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/jdk/java/util/logging/TestLoggerWeakRefLeak.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2019, 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
@@ -123,7 +123,7 @@
}
/**
- * 'vm.heapHisto("-live")' will request a full GC
+ * 'vm.heapHisto("", "-live")' will request a full GC
*/
private static int getInstanceCountFromHeapHisto() throws AttachNotSupportedException, Exception {
int instanceCount = 0;
@@ -131,7 +131,7 @@
HotSpotVirtualMachine vm = (HotSpotVirtualMachine) VirtualMachine
.attach(Long.toString(ProcessTools.getProcessId()));
try {
- try (InputStream heapHistoStream = vm.heapHisto("-live");
+ try (InputStream heapHistoStream = vm.heapHisto("", "-live");
BufferedReader in = new BufferedReader(new InputStreamReader(heapHistoStream))) {
String inputLine;
while ((inputLine = in.readLine()) != null) {
--- a/test/jdk/javax/net/ssl/interop/ClientHelloBufferUnderflowException.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/jdk/javax/net/ssl/interop/ClientHelloBufferUnderflowException.java Fri Feb 22 12:05:05 2019 +0530
@@ -28,7 +28,7 @@
/*
* @test
- * @bug 8215790
+ * @bug 8215790 8219389
* @summary Verify exception
* @modules java.base/sun.security.util
* @run main/othervm ClientHelloBufferUnderflowException
@@ -45,12 +45,15 @@
try {
(new ClientHelloBufferUnderflowException()).run();
} catch (SSLHandshakeException e) {
- System.out.println("Correct exception thrown");
+ System.out.println("Correct exception thrown: " + e);
+ return;
} catch (Exception e) {
System.out.println("Failed: Exception not SSLHandShakeException");
System.out.println(e.getMessage());
throw e;
}
+
+ throw new Exception("No expected exception");
}
@Override
@@ -76,6 +79,7 @@
} catch (Exception e) {
// ignore
}
+
return bytes;
}
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/jdk/internal/jline/AbstractWindowsTerminalTest.java Fri Feb 22 12:05:05 2019 +0530
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * @test
+ * @bug 8218287
+ * @summary Verify the wrapper input stream is used when using Terminal.reader()
+ * @modules jdk.internal.le/jdk.internal.org.jline.terminal
+ * jdk.internal.le/jdk.internal.org.jline.terminal.impl
+ * jdk.internal.le/jdk.internal.org.jline.utils
+ */
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringWriter;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.function.Function;
+
+import jdk.internal.org.jline.terminal.Size;
+import jdk.internal.org.jline.terminal.Terminal.SignalHandler;
+import jdk.internal.org.jline.terminal.impl.AbstractWindowsTerminal;
+
+
+public class AbstractWindowsTerminalTest {
+ public static void main(String... args) throws IOException {
+ new AbstractWindowsTerminalTest().run();
+ }
+
+ void run() throws IOException {
+ var out = new StringWriter();
+ AtomicBoolean called = new AtomicBoolean();
+ Function<InputStream, InputStream> isWrapper = is -> new InputStream() {
+ @Override
+ public int read() throws IOException {
+ called.set(true);
+ return is.read();
+ }
+ };
+ var t = new AbstractWindowsTerminal(out, "test", "vt100", null, -1, false, SignalHandler.SIG_DFL, isWrapper) {
+ @Override
+ protected int getConsoleOutputCP() {
+ throw new UnsupportedOperationException("unexpected.");
+ }
+
+ @Override
+ protected int getConsoleMode() {
+ return -1;
+ }
+
+ @Override
+ protected void setConsoleMode(int mode) {
+ throw new UnsupportedOperationException("unexpected.");
+ }
+
+ @Override
+ protected boolean processConsoleInput() throws IOException {
+ throw new UnsupportedOperationException("unexpected.");
+ }
+
+ @Override
+ public Size getSize() {
+ throw new UnsupportedOperationException("unexpected.");
+ }
+ };
+ t.processInputChar(' ');
+ if (t.reader().read() != ' ') {
+ throw new AssertionError("Unexpected input!");
+ }
+ if (!called.get()) {
+ throw new AssertionError("The wrapper was not called!");
+ }
+ }
+}
--- a/test/jdk/sun/security/ssl/SSLContextImpl/BadKSProvider.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/jdk/sun/security/ssl/SSLContextImpl/BadKSProvider.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2019, 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
@@ -21,14 +21,16 @@
* questions.
*/
+//
+// SunJSSE does not support dynamic system properties, no way to re-use
+// system properties in samevm/agentvm mode.
+//
+
/*
* @test
- * @bug 4919147
+ * @bug 4919147 8168069
* @summary Support for token-based KeyStores
* @run main/othervm BadKSProvider
- *
- * SunJSSE does not support dynamic system properties, no way to re-use
- * system properties in samevm/agentvm mode.
*/
import java.io.*;
@@ -176,16 +178,16 @@
// catching the exception is ok,
// but let's try to confirm it is the right exception.
//
- // XXX this test must be updated if the exception message changes
+ // Note: this test must be updated if the exception message changes
Throwable cause = se.getCause();
- if (cause instanceof java.security.NoSuchAlgorithmException == false) {
+ if (!(cause instanceof java.security.NoSuchAlgorithmException)) {
se.printStackTrace();
throw new Exception("Unexpected exception" + se);
}
cause = cause.getCause();
- if (cause instanceof java.security.NoSuchProviderException == false) {
+ if (!(cause instanceof java.security.KeyManagementException)) {
se.printStackTrace();
throw new Exception("Unexpected exception" + se);
}
--- a/test/jdk/sun/security/ssl/SSLContextImpl/BadTSProvider.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/jdk/sun/security/ssl/SSLContextImpl/BadTSProvider.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2019, 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,7 @@
/*
* @test
- * @bug 4919147
+ * @bug 4919147 8168069
* @summary Support for token-based KeyStores
* @run main/othervm BadTSProvider
*/
@@ -175,12 +175,10 @@
new BadTSProvider();
throw new SecurityException("expected no-such-provider exception");
} catch (SocketException se) {
-
// catching the exception is ok,
// but let's try to confirm it is the right exception.
//
- // XXX this test must be updated if the exception message changes
-
+ // Note: this test must be updated if the exception message changes
Throwable cause = se.getCause();
if (!(cause instanceof NoSuchAlgorithmException)) {
se.printStackTrace();
@@ -188,13 +186,7 @@
}
cause = cause.getCause();
- if (!(cause instanceof KeyStoreException)) {
- se.printStackTrace();
- throw new Exception("Unexpected exception" + se);
- }
-
- cause = cause.getCause();
- if (!(cause instanceof NoSuchProviderException)) {
+ if (!(cause instanceof KeyManagementException)) {
se.printStackTrace();
throw new Exception("Unexpected exception" + se);
}
--- a/test/jdk/sun/tools/jmap/BasicJMapTest.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/jdk/sun/tools/jmap/BasicJMapTest.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2019, 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
@@ -50,15 +50,22 @@
public static void main(String[] args) throws Exception {
testHisto();
testHistoLive();
+ testHistoAll();
+ testHistoToFile();
+ testHistoLiveToFile();
+ testHistoAllToFile();
testFinalizerInfo();
testClstats();
testDump();
testDumpLive();
+ testDumpAll();
}
private static void testHisto() throws Exception {
- OutputAnalyzer output = jmap("-histo");
+ OutputAnalyzer output = jmap("-histo:");
output.shouldHaveExitValue(0);
+ OutputAnalyzer output1 = jmap("-histo");
+ output1.shouldHaveExitValue(0);
}
private static void testHistoLive() throws Exception {
@@ -66,6 +73,50 @@
output.shouldHaveExitValue(0);
}
+ private static void testHistoAll() throws Exception {
+ OutputAnalyzer output = jmap("-histo:all");
+ output.shouldHaveExitValue(0);
+ }
+
+ private static void testHistoToFile() throws Exception {
+ histoToFile(false);
+ }
+
+ private static void testHistoLiveToFile() throws Exception {
+ histoToFile(true);
+ }
+
+ private static void testHistoAllToFile() throws Exception {
+ boolean explicitAll = true;
+ histoToFile(false, explicitAll);
+ }
+
+ private static void histoToFile(boolean live) throws Exception {
+ boolean explicitAll = false;
+ histoToFile(live, explicitAll);
+ }
+
+ private static void histoToFile(boolean live, boolean explicitAll) throws Exception {
+ if (live == true && explicitAll == true) {
+ fail("Illegal argument setting for jmap -histo");
+ }
+ File file = new File("jmap.histo.file" + System.currentTimeMillis() + ".histo");
+ if (file.exists()) {
+ file.delete();
+ }
+ OutputAnalyzer output;
+ if (live) {
+ output = jmap("-histo:live,file=" + file.getName());
+ } else if (explicitAll == true) {
+ output = jmap("-histo:all,file=" + file.getName());
+ } else {
+ output = jmap("-histo:file=" + file.getName());
+ }
+ output.shouldHaveExitValue(0);
+ output.shouldContain("Heap inspection file created");
+ file.delete();
+ }
+
private static void testFinalizerInfo() throws Exception {
OutputAnalyzer output = jmap("-finalizerinfo");
output.shouldHaveExitValue(0);
@@ -84,7 +135,20 @@
dump(true);
}
+ private static void testDumpAll() throws Exception {
+ boolean explicitAll = true;
+ dump(false, explicitAll);
+ }
+
private static void dump(boolean live) throws Exception {
+ boolean explicitAll = false;
+ dump(live, explicitAll);
+ }
+
+ private static void dump(boolean live, boolean explicitAll) throws Exception {
+ if (live == true && explicitAll == true) {
+ fail("Illegal argument setting for jmap -dump");
+ }
File dump = new File("jmap.dump." + System.currentTimeMillis() + ".hprof");
if (dump.exists()) {
dump.delete();
@@ -92,6 +156,8 @@
OutputAnalyzer output;
if (live) {
output = jmap("-dump:live,format=b,file=" + dump.getName());
+ } else if (explicitAll == true) {
+ output = jmap("-dump:all,format=b,file=" + dump.getName());
} else {
output = jmap("-dump:format=b,file=" + dump.getName());
}
@@ -121,7 +187,7 @@
launcher.addToolArg(Long.toString(ProcessTools.getProcessId()));
processBuilder.command(launcher.getCommand());
- System.out.println(Arrays.toString(processBuilder.command().toArray()).replace(",", ""));
+ System.out.println(Arrays.toString(processBuilder.command().toArray()));
OutputAnalyzer output = ProcessTools.executeProcess(processBuilder);
System.out.println(output.getOutput());
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/sun/util/locale/provider/CheckLoggingFromLocaleProvider.java Fri Feb 22 12:05:05 2019 +0530
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+ /*
+ * @test
+ * @bug 8218960
+ * @modules java.base/sun.util.locale.provider
+ * @modules java.logging
+ * @summary Check that no CONFIG messages are logged on instantiating
+ * SimpleDateFormat with the language-only locale.
+ * @run main CheckLoggingFromLocaleProvider
+ */
+import java.text.*;
+import java.util.*;
+import java.util.logging.*;
+import sun.util.locale.provider.*;
+
+public class CheckLoggingFromLocaleProvider extends StreamHandler {
+
+ @Override
+ public boolean isLoggable(LogRecord lr) {
+ if (lr.getLevel() == Level.CONFIG &&
+ lr.getLoggerName().equals(
+ LocaleServiceProviderPool.class.getCanonicalName())) {
+ throw new RuntimeException("CONFIG message was logged in " +
+ lr.getLoggerName() + ". Message: " + lr.getMessage());
+ }
+ return false;
+ }
+
+ public CheckLoggingFromLocaleProvider() {
+ setLevel(Level.CONFIG);
+ Logger l = LogManager.getLogManager().getLogger("");
+ l.setLevel(Level.CONFIG);
+ l.addHandler(this);
+
+ new SimpleDateFormat("", Locale.ENGLISH);
+ }
+
+ public static void main(String[] args) {
+ new CheckLoggingFromLocaleProvider();
+ }
+}
--- a/test/langtools/TEST.ROOT Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/TEST.ROOT Fri Feb 22 12:05:05 2019 +0530
@@ -15,7 +15,7 @@
groups=TEST.groups
# Minimum jtreg version
-requiredVersion=4.2 b13
+requiredVersion=4.2 b14
# Use new module options
useNewOptions=true
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/jdk/javadoc/doclet/testJavaPackage/TestJavaPackage.java Fri Feb 22 12:05:05 2019 +0530
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8216170
+ * @summary java.lang.IllegalArgumentException: directories not supported
+ * @library /tools/lib ../../lib
+ * @modules jdk.compiler/com.sun.tools.javac.api
+ * jdk.compiler/com.sun.tools.javac.main
+ * jdk.javadoc/jdk.javadoc.internal.api
+ * jdk.javadoc/jdk.javadoc.internal.tool
+ * @build toolbox.ToolBox javadoc.tester.*
+ * @run main TestJavaPackage
+ */
+
+import java.io.IOException;
+import java.nio.file.Path;
+
+import toolbox.ModuleBuilder;
+import toolbox.ToolBox;
+
+import javadoc.tester.JavadocTester;
+
+public class TestJavaPackage extends JavadocTester {
+ public static void main(String... args) throws Exception {
+ TestJavaPackage tester = new TestJavaPackage();
+ tester.runTests();
+ }
+
+ private final ToolBox tb = new ToolBox();
+
+ @Test
+ public void testPackage() throws IOException {
+ Path src = Path.of("src");
+ tb.writeJavaFiles(src,
+ "module com.example.java { exports com.example.java; }",
+ "package com.example.java; public class C { }");
+
+ // Disable the standard check that the output directory is empty.
+ // It is a significant part of the test case that the output directory
+ // is set to the current directory, which (in this case) also contains
+ // the src/ directory.
+ setOutputDirectoryCheck(DirectoryCheck.NONE);
+
+ javadoc("-d", ".", // using "." is important for the test case
+ "-sourcepath", src.toString(),
+ "com.example.java");
+ checkExit(Exit.OK);
+ checkFiles(true,
+ "com.example.java/com/example/java/C.html");
+
+ // repeat the call, to verify the package name "com.example.java" is not
+ // confused with the output directory for the "com.example.java" module,
+ // created by the first call
+
+ javadoc("-d", ".", // using "." is important for the test case
+ "-sourcepath", src.toString(),
+ "com.example.java");
+ checkExit(Exit.OK);
+ checkFiles(true,
+ "com.example.java/com/example/java/C.html");
+ }
+}
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/jdk/javadoc/doclet/testMetadata/TestMetadata.java Fri Feb 22 12:05:05 2019 +0530
@@ -0,0 +1,357 @@
+/*
+ * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8218998
+ * @summary Add metadata to generated API documentation files
+ * @library /tools/lib ../../lib
+ * @modules jdk.javadoc/jdk.javadoc.internal.tool
+ * @modules jdk.compiler/com.sun.tools.javac.api
+ * jdk.compiler/com.sun.tools.javac.main
+ * jdk.javadoc/jdk.javadoc.internal.api
+ * jdk.javadoc/jdk.javadoc.internal.tool
+ * @build toolbox.ToolBox toolbox.JavacTask javadoc.tester.*
+ * @run main TestMetadata
+ */
+
+import java.io.IOException;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.TreeSet;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+import toolbox.ModuleBuilder;
+import toolbox.ToolBox;
+
+import javadoc.tester.JavadocTester;
+
+public class TestMetadata extends JavadocTester {
+ public static void main(String... args) throws Exception {
+ TestMetadata tester = new TestMetadata();
+ tester.runTests();
+ }
+
+ enum Frames { NO_FRAMES, FRAMES };
+ enum Index { SINGLE, SPLIT };
+ enum Source { PACKAGES, MODULES };
+
+ final ToolBox tb = new ToolBox();
+ final Set<String> allGeneratorsFound = new HashSet<>();
+
+ public void runTests() throws Exception {
+ for (Source s : Source.values()) {
+ Path src = genSource(s);
+ for (Frames f : Frames.values()) {
+ for (Index i : Index.values()) {
+ List<String> args = new ArrayList<>();
+ args.add("-d");
+ args.add(String.format("out-%s-%s-%s", s, f, i));
+ args.add("-use");
+ if (s != Source.MODULES) {
+ args.add("-linksource"); // broken, with modules: JDK-8219060
+ }
+ args.add(f == Frames.NO_FRAMES ? "--no-frames" : "--frames");
+ if (i == Index.SPLIT) {
+ args.add("-splitIndex");
+ }
+ if (s == Source.PACKAGES) {
+ args.add("-sourcepath");
+ args.add(src.toString());
+ args.add("pA");
+ args.add("pB");
+ } else {
+ args.add("--module-source-path");
+ args.add(src.toString());
+ args.add("--module");
+ args.add("mA,mB");
+ }
+ javadoc(args.toArray(new String[args.size()]));
+ checkExit(Exit.OK);
+ checkMetadata();
+
+ // spot check the descriptions for declarations
+ switch (s) {
+ case PACKAGES:
+ checkOutput("pA/package-summary.html", true,
+ "<meta name=\"description\" content=\"declaration: package: pA\">");
+ checkOutput("pA/CA.html", true,
+ "<meta name=\"description\" content=\"declaration: package: pA, class: CA\">");
+ break;
+
+ case MODULES:
+ checkOutput("mA/module-summary.html", true,
+ "<meta name=\"description\" content=\"declaration: module: mA\">");
+ checkOutput("mA/pA/package-summary.html", true,
+ "<meta name=\"description\" content=\"declaration: module: mA, package: pA\">");
+ checkOutput("mA/pA/CA.html", true,
+ "<meta name=\"description\" content=\"declaration: module: mA, package: pA, class: CA\">");
+ break;
+ }
+ }
+ }
+ }
+
+ checking ("all generators");
+ if (allGeneratorsFound.equals(allGenerators)) {
+ passed("all generators found");
+ } else {
+ Set<String> notFound = new TreeSet<>(allGenerators);
+ notFound.removeAll(allGeneratorsFound);
+ failed("not found: " + notFound);
+ }
+
+ printSummary();
+ }
+
+ final Pattern nl = Pattern.compile("[\\r\\n]+");
+ final Pattern contentPattern = Pattern.compile("content=\"([^\"]+)\">");
+ final Pattern generatorPattern = Pattern.compile("content=\"javadoc/([^\"]+)\">");
+ final Set<String> allGenerators = Set.of(
+ "AllClassesFrameWriter",
+ "AllClassesIndexWriter",
+ "AllPackagesIndexWriter",
+ "AnnotationTypeWriterImpl",
+ "ClassUseWriter",
+ "ClassWriterImpl",
+ "ConstantsSummaryWriterImpl",
+ "DeprecatedListWriter",
+ "DocFileWriter",
+ "FrameOutputWriter",
+ "HelpWriter",
+ "IndexRedirectWriter",
+ "ModuleFrameWriter",
+ "ModuleIndexFrameWriter",
+ "ModuleIndexWriter",
+ "ModulePackageIndexFrameWriter",
+ "ModuleWriterImpl",
+ "PackageFrameWriter",
+ "PackageIndexFrameWriter",
+ "PackageIndexWriter",
+ "PackageTreeWriter",
+ "PackageUseWriter",
+ "PackageWriterImpl",
+ "SerializedFormWriterImpl",
+ "SingleIndexWriter",
+ "SourceToHTMLConverter",
+ "SplitIndexWriter",
+ "TreeWriter"
+ );
+
+ void checkMetadata() throws IOException {
+ Path outputDirPath = outputDir.toPath();
+ for (Path p : tb.findFiles(".html", outputDirPath)) {
+ checkMetadata(outputDirPath.relativize(p));
+ }
+ }
+
+ void checkMetadata(Path p) {
+ checking("Check generator: " + p);
+
+ List<String> generators = nl.splitAsStream(readOutputFile(p.toString()))
+ .filter(s -> s.contains("<meta name=\"generator\""))
+ .collect(Collectors.toList());
+
+ String generator;
+ switch (generators.size()) {
+ case 0:
+ failed("Not found: <meta name=\"generator\"");
+ return;
+ case 1:
+ generator = generators.get(0);
+ break;
+ default:
+ failed("Multiple found: <meta name=\"generator\"");
+ return;
+ }
+
+ Matcher m = generatorPattern.matcher(generator);
+ if (m.find()) {
+ String content = m.group(1);
+ if (allGenerators.contains(content)) {
+ passed("found: " + content);
+ allGeneratorsFound.add(content);
+ checkDescription(p, content);
+ } else {
+ failed("Unrecognized content: " + content);
+ }
+ } else {
+ failed("Unrecognized line:\n" + generator);
+ }
+
+ }
+
+ void checkDescription(Path p, String generator) {
+ checking("Check description: " + p);
+
+ List<String> descriptions = nl.splitAsStream(readOutputFile(p.toString()))
+ .filter(s -> s.contains("<meta name=\"description\""))
+ .collect(Collectors.toList());
+
+ String description;
+ switch (descriptions.size()) {
+ case 0:
+ if (generator.equals("DocFileWriter")) {
+ passed("Not found, as expected");
+ } else {
+ failed("Not found: <meta name=\"description\"");
+ }
+ return;
+ case 1:
+ description = descriptions.get(0);
+ break;
+ default:
+ failed("Multiple found: <meta name=\"description\"");
+ return;
+ }
+
+ String content;
+ Matcher m = contentPattern.matcher(description);
+ if (m.find()) {
+ content = m.group(1);
+ } else {
+ failed("Unrecognized line:\n" + description);
+ return;
+ }
+
+ switch (generator) {
+ case "AllClassesFrameWriter":
+ case "FrameOutputWriter":
+ case "ModuleFrameWriter":
+ case "ModuleIndexFrameWriter":
+ case "ModulePackageIndexFrameWriter":
+ case "PackageFrameWriter":
+ case "PackageIndexFrameWriter":
+ check(generator, content, content.contains("frame"));
+ break;
+
+ case "AllClassesIndexWriter":
+ case "AllPackagesIndexWriter":
+ case "ModuleIndexWriter":
+ case "PackageIndexWriter":
+ check(generator, content, content.contains("index"));
+ break;
+
+
+ case "AnnotationTypeWriterImpl":
+ case "ClassWriterImpl":
+ case "ModuleWriterImpl":
+ case "PackageWriterImpl":
+ check(generator, content, content.startsWith("declaration: "));
+ break;
+
+ case "ClassUseWriter":
+ case "PackageUseWriter":
+ check(generator, content, content.startsWith("use: "));
+ break;
+
+ case "ConstantsSummaryWriterImpl":
+ check(generator, content, content.contains("constants"));
+ break;
+
+ case "DeprecatedListWriter":
+ check(generator, content, content.contains("deprecated"));
+ break;
+
+ case "DocFileWriter":
+ passed("no constraint for user-provided doc-files");
+ break;
+
+ case "HelpWriter":
+ check(generator, content, content.contains("help"));
+ break;
+
+ case "IndexRedirectWriter":
+ check(generator, content, content.contains("redirect"));
+ break;
+
+ case "PackageTreeWriter":
+ case "TreeWriter":
+ check(generator, content, content.contains("tree"));
+ break;
+
+ case "SerializedFormWriterImpl":
+ check(generator, content, content.contains("serialized"));
+ break;
+
+ case "SingleIndexWriter":
+ case "SplitIndexWriter":
+ check(generator, content, content.startsWith("index"));
+ break;
+
+ case "SourceToHTMLConverter":
+ check(generator, content, content.startsWith("source:"));
+ break;
+
+ default:
+ failed("unexpected generator: " + generator);
+ break;
+ }
+ }
+
+ void check(String generator, String content, boolean ok) {
+ if (ok) {
+ passed("OK: " + generator + " " + content);
+ } else {
+ failed("unexpected value for " + generator + ": " + content);
+ }
+ }
+
+ Path genSource(Source s) throws IOException {
+ Path src = Path.of("src-" + s);
+ switch (s) {
+ case PACKAGES:
+ tb.writeJavaFiles(src,
+ "/** Package pA. */ package pA;",
+ "/** Class pA.CA. */ package pA; public class CA { }",
+ "/** Anno pA.Anno, */ package pA; public @interface Anno { }",
+ "/** Serializable pA.Ser, */ package pA; public class Ser implements java.io.Serializable { }",
+ "/** Package pB. */ package pB;",
+ "/** Class pB.CB. */ package pB; public class CB { }");
+ tb.writeFile(src.resolve("pA").resolve("doc-files").resolve("extra.html"),
+ "<!doctype html>\n<html><head></head><body>Extra</body></html>");
+ break;
+
+ case MODULES:
+ new ModuleBuilder(tb, "mA")
+ .exports("pA")
+ .classes("/** Package mA/pA. */ package pA;")
+ .classes("/** Class mA/pA.CA. */ package pA; public class CA { }")
+ .write(src);
+ new ModuleBuilder(tb, "mB")
+ .exports("pB")
+ .classes("/** Package mB/pB. */ package pB;")
+ .classes("/** Class mB/pB.CB. */ package pB; public class CB { }")
+ .write(src);
+ break;
+ }
+
+ return src;
+ }
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/jdk/javadoc/doclet/testPackageSpecificStylesheet/TestPackageSpecificStylesheet.java Fri Feb 22 12:05:05 2019 +0530
@@ -0,0 +1,96 @@
+/*
+ * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8213354
+ * @summary Support package-specific stylesheets
+ * @library /tools/lib ../../lib
+ * @modules jdk.javadoc/jdk.javadoc.internal.tool
+ * @build javadoc.tester.* toolbox.ToolBox builder.ClassBuilder
+ * @run main TestPackageSpecificStylesheet
+ */
+
+
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.List;
+
+import builder.ClassBuilder;
+import toolbox.ToolBox;
+
+import javadoc.tester.JavadocTester;
+
+public class TestPackageSpecificStylesheet extends JavadocTester {
+
+ final ToolBox tb;
+
+ public static void main(String... args) throws Exception {
+ TestPackageSpecificStylesheet tester = new TestPackageSpecificStylesheet();
+ tester.runTests(m -> new Object[]{Paths.get(m.getName())});
+ }
+
+ TestPackageSpecificStylesheet() {
+ tb = new ToolBox();
+ }
+
+ @Test
+ public void test(Path base) throws Exception {
+ Path srcDir = base.resolve("src");
+ Path outDir = base.resolve("out");
+
+ new ClassBuilder(tb, "pkg.A")
+ .setComments("<span>test span style</span>")
+ .setModifiers("public", "class")
+ .write(srcDir);
+
+ Path docFilesDir = Files.createDirectories(srcDir.resolve("pkg").resolve("doc-files"));
+ Path stylesheet = docFilesDir.resolve("spanstyle.css");
+ Files.createFile(stylesheet);
+ Files.write(stylesheet, List.of("span{ color:blue; }"));
+
+ new ClassBuilder(tb, "pkg2.B")
+ .setModifiers("public", "class")
+ .write(srcDir);
+
+ javadoc("-d", outDir.toString(),
+ "-sourcepath", srcDir.toString(),
+ "pkg", "pkg2");
+
+ checkExit(Exit.OK);
+
+ checkOutput("pkg/A.html", true,
+ "<link rel=\"stylesheet\" type=\"text/css\" href=\"doc-files/spanstyle.css\"" +
+ " title=\"Style\">");
+
+ checkOutput("pkg/package-summary.html", true,
+ "<link rel=\"stylesheet\" type=\"text/css\" href=\"doc-files/spanstyle.css\"" +
+ " title=\"Style\">");
+
+ checkOutput("pkg2/B.html", false,
+ "<link rel=\"stylesheet\" type=\"text/css\" href=\"doc-files/spanstyle.css\"" +
+ " title=\"Style\">");
+
+ }
+}
--- a/test/langtools/jdk/javadoc/tool/EncodingTest.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/jdk/javadoc/tool/EncodingTest.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -29,7 +29,7 @@
* @modules jdk.compiler/com.sun.tools.javac.main
* @modules jdk.javadoc/jdk.javadoc.internal.api
* @modules jdk.javadoc/jdk.javadoc.internal.tool
- * @library /tools/lib /tools/javadoc/lib
+ * @library /tools/lib
* @build toolbox.JavacTask toolbox.JavadocTask toolbox.TestRunner toolbox.ToolBox
* @run main EncodingTest
*/
--- a/test/langtools/jdk/javadoc/tool/EnsureNewOldDoclet.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/jdk/javadoc/tool/EnsureNewOldDoclet.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -36,13 +36,11 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
-import java.util.Map;
import java.util.Set;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import javax.lang.model.element.Element;
-import com.sun.javadoc.Tag;
import com.sun.source.doctree.DocTree;
import toolbox.*;
@@ -76,9 +74,6 @@
final static String NEW_DOCLET_MARKER = "NEW_DOCLET_MARKER";
final static String NEW_TAGLET_MARKER = "Registered Taglet " + CLASS_NAME + "\\$NewTaglet";
- final static Pattern WARN_TEXT = Pattern.compile("Users are strongly recommended to migrate" +
- " to the new APIs.");
-
final static String NEW_STDDOCLET = "jdk.javadoc.doclet.StandardDoclet";
@@ -118,23 +113,6 @@
checkOutput(testName, out, NEW_HEADER);
}
- // input: old doclet
- // outcome: old tool
- @Test
- public void testOldDoclet() throws Exception {
- setArgs("-classpath", ".", // ambient classpath insulation
- "-doclet",
- OLD_DOCLET_CLASS_NAME,
- "-docletpath",
- testClasses,
- testSrc.toString());
- Task.Result tr = task.run(Task.Expect.SUCCESS);
- List<String> out = tr.getOutputLines(Task.OutputKind.STDOUT);
- List<String> err = tr.getOutputLines(Task.OutputKind.STDERR);
- checkOutput(testName, out, OLD_DOCLET_MARKER);
- checkOutput(testName, err, WARN_TEXT);
- }
-
// input: new doclet and new taglet
// outcome: new doclet and new taglet should register
@Test
@@ -175,13 +153,6 @@
throw new Exception(testCase + ": Expected string not found: " + toFind);
}
- public static class OldDoclet extends com.sun.javadoc.Doclet {
- public static boolean start(com.sun.javadoc.RootDoc root) {
- System.out.println(OLD_DOCLET_MARKER);
- return true;
- }
- }
-
public static class NewTaglet implements jdk.javadoc.doclet.Taglet {
@Override
--- a/test/langtools/jdk/javadoc/tool/api/basic/GetTask_DocletClassTest.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,163 +0,0 @@
-/*
- * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 6493690
- * @summary javadoc should have a javax.tools.Tool service provider
- * @modules jdk.javadoc
- * @build APITest
- * @run main GetTask_DocletClassTest
- * @key randomness
- */
-
-import java.io.File;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Random;
-import javax.tools.DocumentationTool;
-import javax.tools.DocumentationTool.DocumentationTask;
-import javax.tools.JavaFileObject;
-import javax.tools.StandardJavaFileManager;
-import javax.tools.ToolProvider;
-
-import com.sun.javadoc.DocErrorReporter;
-import com.sun.javadoc.LanguageVersion;
-import com.sun.javadoc.RootDoc;
-
-/**
- * Tests for DocumentationTool.getTask docletClass parameter.
- */
-public class GetTask_DocletClassTest extends APITest {
- public static void main(String... args) throws Exception {
- new GetTask_DocletClassTest().run();
- }
-
- /**
- * Verify that an alternate doclet can be specified.
- *
- * There is no standard interface or superclass for a doclet;
- * the only requirement is that it provides static methods that
- * can be invoked via reflection. So, for now, the doclet is
- * specified as a class.
- * Because we cannot create and use a unique instance of the class,
- * we verify that the doclet has been called by having it record
- * (in a static field!) the comment from the last time it was invoked,
- * which is randomly generated each time the test is run.
- */
- @Test
- public void testDoclet() throws Exception {
- Random r = new Random();
- int key = r.nextInt();
- JavaFileObject srcFile = createSimpleJavaFileObject(
- "pkg/C",
- "package pkg; /** " + key + "*/ public class C { }");
- DocumentationTool tool = ToolProvider.getSystemDocumentationTool();
- try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
- File outDir = getOutDir();
- fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
- Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
- DocumentationTask t = tool.getTask(null, fm, null, TestDoclet.class, null, files);
- if (t.call()) {
- System.err.println("task succeeded");
- if (TestDoclet.lastCaller.equals(String.valueOf(key)))
- System.err.println("found expected key: " + key);
- else
- error("Expected key not found");
- checkFiles(outDir, Collections.<String>emptySet());
- } else {
- throw new Exception("task failed");
- }
- }
- }
-
- public static class TestDoclet {
- static String lastCaller;
- public static boolean start(RootDoc root) {
- lastCaller = root.classNamed("pkg.C").commentText().trim();
- return true;
- }
-
- public static int optionLength(String option) {
- return 0; // default is option unknown
- }
-
- public static boolean validOptions(String options[][],
- DocErrorReporter reporter) {
- return true; // default is options are valid
- }
-
- public static LanguageVersion languageVersion() {
- return LanguageVersion.JAVA_1_1;
- }
- }
-
- /**
- * Verify that exceptions from a doclet are thrown as expected.
- */
- @Test
- public void testBadDoclet() throws Exception {
- JavaFileObject srcFile = createSimpleJavaFileObject();
- DocumentationTool tool = ToolProvider.getSystemDocumentationTool();
- try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
- File outDir = getOutDir();
- fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
- Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
- DocumentationTask t = tool.getTask(null, fm, null, BadDoclet.class, null, files);
- try {
- t.call();
- error("call completed without exception");
- } catch (RuntimeException e) {
- e.printStackTrace();
- Throwable c = e.getCause();
- if (c.getClass() == UnexpectedError.class)
- System.err.println("exception caught as expected: " + c);
- else
- throw e;
- }
- }
- }
-
- public static class UnexpectedError extends Error { }
-
- public static class BadDoclet {
- public static boolean start(RootDoc root) {
- throw new UnexpectedError();
- }
-
- public static int optionLength(String option) {
- return 0; // default is option unknown
- }
-
- public static boolean validOptions(String options[][],
- DocErrorReporter reporter) {
- return true; // default is options are valid
- }
-
- public static LanguageVersion languageVersion() {
- return LanguageVersion.JAVA_1_1;
- }
- }
-
-}
-
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/jdk/javadoc/tool/removeOldDoclet/OldDoclet.jasm Fri Feb 22 12:05:05 2019 +0530
@@ -0,0 +1,28 @@
+
+super public class OldDoclet
+ extends com/sun/javadoc/Doclet
+ version 55:0
+{
+
+
+public Method "<init>":"()V"
+ stack 1 locals 1
+{
+ aload_0;
+ invokespecial Method com/sun/javadoc/Doclet."<init>":"()V";
+ return;
+
+}
+
+public static Method start:"(Lcom/sun/javadoc/RootDoc;)Z"
+ stack 2 locals 1
+{
+ getstatic Field java/lang/System.out:"Ljava/io/PrintStream;";
+ ldc String "OLD_DOCLET_MARKER";
+ invokevirtual Method java/io/PrintStream.println:"(Ljava/lang/String;)V";
+ iconst_1;
+ ireturn;
+
+}
+
+} // end Class OldDoclet
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/jdk/javadoc/tool/removeOldDoclet/RemoveOldDoclet.java Fri Feb 22 12:05:05 2019 +0530
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8215584
+ * @summary Remove support for the "old" doclet API in com/sun/javadoc
+ * @library /tools/lib ../../lib
+ * @modules jdk.javadoc/jdk.javadoc.internal.tool
+ * @build javadoc.tester.* toolbox.ToolBox builder.ClassBuilder
+ * @compile OldDoclet.jasm
+ * @run main RemoveOldDoclet
+ */
+
+
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import builder.ClassBuilder;
+import toolbox.ToolBox;
+
+import javadoc.tester.JavadocTester;
+
+public class RemoveOldDoclet extends JavadocTester {
+
+ final ToolBox tb;
+
+ public static void main(String... args) throws Exception {
+ RemoveOldDoclet tester = new RemoveOldDoclet();
+ tester.runTests(m -> new Object[]{Paths.get(m.getName())});
+ }
+
+ RemoveOldDoclet() {
+ tb = new ToolBox();
+ }
+
+ @Test
+ public void testInvokeOldDoclet(Path base) throws Exception {
+ Path srcDir = base.resolve("src");
+ Path outDir = base.resolve("out");
+
+ new ClassBuilder(tb, "pkg.A")
+ .setModifiers("public", "class")
+ .write(srcDir);
+
+ javadoc("-d", outDir.toString(),
+ "-doclet", "OldDoclet",
+ "-docletpath", System.getProperty("test.classes", "."),
+ "-sourcepath", srcDir.toString(),
+ "pkg");
+
+ checkExit(Exit.ERROR);
+ checkOutput(Output.OUT, true,
+ "javadoc: error - Class OldDoclet is not a valid doclet.\n"
+ + "Note: As of JDK 13, the com.sun.javadoc API is no longer supported.");
+ }
+}
--- a/test/langtools/tools/javac/6330997/T6330997.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/6330997/T6330997.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2019, 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,8 +32,8 @@
* jdk.compiler/com.sun.tools.javac.main
* jdk.compiler/com.sun.tools.javac.util
* @clean T1 T2
- * @compile -source 12 -target 13 T1.java
- * @compile -source 12 -target 13 T2.java
+ * @compile T1.java
+ * @compile T2.java
* @run main/othervm T6330997
*/
--- a/test/langtools/tools/javac/ConditionalWithVoid.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/ConditionalWithVoid.java Fri Feb 22 12:05:05 2019 +0530
@@ -4,7 +4,7 @@
* @summary The compiler was allowing void types in its parsing of conditional expressions.
* @author tball
*
- * @compile/fail/ref=ConditionalWithVoid.out --enable-preview -source 13 -XDrawDiagnostics ConditionalWithVoid.java
+ * @compile/fail/ref=ConditionalWithVoid.out --enable-preview -source ${jdk.version} -XDrawDiagnostics ConditionalWithVoid.java
*/
public class ConditionalWithVoid {
public void test(Object o, String s) {
--- a/test/langtools/tools/javac/diags/Example.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/diags/Example.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2019, 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
@@ -288,7 +288,7 @@
opts.add("-d");
opts.add(classesDir.getPath());
if (options != null)
- opts.addAll(options);
+ opts.addAll(evalProperties(options));
if (procFiles.size() > 0) {
List<String> pOpts = new ArrayList<>(Arrays.asList("-d", classesDir.getPath()));
@@ -355,6 +355,51 @@
}
}
+ private static List<String> evalProperties(List<String> args) {
+ boolean fast = true;
+ for (String arg : args) {
+ fast = fast && (arg.indexOf("${") == -1);
+ }
+ if (fast) {
+ return args;
+ }
+ List<String> newArgs = new ArrayList<>();
+ for (String arg : args) {
+ newArgs.add(evalProperties(arg));
+ }
+ return newArgs;
+ }
+
+ private static final Pattern namePattern = Pattern.compile("\\$\\{([A-Za-z0-9._]+)\\}");
+ private static final String jdkVersion = Integer.toString(Runtime.version().feature());
+
+ private static String evalProperties(String arg) {
+ Matcher m = namePattern.matcher(arg);
+ StringBuilder sb = null;
+ while (m.find()) {
+ if (sb == null) {
+ sb = new StringBuilder();
+ }
+ String propName = m.group(1);
+ String propValue;
+ switch (propName) {
+ case "jdk.version":
+ propValue = jdkVersion;
+ break;
+ default:
+ propValue = System.getProperty(propName);
+ break;
+ }
+ m.appendReplacement(sb, propValue != null ? propValue : m.group(0).replace("$", "\\$"));
+ }
+ if (sb == null) {
+ return arg;
+ } else {
+ m.appendTail(sb);
+ return sb.toString();
+ }
+ }
+
void createAnnotationServicesFile(File dir, List<File> procFiles) throws IOException {
File servicesDir = new File(new File(dir, "META-INF"), "services");
servicesDir.mkdirs();
--- a/test/langtools/tools/javac/diags/examples/BreakAmbiguousTarget.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/diags/examples/BreakAmbiguousTarget.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, 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
@@ -24,7 +24,7 @@
// key: compiler.err.break.ambiguous.target
// key: compiler.note.preview.filename
// key: compiler.note.preview.recompile
-// options: --enable-preview -source 13
+// options: --enable-preview -source ${jdk.version}
class BreakAmbiguousTarget {
void m(int i, int j) {
--- a/test/langtools/tools/javac/diags/examples/BreakExprNotImmediate.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/diags/examples/BreakExprNotImmediate.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, 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,7 +33,7 @@
// key: compiler.note.preview.filename
// key: compiler.note.preview.recompile
// key: compiler.note.note
-// options: --enable-preview -source 13
+// options: --enable-preview -source ${jdk.version}
// run: backdoor
class BreakExprNotImmediate {
--- a/test/langtools/tools/javac/diags/examples/BreakMissingValue.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/diags/examples/BreakMissingValue.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, 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
@@ -24,7 +24,7 @@
// key: compiler.err.break.missing.value
// key: compiler.note.preview.filename
// key: compiler.note.preview.recompile
-// options: --enable-preview -source 13
+// options: --enable-preview -source ${jdk.version}
class BreakMissingValue {
int t(int i) {
--- a/test/langtools/tools/javac/diags/examples/BreakOutsideSwitchExpression.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/diags/examples/BreakOutsideSwitchExpression.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, 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
@@ -24,7 +24,7 @@
// key: compiler.err.break.outside.switch.expression
// key: compiler.note.preview.filename
// key: compiler.note.preview.recompile
-// options: --enable-preview -source 13
+// options: --enable-preview -source ${jdk.version}
class BreakOutsideSwitchExpression {
int t(int i) {
--- a/test/langtools/tools/javac/diags/examples/ContinueOutsideSwitchExpression.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/diags/examples/ContinueOutsideSwitchExpression.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, 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
@@ -24,7 +24,7 @@
// key: compiler.err.continue.outside.switch.expression
// key: compiler.note.preview.filename
// key: compiler.note.preview.recompile
-// options: --enable-preview -source 13
+// options: --enable-preview -source ${jdk.version}
class ContinueOutsideSwitchExpression {
int t(int i) {
--- a/test/langtools/tools/javac/diags/examples/IncompatibleTypesInSwitchExpression.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/diags/examples/IncompatibleTypesInSwitchExpression.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -26,7 +26,7 @@
// key: compiler.misc.inconvertible.types
// key: compiler.note.preview.filename
// key: compiler.note.preview.recompile
-// options: --enable-preview -source 13
+// options: --enable-preview -source ${jdk.version}
class IncompatibleTypesInSwitchExpression {
--- a/test/langtools/tools/javac/diags/examples/MultipleCaseLabels.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/diags/examples/MultipleCaseLabels.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, 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
@@ -23,7 +23,7 @@
// key: compiler.misc.feature.multiple.case.labels
// key: compiler.warn.preview.feature.use.plural
-// options: --enable-preview -source 13 -Xlint:preview
+// options: --enable-preview -source ${jdk.version} -Xlint:preview
class MultipleCaseLabels {
void m(int i) {
--- a/test/langtools/tools/javac/diags/examples/NotExhaustive.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/diags/examples/NotExhaustive.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, 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
@@ -24,7 +24,7 @@
// key: compiler.err.not.exhaustive
// key: compiler.note.preview.filename
// key: compiler.note.preview.recompile
-// options: --enable-preview -source 13
+// options: --enable-preview -source ${jdk.version}
class NotExhaustive {
int t(int i) {
--- a/test/langtools/tools/javac/diags/examples/PreviewFeatureUse.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/diags/examples/PreviewFeatureUse.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,7 @@
//key: compiler.warn.preview.feature.use.plural
//key: compiler.misc.feature.diamond
//key: compiler.misc.feature.lambda
-//options: -Xlint:preview -XDforcePreview -source 13 --enable-preview
+//options: -Xlint:preview -XDforcePreview -source ${jdk.version} --enable-preview
import java.util.ArrayList;
--- a/test/langtools/tools/javac/diags/examples/PreviewFilename.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/diags/examples/PreviewFilename.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, 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
@@ -23,7 +23,7 @@
// key: compiler.note.preview.filename
// key: compiler.note.preview.recompile
-// options: -XDforcePreview -source 13 --enable-preview
+// options: -XDforcePreview -source ${jdk.version} --enable-preview
import java.util.ArrayList;
import java.util.List;
--- a/test/langtools/tools/javac/diags/examples/PreviewFilenameAdditional.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/diags/examples/PreviewFilenameAdditional.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, 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
@@ -24,7 +24,7 @@
// key: compiler.note.preview.filename.additional
// key: compiler.warn.preview.feature.use
// key: compiler.misc.feature.diamond
-// options: -Xlint:preview -Xmaxwarns 1 -XDforcePreview -source 13 --enable-preview
+// options: -Xlint:preview -Xmaxwarns 1 -XDforcePreview -source ${jdk.version} --enable-preview
import java.util.ArrayList;
--- a/test/langtools/tools/javac/diags/examples/PreviewPlural/PreviewPlural.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/diags/examples/PreviewPlural/PreviewPlural.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, 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
@@ -23,7 +23,7 @@
// key: compiler.note.preview.plural
// key: compiler.note.preview.recompile
-// options: -XDforcePreview -source 13 --enable-preview
+// options: -XDforcePreview -source ${jdk.version} --enable-preview
import java.util.ArrayList;
--- a/test/langtools/tools/javac/diags/examples/ReturnOutsideSwitchExpression.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/diags/examples/ReturnOutsideSwitchExpression.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, 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
@@ -24,7 +24,7 @@
// key: compiler.err.return.outside.switch.expression
// key: compiler.note.preview.filename
// key: compiler.note.preview.recompile
-// options: --enable-preview -source 13
+// options: --enable-preview -source ${jdk.version}
class ReturnOutsideSwitchExpression {
int t(int i) {
--- a/test/langtools/tools/javac/diags/examples/RuleCompletesNormally.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/diags/examples/RuleCompletesNormally.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, 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
@@ -24,7 +24,7 @@
// key: compiler.err.rule.completes.normally
// key: compiler.note.preview.filename
// key: compiler.note.preview.recompile
-// options: --enable-preview -source 13
+// options: --enable-preview -source ${jdk.version}
class RuleCompletesNormally {
public String convert(int i) {
--- a/test/langtools/tools/javac/diags/examples/SwitchCaseUnexpectedStatement.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/diags/examples/SwitchCaseUnexpectedStatement.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, 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
@@ -24,7 +24,7 @@
// key: compiler.err.switch.case.unexpected.statement
// key: compiler.note.preview.filename
// key: compiler.note.preview.recompile
-// options: --enable-preview -source 13
+// options: --enable-preview -source ${jdk.version}
class ReturnOutsideSwitchExpression {
void t(int i) {
--- a/test/langtools/tools/javac/diags/examples/SwitchExpressionCompletesNormally.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/diags/examples/SwitchExpressionCompletesNormally.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, 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
@@ -24,7 +24,7 @@
// key: compiler.err.switch.expression.completes.normally
// key: compiler.note.preview.filename
// key: compiler.note.preview.recompile
-// options: --enable-preview -source 13
+// options: --enable-preview -source ${jdk.version}
class SwitchExpressionCompletesNormally {
public String convert(int i) {
--- a/test/langtools/tools/javac/diags/examples/SwitchExpressionEmpty.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/diags/examples/SwitchExpressionEmpty.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, 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
@@ -24,7 +24,7 @@
// key: compiler.err.switch.expression.empty
// key: compiler.note.preview.filename
// key: compiler.note.preview.recompile
-// options: --enable-preview -source 13
+// options: --enable-preview -source ${jdk.version}
class BreakOutsideSwitchExpression {
String t(E e) {
--- a/test/langtools/tools/javac/diags/examples/SwitchExpressionTargetCantBeVoid.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/diags/examples/SwitchExpressionTargetCantBeVoid.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -26,7 +26,7 @@
// key: compiler.misc.switch.expression.target.cant.be.void
// key: compiler.note.preview.filename
// key: compiler.note.preview.recompile
-// options: --enable-preview -source 13
+// options: --enable-preview -source ${jdk.version}
class SwitchExpressionTargetCantBeVoid {
--- a/test/langtools/tools/javac/diags/examples/SwitchExpressions.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/diags/examples/SwitchExpressions.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, 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
@@ -23,7 +23,7 @@
// key: compiler.misc.feature.switch.expressions
// key: compiler.warn.preview.feature.use.plural
-// options: --enable-preview -source 13 -Xlint:preview
+// options: --enable-preview -source ${jdk.version} -Xlint:preview
class SwitchExpressions {
int m(int i) {
--- a/test/langtools/tools/javac/diags/examples/SwitchMixingCaseTypes.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/diags/examples/SwitchMixingCaseTypes.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, 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
@@ -24,7 +24,7 @@
// key: compiler.err.switch.mixing.case.types
// key: compiler.note.preview.filename
// key: compiler.note.preview.recompile
-// options: --enable-preview -source 13
+// options: --enable-preview -source ${jdk.version}
class SwitchMixingCaseTypes {
--- a/test/langtools/tools/javac/diags/examples/SwitchRules.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/diags/examples/SwitchRules.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, 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
@@ -23,7 +23,7 @@
// key: compiler.misc.feature.switch.rules
// key: compiler.warn.preview.feature.use.plural
-// options: --enable-preview -source 13 -Xlint:preview
+// options: --enable-preview -source ${jdk.version} -Xlint:preview
class SwitchExpressions {
void m(int i) {
--- a/test/langtools/tools/javac/expswitch/ExpSwitchNestingTest.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/expswitch/ExpSwitchNestingTest.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, 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
@@ -75,7 +75,8 @@
}
}
- private static String[] PREVIEW_OPTIONS = {"--enable-preview", "-source", "13"};
+ private static String[] PREVIEW_OPTIONS = {"--enable-preview", "-source",
+ Integer.toString(Runtime.version().feature())};
private void program(String... constructs) {
String s = "class C { static boolean cond = false; static int x = 0; void m() { # } }";
--- a/test/langtools/tools/javac/lambda/BadSwitchExpressionLambda.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/lambda/BadSwitchExpressionLambda.java Fri Feb 22 12:05:05 2019 +0530
@@ -2,7 +2,7 @@
* @test /nodynamiccopyright/
* @bug 8206986
* @summary Adding switch expressions
- * @compile/fail/ref=BadSwitchExpressionLambda.out -XDrawDiagnostics --enable-preview -source 13 BadSwitchExpressionLambda.java
+ * @compile/fail/ref=BadSwitchExpressionLambda.out -XDrawDiagnostics --enable-preview -source ${jdk.version} BadSwitchExpressionLambda.java
*/
class BadSwitchExpressionLambda {
--- a/test/langtools/tools/javac/lambda/MethodReference66.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/lambda/MethodReference66.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,7 @@
* @test
* @bug 8009299
* @summary Javac crashes when compiling method reference to static interface method
- * @run main/othervm -Xverify:none MethodReference66
+ * @run main/othervm MethodReference66
*/
public class MethodReference66 {
--- a/test/langtools/tools/javac/parser/JavacParserTest.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/parser/JavacParserTest.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2019, 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
@@ -88,14 +88,14 @@
public class JavacParserTest extends TestCase {
static final JavaCompiler tool = ToolProvider.getSystemJavaCompiler();
static final JavaFileManager fm = tool.getStandardFileManager(null, null, null);
+ public static final String SOURCE_VERSION =
+ Integer.toString(Runtime.version().feature());
private JavacParserTest(){}
public static void main(String... args) throws Exception {
- try {
+ try (fm) {
new JavacParserTest().run(args);
- } finally {
- fm.close();
}
}
@@ -1096,7 +1096,7 @@
String expectedErrors = "Test.java:1:178: compiler.err.switch.case.unexpected.statement\n";
StringWriter out = new StringWriter();
JavacTaskImpl ct = (JavacTaskImpl) tool.getTask(out, fm, null,
- Arrays.asList("-XDrawDiagnostics", "--enable-preview", "-source", "13"),
+ Arrays.asList("-XDrawDiagnostics", "--enable-preview", "-source", SOURCE_VERSION),
null, Arrays.asList(new MyFileObject(code)));
CompilationUnitTree cut = ct.parse().iterator().next();
--- a/test/langtools/tools/javac/preview/classReaderTest/Client.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/preview/classReaderTest/Client.java Fri Feb 22 12:05:05 2019 +0530
@@ -2,9 +2,9 @@
* @test /nodynamiccopyright/
* @bug 8199194
* @summary smoke test for --enabled-preview classreader support
- * @compile -XDforcePreview --enable-preview -source 13 Bar.java
+ * @compile -XDforcePreview --enable-preview -source ${jdk.version} Bar.java
* @compile/fail/ref=Client.nopreview.out -Xlint:preview -XDrawDiagnostics Client.java
- * @compile/fail/ref=Client.preview.out -Werror -Xlint:preview -XDrawDiagnostics --enable-preview -source 13 Client.java
+ * @compile/fail/ref=Client.preview.out -Werror -Xlint:preview -XDrawDiagnostics --enable-preview -source ${jdk.version} Client.java
*/
public class Client {
--- a/test/langtools/tools/javac/switchexpr/BlockExpression.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchexpr/BlockExpression.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,7 @@
* @test
* @bug 8206986
* @summary Verify rule cases with expression statements and throw statements work.
- * @compile --enable-preview -source 13 BlockExpression.java
+ * @compile --enable-preview -source ${jdk.version} BlockExpression.java
* @run main/othervm --enable-preview BlockExpression
*/
--- a/test/langtools/tools/javac/switchexpr/BooleanNumericNonNumeric.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchexpr/BooleanNumericNonNumeric.java Fri Feb 22 12:05:05 2019 +0530
@@ -2,7 +2,7 @@
* @test /nodynamiccopyright/
* @bug 8206986
* @summary Verify the type of a conditional expression with nested switch expression is computed properly
- * @compile/fail/ref=BooleanNumericNonNumeric.out -XDrawDiagnostics --enable-preview -source 13 BooleanNumericNonNumeric.java
+ * @compile/fail/ref=BooleanNumericNonNumeric.out -XDrawDiagnostics --enable-preview -source ${jdk.version} BooleanNumericNonNumeric.java
*/
public class BooleanNumericNonNumeric {
--- a/test/langtools/tools/javac/switchexpr/BreakTest.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchexpr/BreakTest.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, 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
@@ -61,12 +61,13 @@
public static void main(String[] args) throws Exception {
final JavaCompiler tool = ToolProvider.getSystemJavaCompiler();
+ String sourceVersion = Integer.toString(Runtime.version().feature());
assert tool != null;
DiagnosticListener<JavaFileObject> noErrors = d -> {};
StringWriter out = new StringWriter();
JavacTask ct = (JavacTask) tool.getTask(out, null, noErrors,
- List.of("-XDdev", "--enable-preview", "-source", "13"), null,
+ List.of("-XDdev", "--enable-preview", "-source", sourceVersion), null,
Arrays.asList(new MyFileObject(CODE)));
List<String> labels = new ArrayList<>();
new TreePathScanner<Void, Void>() {
--- a/test/langtools/tools/javac/switchexpr/CRT.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchexpr/CRT.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -48,6 +48,8 @@
new CRT().run();
}
+ private static final String SOURCE_VERSION = Integer.toString(Runtime.version().feature());
+
private ToolBox tb = new ToolBox();
private void run() throws Exception {
@@ -151,7 +153,7 @@
new JavacTask(tb)
.options("-Xjcov",
"--enable-preview",
- "-source", "13")
+ "-source", SOURCE_VERSION)
.outdir(classes)
.sources("public class Test {\n" +
code +
--- a/test/langtools/tools/javac/switchexpr/DefiniteAssignment1.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchexpr/DefiniteAssignment1.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,7 @@
* @test
* @bug 8214031
* @summary Verify that definite assignment when true works (legal code)
- * @compile --enable-preview --source 13 DefiniteAssignment1.java
+ * @compile --enable-preview --source ${jdk.version} DefiniteAssignment1.java
* @run main/othervm --enable-preview DefiniteAssignment1
*/
public class DefiniteAssignment1 {
--- a/test/langtools/tools/javac/switchexpr/DefiniteAssignment2.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchexpr/DefiniteAssignment2.java Fri Feb 22 12:05:05 2019 +0530
@@ -2,7 +2,7 @@
* @test /nodynamiccopyright/
* @bug 8214031
* @summary Verify that definite assignment when true works (illegal code)
- * @compile/fail/ref=DefiniteAssignment2.out --enable-preview --source 13 -XDrawDiagnostics DefiniteAssignment2.java
+ * @compile/fail/ref=DefiniteAssignment2.out --enable-preview --source ${jdk.version} -XDrawDiagnostics DefiniteAssignment2.java
*/
public class DefiniteAssignment2 {
--- a/test/langtools/tools/javac/switchexpr/EmptySwitch.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchexpr/EmptySwitch.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,7 @@
* @test
* @bug 8206986
* @summary Verify than an empty switch expression is rejected.
- * @compile/fail/ref=EmptySwitch.out --enable-preview -source 13 -XDrawDiagnostics EmptySwitch.java
+ * @compile/fail/ref=EmptySwitch.out --enable-preview -source ${jdk.version} -XDrawDiagnostics EmptySwitch.java
*/
public class EmptySwitch {
--- a/test/langtools/tools/javac/switchexpr/ExhaustiveEnumSwitch.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchexpr/ExhaustiveEnumSwitch.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,7 @@
* @test
* @bug 8206986
* @summary Verify that an switch expression over enum can be exhaustive without default.
- * @compile --enable-preview -source 13 ExhaustiveEnumSwitch.java
+ * @compile --enable-preview -source ${jdk.version} ExhaustiveEnumSwitch.java
* @compile ExhaustiveEnumSwitchExtra.java
* @run main/othervm --enable-preview ExhaustiveEnumSwitch
*/
--- a/test/langtools/tools/javac/switchexpr/ExpressionSwitch.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchexpr/ExpressionSwitch.java Fri Feb 22 12:05:05 2019 +0530
@@ -3,7 +3,7 @@
* @bug 8206986
* @summary Check expression switch works.
* @compile/fail/ref=ExpressionSwitch-old.out -source 9 -Xlint:-options -XDrawDiagnostics ExpressionSwitch.java
- * @compile --enable-preview -source 13 ExpressionSwitch.java
+ * @compile --enable-preview -source ${jdk.version} ExpressionSwitch.java
* @run main/othervm --enable-preview ExpressionSwitch
*/
--- a/test/langtools/tools/javac/switchexpr/ExpressionSwitchBreaks1.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchexpr/ExpressionSwitchBreaks1.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,7 @@
* @test
* @bug 8206986
* @summary Verify behavior of various kinds of breaks.
- * @compile --enable-preview -source 13 ExpressionSwitchBreaks1.java
+ * @compile --enable-preview -source ${jdk.version} ExpressionSwitchBreaks1.java
* @run main/othervm --enable-preview ExpressionSwitchBreaks1
*/
--- a/test/langtools/tools/javac/switchexpr/ExpressionSwitchBreaks2.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchexpr/ExpressionSwitchBreaks2.java Fri Feb 22 12:05:05 2019 +0530
@@ -2,7 +2,7 @@
* @test /nodynamiccopyright/
* @bug 8206986
* @summary Check behavior for invalid breaks.
- * @compile/fail/ref=ExpressionSwitchBreaks2.out -XDrawDiagnostics --enable-preview -source 13 ExpressionSwitchBreaks2.java
+ * @compile/fail/ref=ExpressionSwitchBreaks2.out -XDrawDiagnostics --enable-preview -source ${jdk.version} ExpressionSwitchBreaks2.java
*/
public class ExpressionSwitchBreaks2 {
--- a/test/langtools/tools/javac/switchexpr/ExpressionSwitchBugs.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchexpr/ExpressionSwitchBugs.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,7 @@
* @test
* @bug 8206986 8214114 8214529
* @summary Verify various corner cases with nested switch expressions.
- * @compile --enable-preview -source 13 ExpressionSwitchBugs.java
+ * @compile --enable-preview -source ${jdk.version} ExpressionSwitchBugs.java
* @run main/othervm --enable-preview ExpressionSwitchBugs
*/
--- a/test/langtools/tools/javac/switchexpr/ExpressionSwitchBugsInGen.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchexpr/ExpressionSwitchBugsInGen.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,7 @@
* @test
* @bug 8214031
* @summary Verify various corner cases with nested switch expressions.
- * @compile --enable-preview -source 13 ExpressionSwitchBugsInGen.java
+ * @compile --enable-preview -source ${jdk.version} ExpressionSwitchBugsInGen.java
* @run main/othervm --enable-preview ExpressionSwitchBugsInGen
*/
--- a/test/langtools/tools/javac/switchexpr/ExpressionSwitchCodeFromJLS.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchexpr/ExpressionSwitchCodeFromJLS.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,7 @@
* @test
* @bug 8206986
* @summary Check switch expressions
- * @compile --enable-preview -source 13 ExpressionSwitchCodeFromJLS.java
+ * @compile --enable-preview -source ${jdk.version} ExpressionSwitchCodeFromJLS.java
* @run main/othervm --enable-preview ExpressionSwitchCodeFromJLS
*/
--- a/test/langtools/tools/javac/switchexpr/ExpressionSwitchDA.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchexpr/ExpressionSwitchDA.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,7 @@
* @test
* @bug 8206986
* @summary Check definite (un)assignment for in switch expressions.
- * @compile --enable-preview -source 13 ExpressionSwitchDA.java
+ * @compile --enable-preview -source ${jdk.version} ExpressionSwitchDA.java
* @run main/othervm --enable-preview ExpressionSwitchDA
*/
--- a/test/langtools/tools/javac/switchexpr/ExpressionSwitchEmbedding.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchexpr/ExpressionSwitchEmbedding.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,7 @@
* @test
* @bug 8214031 8214114
* @summary Verify switch expressions embedded in various statements work properly.
- * @compile --enable-preview -source 13 ExpressionSwitchEmbedding.java
+ * @compile --enable-preview -source ${jdk.version} ExpressionSwitchEmbedding.java
* @run main/othervm --enable-preview ExpressionSwitchEmbedding
*/
--- a/test/langtools/tools/javac/switchexpr/ExpressionSwitchFallThrough.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchexpr/ExpressionSwitchFallThrough.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,7 @@
* @test
* @bug 8206986
* @summary Check fall through in switch expressions.
- * @compile --enable-preview -source 13 ExpressionSwitchFallThrough.java
+ * @compile --enable-preview -source ${jdk.version} ExpressionSwitchFallThrough.java
* @run main/othervm --enable-preview ExpressionSwitchFallThrough
*/
--- a/test/langtools/tools/javac/switchexpr/ExpressionSwitchFallThrough1.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchexpr/ExpressionSwitchFallThrough1.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,7 @@
* @test
* @bug 8206986
* @summary Check fall through in switch expressions.
- * @compile --enable-preview -source 13 ExpressionSwitchFallThrough1.java
+ * @compile --enable-preview -source ${jdk.version} ExpressionSwitchFallThrough1.java
* @run main/othervm --enable-preview ExpressionSwitchFallThrough1
*/
--- a/test/langtools/tools/javac/switchexpr/ExpressionSwitchFlow.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchexpr/ExpressionSwitchFlow.java Fri Feb 22 12:05:05 2019 +0530
@@ -2,7 +2,7 @@
* @test /nodynamiccopyright/
* @bug 8212982
* @summary Verify a compile-time error is produced if switch expression does not provide a value
- * @compile/fail/ref=ExpressionSwitchFlow.out --enable-preview -source 13 -XDrawDiagnostics ExpressionSwitchFlow.java
+ * @compile/fail/ref=ExpressionSwitchFlow.out --enable-preview -source ${jdk.version} -XDrawDiagnostics ExpressionSwitchFlow.java
*/
public class ExpressionSwitchFlow {
--- a/test/langtools/tools/javac/switchexpr/ExpressionSwitchInExpressionSwitch.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchexpr/ExpressionSwitchInExpressionSwitch.java Fri Feb 22 12:05:05 2019 +0530
@@ -25,7 +25,7 @@
* @test
* @bug 8206986
* @summary Check switch expressions embedded in switch expressions.
- * @compile --enable-preview -source 13 ExpressionSwitchInExpressionSwitch.java
+ * @compile --enable-preview -source ${jdk.version} ExpressionSwitchInExpressionSwitch.java
* @run main/othervm --enable-preview ExpressionSwitchInExpressionSwitch
*/
--- a/test/langtools/tools/javac/switchexpr/ExpressionSwitchInfer.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchexpr/ExpressionSwitchInfer.java Fri Feb 22 12:05:05 2019 +0530
@@ -2,7 +2,7 @@
* @test /nodynamiccopyright/
* @bug 8206986
* @summary Check types inferred for switch expressions.
- * @compile/fail/ref=ExpressionSwitchInfer.out -XDrawDiagnostics --enable-preview -source 13 ExpressionSwitchInfer.java
+ * @compile/fail/ref=ExpressionSwitchInfer.out -XDrawDiagnostics --enable-preview -source ${jdk.version} ExpressionSwitchInfer.java
*/
import java.util.ArrayList;
--- a/test/langtools/tools/javac/switchexpr/ExpressionSwitchIntersectionTypes.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchexpr/ExpressionSwitchIntersectionTypes.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,7 @@
* @test
* @bug 8206986
* @summary Verify behavior when an intersection type is inferred for switch expression.
- * @compile --enable-preview -source 13 ExpressionSwitchIntersectionTypes.java
+ * @compile --enable-preview -source ${jdk.version} ExpressionSwitchIntersectionTypes.java
* @run main/othervm --enable-preview ExpressionSwitchIntersectionTypes
*/
--- a/test/langtools/tools/javac/switchexpr/ExpressionSwitchNotExhaustive.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchexpr/ExpressionSwitchNotExhaustive.java Fri Feb 22 12:05:05 2019 +0530
@@ -2,7 +2,7 @@
* @test /nodynamiccopyright/
* @bug 8206986
* @summary Verify behavior of not exhaustive switch expressions.
- * @compile/fail/ref=ExpressionSwitchNotExhaustive.out -XDrawDiagnostics --enable-preview -source 13 ExpressionSwitchNotExhaustive.java
+ * @compile/fail/ref=ExpressionSwitchNotExhaustive.out -XDrawDiagnostics --enable-preview -source ${jdk.version} ExpressionSwitchNotExhaustive.java
*/
public class ExpressionSwitchNotExhaustive {
--- a/test/langtools/tools/javac/switchexpr/ExpressionSwitchUnreachable.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchexpr/ExpressionSwitchUnreachable.java Fri Feb 22 12:05:05 2019 +0530
@@ -2,7 +2,7 @@
* @test /nodynamiccopyright/
* @bug 8206986
* @summary Verify reachability in switch expressions.
- * @compile/fail/ref=ExpressionSwitchUnreachable.out -XDrawDiagnostics --enable-preview -source 13 ExpressionSwitchUnreachable.java
+ * @compile/fail/ref=ExpressionSwitchUnreachable.out -XDrawDiagnostics --enable-preview -source ${jdk.version} ExpressionSwitchUnreachable.java
*/
public class ExpressionSwitchUnreachable {
--- a/test/langtools/tools/javac/switchexpr/ParseIncomplete.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchexpr/ParseIncomplete.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, 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
@@ -61,13 +61,14 @@
final JavaCompiler tool = ToolProvider.getSystemJavaCompiler();
assert tool != null;
DiagnosticListener<JavaFileObject> noErrors = d -> {};
+ String sourceVersion = Integer.toString(Runtime.version().feature());
for (int i = 0; i < CODE.length(); i++) {
String code = CODE.substring(0, i + 1);
StringWriter out = new StringWriter();
try {
JavacTask ct = (JavacTask) tool.getTask(out, null, noErrors,
- List.of("-XDdev", "--enable-preview", "-source", "13"), null,
+ List.of("-XDdev", "--enable-preview", "-source", sourceVersion), null,
Arrays.asList(new MyFileObject(code)));
ct.parse().iterator().next();
} catch (Throwable t) {
--- a/test/langtools/tools/javac/switchexpr/ParserRecovery.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchexpr/ParserRecovery.java Fri Feb 22 12:05:05 2019 +0530
@@ -2,7 +2,7 @@
* @test /nodynamiccopyright/
* @bug 8206986
* @summary Verify the parser handles broken input gracefully.
- * @compile/fail/ref=ParserRecovery.out -XDrawDiagnostics --enable-preview -source 13 ParserRecovery.java
+ * @compile/fail/ref=ParserRecovery.out -XDrawDiagnostics --enable-preview -source ${jdk.version} ParserRecovery.java
*/
public class ParserRecovery {
--- a/test/langtools/tools/javac/switchexpr/SwitchExpressionIsNotAConstant.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchexpr/SwitchExpressionIsNotAConstant.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -26,7 +26,7 @@
* @bug 8214113
* @summary Verify the switch expression's type does not have a constant attached,
* and so the switch expression is not elided.
- * @compile --enable-preview --source 13 SwitchExpressionIsNotAConstant.java
+ * @compile --enable-preview --source ${jdk.version} SwitchExpressionIsNotAConstant.java
* @run main/othervm --enable-preview SwitchExpressionIsNotAConstant
*/
public class SwitchExpressionIsNotAConstant {
--- a/test/langtools/tools/javac/switchexpr/SwitchExpressionScopesIsolated.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchexpr/SwitchExpressionScopesIsolated.java Fri Feb 22 12:05:05 2019 +0530
@@ -2,7 +2,7 @@
* @test /nodynamiccopyright/
* @bug 8206986
* @summary Verify that scopes in rule cases are isolated.
- * @compile/fail/ref=SwitchExpressionScopesIsolated.out -XDrawDiagnostics --enable-preview -source 13 SwitchExpressionScopesIsolated.java
+ * @compile/fail/ref=SwitchExpressionScopesIsolated.out -XDrawDiagnostics --enable-preview -source ${jdk.version} SwitchExpressionScopesIsolated.java
*/
public class SwitchExpressionScopesIsolated {
--- a/test/langtools/tools/javac/switchexpr/SwitchExpressionSimpleVisitorTest.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchexpr/SwitchExpressionSimpleVisitorTest.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, 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
@@ -89,7 +89,7 @@
StringWriter out = new StringWriter();
JavacTask ct = (JavacTask) tool.getTask(out, null, noErrors,
- List.of("--enable-preview", "-source", "13"), null,
+ List.of("--enable-preview", "-source", Integer.toString(Runtime.version().feature())), null,
Arrays.asList(new MyFileObject(code)));
return ct.parse().iterator().next();
}
--- a/test/langtools/tools/javac/switchexpr/TryCatch.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchexpr/TryCatch.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,7 @@
* @test
* @bug 8214114
* @summary Verify try-catch inside a switch expression works properly.
- * @compile --enable-preview -source 13 TryCatch.java
+ * @compile --enable-preview -source ${jdk.version} TryCatch.java
* @run main/othervm --enable-preview TryCatch
*/
public class TryCatch {
--- a/test/langtools/tools/javac/switchextra/CaseTest.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchextra/CaseTest.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, 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
@@ -47,12 +47,13 @@
public class CaseTest {
public static void main(String[] args) throws Exception {
- new CaseTest().testLabels();
- new CaseTest().testStatement();
- new CaseTest().testRule();
+ String sourceVersion = Integer.toString(Runtime.version().feature());
+ new CaseTest().testLabels(sourceVersion);
+ new CaseTest().testStatement(sourceVersion);
+ new CaseTest().testRule(sourceVersion);
}
- void testLabels() throws Exception {
+ void testLabels(String sourceVersion) throws Exception {
String code = "class Test {\n" +
" void t(int i) {\n" +
" switch(i) {\n" +
@@ -72,7 +73,7 @@
.collect(Collectors.joining(",", "[", "]")));
return super.visitCase(node, p);
}
- }.scan(parse(code), null);
+ }.scan(parse(code, sourceVersion), null);
List<String> expected = Arrays.asList("0", "[0]", "1", "[1,2]", "null", "[]");
@@ -81,7 +82,7 @@
}
}
- void testStatement() throws Exception {
+ void testStatement(String sourceVersion) throws Exception {
String code = "class Test {\n" +
" void t(int i) {\n" +
" switch(i) {\n" +
@@ -102,10 +103,10 @@
}
return super.visitCase(node, p);
}
- }.scan(parse(code), null);
+ }.scan(parse(code, sourceVersion), null);
}
- void testRule() throws Exception {
+ void testRule(String sourceVersion) throws Exception {
String code = "class Test {\n" +
" void t(int i) {\n" +
" switch(i) {\n" +
@@ -126,17 +127,17 @@
}
return super.visitCase(node, p);
}
- }.scan(parse(code), null);
+ }.scan(parse(code, sourceVersion), null);
}
- private CompilationUnitTree parse(String code) throws IOException {
+ private CompilationUnitTree parse(String code, String sourceVersion) throws IOException {
final JavaCompiler tool = ToolProvider.getSystemJavaCompiler();
assert tool != null;
DiagnosticListener<JavaFileObject> noErrors = d -> {};
StringWriter out = new StringWriter();
JavacTask ct = (JavacTask) tool.getTask(out, null, noErrors,
- List.of("-XDdev", "--enable-preview", "-source", "13"), null,
+ List.of("-XDdev", "--enable-preview", "-source", sourceVersion), null,
Arrays.asList(new MyFileObject(code)));
return ct.parse().iterator().next();
}
--- a/test/langtools/tools/javac/switchextra/MultipleLabelsExpression.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchextra/MultipleLabelsExpression.java Fri Feb 22 12:05:05 2019 +0530
@@ -3,7 +3,7 @@
* @bug 8206986
* @summary Verify cases with multiple labels work properly.
* @compile/fail/ref=MultipleLabelsExpression-old.out -source 9 -Xlint:-options -XDrawDiagnostics MultipleLabelsExpression.java
- * @compile --enable-preview -source 13 MultipleLabelsExpression.java
+ * @compile --enable-preview -source ${jdk.version} MultipleLabelsExpression.java
* @run main/othervm --enable-preview MultipleLabelsExpression
*/
--- a/test/langtools/tools/javac/switchextra/MultipleLabelsStatement.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchextra/MultipleLabelsStatement.java Fri Feb 22 12:05:05 2019 +0530
@@ -3,7 +3,7 @@
* @bug 8206986
* @summary Verify cases with multiple labels work properly.
* @compile/fail/ref=MultipleLabelsStatement-old.out -source 9 -Xlint:-options -XDrawDiagnostics MultipleLabelsStatement.java
- * @compile --enable-preview -source 13 MultipleLabelsStatement.java
+ * @compile --enable-preview -source ${jdk.version} MultipleLabelsStatement.java
* @run main/othervm --enable-preview MultipleLabelsStatement
*/
--- a/test/langtools/tools/javac/switchextra/RuleParsingTest.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchextra/RuleParsingTest.java Fri Feb 22 12:05:05 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -48,10 +48,11 @@
public class RuleParsingTest {
public static void main(String[] args) throws Exception {
- new RuleParsingTest().testParseComplexExpressions();
+ String sourceVersion = Integer.toString(Runtime.version().feature());
+ new RuleParsingTest().testParseComplexExpressions(sourceVersion);
}
- void testParseComplexExpressions() throws Exception {
+ void testParseComplexExpressions(String sourceVersion) throws Exception {
String[] expressions = {
"(a)",
"a",
@@ -94,7 +95,7 @@
StringWriter out = new StringWriter();
JavacTask ct = (JavacTask) tool.getTask(out, null, noErrors,
- List.of("--enable-preview", "-source", "13"), null,
+ List.of("--enable-preview", "-source", sourceVersion), null,
Arrays.asList(new MyFileObject(code.toString())));
CompilationUnitTree cut = ct.parse().iterator().next();
Trees trees = Trees.instance(ct);
--- a/test/langtools/tools/javac/switchextra/SwitchArrowBrokenConstant.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchextra/SwitchArrowBrokenConstant.java Fri Feb 22 12:05:05 2019 +0530
@@ -3,7 +3,7 @@
* @bug 8206986
* @summary Verify reasonable errors are produced when neither ':' nor '->'
* is found are the expression of a case
- * @compile/fail/ref=SwitchArrowBrokenConstant.out -source 13 --enable-preview -Xlint:-preview -XDrawDiagnostics SwitchArrowBrokenConstant.java
+ * @compile/fail/ref=SwitchArrowBrokenConstant.out -source ${jdk.version} --enable-preview -Xlint:-preview -XDrawDiagnostics SwitchArrowBrokenConstant.java
*/
public class SwitchArrowBrokenConstant {
--- a/test/langtools/tools/javac/switchextra/SwitchStatementArrow.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchextra/SwitchStatementArrow.java Fri Feb 22 12:05:05 2019 +0530
@@ -3,7 +3,7 @@
* @bug 8206986
* @summary Verify rule cases work properly.
* @compile/fail/ref=SwitchStatementArrow-old.out -source 9 -Xlint:-options -XDrawDiagnostics SwitchStatementArrow.java
- * @compile --enable-preview -source 13 SwitchStatementArrow.java
+ * @compile --enable-preview -source ${jdk.version} SwitchStatementArrow.java
* @run main/othervm --enable-preview SwitchStatementArrow
*/
--- a/test/langtools/tools/javac/switchextra/SwitchStatementBroken.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchextra/SwitchStatementBroken.java Fri Feb 22 12:05:05 2019 +0530
@@ -2,7 +2,7 @@
* @test /nodynamiccopyright/
* @bug 8206986
* @summary Verify that rule and ordinary cases cannot be mixed.
- * @compile/fail/ref=SwitchStatementBroken.out -XDrawDiagnostics --enable-preview -source 13 SwitchStatementBroken.java
+ * @compile/fail/ref=SwitchStatementBroken.out -XDrawDiagnostics --enable-preview -source ${jdk.version} SwitchStatementBroken.java
*/
public class SwitchStatementBroken {
--- a/test/langtools/tools/javac/switchextra/SwitchStatementBroken2.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchextra/SwitchStatementBroken2.java Fri Feb 22 12:05:05 2019 +0530
@@ -2,7 +2,7 @@
* @test /nodynamiccopyright/
* @bug 8206986
* @summary Verify that not allowed types of statements cannot be used in rule case.
- * @compile/fail/ref=SwitchStatementBroken2.out -XDrawDiagnostics --enable-preview -source 13 SwitchStatementBroken2.java
+ * @compile/fail/ref=SwitchStatementBroken2.out -XDrawDiagnostics --enable-preview -source ${jdk.version} SwitchStatementBroken2.java
*/
public class SwitchStatementBroken2 {
--- a/test/langtools/tools/javac/switchextra/SwitchStatementScopesIsolated.java Wed Feb 20 17:00:40 2019 +0530
+++ b/test/langtools/tools/javac/switchextra/SwitchStatementScopesIsolated.java Fri Feb 22 12:05:05 2019 +0530
@@ -2,7 +2,7 @@
* @test /nodynamiccopyright/
* @bug 8206986
* @summary Verify that scopes in rule cases are isolated.
- * @compile/fail/ref=SwitchStatementScopesIsolated.out -XDrawDiagnostics --enable-preview -source 13 SwitchStatementScopesIsolated.java
+ * @compile/fail/ref=SwitchStatementScopesIsolated.out -XDrawDiagnostics --enable-preview -source ${jdk.version} SwitchStatementScopesIsolated.java
*/
public class SwitchStatementScopesIsolated {
--- a/test/langtools/tools/javadoc/6176978/T6176978.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-/*
- * Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 6176978
- * @summary current Javadoc's invocation and extension (Doclet) mechanisms are problematic
- * @modules jdk.javadoc
- * @build T6176978
- * @run main T6176978
- */
-
-import java.io.*;
-import java.net.*;
-
-public class T6176978
-{
- public static void main(String[] args) throws Exception {
- // create and use a temp dir that will not be on jtreg's
- // default class path
- File tmpDir = new File("tmp");
- tmpDir.mkdirs();
-
- File testSrc = new File(System.getProperty("test.src", "."));
- String[] javac_args = {
- "-d",
- "tmp",
- new File(testSrc, "X.java").getPath()
- };
-
- int rc = com.sun.tools.javac.Main.compile(javac_args);
- if (rc != 0)
- throw new Error("javac exit code: " + rc);
-
- String[] jdoc_args = {
- "-doclet",
- "X",
- new File(testSrc, "T6176978.java").getPath()
- };
-
- rc = com.sun.tools.javadoc.Main.execute(jdoc_args);
- if (rc == 0)
- throw new Error("javadoc unexpectedly succeeded");
-
-
-
- Thread currThread = Thread.currentThread();
- ClassLoader saveClassLoader = currThread.getContextClassLoader();
- URLClassLoader urlCL = new URLClassLoader(new URL[] { tmpDir.toURL() });
- currThread.setContextClassLoader(urlCL);
-
- try {
- rc = com.sun.tools.javadoc.Main.execute(jdoc_args);
- if (rc != 0)
- throw new Error("javadoc exit: " + rc);
- }
- finally {
- currThread.setContextClassLoader(saveClassLoader);
- }
- }
-}
--- a/test/langtools/tools/javadoc/6176978/X.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-import com.sun.javadoc.*;
-
-public class X {
- public static boolean start(RootDoc root) {
- System.out.println("X.start");
- return true;
- }
-}
--- a/test/langtools/tools/javadoc/6227454/Test.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,142 +0,0 @@
-/*
- * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 6227454
- * @summary package.html and overview.html may not be read fully
- * @modules jdk.javadoc
- */
-
-import java.io.*;
-
-import com.sun.javadoc.Doclet;
-import com.sun.javadoc.RootDoc;
-
-public class Test extends Doclet {
- public static void main(String... args) throws Exception {
- new Test().run();
- }
-
- void run() throws Exception {
- test("<body>ABC XYZ</body>");
- test("<body>ABC XYZ</BODY>");
- test("<BODY>ABC XYZ</body>");
- test("<BODY>ABC XYZ</BODY>");
- test("<BoDy>ABC XYZ</bOdY>");
- test(" ABC XYZ</bOdY>", "Body tag missing from HTML");
- test("<body>ABC XYZ ", "Close body tag missing from HTML");
- test(" ABC XYZ ", "Body tag missing from HTML");
- test("<body>ABC" + bigText(8192, 40) + "XYZ</body>");
-
- if (errors > 0)
- throw new Exception(errors + " errors occurred");
- }
-
- void test(String body) throws IOException {
- test(body, null);
- }
-
- void test(String body, String expectError) throws IOException {
- String docType = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" "
- + "\"http://www.w3.org/TR/html4/loose.dtd\">";
- String headTag = "<head><title>Title </title></head>";
- String text = docType + "<html>" + headTag + body + "</html>";
- testNum++;
- System.err.println("test " + testNum);
- File file = writeFile("overview" + testNum + ".html", text);
- String thisClassName = Test.class.getName();
- File testSrc = new File(System.getProperty("test.src"));
- String[] args = {
- "-classpath", ".",
- "-package",
- "-overview", file.getPath(),
- new File(testSrc, thisClassName + ".java").getPath()
- };
-
- StringWriter sw = new StringWriter();
- PrintWriter pw = new PrintWriter(sw);
- int rc = com.sun.tools.javadoc.Main.execute(
- "javadoc",
- pw, pw, pw,
- thisClassName,
- args);
- pw.close();
- String out = sw.toString();
- if (!out.isEmpty())
- System.err.println(out);
- System.err.println("javadoc exit: rc=" + rc);
-
- if (expectError == null) {
- if (rc != 0)
- error("unexpected exit from javadoc; rc:" + rc);
- } else {
- if (!out.contains(expectError))
- error("expected error text not found: " + expectError);
- }
- }
-
- String bigText(int lines, int lineLength) {
- StringBuilder sb = new StringBuilder();
- for (int i = 0; i < lineLength; i++)
- sb.append(String.valueOf(i % 10));
- sb.append("\n");
- String line = sb.toString();
- sb.setLength(0);
- for (int i = 0; i < lines; i++)
- sb.append(line);
- return sb.toString();
- }
-
- File writeFile(String path, String body) throws IOException {
- File f = new File(path);
- FileWriter out = new FileWriter(f);
- try {
- out.write(body);
- } finally {
- out.close();
- }
- return f;
- }
-
- void error(String msg) {
- System.err.println("Error: " + msg);
- errors++;
- }
-
- int testNum;
- int errors;
-
- public static boolean start(RootDoc root) {
- String text = root.commentText();
- if (text.length() < 64)
- System.err.println("text: '" + text + "'");
- else
- System.err.println("text: '"
- + text.substring(0, 20)
- + "..."
- + text.substring(text.length() - 20)
- + "'");
- return text.startsWith("ABC") && text.endsWith("XYZ");
- }
-}
--- a/test/langtools/tools/javadoc/6942366/T6942366.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,133 +0,0 @@
-/*
- * Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 6942366
- * @summary javadoc no longer inherits doc from sourcepath
- * @modules jdk.javadoc
- * @library /tools/javadoc/lib
- * @build p.Base Test ToyDoclet
- * @run main T6942366
- */
-
-import java.io.*;
-import java.util.*;
-
-public class T6942366 {
- public static void main(String... args) throws Exception {
- new T6942366().run();
- }
-
- File testSrc;
- File testClasses;
- int count;
- int errors;
-
- void run() throws Exception {
- testSrc = new File(System.getProperty("test.src"));
- testClasses = new File(System.getProperty("test.classes"));
-
- test(true, false);
- test(false, true);
- test(true, true);
-
- if (errors > 0)
- throw new Exception(errors + " errors found");
- }
-
- void test(boolean useSourcePath, boolean useClassPath) throws Exception {
- System.out.println("test " + (++count) + " sp:" + useSourcePath + " cp:" + useClassPath);
- File testDir = new File("test" + count);
- testDir.mkdirs();
-
- List<String> args = new ArrayList<String>();
- args.add("-doclet");
- args.add("ToyDoclet");
- if (useSourcePath) {
- args.add("-sourcepath");
- args.add(testSrc.getPath());
- }
- if (useClassPath) {
- args.add("-classpath");
- args.add(testClasses.getPath());
- } else {
- // override classpath to avoid stuff jtreg might have put on papth
- args.add("-classpath");
- args.add(".");
- }
-
- args.add(new File(testSrc, "Test.java").getPath());
- System.out.println("ToyDoclet: " + args);
-
- StringWriter sw = new StringWriter();
- PrintWriter pw = new PrintWriter(sw);
-
- int rc = com.sun.tools.javadoc.Main.execute("ToyDoclet", pw, pw, pw,
- "ToyDoclet", getClass().getClassLoader(),
- args.toArray(new String[args.size()]));
-
- if (rc != 0)
- throw new Exception("unexpected exit from javadoc, rc=" + rc);
-
- if (useSourcePath && useClassPath) {
- long srcLastMod = new File(testSrc, "Test.java").lastModified();
- long classLastMod = new File(testClasses, "Test.class").lastModified();
- System.out.println("Test.java last modified: " + new Date(srcLastMod));
- System.out.println("Test.class last modified: " + new Date(classLastMod));
- System.out.println((srcLastMod > classLastMod ? "source" : "class") + " is newer");
- }
-
- String s = "javadoc-for-Base.m";
- boolean expect = useSourcePath;
- boolean found = sw.toString().contains(s);
- if (found) {
- if (expect)
- System.out.println("javadoc content \"" + s + "\" found, as expected");
- else
- error("javadoc content \"" + s + "\" found unexpectedly");
- } else {
- if (expect)
- error("javadoc content \"" + s + "\" not found");
- else
- System.out.println("javadoc content \"" + s + "\" not found, as expected");
- }
-
- System.out.println();
- }
-
- boolean contains(File f, String s) throws Exception {
- byte[] buf = new byte[(int) f.length()];
- try (DataInputStream in = new DataInputStream(new FileInputStream(f))) {
- in.readFully(buf);
- }
- return new String(buf).contains(s);
- }
-
- void error(String msg) {
- System.out.println("Error: " + msg);
- errors++;
- }
-
-}
-
--- a/test/langtools/tools/javadoc/6942366/Test.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-public class Test extends p.Base {
- // overrides Base.m
- public void m() { }
-}
-
--- a/test/langtools/tools/javadoc/6942366/p/Base.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package p;
-
-public class Base {
- /** javadoc-for-Base.m. */
- public void m() { }
-}
-
--- a/test/langtools/tools/javadoc/6958836/Test.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,177 +0,0 @@
-/*
- * Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 6958836 8002168
- * @summary javadoc should support -Xmaxerrs and -Xmaxwarns
- * @modules jdk.javadoc
- */
-
-import java.io.*;
-import java.util.*;
-
-import com.sun.javadoc.DocErrorReporter;
-import com.sun.javadoc.RootDoc;
-
-
-
-public class Test {
- private static final String ERROR_MARKER = "Error-count";
- private static final String WARNING_MARKER = "Warning-count";
-
- public static void main(String... args) throws Exception {
- new Test().run();
- }
-
- void run() throws Exception {
- javadoc("Errors", list(), 10, 0);
- javadoc("Errors", list("-Xmaxerrs", "0"), 10, 0);
- javadoc("Errors", list("-Xmaxerrs", "2"), 2, 0);
- javadoc("Errors", list("-Xmaxerrs", "4"), 4, 0);
- javadoc("Errors", list("-Xmaxerrs", "20"), 10, 0);
-
- javadoc("Warnings", list(), 0, 10);
- javadoc("Warnings", list("-Xmaxwarns", "0"), 0, 10);
- javadoc("Warnings", list("-Xmaxwarns", "2"), 0, 2);
- javadoc("Warnings", list("-Xmaxwarns", "4"), 0, 4);
- javadoc("Warnings", list("-Xmaxwarns", "20"), 0, 10);
-
- if (errors > 0)
- throw new Exception(errors + " errors occurred.");
- }
-
- void javadoc(String selector, List<String> testOpts,
- int expectErrs, int expectWarns) {
- System.err.println("Test " + (++count) + ": " + selector + " " + testOpts);
- File testOutDir = new File("test" + count);
-
- List<String> opts = new ArrayList<String>();
- // Force en_US locale in lieu of something like -XDrawDiagnostics.
- // For some reason, this must be the first option when used.
- opts.addAll(list("-locale", "en_US"));
- opts.add(new File(System.getProperty("test.src"),
- Test.class.getSimpleName() + ".java").getPath());
- opts.addAll(testOpts);
- opts.add("-gen" + selector);
-
- StringWriter errSW = new StringWriter();
- PrintWriter errPW = new PrintWriter(errSW);
- StringWriter warnSW = new StringWriter();
- PrintWriter warnPW = new PrintWriter(warnSW);
- StringWriter noteSW = new StringWriter();
- PrintWriter notePW = new PrintWriter(noteSW);
-
- int rc = com.sun.tools.javadoc.Main.execute("javadoc",
- errPW, warnPW, notePW,
- "Test$TestDoclet",
- getClass().getClassLoader(),
- opts.toArray(new String[opts.size()]));
- System.err.println("rc: " + rc);
-
- errPW.close();
- String errOut = errSW.toString();
- System.err.println("Errors:\n" + errOut);
- warnPW.close();
- String warnOut = warnSW.toString();
- System.err.println("Warnings:\n" + warnOut);
- notePW.close();
- String noteOut = noteSW.toString();
- System.err.println("Notes:\n" + noteOut);
-
- check(errOut, ERROR_MARKER, expectErrs);
- check(warnOut, WARNING_MARKER, expectWarns); // requires -locale en_US
- }
-
- void check(String text, String expectText, int expectCount) {
- int foundCount = 0;
- for (String line: text.split("[\r\n]+")) {
- if (line.contains(expectText))
- foundCount++;
- }
- if (foundCount != expectCount) {
- error("incorrect number of matches found: " + foundCount
- + ", expected: " + expectCount);
- }
- }
-
- private List<String> list(String... args) {
- return Arrays.asList(args);
- }
-
- void error(String msg) {
- System.err.println(msg);
- errors++;
- }
-
- int count;
- int errors;
-
- public static class TestDoclet {
- static boolean genErrors = false;
- static boolean genWarnings = false;
-
- public static boolean start(RootDoc root) {
- // generate 10 errors or warnings
- for (int i = 1 ; i <= 10 ; i++) {
- if (genErrors)
- root.printError(ERROR_MARKER + " " + i);
- if (genWarnings)
- root.printWarning(WARNING_MARKER + " " + i);
- }
- return true;
- }
-
- public static int optionLength(String option) {
- if (option == null) {
- throw new Error("invalid usage: ");
- }
- System.out.println("option: " + option);
- switch (option.trim()) {
- case "-genErrors":
- return 1;
- case "-genWarnings":
- return 1;
- default:
- return 0;
- }
- }
-
- public static boolean validOptions(String[][] options, DocErrorReporter reporter) {
- for (int i = 0 ; i < options.length; i++) {
- String opt = options[i][0].trim();
- switch (opt) {
- case "-genErrors":
- genErrors = true;
- genWarnings = false;
- break;
- case "-genWarnings":
- genErrors = false;
- genWarnings = true;
- break;
- }
- }
- return true;
- }
- }
-}
--- a/test/langtools/tools/javadoc/6964914/Error.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
- * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-public class Error {
- Object x // no semicolon
-}
--- a/test/langtools/tools/javadoc/6964914/JavacWarning.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
- * Copyright (c) 2010, 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.
- *
- * 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.
- */
-
-public class JavacWarning {
- String _ = null; // this will cause a warning with -source 8 (this is an error as of -source 9)
-}
--- a/test/langtools/tools/javadoc/6964914/JavadocWarning.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-/*
- * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-public class JavadocWarning {
- /** @see DoesNotExist */
- int x;
-}
--- a/test/langtools/tools/javadoc/6964914/Test.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-/*
- * Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 6964914
- * @summary javadoc does not output number of warnings using user written doclet
- * @modules jdk.javadoc/com.sun.tools.doclets.standard
- */
-
-import java.io.*;
-
-public class Test {
- public static void main(String... args) throws Exception {
- new Test().run();
- }
-
- public void run() throws Exception {
- javadoc("Error.java", "1 error");
- javadoc("JavacWarning.java", "1 warning");
- if (errors > 0)
- throw new Exception(errors + " errors found");
- }
-
- void javadoc(String path, String expect) {
- File testSrc = new File(System.getProperty("test.src"));
- String[] args = {
- "-source", "8",
- "-classpath", ".",
- "-package",
- new File(testSrc, path).getPath()
- };
-
- StringWriter sw = new StringWriter();
- PrintWriter pw = new PrintWriter(sw);
- int rc = com.sun.tools.javadoc.Main.execute(
- "javadoc",
- pw, pw, pw,
- com.sun.tools.doclets.standard.Standard.class.getName(),
- args);
- pw.close();
- String out = sw.toString();
- if (!out.isEmpty())
- System.err.println(out);
- System.err.println("javadoc exit: rc=" + rc);
-
- if (!out.contains(expect))
- error("expected text not found: " + expect);
- }
-
- void error(String msg) {
- System.err.println("Error: " + msg);
- errors++;
- }
-
- int errors;
-}
--- a/test/langtools/tools/javadoc/6964914/TestStdDoclet.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-/*
- * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 6964914 8182765
- * @summary javadoc does not output number of warnings using user written doclet
- */
-
-import java.io.*;
-import java.util.*;
-
-/**
- * Dummy javadoc comment.
- * @author jjg
- * @see DoesNotExist
- */
-public class TestStdDoclet {
- public static void main(String... args) throws Exception {
- new TestStdDoclet().run();
- }
-
- /**
- * More dummy comments.
- * @throws DoesNotExist oops, javadoc does not see this
- * @see DoesNotExist
- */
- void run() throws Exception {
- File javaHome = new File(System.getProperty("java.home"));
- File javadoc = new File(new File(javaHome, "bin"), "javadoc");
- File testSrc = new File(System.getProperty("test.src"));
-
- // run javadoc in separate process to ensure doclet executed under
- // normal user conditions w.r.t. classloader
- String thisClassName = TestStdDoclet.class.getName();
- List<String> cmdArgs = new ArrayList<>();
- cmdArgs.add(javadoc.getPath());
- cmdArgs.addAll(Arrays.asList(
- "-classpath", ".", // insulates us from ambient classpath
- "-Xdoclint:none",
- "-package",
- new File(testSrc, thisClassName + ".java").getPath()
- ));
- Process p = new ProcessBuilder()
- .command(cmdArgs)
- .redirectErrorStream(true)
- .start();
-
- int actualDocletWarnCount = 0;
- int reportedDocletWarnCount = 0;
- BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
- try {
- String line;
- while ((line = in.readLine()) != null) {
- System.err.println(line);
- if (line.contains("DoesNotExist"))
- actualDocletWarnCount++;
- if (line.matches("[0-9]+ warning(s)?"))
- reportedDocletWarnCount =
- Integer.valueOf(line.substring(0, line.indexOf(" ")));
- }
- } finally {
- in.close();
- }
- int rc = p.waitFor();
- if (rc != 0)
- System.err.println("javadoc failed, rc:" + rc);
-
- int expectedDocletWarnCount = 2;
- checkEqual("actual", actualDocletWarnCount, "expected", expectedDocletWarnCount);
- checkEqual("actual", actualDocletWarnCount, "reported", reportedDocletWarnCount);
- }
-
- /**
- * Private method should not cause a warning.
- * @see DoesNotExist
- */
- private void checkEqual(String l1, int i1, String l2, int i2) throws Exception {
- if (i1 != i2)
- throw new Exception(l1 + " warn count, " + i1 + ", does not match "
- + l2 + " warn count, " + i2);
- }
-
-}
--- a/test/langtools/tools/javadoc/6964914/TestUserDoclet.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,103 +0,0 @@
-/*
- * Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 6964914
- * @summary javadoc does not output number of warnings using user written doclet
- * @modules jdk.javadoc
- */
-
-import java.io.*;
-import java.util.*;
-
-import com.sun.javadoc.Doclet;
-import com.sun.javadoc.RootDoc;
-
-public class TestUserDoclet extends Doclet {
- public static void main(String... args) throws Exception {
- new TestUserDoclet().run();
- }
-
- static final String docletWarning = "warning from test doclet";
-
- /** Main doclet method. */
- public static boolean start(RootDoc root) {
- root.printWarning(null, docletWarning);
- return true;
- }
-
- /** Main test method. */
- void run() throws Exception {
- File javaHome = new File(System.getProperty("java.home"));
- File javadoc = new File(new File(javaHome, "bin"), "javadoc");
- File testSrc = new File(System.getProperty("test.src"));
- File testClasses = new File(System.getProperty("test.classes"));
-
- // run javadoc in separate process to ensure doclet executed under
- // normal user conditions w.r.t. classloader
- String thisClassName = TestUserDoclet.class.getName();
- List<String> cmdArgs = new ArrayList<>();
- cmdArgs.add(javadoc.getPath());
- cmdArgs.addAll(Arrays.asList(
- "-doclet", thisClassName,
- "-docletpath", testClasses.getPath(),
- new File(testSrc, thisClassName + ".java").getPath()
- ));
- Process p = new ProcessBuilder()
- .command(cmdArgs)
- .redirectErrorStream(true)
- .start();
-
- int actualDocletWarnCount = 0;
- int reportedDocletWarnCount = 0;
- BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
- try {
- String line;
- while ((line = in.readLine()) != null) {
- System.err.println(line);
- if (line.contains(docletWarning))
- actualDocletWarnCount++;
- if (line.matches("[0-9]+ warning(s)?"))
- reportedDocletWarnCount =
- Integer.valueOf(line.substring(0, line.indexOf(" ")));
- }
- } finally {
- in.close();
- }
- int rc = p.waitFor();
- if (rc != 0)
- System.err.println("javadoc failed, rc:" + rc);
-
- int expectedDocletWarnCount = 1;
- checkEqual("actual", actualDocletWarnCount, "expected", expectedDocletWarnCount);
- checkEqual("actual", actualDocletWarnCount, "reported", reportedDocletWarnCount);
- }
-
- void checkEqual(String l1, int i1, String l2, int i2) throws Exception {
- if (i1 != i2)
- throw new Exception(l1 + " warn count, " + i1 + ", does not match "
- + l2 + " warn count, " + i2);
- }
-
-}
--- a/test/langtools/tools/javadoc/8025693/Test.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-/*
- * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 8025693
- * @summary javadoc should ignore <clinit> methods found in classes on classpath
- * @modules jdk.javadoc
- */
-
-import java.io.*;
-
-public class Test {
- public static void main(String[] args) throws Exception {
- new Test().run();
- }
-
- final File baseFile = new File("src/Base.java");
- final String baseText =
- "package p;\n" +
- "public class Base { static { } }\n";
-
- final File srcFile = new File("src/C.java");
- final String srcText =
- "package p;\n" +
- "/** comment */\n" +
- "public abstract class C extends Base { }\n";
-
- void run() throws Exception {
- File classesDir = new File("classes");
- classesDir.mkdirs();
- writeFile(baseFile, baseText);
- String[] javacArgs = {
- "-d", classesDir.getPath(),
- baseFile.getPath()
- };
- com.sun.tools.javac.Main.compile(javacArgs);
-
- writeFile(srcFile, srcText);
- String[] args = {
- "-d", "api",
- "-classpath", classesDir.getPath(),
- "-package", "p",
- srcFile.getPath()
- };
-
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- PrintStream ps = new PrintStream(baos);
- PrintStream prev = System.err;
- System.setErr(ps);
- try {
- int rc = com.sun.tools.javadoc.Main.execute(args);
- } finally {
- System.err.flush();
- System.setErr(prev);
- }
- String out = baos.toString();
- System.out.println(out);
-
- String errorMessage = "java.lang.IllegalArgumentException: <clinit>";
- if (out.contains(errorMessage))
- throw new Exception("error message found: " + errorMessage);
- }
-
- void writeFile(File file, String body) throws IOException {
- file.getParentFile().mkdirs();
- try (FileWriter out = new FileWriter(file)) {
- out.write(body);
- }
- }
-}
-
--- a/test/langtools/tools/javadoc/8147801/T8147801.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,181 +0,0 @@
-/*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 8147801
- * @summary java.nio.file.ClosedFileSystemException when using Javadoc API's in JDK9
- * @modules jdk.javadoc/com.sun.tools.javadoc
- * @library jarsrc
- * @build lib.* p.*
- * @run main T8147801
- */
-
-import java.io.File;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.nio.file.ClosedFileSystemException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.jar.JarEntry;
-import java.util.jar.JarOutputStream;
-import java.util.stream.Stream;
-
-import com.sun.javadoc.ClassDoc;
-import com.sun.javadoc.FieldDoc;
-import com.sun.javadoc.RootDoc;
-
-/*
- * This test verifies the use of the hidden fileManager.deferClose
- * option, to work around the limitation that javadoc objects
- * (like RootDoc and related types) should cannot normally be used
- * after javadoc exits, closing its file manager (if it opened it.)
- *
- * The test runs javadoc on a chain of classes, 1 in source form,
- * and 2 in a jar file. javadoc/javac will "complete" classes found
- * in source, but will eagerly "classes" in class form.
- * The chain is p/Test.java -> lib/Lib1.class -> lib/Lib2.class.
- * After javadoc exits, the classes are examined, to finally force
- * the classes to be completed, possibly causing javac to try and access
- * references into a .jar file system which has now been closed.
- *
- * The test runs two test cases -- one without the workaround option,
- * to test the validity of the test case, and one with the workaround
- * option, to test that it works as expected.
- */
-public class T8147801 {
- public static void main(String... args) throws Exception {
- new T8147801().run();
- }
-
- void run() throws Exception {
- initJar();
- test(false);
- test(true);
- if (errors > 0) {
- throw new Exception(errors + " errors occurred");
- }
- }
-
- void test(boolean withOption) {
- System.err.println("Testing " + (withOption ? "with" : "without") + " option");
- try {
- String dump = "";
- RootDoc root = getRootDoc(withOption);
- for (ClassDoc cd: root.specifiedClasses()) {
- dump += dump(cd);
- }
- if (dump.contains("lib.Lib2.i")) {
- if (!withOption) {
- error("control case failed: Lib2 class file was read, unexpectedly, without using option");
- }
- } else {
- if (withOption) {
- error("test case failed: could not read Lib2 class file, using option");
- }
- }
- } catch (ClosedFileSystemException e) {
- error("Unexpected exception: " + e);
- }
- System.err.println();
- }
-
- RootDoc getRootDoc(boolean withOption) {
- List<String> opts = new ArrayList<>();
- if (withOption)
- opts.add("-XDfileManager.deferClose=10");
- opts.add("-doclet");
- opts.add(getClass().getName());
- opts.add("-classpath");
- opts.add(jarPath.toString());
- opts.add(Paths.get(System.getProperty("test.src"), "p", "Test.java").toString());
- System.err.println("javadoc opts: " + opts);
- int rc = com.sun.tools.javadoc.Main.execute(
- "javadoc",
- // by specifying our own class loader, we get the same Class instance as this
- getClass().getClassLoader(),
- opts.toArray(new String[opts.size()]));
- if (rc != 0) {
- error("unexpected exit from javadoc or doclet: " + rc);
- }
- return cachedRoot;
- }
-
- String dump(ClassDoc cd) {
- StringWriter sw = new StringWriter();
- PrintWriter pw = new PrintWriter(sw);
- dump(pw, "", cd);
- String out = sw.toString();
- System.err.println(out);
- return out;
- }
-
- void dump(PrintWriter out, String prefix, ClassDoc cd) {
- out.println(prefix + "class: " + cd);
- for (FieldDoc fd: cd.fields()) {
- out.println(prefix + " " + fd);
- if (fd.type().asClassDoc() != null) {
- dump(out, prefix + " ", fd.type().asClassDoc());
- }
- }
- }
-
- void initJar() throws IOException {
- String testClassPath = System.getProperty("test.class.path", "");
- Path jarsrc = Stream.of(testClassPath.split(File.pathSeparator))
- .map(Paths::get)
- .filter(e -> e.endsWith("jarsrc"))
- .findAny()
- .orElseThrow(() -> new InternalError("jarsrc not found"));
- jarPath = Paths.get("lib.jar");
- try (JarOutputStream out = new JarOutputStream(Files.newOutputStream(jarPath))) {
- String[] classNames = {"Lib1.class", "Lib2.class"};
- for (String cn : classNames) {
- out.putNextEntry(new JarEntry("lib/" + cn));
- Path libClass = jarsrc.resolve("lib").resolve(cn);
- out.write(Files.readAllBytes(libClass));
- }
- }
- }
-
- void error(String msg) {
- System.err.println("Error: " + msg);
- errors++;
- }
-
- Path jarPath;
- int errors;
-
- // Bad doclet caches the RootDoc for later use
-
- static RootDoc cachedRoot;
-
- public static boolean start(RootDoc root) {
- cachedRoot = root;
- return true;
- }
-}
--- a/test/langtools/tools/javadoc/8147801/jarsrc/lib/Lib1.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package lib;
-
-public class Lib1 {
- public Lib2 lib2;
-}
--- a/test/langtools/tools/javadoc/8147801/jarsrc/lib/Lib2.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package lib;
-
-public class Lib2 {
- public int i;
-}
--- a/test/langtools/tools/javadoc/8147801/p/Test.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package p;
-
-public class Test {
- public lib.Lib1 lib1;
-}
-
--- a/test/langtools/tools/javadoc/AddOpensTest.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 8181878
- * @summary javadoc should support/ignore --add-opens
- * @modules jdk.compiler/com.sun.tools.javac.api
- * @modules jdk.compiler/com.sun.tools.javac.main
- * @modules jdk.javadoc/jdk.javadoc.internal.api
- * @modules jdk.javadoc/jdk.javadoc.internal.tool
- * @library /tools/lib /tools/javadoc/lib
- * @build toolbox.JavacTask toolbox.JavadocTask toolbox.TestRunner toolbox.ToolBox ToyDoclet
- * @run main AddOpensTest
- */
-
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-
-import toolbox.JavadocTask;
-import toolbox.Task;
-import toolbox.TestRunner;
-import toolbox.ToolBox;
-
-public class AddOpensTest extends TestRunner {
- public static void main(String... args) throws Exception {
- AddOpensTest t = new AddOpensTest();
- t.runTests();
- }
-
- private final ToolBox tb = new ToolBox();
- private final Path src = Paths.get("src");
- private final Path api = Paths.get("api");
-
- AddOpensTest() throws Exception {
- super(System.err);
- init();
- }
-
- void init() throws IOException {
- tb.writeJavaFiles(src, "public class C { }");
- }
-
- @Test
- public void testEncoding() {
- Task.Result result = new JavadocTask(tb, Task.Mode.EXEC)
- .options("-docletpath", System.getProperty("test.class.path"),
- "-doclet", "ToyDoclet",
- "--add-opens", "some.module")
- .files(src.resolve("C.java"))
- .run(Task.Expect.SUCCESS)
- .writeAll();
- }
-}
-
--- a/test/langtools/tools/javadoc/BadOptionsTest.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,173 +0,0 @@
-/*
- * Copyright (c) 2002, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 8169676
- * @summary boolean result of Option.process is often ignored
- * @modules jdk.compiler/com.sun.tools.javac.api
- * @modules jdk.compiler/com.sun.tools.javac.main
- * @modules jdk.javadoc/jdk.javadoc.internal.api
- * @modules jdk.javadoc/jdk.javadoc.internal.tool
- * @library /tools/lib /tools/javadoc/lib
- * @build toolbox.JavacTask toolbox.JavadocTask toolbox.TestRunner toolbox.ToolBox ToyDoclet
- * @run main BadOptionsTest
- */
-
-import java.io.IOException;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Locale;
-import java.util.Objects;
-import java.util.Set;
-
-import javax.lang.model.SourceVersion;
-
-import jdk.javadoc.doclet.Doclet;
-import jdk.javadoc.doclet.DocletEnvironment;
-import jdk.javadoc.doclet.Reporter;
-
-import toolbox.JavadocTask;
-import toolbox.ModuleBuilder;
-import toolbox.Task;
-import toolbox.TestRunner;
-import toolbox.ToolBox;
-
-/*
- * This is primarily a test of the error reporting mechanisms
- * for bad options provided by javac and utilized by javadoc.
- * It is not an exhaustive test of all bad option forms detected
- * by javac/javadoc.
- */
-public class BadOptionsTest extends TestRunner {
-
- public static void main(String... args) throws Exception {
- BadOptionsTest t = new BadOptionsTest();
- t.runTests();
- }
-
- private final ToolBox tb = new ToolBox();
- private final Path src = Paths.get("src");
- private final Class<?> docletClass;
-
- BadOptionsTest() throws Exception {
- super(System.err);
- docletClass = getClass().getClassLoader().loadClass("ToyDoclet");
- init();
- }
-
- void init() throws IOException {
- tb.writeJavaFiles(src,
- "public class C { }");
-
- }
-
- @Test
- public void testAddModulesEmptyArg() {
- Task.Result result = new JavadocTask(tb, Task.Mode.API)
- .docletClass(docletClass)
- .options("--add-modules", "")
- .files(src.resolve("C.java"))
- .run(Task.Expect.FAIL)
- .writeAll();
- checkFound(result.getOutput(Task.OutputKind.DIRECT),
- "javadoc: error - error: no value for --add-modules option");
- checkNotFound(result, "Exception", "at jdk.javadoc/");
- }
-
- @Test
- public void testAddModulesBadName() {
- Task.Result result = new JavadocTask(tb, Task.Mode.API)
- .docletClass(docletClass)
- .options("--add-modules", "123")
- .files(src.resolve("C.java"))
- .run(Task.Expect.FAIL)
- .writeAll();
- checkFound(result.getOutput(Task.OutputKind.DIRECT),
- "error: bad name in value for --add-modules option: '123'");
- checkNotFound(result, "Exception", "at jdk.javadoc/");
- }
-
- @Test
- public void testAddExportsEmptyArg() {
- Task.Result result = new JavadocTask(tb, Task.Mode.API)
- .docletClass(docletClass)
- .options("--add-exports", "")
- .files(src.resolve("C.java"))
- .run(Task.Expect.FAIL)
- .writeAll();
- checkFound(result.getOutput(Task.OutputKind.DIRECT),
- "javadoc: error - error: no value for --add-exports option");
- checkNotFound(result, "Exception", "at jdk.javadoc/");
- }
-
- @Test
- public void testAddExportsBadArg() {
- Task.Result result = new JavadocTask(tb, Task.Mode.API)
- .docletClass(docletClass)
- .options("--add-exports", "m/p")
- .files(src.resolve("C.java"))
- .run(Task.Expect.FAIL)
- .writeAll();
- checkFound(result.getOutput(Task.OutputKind.DIRECT),
- "javadoc: error - error: bad value for --add-exports option: 'm/p'");
- checkNotFound(result, "Exception", "at jdk.javadoc/");
- }
-
- @Test
- public void testAddExportsBadName() {
- Task.Result result = new JavadocTask(tb, Task.Mode.API)
- .docletClass(docletClass)
- .options("--add-exports", "m!/p1=m2")
- .files(src.resolve("C.java"))
- .run()
- .writeAll();
- checkFound(result.getOutput(Task.OutputKind.DIRECT),
- "warning: bad name in value for --add-exports option: 'm!'");
- checkNotFound(result, "Exception", "at jdk.javadoc/");
- }
-
- private void checkFound(String log, String... expect) {
- for (String e : expect) {
- if (!log.contains(e)) {
- error("Expected string not found: '" + e + "'");
- }
- }
- }
-
- private void checkNotFound(Task.Result result, String... unexpected) {
- for (Task.OutputKind k : Task.OutputKind.values()) {
- String r = result.getOutput(k);
- for (String u : unexpected) {
- if (r.contains(u)) {
- error("Unexpected string found: '" + u + "'");
- }
- }
- }
- }
-}
--- a/test/langtools/tools/javadoc/BooleanConst.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-/*
- * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 4587494
- * @summary Constant field values for boolean Data-Types don't use true and false
- * @author gafter
- * @modules jdk.javadoc
- * @run main BooleanConst
- */
-
-import com.sun.javadoc.*;
-import java.util.*;
-
-public class BooleanConst extends Doclet
-{
- public static void main(String[] args) {
- // run javadoc on package p
- if (com.sun.tools.javadoc.Main.
- execute("javadoc", "BooleanConst", BooleanConst.class.getClassLoader(),
- new String[] {System.getProperty("test.src", ".") + java.io.File.separatorChar + "BooleanConst.java"}) != 0)
- throw new Error();
- }
-
- public static final boolean b1 = false;
- public static final boolean b2 = true;
-
- public static boolean start(com.sun.javadoc.RootDoc root) {
- ClassDoc[] classes = root.classes();
- if (classes.length != 1)
- throw new Error("1 " + Arrays.asList(classes));
- ClassDoc self = classes[0];
- FieldDoc[] fields = self.fields();
- if (fields.length != 2)
- throw new Error("2 " + Arrays.asList(fields));
- for (int i=0; i<fields.length; i++) {
- FieldDoc f = fields[i];
- if (f.name().equals("b1")) {
- Object value = f.constantValue();
- if (value == null || !(value instanceof Boolean) || ((Boolean)value).booleanValue())
- throw new Error("4 " + value);
- } else if (f.name().equals("b2")) {
- Object value = f.constantValue();
- if (value == null || !(value instanceof Boolean) || !((Boolean)value).booleanValue())
- throw new Error("5 " + value);
- } else throw new Error("3 " + f.name());
- }
- return true;
- }
-}
--- a/test/langtools/tools/javadoc/BreakIteratorWarning.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-/*
- * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 4959985
- * @summary Verify that (verbose) warnings are no longer generated when
- * the default first-sentence algorithm doesn't match the
- * BreakIterator algorithm.
- * @modules jdk.javadoc
- */
-
-import com.sun.javadoc.*;
-
-public class BreakIteratorWarning extends Doclet {
-
- public static void main(String[] args) {
- String thisFile = "" +
- new java.io.File(System.getProperty("test.src", "."),
- "BreakIteratorWarning.java");
-
- if (com.sun.tools.javadoc.Main.execute(
- "javadoc",
- "BreakIteratorWarning",
- BreakIteratorWarning.class.getClassLoader(),
- new String[] {"-Xwerror", thisFile}) != 0)
- throw new Error("Javadoc encountered warnings or errors.");
- }
-
- public static boolean start(RootDoc root) {
- ClassDoc cd = root.classes()[0];
- FieldDoc fd = cd.fields()[0];
- fd.firstSentenceTags();
- return true;
- }
-
-
- /**
- * "He'll never catch up!" the Sicilian cried. "Inconceivable!"
- * "You keep using that word!" the Spaniard snapped. "I do not
- * think it means what you think it means."
- *
- * <p> This comment used to trigger a warning, but no longer does.
- */
- public String author = "William Goldman";
-}
--- a/test/langtools/tools/javadoc/CheckResourceKeys.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,248 +0,0 @@
-/*
- * Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 8000612
- * @summary need test program to validate javadoc resource bundles
- * @modules jdk.javadoc/com.sun.tools.javadoc.resources:open
- * jdk.jdeps/com.sun.tools.classfile
- */
-
-import java.io.*;
-import java.util.*;
-import javax.tools.*;
-import com.sun.tools.classfile.*;
-
-/**
- * Compare string constants in javadoc classes against keys in javadoc resource bundles.
- */
-public class CheckResourceKeys {
- /**
- * Main program.
- * Options:
- * -finddeadkeys
- * look for keys in resource bundles that are no longer required
- * -findmissingkeys
- * look for keys in resource bundles that are missing
- *
- * @throws Exception if invoked by jtreg and errors occur
- */
- public static void main(String... args) throws Exception {
- CheckResourceKeys c = new CheckResourceKeys();
- if (c.run(args))
- return;
-
- if (is_jtreg())
- throw new Exception(c.errors + " errors occurred");
- else
- System.exit(1);
- }
-
- static boolean is_jtreg() {
- return (System.getProperty("test.src") != null);
- }
-
- /**
- * Main entry point.
- */
- boolean run(String... args) throws Exception {
- boolean findDeadKeys = false;
- boolean findMissingKeys = false;
-
- if (args.length == 0) {
- if (is_jtreg()) {
- findDeadKeys = true;
- findMissingKeys = true;
- } else {
- System.err.println("Usage: java CheckResourceKeys <options>");
- System.err.println("where options include");
- System.err.println(" -finddeadkeys find keys in resource bundles which are no longer required");
- System.err.println(" -findmissingkeys find keys in resource bundles that are required but missing");
- return true;
- }
- } else {
- for (String arg: args) {
- if (arg.equalsIgnoreCase("-finddeadkeys"))
- findDeadKeys = true;
- else if (arg.equalsIgnoreCase("-findmissingkeys"))
- findMissingKeys = true;
- else
- error("bad option: " + arg);
- }
- }
-
- if (errors > 0)
- return false;
-
- Set<String> codeKeys = getCodeKeys();
- Set<String> resourceKeys = getResourceKeys();
-
- System.err.println("found " + codeKeys.size() + " keys in code");
- System.err.println("found " + resourceKeys.size() + " keys in resource bundles");
-
- if (findDeadKeys)
- findDeadKeys(codeKeys, resourceKeys);
-
- if (findMissingKeys)
- findMissingKeys(codeKeys, resourceKeys);
-
- return (errors == 0);
- }
-
- /**
- * Find keys in resource bundles which are probably no longer required.
- * A key is required if there is a string in the code that is a resource key,
- * or if the key is well-known according to various pragmatic rules.
- */
- void findDeadKeys(Set<String> codeKeys, Set<String> resourceKeys) {
- for (String rk: resourceKeys) {
- if (codeKeys.contains(rk))
- continue;
-
- error("Resource key not found in code: '" + rk + "'");
- }
- }
-
- /**
- * For all strings in the code that look like they might be
- * a resource key, verify that a key exists.
- */
- void findMissingKeys(Set<String> codeKeys, Set<String> resourceKeys) {
- for (String ck: codeKeys) {
- if (resourceKeys.contains(ck))
- continue;
- error("No resource for \"" + ck + "\"");
- }
- }
-
- /**
- * Get the set of strings from (most of) the javadoc classfiles.
- */
- Set<String> getCodeKeys() throws IOException {
- Set<String> results = new TreeSet<String>();
- JavaCompiler c = ToolProvider.getSystemJavaCompiler();
- try (JavaFileManager fm = c.getStandardFileManager(null, null, null)) {
- JavaFileManager.Location javadocLoc = findJavadocLocation(fm);
- String[] pkgs = {
- "com.sun.tools.javadoc"
- };
- for (String pkg: pkgs) {
- for (JavaFileObject fo: fm.list(javadocLoc,
- pkg, EnumSet.of(JavaFileObject.Kind.CLASS), true)) {
- String name = fo.getName();
- // ignore resource files
- if (name.matches(".*resources.[A-Za-z_0-9]+\\.class.*"))
- continue;
- scan(fo, results);
- }
- }
-
- // special handling for code strings synthesized in
- // com.sun.tools.doclets.internal.toolkit.util.Util.getTypeName
- String[] extras = {
- "AnnotationType", "Class", "Enum", "Error", "Exception", "Interface"
- };
- for (String s: extras) {
- if (results.contains("doclet." + s))
- results.add("doclet." + s.toLowerCase());
- }
-
- // special handling for code strings synthesized in
- // com.sun.tools.javadoc.Messager
- results.add("javadoc.error.msg");
- results.add("javadoc.note.msg");
- results.add("javadoc.note.pos.msg");
- results.add("javadoc.warning.msg");
-
- return results;
- }
- }
-
- // depending on how the test is run, javadoc may be on bootclasspath or classpath
- JavaFileManager.Location findJavadocLocation(JavaFileManager fm) {
- JavaFileManager.Location[] locns =
- { StandardLocation.PLATFORM_CLASS_PATH, StandardLocation.CLASS_PATH };
- try {
- for (JavaFileManager.Location l: locns) {
- JavaFileObject fo = fm.getJavaFileForInput(l,
- "com.sun.tools.javadoc.Main", JavaFileObject.Kind.CLASS);
- if (fo != null) {
- System.err.println("found javadoc in " + l);
- return l;
- }
- }
- } catch (IOException e) {
- throw new Error(e);
- }
- throw new IllegalStateException("Cannot find javadoc");
- }
-
- /**
- * Get the set of strings from a class file.
- * Only strings that look like they might be a resource key are returned.
- */
- void scan(JavaFileObject fo, Set<String> results) throws IOException {
- //System.err.println("scan " + fo.getName());
- InputStream in = fo.openInputStream();
- try {
- ClassFile cf = ClassFile.read(in);
- for (ConstantPool.CPInfo cpinfo: cf.constant_pool.entries()) {
- if (cpinfo.getTag() == ConstantPool.CONSTANT_Utf8) {
- String v = ((ConstantPool.CONSTANT_Utf8_info) cpinfo).value;
- if (v.matches("(doclet|main|javadoc|tag)\\.[A-Za-z0-9-_.]+"))
- results.add(v);
- }
- }
- } catch (ConstantPoolException ignore) {
- } finally {
- in.close();
- }
- }
-
- /**
- * Get the set of keys from the javadoc resource bundles.
- */
- Set<String> getResourceKeys() {
- Module jdk_javadoc = ModuleLayer.boot().findModule("jdk.javadoc").get();
- String[] names = {
- "com.sun.tools.javadoc.resources.javadoc",
- };
- Set<String> results = new TreeSet<String>();
- for (String name : names) {
- ResourceBundle b = ResourceBundle.getBundle(name, jdk_javadoc);
- results.addAll(b.keySet());
- }
- return results;
- }
-
- /**
- * Report an error.
- */
- void error(String msg) {
- System.err.println("Error: " + msg);
- errors++;
- }
-
- int errors;
-}
--- a/test/langtools/tools/javadoc/CompletionError.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,158 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 8135307
- * @summary Check that CompletionFailures for missing classes are not incorrectly passed to
- * the javadoc API clients.
- * @library /tools/lib
- * @modules jdk.compiler/com.sun.tools.javac.api
- * jdk.compiler/com.sun.tools.javac.main
- * jdk.jdeps/com.sun.tools.javap
- * @build toolbox.JavacTask toolbox.ToolBox
- * @run main CompletionError
- */
-
-import java.io.File;
-
-import com.sun.javadoc.*;
-import com.sun.tools.javadoc.Main;
-
-import toolbox.JavacTask;
-import toolbox.ToolBox;
-
-public class CompletionError extends Doclet
-{
- private static final String template =
- "public class CompletionErrorAuxiliary #extends CompletionErrorMissing# #implements CompletionErrorIntfMissing# {" +
- " #public CompletionErrorMissing tf;#" +
- " #public CompletionErrorMissing tm() { return null; }#" +
- " #public void tm(CompletionErrorMissing m) {}#" +
- " #public void tm() throws CompletionErrorExcMissing {}#" +
- " #public <T extends CompletionErrorMissing> void tm() {}#" +
- " public String toString() { return null; }" +
- "}";
-
- private static final String testSrc = System.getProperty("test.src");
- private static final String testClassPath = System.getProperty("test.class.path");
-
- public static void main(String[] args) throws Exception {
- String[] templateParts = template.split("#");
- int sources = templateParts.length / 2;
- for (int source = 0; source < sources; source++) {
- StringBuilder testSource = new StringBuilder();
- for (int i = 0; i < templateParts.length; i += 2) {
- testSource.append(templateParts[i]);
- if (i == 2 * source) {
- testSource.append(templateParts[i + 1]);
- }
- }
- test = 0;
- testsDone = false;
- while (!testsDone) {
- ToolBox tb = new ToolBox();
- new JavacTask(tb)
- .sources(testSource.toString(),
- "public class CompletionErrorMissing {}",
- "public interface CompletionErrorIntfMissing {}",
- "public class CompletionErrorExcMissing extends Exception {}")
- .outdir(".")
- .run()
- .writeAll();
- tb.deleteFiles("CompletionErrorMissing.class", "CompletionErrorIntfMissing.class", "CompletionErrorExcMissing.class");
- // run javadoc:
- if (Main.execute("javadoc", "CompletionError", CompletionError.class.getClassLoader(),
- "-classpath", "." + File.pathSeparator + testClassPath,
- new File(testSrc, "CompletionError.java").getPath()) != 0)
- throw new Error();
- }
- }
- }
-
- private static int test;
- private static boolean testsDone;
-
- public static boolean start(com.sun.javadoc.RootDoc root) {
- ClassDoc aux = root.classNamed("CompletionErrorAuxiliary");
- if (aux == null)
- throw new AssertionError("Cannot find CompletionErrorAuxiliary");
-
- FieldDoc tf = findField(aux, "tf");
- MethodDoc tm = findMethod(aux, "tm");
- MethodDoc cm = findMethod(aux, "toString");
- switch (test) {
- case 0: aux.superclass(); break;
- case 1: aux.superclassType(); break;
- case 2: aux.interfaces(); break;
- case 3: aux.interfaceTypes(); break;
- case 4: if (tf != null) tf.type(); break;
- case 5: if (tm != null) tm.overriddenClass(); break;
- case 6: if (tm != null) tm.overriddenMethod(); break;
- case 7: if (tm != null) tm.overriddenType(); break;
- case 8:
- if (tm != null) {
- for (Parameter p : tm.parameters()) {
- p.type();
- }
- }
- break;
- case 9: if (tm != null) tm.receiverType(); break;
- case 10: if (tm != null) tm.returnType(); break;
- case 11: if (tm != null) tm.thrownExceptionTypes(); break;
- case 12: if (tm != null) tm.thrownExceptions(); break;
- case 13:
- if (tm != null) {
- for (TypeVariable tv : tm.typeParameters()) {
- tv.bounds();
- }
- }
- break;
- case 14: if (cm != null) cm.overriddenClass(); break;
- case 15: if (cm != null) cm.overriddenMethod(); break;
- case 16: if (cm != null) cm.overriddenType(); testsDone = true; break;
- default:
- throw new IllegalStateException("Unrecognized test!");
- }
- test++;
- return true;
- }
-
- private static MethodDoc findMethod(ClassDoc cd, String name) {
- for (MethodDoc m : cd.methods()) {
- if (name.equals(m.name()))
- return m;
- }
-
- return null;
- }
-
- private static FieldDoc findField(ClassDoc cd, String name) {
- for (FieldDoc m : cd.fields()) {
- if (name.equals(m.name()))
- return m;
- }
-
- return null;
- }
-}
--- a/test/langtools/tools/javadoc/EncodingTest.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 8188649
- * @summary javadoc -encoding doesn't work when using the old doclet API
- * @modules jdk.compiler/com.sun.tools.javac.api
- * @modules jdk.compiler/com.sun.tools.javac.main
- * @modules jdk.javadoc/jdk.javadoc.internal.api
- * @modules jdk.javadoc/jdk.javadoc.internal.tool
- * @library /tools/lib /tools/javadoc/lib
- * @build toolbox.JavacTask toolbox.JavadocTask toolbox.TestRunner toolbox.ToolBox ToyDoclet
- * @run main EncodingTest
- */
-
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-
-import toolbox.JavadocTask;
-import toolbox.Task;
-import toolbox.TestRunner;
-import toolbox.ToolBox;
-
-public class EncodingTest extends TestRunner {
- public static void main(String... args) throws Exception {
- EncodingTest t = new EncodingTest();
- t.runTests();
- }
-
- private final ToolBox tb = new ToolBox();
- private final Path src = Paths.get("src");
-
- EncodingTest() throws Exception {
- super(System.err);
- init();
- }
-
- void init() throws IOException {
- Files.createDirectories(src);
- Files.write(src.resolve("C.java"),
- "/** \u03b1\u03b2\u03b3 */ public class C { }".getBytes(StandardCharsets.UTF_8));
- }
-
- @Test
- public void testEncoding() {
- Task.Result result = new JavadocTask(tb, Task.Mode.EXEC)
- .options("-docletpath", System.getProperty("test.class.path"),
- "-doclet", "ToyDoclet",
- "-J-Dfile.encoding=ASCII",
- "-encoding", "UTF-8")
- .files(src.resolve("C.java"))
- .run(Task.Expect.SUCCESS)
- .writeAll();
- }
-}
-
--- a/test/langtools/tools/javadoc/FlagsTooEarly.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 4904495
- * @summary Compilation may go awry if we ask a symbol for its flags during
- * javac's Enter phase, before the flags are generally available.
- * @modules jdk.javadoc
- */
-
-import com.sun.javadoc.*;
-
-public class FlagsTooEarly extends Doclet {
-
- public static void main(String[] args) {
- String thisFile = "" +
- new java.io.File(System.getProperty("test.src", "."),
- "FlagsTooEarly.java");
-
- if (com.sun.tools.javadoc.Main.execute(
- "javadoc",
- "FlagsTooEarly",
- FlagsTooEarly.class.getClassLoader(),
- new String[] {"-Xwerror", thisFile}) != 0)
- throw new Error("Javadoc encountered warnings or errors.");
- }
-
- /*
- * The world's simplest doclet.
- */
- public static boolean start(RootDoc root) {
- return true;
- }
-
-
- /*
- * The following sets up the scenario for triggering the (potential) bug.
- */
- C2 c;
- static class C1 { }
- static class C2 { }
-}
--- a/test/langtools/tools/javadoc/InlineTagsWithBraces.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/*
- * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 4965490
- * @summary Verify that matching braces can appear within inline tags.
- * @modules jdk.javadoc
- */
-
-import com.sun.javadoc.*;
-
-/**
- * This is a {@code test} comment.
- * It is {@bold {@underline only} a test}.
- * We would like some code
- * {@code for (int i : nums) { doit(i); } return; }
- * to be embedded {@maybe {even {a couple {of levels}}} deep}.
- */
-public class InlineTagsWithBraces extends Doclet {
-
- private static String[] expectedTags = {
- "Text", "@code", "Text",
- "@bold", "Text", "@code", "Text",
- "@maybe", "Text"
- };
- private static String[] expectedText = {
- "This is a ", "test", " comment.\n" +
- " It is ", "{@underline only} a test", ".\n" +
- " We would like some code\n" +
- " ", "for (int i : nums) { doit(i); } return; ", "\n" +
- " to be embedded ", "{even {a couple {of levels}}} deep", "."
- };
-
-
- public static void main(String[] args) {
- String thisFile = "" +
- new java.io.File(System.getProperty("test.src", "."),
- "InlineTagsWithBraces.java");
-
- if (com.sun.tools.javadoc.Main.execute(
- "javadoc",
- "InlineTagsWithBraces",
- InlineTagsWithBraces.class.getClassLoader(),
- new String[] {"-Xwerror", thisFile}) != 0)
- throw new Error("Javadoc encountered warnings or errors.");
- }
-
- public static boolean start(RootDoc root) {
- ClassDoc cd = root.classes()[0];
- Tag[] tags = cd.inlineTags();
-
- for (int i = 0; i < tags.length; i++) {
- if (!tags[i].name().equals(expectedTags[i]) ||
- !tags[i].text().equals(expectedText[i])) {
- throw new Error("Tag \"" + tags[i] + "\" not as expected");
- }
- }
-
- return true;
- }
-}
--- a/test/langtools/tools/javadoc/LangVers.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-/*
- * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 4909767
- * @summary Verify that omitting Doclet.languageVersion() hides 1.5 language
- * features from the doclet.
- * @modules jdk.javadoc
- */
-
-import java.util.List;
-import com.sun.javadoc.*;
-
-public class LangVers extends Doclet {
-
- public static void main(String[] args) {
- String thisFile = "" +
- new java.io.File(System.getProperty("test.src", "."),
- "LangVers.java");
-
- if (com.sun.tools.javadoc.Main.execute(
- "javadoc",
- "LangVers",
- LangVers.class.getClassLoader(),
- new String[] {thisFile}) != 0)
- throw new Error("Javadoc encountered warnings or errors.");
- }
-
- public static boolean start(RootDoc root) {
- ClassDoc fishdoc = root.classNamed("LangVers.Fish");
- System.out.println(fishdoc);
- if (fishdoc.isEnum()) {
- throw new Error("Enums are not hidden.");
- }
-
- for (MethodDoc meth : fishdoc.methods()) {
- System.out.println(meth);
- if (meth.flatSignature().indexOf('<') >= 0) {
- throw new Error("Type parameters are not hidden.");
- }
- }
-
- return true;
- }
-
- public enum Fish {
- One, Two, Red, Blue;
-
- public void enroll(List<? super Fish> school) {
- school.add(this);
- }
- }
-}
--- a/test/langtools/tools/javadoc/MaxWarns.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,115 +0,0 @@
-/*
- * Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 8005644
- * @summary set default max errs and max warns
- * @modules jdk.javadoc/com.sun.tools.doclets.standard
- */
-
-import java.io.File;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import com.sun.javadoc.DocErrorReporter;
-import com.sun.javadoc.RootDoc;
-
-public class MaxWarns {
- public static void main(String... args) throws Exception {
- new MaxWarns().run();
- }
-
- void run() throws Exception {
- final int defaultMaxWarns = 100;
- File f = new File(System.getProperty("test.src"), "MaxWarns.java");
- String out = javadoc(f);
- check(out, defaultMaxWarns);
-
- if (errors > 0)
- throw new Exception(errors + " errors occurred");
- }
-
- String javadoc(File f) {
- StringWriter sw = new StringWriter();
- PrintWriter pw = new PrintWriter(sw);
- String[] args = { f.getPath() };
- int rc = com.sun.tools.javadoc.Main.execute("javadoc", pw, pw, pw,
- "MaxWarns$TestDoclet",
- getClass().getClassLoader(), args);
- pw.flush();
- return sw.toString();
- }
-
- private static final String WARNING_TEXT = "count ";
-
- void check(String out, int count) {
- System.err.println(out);
- Pattern warn = Pattern.compile("warning - " + WARNING_TEXT + "[0-9]+");
- Matcher m = warn.matcher(out);
- int n = 0;
- for (int start = 0; m.find(start); start = m.start() + 1) {
- n++;
- }
- if (n != count)
- error("unexpected number of warnings reported: " + n + "; expected: " + count);
-
- Pattern warnCount = Pattern.compile("(?ms).*^([0-9]+) warnings$.*");
- m = warnCount.matcher(out);
- if (m.matches()) {
- n = Integer.parseInt(m.group(1));
- if (n != count)
- error("unexpected number of warnings reported: " + n + "; expected: " + count);
- } else
- error("total count not found");
- }
-
- void error(String msg) {
- System.err.println("Error: " + msg);
- errors++;
- }
-
- int errors;
-
- public static class TestDoclet {
-
- public static boolean start(RootDoc root) {
- // generate 150 warnings
- for (int i = 1 ; i <= 150 ; i++) {
- root.printWarning(WARNING_TEXT + i);
- }
- return true;
- }
-
- public static int optionLength(String option) {
- return 0;
- }
-
- public static boolean validOptions(String[][] options, DocErrorReporter reporter) {
- return true;
- }
- }
-}
-
--- a/test/langtools/tools/javadoc/MethodLinks.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 4628281
- * @summary Int. links missing from return/param types when .java files passd in
- * @author gafter
- * @modules jdk.javadoc
- * @run main MethodLinks
- */
-
-import com.sun.javadoc.*;
-import java.util.*;
-
-public class MethodLinks extends Doclet
-{
- public static void main(String[] args) {
- if (com.sun.tools.javadoc.Main.
- execute("javadoc", "MethodLinks", MethodLinks.class.getClassLoader(),
- new String[] {System.getProperty("test.src", ".") +
- java.io.File.separatorChar + "MethodLinks.java"}
- ) != 0)
- throw new Error();
- }
-
- /** The parameter type and return type should link to the current
- * class. */
- public MethodLinks SAMPLE(MethodLinks x) {
- return x;
- }
-
- public static boolean start(com.sun.javadoc.RootDoc root) {
- ClassDoc[] classes = root.classes();
- if (classes.length != 1)
- throw new Error("1 " + Arrays.asList(classes));
- ClassDoc self = classes[0];
- MethodDoc[] allMethods = self.methods();
- MethodDoc SAMPLE = null;
- for (int i=0; i<allMethods.length; i++)
- if (allMethods[i].name().equals("SAMPLE"))
- SAMPLE = allMethods[i];
- return
- self == SAMPLE.parameters()[0].type().asClassDoc()
- &&
- self == SAMPLE.returnType().asClassDoc()
- ;
- }
-}
--- a/test/langtools/tools/javadoc/NoStar.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/*
- * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 4587562
- * @summary tool: Indentation messed up for javadoc comments omitting preceding *
- * @author gafter
- * @modules jdk.javadoc
- * @run main NoStar
- */
-
-import com.sun.javadoc.*;
-import java.util.*;
-
-/** First sentence.
-0
- 1
- 2
- 3
- 4
- 5
-*/
-public class NoStar extends Doclet
-{
- public static void main(String[] args) {
- if (com.sun.tools.javadoc.Main.
- execute("javadoc", "NoStar", NoStar.class.getClassLoader(),
- new String[] {System.getProperty("test.src", ".") + java.io.File.separatorChar + "NoStar.java"}) != 0)
- throw new Error();
- }
-
- public static boolean start(com.sun.javadoc.RootDoc root) {
- ClassDoc[] classes = root.classes();
- if (classes.length != 1)
- throw new Error("1 " + Arrays.asList(classes));
- ClassDoc self = classes[0];
- String c = self.commentText();
- System.out.println("\"" + c + "\"");
- return c.equals("First sentence.\n0\n 1\n 2\n 3\n 4\n 5");
- }
-}
--- a/test/langtools/tools/javadoc/ReleaseOption.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-import java.io.File;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.function.Predicate;
-
-import com.sun.tools.javadoc.Main;
-
-/**
- * @test
- * @bug 8086737
- * @summary Test --release option in javadoc
- * @run main ReleaseOption
- */
-public class ReleaseOption {
- public static void main(String... args) {
- new ReleaseOption().run();
- }
-
- void run() {
- doRunTest(0, out -> out.contains("compiler.err.doesnt.exist: java.util.stream"), "--release", "7");
- doRunTest(0, out -> !out.contains("compiler.err.doesnt.exist: java.util.stream"), "--release", "8");
- doRunTest(1, out -> true, "--release", "7", "-source", "7");
- doRunTest(1, out -> true, "--release", "7", "-bootclasspath", "any");
- }
-
- void doRunTest(int expectedResult, Predicate<String> validate, String... args) {
- System.err.println("running with args: " + Arrays.asList(args));
- List<String> options = new ArrayList<>();
- options.addAll(Arrays.asList(args));
- options.add("-XDrawDiagnostics");
- options.add(new File(System.getProperty("test.src", "."), "ReleaseOptionSource.java").getPath());
- StringWriter out = new StringWriter();
- PrintWriter pw = new PrintWriter(out);
- int actualResult = Main.execute("javadoc", pw, pw, pw, "com.sun.tools.doclets.standard.Standard", options.toArray(new String[0]));
- System.err.println("actual result=" + actualResult);
- System.err.println("actual output=" + out.toString());
- if (actualResult != expectedResult)
- throw new Error("Exit code not as expected");
- if (!validate.test(out.toString())) {
- throw new Error("Output not as expected");
- }
- }
-}
--- a/test/langtools/tools/javadoc/ReleaseOptionSource.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-import java.util.stream.Stream;
-
-public class ReleaseOptionSource {
- public Stream s;
-}
--- a/test/langtools/tools/javadoc/T4994049/FileWithTabs.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-public class FileWithTabs {
-\tpublic void tabbedMethod() {}
-}
--- a/test/langtools/tools/javadoc/T4994049/T4994049.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-/*
- * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
- * @test
- * @bug 4994049
- * @summary Unit test for SourcePosition.column with respect to tab expansion
- * @author Peter von der Ah\u00e9
- * @modules jdk.javadoc
- * @run main T4994049 FileWithTabs.java
- */
-
-import com.sun.javadoc.*;
-import java.io.*;
-import static com.sun.tools.javadoc.Main.execute;
-
-public class T4994049 extends Doclet {
-
- public static boolean start(RootDoc root) {
- for (ClassDoc klass : root.classes()) {
- for (MethodDoc method : klass.methods()) {
- if (method.name().equals("tabbedMethod")) {
- if (method.position().column() == 21) {
- System.out.println(method.position().column() + ": OK!");
- return true;
- } else {
- System.err.println(method.position() + ": wrong tab expansion");
- return false;
- }
- }
- }
- }
- return false;
- }
-
- public static void main(String... args) throws Exception {
- File testSrc = new File(System.getProperty("test.src"));
- File tmpSrc = new File("tmpSrc");
- initTabs(testSrc, tmpSrc);
-
- for (String file : args) {
- File source = new File(tmpSrc, file);
- int rc = execute("javadoc", "T4994049", T4994049.class.getClassLoader(),
- new String[]{ source.getPath() } );
- if (rc != 0)
- throw new Error("Unexpected return code from javadoc: " + rc);
- }
- }
-
- static void initTabs(File from, File to) throws IOException {
- for (File f: from.listFiles()) {
- File t = new File(to, f.getName());
- if (f.isDirectory()) {
- initTabs(f, t);
- } else if (f.getName().endsWith(".java")) {
- write(t, read(f).replace("\\t", "\t"));
- }
- }
- }
-
- static String read(File f) throws IOException {
- StringBuilder sb = new StringBuilder();
- try (BufferedReader in = new BufferedReader(new FileReader(f))) {
- String line;
- while ((line = in.readLine()) != null) {
- sb.append(line);
- sb.append("\n");
- }
- }
- return sb.toString();
- }
-
- static void write(File f, String s) throws IOException {
- f.getParentFile().mkdirs();
- try (Writer out = new FileWriter(f)) {
- out.write(s);
- }
- }
-
-}
--- a/test/langtools/tools/javadoc/T6968833.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-/*
- * Copyright (c) 2002, 2017, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 6968833
- * @summary javadoc reports error but still returns 0
- * @modules jdk.javadoc
- * @library lib
- * @build ToyDoclet
- * @run main T6968833
- */
-
-import java.io.*;
-
-public class T6968833 {
- public static void main(String... args) throws IOException {
- new T6968833().run();
- }
-
- void run() throws IOException {
- String testClasses = System.getProperty("test.classes");
-
- File srcDir = new File("src");
- // following file cause a doclet error, as there is nothing to document
- File f = writeFile(srcDir, "Foo.java", "class Foo { }");
- String[] args = { "-docletpath", testClasses,
- "-doclet", "ToyDoclet",
- f.getPath() };
- int rc = com.sun.tools.javadoc.Main.execute(args);
- if (rc == 0)
- throw new Error("Unexpected exit from javadoc: " + rc);
- }
-
- File writeFile(File dir, String path, String s) throws IOException {
- File f = new File(dir, path);
- f.getParentFile().mkdirs();
- try (Writer out = new FileWriter(f)) {
- out.write(s);
- }
- return f;
- }
-}
-
--- a/test/langtools/tools/javadoc/XWerror.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 4099527
- * @summary javadoc tool: want flag to exit nonzero if there were warnings.
- * @author gafter
- * @modules jdk.javadoc
- * @run main XWerror
- */
-
-import com.sun.javadoc.*;
-import java.util.*;
-
-public class XWerror extends Doclet
-{
- public static void main(String[] args) {
- if (com.sun.tools.javadoc.Main.
- execute("javadoc", "XWerror", XWerror.class.getClassLoader(),
- new String[] {"-Xwerror",
- System.getProperty("test.src", ".") +
- java.io.File.separatorChar +
- "XWerror.java"}) == 0)
- throw new Error();
- }
-
- public static boolean start(com.sun.javadoc.RootDoc root) {
- root.printWarning(null, "warning message");
- return false;
- }
-}
--- a/test/langtools/tools/javadoc/annotations/annotateMethodsFields/Main.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/*
- * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 4904495 5008037
- * @summary Test annotations of methods, fields, enum constants, and
- * annotation type elements.
- * Test an annotation type with a type nested within.
- * @library ../../lib
- * @modules jdk.javadoc
- * @compile ../../lib/OldToolTester.java Main.java
- * @run main Main
- */
-
-import java.io.IOException;
-import com.sun.javadoc.*;
-
-public class Main extends OldToolTester.Doclet {
-
- private static final OldToolTester tester = new OldToolTester("Main", "pkg1");
-
- public static void main(String[] args) throws IOException {
- tester.run();
- tester.verify();
- }
-
- public static boolean start(RootDoc root) {
- try {
- for (PackageDoc p : root.specifiedPackages()) {
- for (AnnotationTypeDoc a : p.annotationTypes()) {
- for (AnnotationTypeElementDoc e : a.elements()) {
- tester.printAnnotationTypeElement(e);
- }
- tester.println();
- }
- for (ClassDoc e : p.enums()) {
- for (FieldDoc ec : e.enumConstants()) {
- tester.printField(ec);
- }
- tester.println();
- }
- for (ClassDoc cd : p.ordinaryClasses()) {
- for (FieldDoc f : cd.fields()) {
- tester.printField(f);
- }
- tester.println();
- for (MethodDoc m : cd.methods()) {
- tester.printMethod(m);
- }
- tester.println();
- }
- }
-
- return true;
- } catch (IOException e) {
- return false;
- }
- }
-}
--- a/test/langtools/tools/javadoc/annotations/annotateMethodsFields/expected.out Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-element pkg1.A.value()
- annotations:
- @pkg1.A("value")
- returns:
- String
-
-field E econst
- annotations:
- @pkg1.A("econst")
-
-field int f
- annotations:
- @pkg1.A("f")
-
-method pkg1.B.m1(int)
- signature: (int)
- (int)
- annotations:
- @pkg1.A("m1")
- returns:
- void
-
--- a/test/langtools/tools/javadoc/annotations/annotateMethodsFields/pkg1/A.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-/*
- * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 pkg1;
-
-public @interface A {
- interface N {
- }
-
- @A("value")
- String value();
-}
--- a/test/langtools/tools/javadoc/annotations/annotateMethodsFields/pkg1/B.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 pkg1;
-
-public class B {
- @A("f")
- public int f;
-
- @A("m1")
- public void m1(int i) {
- }
-}
--- a/test/langtools/tools/javadoc/annotations/annotateMethodsFields/pkg1/E.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 pkg1;
-
-public enum E {
- @A("econst")
- econst
-}
--- a/test/langtools/tools/javadoc/annotations/annotatePackage/Main.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/*
- * Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 5031168
- * @summary Test package annotations and package-info.java package comments.
- * @library ../../lib
- * @modules jdk.javadoc
- * @compile ../../lib/OldToolTester.java Main.java
- * @run main Main
- */
-
-import java.io.*;
-import com.sun.javadoc.*;
-
-public class Main extends OldToolTester.Doclet {
-
- private static final OldToolTester tester = new OldToolTester("Main", "pkg1", "pkg2");
-
- public static void main(String[] args) throws IOException {
- tester.run();
- tester.verify();
- }
-
- public static boolean start(RootDoc root) {
- try {
- for (PackageDoc pkg : root.specifiedPackages()) {
- tester.println("/**");
- tester.println(pkg.commentText());
- for (Tag tag : pkg.tags())
- tester.println(tag);
- tester.println("*/");
-
- tester.printPackage(pkg);
- tester.println();
- }
- for (ClassDoc cd : root.classes()) {
- tester.println(cd);
- }
-
- return true;
- } catch (IOException e) {
- return false;
- }
- }
-}
--- a/test/langtools/tools/javadoc/annotations/annotatePackage/expected.out Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-/**
-This is package pkg1.
-
- For every problem, there is a solution that is simple, elegant, and wrong.
-@author:H. L. Mencken
-@since:1880
-*/
-package pkg1
- annotations:
- @java.lang.Deprecated
- @pkg1.A(boolean.class)
-
-/**
-Albert Einstein commenting on the book
-<i>110 German Scientists Against Einstein</i>:
-"If I had been wrong it would only have needed one."
-*/
-package pkg2
-
-pkg1.A
-pkg2.B
--- a/test/langtools/tools/javadoc/annotations/annotatePackage/pkg1/A.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-/**
- * Doc comment here is ignored.
- */
-package pkg1;
-
-public @interface A {
- Class value();
-}
--- a/test/langtools/tools/javadoc/annotations/annotatePackage/pkg1/package-info.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-/**
- * This is package pkg1.
- *
- * For every problem, there is a solution that is simple, elegant, and wrong.
- *
- * @author H. L. Mencken
- * @since 1880
- */
-
-@Deprecated
-@A(boolean.class)
-package pkg1;
--- a/test/langtools/tools/javadoc/annotations/annotatePackage/pkg1/package.html Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-<html>
-
-<head>
-<!---------- This file, and these words, will be ignored. ---------->
-</head>
-
-<body>
-
-Voice or no voice, the people can always be brought to the bidding of
-the leaders. That is easy. All you have to do is tell them they are
-being attacked, and denounce the peacemakers for lack of patriotism
-and exposing the country to danger. It works the same in any country.
-<pre>
- Hermann Goering
- Commander in Chief, Luftwaffe
-</pre>
-
-</body>
-</html>
--- a/test/langtools/tools/javadoc/annotations/annotatePackage/pkg2/B.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-/**
- * Doc comment here is ignored.
- */
-package pkg2;
-
-public class B {
-}
--- a/test/langtools/tools/javadoc/annotations/annotatePackage/pkg2/package.html Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<html>
-
-<body>
-
-Albert Einstein commenting on the book
-<i>110 German Scientists Against Einstein</i>:
-"If I had been wrong it would only have needed one."
-
-</body>
-
-</html>
--- a/test/langtools/tools/javadoc/annotations/annotateParams/Main.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-/*
- * Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 5031171
- * @summary Test parameter annotations.
- * @library ../../lib
- * @modules jdk.javadoc
- * @compile ../../lib/OldToolTester.java Main.java
- * @run main Main
- */
-
-import java.io.IOException;
-import com.sun.javadoc.*;
-
-public class Main extends OldToolTester.Doclet {
-
- private static final OldToolTester tester = new OldToolTester("Main", "pkg1");
-
- public static void main(String[] args) throws IOException {
- tester.run();
- tester.verify();
- }
-
- public static boolean start(RootDoc root) {
- try {
- for (PackageDoc pkg : root.specifiedPackages()) {
- for (ClassDoc cd : pkg.ordinaryClasses()) {
- for (ConstructorDoc c : cd.constructors()) {
- tester.println(c);
- tester.println();
- for (Parameter p : c.parameters()) {
- tester.printParameter(p);
- }
- tester.println();
- }
- for (MethodDoc m : cd.methods()) {
- tester.println(m);
- tester.println();
- for (Parameter p : m.parameters()) {
- tester.printParameter(p);
- }
- tester.println();
- }
- }
- }
-
- return true;
- } catch (IOException e) {
- return false;
- }
- }
-}
--- a/test/langtools/tools/javadoc/annotations/annotateParams/expected.out Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-pkg1.C(boolean)
-
-parameter boolean p0
- annotations:
- @pkg1.A("p0")
-
-pkg1.C.m(int, int, java.lang.String)
-
-parameter int p1
- annotations:
- @pkg1.A("p1")
-parameter int p2
-parameter String p3
- annotations:
- @java.lang.Deprecated
- @pkg1.A("p3")
-
--- a/test/langtools/tools/javadoc/annotations/annotateParams/pkg1/A.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 pkg1;
-
-public @interface A {
- String value();
-}
--- a/test/langtools/tools/javadoc/annotations/annotateParams/pkg1/C.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 pkg1;
-
-public class C {
-
- public C(@A("p0") boolean p0) {
- }
-
- public void m(@A("p1") int p1,
- int p2,
- @Deprecated @A("p3") String p3) {
- }
-}
--- a/test/langtools/tools/javadoc/annotations/badVals/Main.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 5029874
- * @summary Verify that bad annotation values don't result in NPE
- * @library ../../lib
- * @modules jdk.javadoc
- */
-
-import java.io.IOException;
-import com.sun.javadoc.*;
-
-public class Main extends OldToolTester.Doclet {
-
- private static final OldToolTester tester = new OldToolTester("Main", "pkg1");
-
- public static void main(String[] args) throws IOException {
- tester.run();
- }
-
- public static boolean start(RootDoc root) {
- try {
- for (ClassDoc cd : root.classes()) {
- tester.printClass(cd);
- }
-
- return true;
- } catch (IOException e) {
- return false;
- }
- }
-}
--- a/test/langtools/tools/javadoc/annotations/badVals/pkg1/A.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 pkg1;
-
-import java.lang.annotation.*;
-
-public class A {
-
- @Retention(BOGUS) // illegal
- public @interface A1 {}
-
- @Target({BOGUS}) // illegal
- public @interface A2 {}
-
- @Retention(true) // illegal
- public @interface A3 {}
-
- public @interface A4 {
- ElementType value() default BOGUS; // illegal
- }
-
- public @interface A5 {
- int[] value() default {true}; // illegal
- }
-}
--- a/test/langtools/tools/javadoc/annotations/defaults/Main.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 4904495
- * @summary Test an annotation type with default element values, and
- * annotations that use them.
- * @library ../../lib
- * @modules jdk.javadoc
- * @compile ../../lib/OldToolTester.java Main.java
- * @run main Main
- */
-
-import java.io.IOException;
-import com.sun.javadoc.*;
-import com.sun.javadoc.AnnotationDesc.*;
-
-public class Main extends OldToolTester.Doclet {
-
- private static final OldToolTester tester = new OldToolTester("Main", "pkg1");
-
- public static void main(String[] args) throws IOException {
- tester.run();
- tester.verify();
- }
-
- public static boolean start(RootDoc root) {
- try {
- for (AnnotationTypeDoc at :
- root.specifiedPackages()[0].annotationTypes()) {
- tester.printAnnotationType(at);
- tester.println();
- }
-
- for (ClassDoc cd :
- root.specifiedPackages()[0].interfaces()) {
- for (MethodDoc m : cd.methods()) {
- tester.printMethod(m);
- }
- tester.println();
- }
-
- return true;
- } catch (IOException e) {
- return false;
- }
- }
-}
--- a/test/langtools/tools/javadoc/annotations/defaults/expected.out Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-@interface pkg1.A
- elements:
- String value() default "sigh"
- int i() default 2
- double d() default 3.14
- boolean b() default true
- java.lang.Class c() default java.lang.Boolean.class
- java.lang.Class<? extends java.lang.Number> w() default java.lang.Long.class
- ElementType e() default java.lang.annotation.ElementType.TYPE
- A a() default @pkg1.A(d=2.718)
- java.lang.String[] sa() default {"up", "down"}
-
-method pkg1.B.m1()
- signature: ()
- ()
- annotations:
- @pkg1.A
- returns:
- void
-method pkg1.B.m2()
- signature: ()
- ()
- annotations:
- @pkg1.A("flip")
- returns:
- void
-method pkg1.B.m3()
- signature: ()
- ()
- annotations:
- @pkg1.A("flop")
- returns:
- void
-method pkg1.B.m4()
- signature: ()
- ()
- annotations:
- @pkg1.A(c=java.lang.Boolean.class, w=java.lang.Long.class, sa={})
- returns:
- void
-method pkg1.B.m5()
- signature: ()
- ()
- annotations:
- @pkg1.A(i=0, e=java.lang.annotation.ElementType.FIELD)
- returns:
- void
-method pkg1.B.m6()
- signature: ()
- ()
- annotations:
- @pkg1.A(a=@pkg1.A("splat"))
- returns:
- void
-
--- a/test/langtools/tools/javadoc/annotations/defaults/pkg1/A.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 pkg1;
-
-public @interface A {
- String value() default "sigh";
- int i() default 1+1;
- double d() default 3.14;
- boolean b() default true;
- Class c() default Boolean.class;
- Class<? extends Number> w() default Long.class;
- java.lang.annotation.ElementType e() default java.lang.annotation.ElementType.TYPE;
- A a() default @A(d=2.718);
- String[] sa() default {"up", "down"};
-}
--- a/test/langtools/tools/javadoc/annotations/defaults/pkg1/B.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 pkg1;
-
-public interface B {
- @A void m1();
- @A("flip") void m2();
- @A(value="flop") void m3();
- @A(c=Boolean.class, w=Long.class, sa={})
- void m4();
- @A(i=0, e=java.lang.annotation.ElementType.FIELD) void m5();
- @A(a=@A("splat")) void m6();
-}
--- a/test/langtools/tools/javadoc/annotations/elementTypes/Main.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 4904495
- * @summary Test an annotation type and annotations with elements of various
- * types.
- * @library ../../lib
- * @modules jdk.javadoc
- * @compile ../../lib/OldToolTester.java Main.java
- * @run main Main
- */
-
-import java.io.IOException;
-import java.util.Arrays;
-import com.sun.javadoc.*;
-import com.sun.javadoc.AnnotationDesc.*;
-
-public class Main extends OldToolTester.Doclet {
-
- private static final OldToolTester tester = new OldToolTester("Main", "pkg1");
-
- public static void main(String[] args) throws IOException {
- tester.run();
- tester.verify();
- }
-
- public static boolean start(RootDoc root) {
- try {
- ClassDoc[] cds = root.classes();
- Arrays.sort(cds);
- for (ClassDoc cd : cds) {
- tester.printClass(cd);
- tester.println();
- }
-
- return true;
- } catch (IOException e) {
- return false;
- }
- }
-}
--- a/test/langtools/tools/javadoc/annotations/elementTypes/expected.out Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-@interface pkg1.A
- elements:
- int i()
- double d()
- boolean b()
- String s()
- java.lang.Class c()
- java.lang.Class<? extends java.lang.Number> w()
- ElementType e()
- A a()
- java.lang.String[] sa()
-
-interface pkg1.B
- name: B / B / pkg1.B
- annotations:
- @pkg1.A(i=2, d=3.14, b=true, s="sigh", c=java.lang.Boolean.class, w=java.lang.Long.class, e=java.lang.annotation.ElementType.TYPE, a=@pkg1.A, sa={"up", "down"})
-
--- a/test/langtools/tools/javadoc/annotations/elementTypes/pkg1/A.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 pkg1;
-
-public @interface A {
- int i();
- double d();
- boolean b();
- String s();
- Class c();
- Class<? extends Number> w();
- java.lang.annotation.ElementType e();
- A a();
- String[] sa();
-}
--- a/test/langtools/tools/javadoc/annotations/elementTypes/pkg1/B.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 pkg1;
-
-@A(i = 1+1,
- d = 3.14,
- b = true,
- s = "sigh",
- c = Boolean.class,
- w = Long.class,
- e = java.lang.annotation.ElementType.TYPE,
- a = @A,
- sa = {"up", "down"})
-public interface B {
-}
--- a/test/langtools/tools/javadoc/annotations/missing/Main.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/*
- * Copyright 2009 Google, Inc. All Rights Reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 6709246
- * @summary Class-cast exception when annotation type is missing.
- * @library ../../lib
- * @modules jdk.javadoc
- */
-
-import java.io.IOException;
-import com.sun.javadoc.RootDoc;
-import com.sun.javadoc.ClassDoc;
-import com.sun.javadoc.AnnotationDesc;
-
-public class Main extends OldToolTester.Doclet {
-
- private static final OldToolTester tester = new OldToolTester("Main", "somepackage");
-
- public static void main(String... args) throws Exception {
- tester.run();
- }
-
- public static boolean start(RootDoc root) {
- for (ClassDoc d : root.classes()) {
- for (AnnotationDesc a : d.annotations()) {
- System.out.println(a.annotationType());
- }
- }
- return true;
- }
-}
--- a/test/langtools/tools/javadoc/annotations/missing/somepackage/MissingAnnotationClass.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/*
- * Copyright 2009 Google, Inc. All Rights Reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package somepackage;
-
-/**
- * This class has an annotation which is not available.
- */
-@NoSuchAnnotation
-public class MissingAnnotationClass {
-}
--- a/test/langtools/tools/javadoc/annotations/shortcuts/Main.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 4904495
- * @summary Verify that "shortcuts" are used when printing annotations.
- * @library ../../lib
- * @modules jdk.javadoc
- * @compile ../../lib/OldToolTester.java Main.java
- * @run main Main
- */
-
-import java.io.IOException;
-import com.sun.javadoc.*;
-
-public class Main extends OldToolTester.Doclet {
-
- private static final OldToolTester tester = new OldToolTester("Main", "pkg1");
-
- public static void main(String[] args) throws IOException {
- tester.run();
- tester.verify();
- }
-
- public static boolean start(RootDoc root) {
- try {
- for (ClassDoc cd : root.classes()) {
- if (cd.isInterface()) {
- tester.printClass(cd);
- }
- }
-
- return true;
- } catch (IOException e) {
- return false;
- }
- }
-}
--- a/test/langtools/tools/javadoc/annotations/shortcuts/expected.out Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-interface pkg1.A
- name: A / A / pkg1.A
- annotations:
- @pkg1.Value("there is only one")
- @pkg1.Array(favoriteNumbers=3.5)
- @pkg1.Marker
--- a/test/langtools/tools/javadoc/annotations/shortcuts/pkg1/A.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 pkg1;
-
-@Value("there is only one")
-@Array(favoriteNumbers={3.5})
-@Marker
-public interface A {
-}
--- a/test/langtools/tools/javadoc/annotations/shortcuts/pkg1/Array.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 pkg1;
-
-public @interface Array {
- double[] favoriteNumbers();
-}
--- a/test/langtools/tools/javadoc/annotations/shortcuts/pkg1/Marker.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 pkg1;
-
-public @interface Marker {
-}
--- a/test/langtools/tools/javadoc/annotations/shortcuts/pkg1/Value.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 pkg1;
-
-public @interface Value {
- String value();
-}
--- a/test/langtools/tools/javadoc/api/basic/APITest.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,250 +0,0 @@
-/*
- * Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-import java.io.File;
-import java.io.IOException;
-import java.lang.annotation.Annotation;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.net.URI;
-import java.nio.file.DirectoryStream;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.TreeSet;
-import java.util.stream.*;
-
-import javax.tools.JavaFileObject;
-import javax.tools.SimpleJavaFileObject;
-
-
-/*
- * Superclass with utility methods for API tests.
- */
-class APITest {
- protected APITest() { }
-
- /** Marker annotation for test cases. */
- @Retention(RetentionPolicy.RUNTIME)
- @interface Test { }
-
- /** Invoke all methods annotated with @Test. */
- protected void run() throws Exception {
- for (Method m: getClass().getDeclaredMethods()) {
- Annotation a = m.getAnnotation(Test.class);
- if (a != null) {
- testCount++;
- testName = m.getName();
- System.err.println("test: " + testName);
- try {
- m.invoke(this, new Object[] { });
- } catch (InvocationTargetException e) {
- Throwable cause = e.getCause();
- throw (cause instanceof Exception) ? ((Exception) cause) : e;
- }
- System.err.println();
- }
- }
-
- if (testCount == 0)
- error("no tests found");
-
- StringBuilder summary = new StringBuilder();
- if (testCount != 1)
- summary.append(testCount).append(" tests");
- if (errorCount > 0) {
- if (summary.length() > 0) summary.append(", ");
- summary.append(errorCount).append(" errors");
- }
- System.err.println(summary);
- if (errorCount > 0)
- throw new Exception(errorCount + " errors found");
- }
-
- /**
- * Create a directory in which to store generated doc files.
- * Avoid using the default (current) directory, so that we can
- * be sure that javadoc is writing in the intended location,
- * not a default location.
- */
- protected File getOutDir() {
- File dir = new File(testName);
- dir.mkdirs();
- return dir;
- }
-
- /**
- * Create a directory in which to store generated doc files.
- * Avoid using the default (current) directory, so that we can
- * be sure that javadoc is writing in the intended location,
- * not a default location.
- */
- protected File getOutDir(String path) {
- File dir = new File(testName, path);
- dir.mkdirs();
- return dir;
- }
-
- protected JavaFileObject createSimpleJavaFileObject() {
- return createSimpleJavaFileObject("pkg/C", "package pkg; public class C { }");
- }
-
- protected JavaFileObject createSimpleJavaFileObject(final String binaryName, final String content) {
- return new SimpleJavaFileObject(
- URI.create("myfo:///" + binaryName + ".java"), JavaFileObject.Kind.SOURCE) {
- @Override
- public CharSequence getCharContent(boolean ignoreEncoding) {
- return content;
- }
- };
- }
-
- protected void checkFiles(File dir, Set<String> expectFiles) {
- Set<File> files = new HashSet<File>();
- listFiles(dir, files);
- Set<String> foundFiles = new HashSet<String>();
- URI dirURI = dir.toURI();
- for (File f: files)
- foundFiles.add(dirURI.relativize(f.toURI()).getPath());
- checkFiles(foundFiles, expectFiles, dir);
- }
-
- protected void checkFiles(Path dir, Set<String> expectFiles) throws IOException {
- Set<Path> files = new HashSet<Path>();
- listFiles(dir, files);
- Set<String> foundFiles = new HashSet<String>();
- for (Path f: files) {
- foundFiles.add(dir.relativize(f).toString().replace(f.getFileSystem().getSeparator(), "/"));
- }
- checkFiles(foundFiles, expectFiles, dir);
- }
-
- private void checkFiles(Set<String> foundFiles, Set<String> expectFiles, Object where) {
- if (!foundFiles.equals(expectFiles)) {
- Set<String> missing = new TreeSet<String>(expectFiles);
- missing.removeAll(foundFiles);
- if (!missing.isEmpty())
- error("the following files were not found in " + where + ": " + missing);
- Set<String> unexpected = new TreeSet<String>(foundFiles);
- unexpected.removeAll(expectFiles);
- if (!unexpected.isEmpty())
- error("the following unexpected files were found in " + where + ": " + unexpected);
- }
- }
-
- protected void listFiles(File dir, Set<File> files) {
- for (File f: dir.listFiles()) {
- if (f.isDirectory())
- listFiles(f, files);
- else if (f.isFile())
- files.add(f);
- }
- }
-
- private void listFiles(Path dir, Set<Path> files) throws IOException {
- try (DirectoryStream<Path> ds = Files.newDirectoryStream(dir)) {
- for (Path f: ds) {
- if (Files.isDirectory(f))
- listFiles(f, files);
- else if (Files.isRegularFile(f))
- files.add(f);
- }
- }
- }
-
- protected void error(String msg) {
- System.err.println("Error: " + msg);
- errorCount++;
- }
-
- protected int testCount;
- protected int errorCount;
-
- protected String testName;
-
- /**
- * Standard files generated by processing a documented class pkg.C.
- */
- protected static Set<String> standardExpectFiles = new HashSet<>(Arrays.asList(
- "allclasses-index.html",
- "allpackages-index.html",
- "constant-values.html",
- "deprecated-list.html",
- "help-doc.html",
- "index-all.html",
- "index.html",
- "jquery/jquery-3.3.1.js",
- "jquery/jquery-migrate-3.0.1.js",
- "jquery/jquery-ui.js",
- "jquery/jquery-ui.css",
- "jquery/jquery-ui.min.js",
- "jquery/jquery-ui.min.css",
- "jquery/jquery-ui.structure.min.css",
- "jquery/jquery-ui.structure.css",
- "jquery/external/jquery/jquery.js",
- "jquery/jszip/dist/jszip.js",
- "jquery/jszip/dist/jszip.min.js",
- "jquery/jszip-utils/dist/jszip-utils.js",
- "jquery/jszip-utils/dist/jszip-utils.min.js",
- "jquery/jszip-utils/dist/jszip-utils-ie.js",
- "jquery/jszip-utils/dist/jszip-utils-ie.min.js",
- "jquery/images/ui-bg_glass_65_dadada_1x400.png",
- "jquery/images/ui-icons_454545_256x240.png",
- "jquery/images/ui-bg_glass_95_fef1ec_1x400.png",
- "jquery/images/ui-bg_glass_75_dadada_1x400.png",
- "jquery/images/ui-bg_highlight-soft_75_cccccc_1x100.png",
- "jquery/images/ui-icons_888888_256x240.png",
- "jquery/images/ui-icons_2e83ff_256x240.png",
- "jquery/images/ui-icons_cd0a0a_256x240.png",
- "jquery/images/ui-bg_glass_55_fbf9ee_1x400.png",
- "jquery/images/ui-icons_222222_256x240.png",
- "jquery/images/ui-bg_glass_75_e6e6e6_1x400.png",
- "member-search-index.js",
- "member-search-index.zip",
- "overview-tree.html",
- "element-list",
- "package-search-index.js",
- "package-search-index.zip",
- "pkg/C.html",
- "pkg/package-summary.html",
- "pkg/package-tree.html",
- "resources/glass.png",
- "resources/x.png",
- "script.js",
- "search.js",
- "stylesheet.css",
- "type-search-index.js",
- "type-search-index.zip"
- ));
-
- protected static Set<String> noIndexFiles = standardExpectFiles.stream()
- .filter(s -> !s.startsWith("jquery") && !s.startsWith("resources") && !s.endsWith("zip")
- && !s.equals("index-all.html") && !s.equals("search.js") && !s.endsWith("-search-index.js")
- && !s.equals("allclasses-index.html") && !s.equals("allpackages-index.html"))
- .collect(Collectors.toSet());
-}
-
--- a/test/langtools/tools/javadoc/api/basic/DocletPathTest.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,114 +0,0 @@
-/*
- * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 6493690
- * @summary javadoc should have a javax.tools.Tool service provider
- * @modules java.compiler
- * jdk.compiler
- * @build APITest
- * @run main DocletPathTest
- */
-
-import java.io.File;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.util.Arrays;
-import javax.tools.DocumentationTool;
-import javax.tools.DocumentationTool.DocumentationTask;
-import javax.tools.JavaCompiler;
-import javax.tools.JavaFileObject;
-import javax.tools.StandardJavaFileManager;
-import javax.tools.StandardLocation;
-import javax.tools.ToolProvider;
-
-/**
- * Tests for locating a doclet via the file manager's DOCLET_PATH.
- */
-public class DocletPathTest extends APITest {
- public static void main(String... args) throws Exception {
- new DocletPathTest().run();
- }
-
- /**
- * Verify that an alternate doclet can be specified, and located via
- * the file manager's DOCLET_PATH.
- */
- @Test
- public void testDocletPath() throws Exception {
- JavaFileObject docletSrc =
- createSimpleJavaFileObject("DocletOnDocletPath", docletSrcText);
- File docletDir = getOutDir("classes");
- JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
- try (StandardJavaFileManager cfm = compiler.getStandardFileManager(null, null, null)) {
- cfm.setLocation(StandardLocation.CLASS_OUTPUT, Arrays.asList(docletDir));
- Iterable<? extends JavaFileObject> cfiles = Arrays.asList(docletSrc);
- if (!compiler.getTask(null, cfm, null, null, null, cfiles).call())
- throw new Exception("cannot compile doclet");
- }
-
- JavaFileObject srcFile = createSimpleJavaFileObject();
- DocumentationTool tool = ToolProvider.getSystemDocumentationTool();
- try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
- File outDir = getOutDir("api");
- fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
- fm.setLocation(DocumentationTool.Location.DOCLET_PATH, Arrays.asList(docletDir));
- Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
- Iterable<String> options = Arrays.asList("-doclet", "DocletOnDocletPath");
- StringWriter sw = new StringWriter();
- PrintWriter pw = new PrintWriter(sw);
- DocumentationTask t = tool.getTask(pw, fm, null, null, options, files);
- boolean ok = t.call();
- String out = sw.toString();
- System.err.println(">>" + out + "<<");
- if (ok) {
- if (out.contains(TEST_STRING)) {
- System.err.println("doclet executed as expected");
- } else {
- error("test string not found in doclet output");
- }
- } else {
- error("task failed");
- }
- }
- }
-
- private static final String TEST_STRING = "DocletOnDocletPath found and running";
-
- private static final String docletSrcText =
- "import com.sun.javadoc.*;\n" +
- "public class DocletOnDocletPath {\n" +
- " public static boolean start(RootDoc doc) {\n" +
- " doc.printNotice(\"" + TEST_STRING + "\");\n" +
- " return true;\n" +
- " }\n" +
- " public static int optionLength(String option) { return 0; }\n" +
- " public static boolean validOptions(String options[][],\n" +
- " DocErrorReporter reporter) { return true; }\n" +
- " public static LanguageVersion languageVersion() {\n" +
- " return LanguageVersion.JAVA_1_1;\n" +
- " }\n" +
- "}\n";
-}
-
--- a/test/langtools/tools/javadoc/api/basic/DocumentationToolLocationTest.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
-/*
- * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 8025844
- * @summary test DocumentationTool.Location methods
- * @modules java.compiler
- * jdk.compiler
- * @build APITest
- * @run main DocumentationToolLocationTest
- */
-
-import javax.tools.DocumentationTool;
-import java.util.Objects;
-
-/**
- * Test for DocumentationTool.Location methods.
- */
-public class DocumentationToolLocationTest extends APITest {
- public static void main(String[] args) throws Exception {
- new DocumentationToolLocationTest().run();
- }
-
- /**
- * Test getName() method
- */
- @Test
- public void testGetName() throws Exception {
- // getName() returns name(). This is for test coverage of getName.
- for (DocumentationTool.Location dl: DocumentationTool.Location.values()) {
- String expect = dl.name();
- String found = dl.getName();
- if (!Objects.equals(expect, found))
- throw new Exception("mismatch for " + dl + "; expected " + expect + ", found " + found);
- }
- }
-
- /**
- * Test generated enum methods values() and valueOf()
- */
- @Test
- public void testEnumMethods() throws Exception {
- DocumentationTool.Location[] values = DocumentationTool.Location.values();
- if (values.length != 3)
- throw new Exception("unexpected number of values returned");
-
- for (DocumentationTool.Location dl: values) {
- DocumentationTool.Location expect = dl;
- DocumentationTool.Location found = DocumentationTool.Location.valueOf(dl.name());
- if (!Objects.equals(expect, found))
- throw new Exception("mismatch for " + dl + "; expected " + expect + ", found " + found);
- }
- }
-}
--- a/test/langtools/tools/javadoc/api/basic/GetSourceVersionsTest.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 6493690
- * @summary javadoc should have a javax.tools.Tool service provider
- * @modules java.compiler
- * jdk.compiler
- * @build APITest
- * @run main GetSourceVersionsTest
- */
-
-import java.util.EnumSet;
-import java.util.Set;
-import javax.lang.model.SourceVersion;
-import javax.tools.DocumentationTool;
-import javax.tools.ToolProvider;
-
-/**
- * Tests for DocumentationTool.getSourceVersions method.
- */
-public class GetSourceVersionsTest extends APITest {
- public static void main(String... args) throws Exception {
- new GetSourceVersionsTest().run();
- }
-
- /**
- * Verify getSourceVersions.
- */
- @Test
- public void testRun() throws Exception {
- DocumentationTool tool = ToolProvider.getSystemDocumentationTool();
- Set<SourceVersion> found = tool.getSourceVersions();
- Set<SourceVersion> expect = EnumSet.range(SourceVersion.RELEASE_3, SourceVersion.latest());
- if (!expect.equals(found)) {
- System.err.println("expect: " + expect);
- System.err.println(" found: " + expect);
- error("unexpected versions");
- }
- }
-}
-
--- a/test/langtools/tools/javadoc/api/basic/GetTask_DiagListenerTest.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-/*
- * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 6493690
- * @summary javadoc should have a javax.tools.Tool service provider
- * @modules java.compiler
- * jdk.compiler
- * @build APITest
- * @run main GetTask_DiagListenerTest
- */
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import javax.tools.Diagnostic;
-import javax.tools.DiagnosticCollector;
-import javax.tools.DocumentationTool;
-import javax.tools.DocumentationTool.DocumentationTask;
-import javax.tools.JavaFileObject;
-import javax.tools.StandardJavaFileManager;
-import javax.tools.ToolProvider;
-
-/**
- * Tests for DocumentationTool.getTask diagnosticListener parameter.
- */
-public class GetTask_DiagListenerTest extends APITest {
- public static void main(String... args) throws Exception {
- new GetTask_DiagListenerTest().run();
- }
-
- /**
- * Verify that a diagnostic listener can be specified.
- * Note that messages from the tool and doclet are imperfectly modeled
- * because the DocErrorReporter API works in terms of localized strings
- * and file:line positions. Therefore, messages reported via DocErrorReporter
- * and simply wrapped and passed through.
- */
- @Test
- public void testDiagListener() throws Exception {
- JavaFileObject srcFile = createSimpleJavaFileObject("pkg/C", "package pkg; public error { }");
- DocumentationTool tool = ToolProvider.getSystemDocumentationTool();
- try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
- File outDir = getOutDir();
- fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
- Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
- DiagnosticCollector<JavaFileObject> dc = new DiagnosticCollector<JavaFileObject>();
- DocumentationTask t = tool.getTask(null, fm, dc, null, null, files);
- if (t.call()) {
- throw new Exception("task succeeded unexpectedly");
- } else {
- List<String> diagCodes = new ArrayList<String>();
- for (Diagnostic d: dc.getDiagnostics()) {
- System.err.println(d);
- diagCodes.add(d.getCode());
- }
- List<String> expect = Arrays.asList(
- "javadoc.note.msg", // Loading source file
- "compiler.err.expected3", // class, interface, or enum expected
- "javadoc.note.msg"); // 1 error
- if (!diagCodes.equals(expect))
- throw new Exception("unexpected diagnostics occurred");
- System.err.println("diagnostics received as expected");
- }
- }
- }
-
-}
-
--- a/test/langtools/tools/javadoc/api/basic/GetTask_DocletClassTest.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,161 +0,0 @@
-/*
- * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 6493690
- * @summary javadoc should have a javax.tools.Tool service provider
- * @modules jdk.javadoc
- * @build APITest
- * @run main GetTask_DocletClassTest
- * @key randomness
- */
-
-import com.sun.javadoc.DocErrorReporter;
-import com.sun.javadoc.LanguageVersion;
-import com.sun.javadoc.RootDoc;
-import java.io.File;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Random;
-import javax.tools.DocumentationTool;
-import javax.tools.DocumentationTool.DocumentationTask;
-import javax.tools.JavaFileObject;
-import javax.tools.StandardJavaFileManager;
-import javax.tools.ToolProvider;
-
-/**
- * Tests for DocumentationTool.getTask docletClass parameter.
- */
-public class GetTask_DocletClassTest extends APITest {
- public static void main(String... args) throws Exception {
- new GetTask_DocletClassTest().run();
- }
-
- /**
- * Verify that an alternate doclet can be specified.
- *
- * There is no standard interface or superclass for a doclet;
- * the only requirement is that it provides static methods that
- * can be invoked via reflection. So, for now, the doclet is
- * specified as a class.
- * Because we cannot create and use a unique instance of the class,
- * we verify that the doclet has been called by having it record
- * (in a static field!) the comment from the last time it was invoked,
- * which is randomly generated each time the test is run.
- */
- @Test
- public void testDoclet() throws Exception {
- Random r = new Random();
- int key = r.nextInt();
- JavaFileObject srcFile = createSimpleJavaFileObject(
- "pkg/C",
- "package pkg; /** " + key + "*/ public class C { }");
- DocumentationTool tool = ToolProvider.getSystemDocumentationTool();
- try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
- File outDir = getOutDir();
- fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
- Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
- DocumentationTask t = tool.getTask(null, fm, null, TestDoclet.class, null, files);
- if (t.call()) {
- System.err.println("task succeeded");
- if (TestDoclet.lastCaller.equals(String.valueOf(key)))
- System.err.println("found expected key: " + key);
- else
- error("Expected key not found");
- checkFiles(outDir, Collections.<String>emptySet());
- } else {
- throw new Exception("task failed");
- }
- }
- }
-
- public static class TestDoclet {
- static String lastCaller;
- public static boolean start(RootDoc root) {
- lastCaller = root.classNamed("pkg.C").commentText().trim();
- return true;
- }
-
- public static int optionLength(String option) {
- return 0; // default is option unknown
- }
-
- public static boolean validOptions(String options[][],
- DocErrorReporter reporter) {
- return true; // default is options are valid
- }
-
- public static LanguageVersion languageVersion() {
- return LanguageVersion.JAVA_1_1;
- }
- }
-
- /**
- * Verify that exceptions from a doclet are thrown as expected.
- */
- @Test
- public void testBadDoclet() throws Exception {
- JavaFileObject srcFile = createSimpleJavaFileObject();
- DocumentationTool tool = ToolProvider.getSystemDocumentationTool();
- try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
- File outDir = getOutDir();
- fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
- Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
- DocumentationTask t = tool.getTask(null, fm, null, BadDoclet.class, null, files);
- try {
- t.call();
- error("call completed without exception");
- } catch (RuntimeException e) {
- Throwable c = e.getCause();
- if (c.getClass() == UnexpectedError.class)
- System.err.println("exception caught as expected: " + c);
- else
- throw e;
- }
- }
- }
-
- public static class UnexpectedError extends Error { }
-
- public static class BadDoclet {
- public static boolean start(RootDoc root) {
- throw new UnexpectedError();
- }
-
- public static int optionLength(String option) {
- return 0; // default is option unknown
- }
-
- public static boolean validOptions(String options[][],
- DocErrorReporter reporter) {
- return true; // default is options are valid
- }
-
- public static LanguageVersion languageVersion() {
- return LanguageVersion.JAVA_1_1;
- }
- }
-
-}
-
--- a/test/langtools/tools/javadoc/api/basic/GetTask_FileManagerTest.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,156 +0,0 @@
-/*
- * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 6493690 8024434
- * @summary javadoc should have a javax.tools.Tool service provider
- * @modules jdk.compiler/com.sun.tools.javac.file
- * jdk.compiler/com.sun.tools.javac.util
- * @build APITest
- * @run main GetTask_FileManagerTest
- */
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Path;
-import java.util.Arrays;
-import java.util.Set;
-
-import javax.tools.DocumentationTool;
-import javax.tools.DocumentationTool.DocumentationTask;
-import javax.tools.FileObject;
-import javax.tools.ForwardingJavaFileManager;
-import javax.tools.JavaFileObject;
-import javax.tools.JavaFileObject.Kind;
-import javax.tools.StandardJavaFileManager;
-import javax.tools.ToolProvider;
-
-import com.sun.tools.javac.file.JavacFileManager;
-import com.sun.tools.javac.util.Context;
-
-/**
- * Tests for DocumentationTool.getTask fileManager parameter.
- */
-public class GetTask_FileManagerTest extends APITest {
- public static void main(String... args) throws Exception {
- new GetTask_FileManagerTest().run();
- }
-
- /**
- * Verify that an alternate file manager can be specified:
- * in this case, a TestFileManager.
- */
- @Test
- public void testFileManager() throws Exception {
- JavaFileObject srcFile = createSimpleJavaFileObject();
- DocumentationTool tool = ToolProvider.getSystemDocumentationTool();
- StandardJavaFileManager fm = new TestFileManager();
- File outDir = getOutDir();
- fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
- Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
- DocumentationTask t = tool.getTask(null, fm, null, null, Arrays.asList("-verbose"), files);
- if (t.call()) {
- System.err.println("task succeeded");
- checkFiles(outDir, standardExpectFiles);
- } else {
- throw new Exception("task failed");
- }
- }
-
- /**
- * Verify that exceptions from a bad file manager are thrown as expected.
- */
- @Test
- public void testBadFileManager() throws Exception {
- JavaFileObject srcFile = createSimpleJavaFileObject();
- DocumentationTool tool = ToolProvider.getSystemDocumentationTool();
- StandardJavaFileManager fm = new TestFileManager() {
- @Override
- public Iterable<JavaFileObject> list(Location location,
- String packageName,
- Set<Kind> kinds,
- boolean recurse)
- throws IOException {
- throw new UnexpectedError();
- }
- };
- fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(getOutDir()));
- Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
- DocumentationTask t = tool.getTask(null, fm, null, null, null, files);
- try {
- t.call();
- error("call completed without exception");
- } catch (RuntimeException e) {
- Throwable c = e.getCause();
- if (c.getClass() == UnexpectedError.class)
- System.err.println("exception caught as expected: " + c);
- else
- throw e;
- }
- }
-
- public static class UnexpectedError extends Error { }
-
- /*
- * A JavaFileManager which is not a JavacFileManager, even though it uses one internally for
- * convenience.
- */
- static class TestFileManager extends ForwardingJavaFileManager<StandardJavaFileManager>
- implements StandardJavaFileManager {
- TestFileManager() {
- super(new JavacFileManager(new Context(), false, null));
- }
-
- @Override
- public Iterable<? extends JavaFileObject> getJavaFileObjectsFromFiles(Iterable<? extends File> files) {
- return fileManager.getJavaFileObjectsFromFiles(files);
- }
-
- @Override
- public Iterable<? extends JavaFileObject> getJavaFileObjects(File... files) {
- return fileManager.getJavaFileObjects(files);
- }
-
- @Override
- public Iterable<? extends JavaFileObject> getJavaFileObjectsFromStrings(Iterable<String> names) {
- return fileManager.getJavaFileObjectsFromStrings(names);
- }
-
- @Override
- public Iterable<? extends JavaFileObject> getJavaFileObjects(String... names) {
- return fileManager.getJavaFileObjects(names);
- }
-
- @Override
- public void setLocation(Location location, Iterable<? extends File> path) throws IOException {
- fileManager.setLocation(location, path);
- }
-
- @Override
- public Iterable<? extends File> getLocation(Location location) {
- return fileManager.getLocation(location);
- }
-
- }
-}
--- a/test/langtools/tools/javadoc/api/basic/GetTask_FileObjectsTest.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,136 +0,0 @@
-/*
- * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 6493690
- * @summary javadoc should have a javax.tools.Tool service provider
- * @modules java.compiler
- * jdk.compiler
- * @build APITest
- * @run main GetTask_FileObjectsTest
- */
-
-import java.io.File;
-import java.util.Arrays;
-import javax.tools.DocumentationTool;
-import javax.tools.DocumentationTool.DocumentationTask;
-import javax.tools.JavaFileObject;
-import javax.tools.StandardJavaFileManager;
-import javax.tools.ToolProvider;
-
-/**
- * Tests for DocumentationTool.getTask fileObjects parameter.
- */
-public class GetTask_FileObjectsTest extends APITest {
- public static void main(String... args) throws Exception {
- new GetTask_FileObjectsTest().run();
- }
-
- /**
- * Verify that expected output files are written via the file manager,
- * for a source file read from the file system with StandardJavaFileManager.
- */
- @Test
- public void testStandardFileObject() throws Exception {
- File testSrc = new File(System.getProperty("test.src"));
- File srcFile = new File(testSrc, "pkg/C.java");
- DocumentationTool tool = ToolProvider.getSystemDocumentationTool();
- try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
- File outDir = getOutDir();
- fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
- Iterable<? extends JavaFileObject> files = fm.getJavaFileObjects(srcFile);
- DocumentationTask t = tool.getTask(null, fm, null, null, null, files);
- if (t.call()) {
- System.err.println("task succeeded");
- checkFiles(outDir, standardExpectFiles);
- } else {
- throw new Exception("task failed");
- }
- }
- }
-
- /**
- * Verify that expected output files are written via the file manager,
- * for an in-memory file object.
- */
- @Test
- public void testMemoryFileObject() throws Exception {
- JavaFileObject srcFile = createSimpleJavaFileObject();
- DocumentationTool tool = ToolProvider.getSystemDocumentationTool();
- try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
- File outDir = getOutDir();
- fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
- Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
- DocumentationTask t = tool.getTask(null, fm, null, null, null, files);
- if (t.call()) {
- System.err.println("task succeeded");
- checkFiles(outDir, standardExpectFiles);
- } else {
- throw new Exception("task failed");
- }
- }
- }
-
- /**
- * Verify bad file object is handled correctly.
- */
- @Test
- public void testBadFileObject() throws Exception {
- File testSrc = new File(System.getProperty("test.src"));
- File srcFile = new File(testSrc, "pkg/C.class"); // unacceptable file kind
- DocumentationTool tool = ToolProvider.getSystemDocumentationTool();
- try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
- File outDir = getOutDir();
- fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
- Iterable<? extends JavaFileObject> files = fm.getJavaFileObjects(srcFile);
- try {
- DocumentationTask t = tool.getTask(null, fm, null, null, null, files);
- error("getTask succeeded, no exception thrown");
- } catch (IllegalArgumentException e) {
- System.err.println("exception caught as expected: " + e);
- }
- }
- }
-
- /**
- * Verify null is handled correctly.
- */
- @Test
- public void testNull() throws Exception {
- DocumentationTool tool = ToolProvider.getSystemDocumentationTool();
- try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
- File outDir = getOutDir();
- fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
- Iterable<? extends JavaFileObject> files = Arrays.asList((JavaFileObject) null);
- try {
- DocumentationTask t = tool.getTask(null, fm, null, null, null, files);
- error("getTask succeeded, no exception thrown");
- } catch (NullPointerException e) {
- System.err.println("exception caught as expected: " + e);
- }
- }
- }
-
-}
-
--- a/test/langtools/tools/javadoc/api/basic/GetTask_OptionsTest.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-/*
- * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 6493690 8141492
- * @summary javadoc should have a javax.tools.Tool service provider
- * @modules java.compiler
- * jdk.compiler
- * @build APITest
- * @run main GetTask_OptionsTest
- */
-
-import java.io.File;
-import java.util.Arrays;
-import java.util.Set;
-import java.util.TreeSet;
-import javax.tools.DocumentationTool;
-import javax.tools.DocumentationTool.DocumentationTask;
-import javax.tools.JavaFileObject;
-import javax.tools.StandardJavaFileManager;
-import javax.tools.ToolProvider;
-
-/**
- * Tests for DocumentationTool.getTask options parameter.
- */
-public class GetTask_OptionsTest extends APITest {
- public static void main(String... args) throws Exception {
- new GetTask_OptionsTest().run();
- }
-
- /**
- * Verify that expected output files are written for given options.
- */
- @Test
- public void testNoIndex() throws Exception {
- JavaFileObject srcFile = createSimpleJavaFileObject();
- DocumentationTool tool = ToolProvider.getSystemDocumentationTool();
- try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
- File outDir = getOutDir();
- fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
- Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
- Iterable<String> options = Arrays.asList("-noindex");
- DocumentationTask t = tool.getTask(null, fm, null, null, options, files);
- if (t.call()) {
- System.err.println("task succeeded");
- Set<String> expectFiles = new TreeSet<String>(noIndexFiles);
- checkFiles(outDir, expectFiles);
- } else {
- error("task failed");
- }
- }
- }
-
- /**
- * Verify null is handled correctly.
- */
- @Test
- public void testNull() throws Exception {
- JavaFileObject srcFile = createSimpleJavaFileObject();
- DocumentationTool tool = ToolProvider.getSystemDocumentationTool();
- try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
- File outDir = getOutDir();
- fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
- Iterable<String> options = Arrays.asList((String) null);
- Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
- try {
- DocumentationTask t = tool.getTask(null, fm, null, null, options, files);
- error("getTask succeeded, no exception thrown");
- } catch (NullPointerException e) {
- System.err.println("exception caught as expected: " + e);
- }
- }
- }
-
-}
-
--- a/test/langtools/tools/javadoc/api/basic/GetTask_WriterTest.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/*
- * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 6493690
- * @summary javadoc should have a javax.tools.Tool service provider
- * @modules java.compiler
- * jdk.compiler
- * @build APITest
- * @run main GetTask_WriterTest
- */
-
-import java.io.File;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.util.Arrays;
-import javax.tools.DocumentationTool;
-import javax.tools.DocumentationTool.DocumentationTask;
-import javax.tools.JavaFileObject;
-import javax.tools.StandardJavaFileManager;
-import javax.tools.ToolProvider;
-
-/**
- * Tests for DocumentationTool.getTask writer parameter.
- */
-public class GetTask_WriterTest extends APITest {
- public static void main(String... args) throws Exception {
- new GetTask_WriterTest().run();
- }
-
- /**
- * Verify that a writer can be provided.
- */
- @Test
- public void testWriter() throws Exception {
- JavaFileObject srcFile = createSimpleJavaFileObject();
- DocumentationTool tool = ToolProvider.getSystemDocumentationTool();
- try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
- File outDir = getOutDir();
- fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
- Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
- StringWriter sw = new StringWriter();
- PrintWriter pw = new PrintWriter(sw);
- DocumentationTask t = tool.getTask(pw, fm, null, null, null, files);
- if (t.call()) {
- System.err.println("task succeeded");
- checkFiles(outDir, standardExpectFiles);
- String out = sw.toString();
- System.err.println(">>" + out + "<<");
- for (String f: standardExpectFiles) {
- String f1 = f.replace('/', File.separatorChar);
- if (f1.endsWith(".html") && !out.contains(f1))
- throw new Exception("expected string not found: " + f1);
- }
- } else {
- throw new Exception("task failed");
- }
- }
- }
-}
-
--- a/test/langtools/tools/javadoc/api/basic/Task_reuseTest.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-/*
- * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 6493690
- * @summary javadoc should have a javax.tools.Tool service provider
- * @modules java.compiler
- * jdk.compiler
- * @build APITest
- * @run main Task_reuseTest
- */
-
-import java.io.File;
-import java.util.Arrays;
-import java.util.Locale;
-import javax.tools.DocumentationTool;
-import javax.tools.DocumentationTool.DocumentationTask;
-import javax.tools.JavaFileObject;
-import javax.tools.StandardJavaFileManager;
-import javax.tools.ToolProvider;
-
-/**
- * Tests for reusing a documentation task.
- */
-public class Task_reuseTest extends APITest {
- public static void main(String... args) throws Exception {
- new Task_reuseTest().run();
- }
-
- /**
- * Verify that call can only be called once.
- */
- @Test
- public void testReuse() throws Exception {
- DocumentationTask t = getAndRunTask();
- try {
- t.call();
- error("task was reused without exception");
- } catch (IllegalStateException e) {
- System.err.println("caught exception " + e);
- }
- }
-
- /**
- * Verify that cannot update task after call
- */
- @Test
- public void testUpdateSetLocale() throws Exception {
- DocumentationTask t = getAndRunTask();
- try {
- t.setLocale(Locale.getDefault());
- error("task was reused without exception");
- } catch (IllegalStateException e) {
- System.err.println("caught exception " + e);
- }
- }
-
- private DocumentationTask getAndRunTask() throws Exception {
- JavaFileObject srcFile = createSimpleJavaFileObject();
- DocumentationTool tool = ToolProvider.getSystemDocumentationTool();
- try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
- File outDir = getOutDir();
- fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
- Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
- DocumentationTask t = tool.getTask(null, fm, null, null, null, files);
- if (t.call()) {
- System.err.println("task succeeded");
- return t;
- } else {
- throw new Exception("task failed");
- }
- }
- }
-}
-
--- a/test/langtools/tools/javadoc/api/basic/pkg/C.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-/*
- * Copyright (c) 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.
- *
- * 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 pkg;
-
-public class C { }
-
--- a/test/langtools/tools/javadoc/api/basic/taglets/UnderlineTaglet.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,152 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met:
- *
- * -Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * -Redistribution in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * Neither the name of Oracle nor the names of
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * This software is provided "AS IS," without a warranty of any
- * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
- * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
- * EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY
- * DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT OF OR
- * RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THE SOFTWARE OR
- * ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE
- * FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT,
- * SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
- * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF
- * THE USE OF OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
- * You acknowledge that Software is not designed, licensed or
- * intended for use in the design, construction, operation or
- * maintenance of any nuclear facility.
- */
-
-import com.sun.tools.doclets.Taglet;
-import com.sun.javadoc.*;
-import java.util.Map;
-
-/**
- * A sample Inline Taglet representing {@underline ...}. This tag can
- * be used in any kind of {@link com.sun.javadoc.Doc}.
- * The text is underlined. For example,
- * "@underline UNDERLINE ME" would be shown as: <u>UNDERLINE ME</u>.
- *
- * @author Jamie Ho
- * @since 1.4
- */
-
-public class UnderlineTaglet implements Taglet {
-
- private static final String NAME = "underline";
-
- /**
- * Return the name of this custom tag.
- */
- public String getName() {
- return NAME;
- }
-
- /**
- * @return true since this tag can be used in a field
- * doc comment
- */
- public boolean inField() {
- return true;
- }
-
- /**
- * @return true since this tag can be used in a constructor
- * doc comment
- */
- public boolean inConstructor() {
- return true;
- }
-
- /**
- * @return true since this tag can be used in a method
- * doc comment
- */
- public boolean inMethod() {
- return true;
- }
-
- /**
- * @return true since this tag can be used in an overview
- * doc comment
- */
- public boolean inOverview() {
- return true;
- }
-
- /**
- * @return true since this tag can be used in a package
- * doc comment
- */
- public boolean inPackage() {
- return true;
- }
-
- /**
- * @return true since this
- */
- public boolean inType() {
- return true;
- }
-
- /**
- * Will return true since this is an inline tag.
- * @return true since this is an inline tag.
- */
-
- public boolean isInlineTag() {
- return true;
- }
-
- /**
- * Register this Taglet.
- * @param tagletMap the map to register this tag to.
- */
- public static void register(Map tagletMap) {
- UnderlineTaglet tag = new UnderlineTaglet();
- Taglet t = (Taglet) tagletMap.get(tag.getName());
- if (t != null) {
- tagletMap.remove(tag.getName());
- }
- tagletMap.put(tag.getName(), tag);
- }
-
- /**
- * Given the <code>Tag</code> representation of this custom
- * tag, return its string representation.
- * @param tag he <code>Tag</code> representation of this custom tag.
- */
- public String toString(Tag tag) {
- return "<u>" + tag.text() + "</u>";
- }
-
- /**
- * This method should not be called since arrays of inline tags do not
- * exist. Method {@link #tostring(Tag)} should be used to convert this
- * inline tag to a string.
- * @param tags the array of <code>Tag</code>s representing of this custom tag.
- */
- public String toString(Tag[] tags) {
- return null;
- }
-}
-
--- a/test/langtools/tools/javadoc/completionFailure/CompletionFailure.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 4670772 6328529
- * @summary Completion failures should be ignored in javadoc.
- * @author gafter
- * @modules jdk.javadoc
- */
-
-import com.sun.javadoc.*;
-import java.util.*;
-
-public class CompletionFailure extends Doclet
-{
- public static void main(String[] args) {
- // run javadoc on package pkg
- if (com.sun.tools.javadoc.Main.execute("javadoc",
- "CompletionFailure",
- CompletionFailure.class.getClassLoader(),
- new String[]{"pkg"}) != 0)
- throw new Error();
- }
-
- public static boolean start(com.sun.javadoc.RootDoc root) {
- ClassDoc[] classes = root.classes();
- if (classes.length != 1)
- throw new Error("1 " + Arrays.asList(classes));
- return true;
- }
-}
--- a/test/langtools/tools/javadoc/completionFailure/pkg/A.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 pkg;
-
-public class A {
-}
--- a/test/langtools/tools/javadoc/completionFailure/pkg/B.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-import pkg.A;
-
-public class B {
-}
--- a/test/langtools/tools/javadoc/dupOk/DupOk.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/*
- * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 4673477
- * @summary The first definition found for each class should be documented
- * @author gafter
- * @modules jdk.javadoc
- */
-
-import com.sun.javadoc.*;
-import java.util.*;
-
-public class DupOk extends Doclet
-{
- public static void main(String[] args) {
- // run javadoc on package p
- if (com.sun.tools.javadoc.Main.
- execute("javadoc", "DupOk", DupOk.class.getClassLoader(),
- new String[]
- {"-sourcepath",
- System.getProperty("test.src", ".") + java.io.File.separatorChar + "sp1" +
- System.getProperty("path.separator") +
- System.getProperty("test.src", ".") + java.io.File.separatorChar + "sp2",
- "p"
- }) != 0)
- throw new Error();
- }
-
- public static boolean start(com.sun.javadoc.RootDoc root) {
- ClassDoc[] classes = root.classes();
- if (classes.length != 2)
- throw new Error("1 " + Arrays.asList(classes));
- for (int i=0; i<classes.length; i++) {
- ClassDoc clazz = classes[i];
- if (clazz.fields().length != 1)
- throw new Error("2 " + clazz + " " + Arrays.asList(clazz.fields()));
- }
- return true;
- }
-}
--- a/test/langtools/tools/javadoc/dupOk/sp1/p/A.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 p;
-
-public class A {
- public int x;
-}
--- a/test/langtools/tools/javadoc/dupOk/sp2/p/A.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 p;
-
-public class A {}
--- a/test/langtools/tools/javadoc/dupOk/sp2/p/B.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 p;
-
-public class B {
- public int x;
-}
--- a/test/langtools/tools/javadoc/enum/docComments/Main.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-/*
- * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 4421066
- * @summary Verify the comments in an enum type.
- * @library ../../lib
- * @modules jdk.javadoc
- * @compile ../../lib/OldToolTester.java Main.java
- * @run main Main
- */
-
-import java.io.IOException;
-import com.sun.javadoc.*;
-
-public class Main extends OldToolTester.Doclet {
-
- private static final OldToolTester tester =
- new OldToolTester("Main", "-package", "pkg1");
-
- public static void main(String[] args) throws IOException {
- tester.run();
- }
-
- public static boolean start(RootDoc root) {
- ClassDoc operation = root.classes()[0];
- boolean ok =
- checkComment(operation.commentText(), "Arithmetic operations.");
-
- for (FieldDoc f : operation.fields()) {
- if (f.name().equals("plus")) {
- ok = checkComment(f.commentText(), "Addition") && ok;
- for (MethodDoc m : operation.methods()) {
- if (m.name().equals("eval")) {
- ok = checkComment(m.commentText(),
- "Perform arithmetic operation " +
- "represented by this constant.") &&
- ok;
- break;
- }
- }
- break;
- }
- }
- if (!ok) {
- throw new Error("Comments don't match expectations.");
- } else {
- return true;
- }
- }
-
- private static boolean checkComment(String found, String expected) {
- System.out.println("expected: \"" + expected + "\"");
- System.out.println("found: \"" + found + "\"");
- return expected.equals(found);
- }
-}
--- a/test/langtools/tools/javadoc/enum/docComments/pkg1/Operation.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 pkg1;
-
-/*
- * Example from JSR 201, which borrowed it from "Effective Java".
- */
-
-/**
- * Arithmetic operations.
- */
-public abstract enum Operation {
- /** Addition */
- plus {
- /** Add 'em up. */
- double eval(double x, double y) { return x + y; }
- },
- minus {
- double eval(double x, double y) { return x - y; }
- },
- times {
- double eval(double x, double y) { return x * y; }
- },
- divided_by {
- double eval(double x, double y) { return x / y; }
- };
-
- /**
- * Perform arithmetic operation represented by this constant.
- */
- abstract double eval(double x, double y);
-}
--- a/test/langtools/tools/javadoc/enum/enumType/Main.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 4421066
- * @summary Verify the contents of an enum type.
- * @library ../../lib
- * @modules jdk.javadoc
- * @compile ../../lib/OldToolTester.java Main.java
- * @run main Main
- */
-
-import java.io.IOException;
-import com.sun.javadoc.*;
-
-public class Main extends OldToolTester.Doclet {
-
- private static final OldToolTester tester = new OldToolTester("Main", "pkg1");
-
- public static void main(String[] args) throws IOException {
- tester.run();
- tester.verify();
- }
-
- public static boolean start(RootDoc root) {
- try {
- for (ClassDoc cd : root.classes()) {
- tester.printClass(cd);
- }
-
- return true;
- } catch (IOException e) {
- return false;
- }
- }
-}
--- a/test/langtools/tools/javadoc/enum/enumType/expected.out Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-enum pkg1.QuotablePerson
- name: QuotablePerson / QuotablePerson / pkg1.QuotablePerson
- superclass:
- java.lang.Enum<pkg1.QuotablePerson>
- enum constants:
- Thoreau
- McLuhan
- Pynchon
- Mencken
- Allen
- Vidal
- Occam
- Groening
- Juvenal
- Eco
- methods:
- pkg1.QuotablePerson[] values()
- QuotablePerson valueOf(String)
--- a/test/langtools/tools/javadoc/enum/enumType/pkg1/QuotablePerson.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 pkg1;
-
-/**
- * Some people we love to quote.
- */
-public enum QuotablePerson {
-
- /** "Beware of all enterprises that require new clothes." */
- Thoreau,
-
- /**
- * "A point of view can be a dangerous luxury when substituted for
- * insight and understanding."
- */
- McLuhan,
-
- /**
- * "If they can keep you asking the wrong questions, they don't have to
- * worry about the answers."
- */
- Pynchon,
-
- /**
- * "For every problem, there is a solution that is simple, elegant,
- * and wrong."
- */
- Mencken,
-
- /**
- * "Formerly unsolvable equations are dealt with by threats of reprisals."
- */
- Allen,
-
- /** "It is not enough to succeed. Others must fail." */
- Vidal,
-
- /** "Entia non sunt multiplicanda praeter necessitatem." */
- Occam,
-
- /**
- * "Love is a snowmobile racing across the tundra and then suddenly it
- * flips over, pinning you underneath. At night, the ice weasels come."
- */
- Groening,
-
- /** "Sed Quis custodiet ipsos custodes?" */
- Juvenal,
-
- /**
- * "The list could surely go on, and there is nothing more wonderful
- * than a list, instrument of wondrous hypotyposis."
- */
- Eco
-}
--- a/test/langtools/tools/javadoc/generics/genericClass/Main.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 4421066
- * @summary Verify the contents of the ClassDoc of a generic class.
- * @library ../../lib
- * @modules jdk.javadoc
- * @compile ../../lib/OldToolTester.java Main.java
- * @run main Main
- */
-
-import java.io.IOException;
-import com.sun.javadoc.*;
-
-public class Main extends OldToolTester.Doclet {
-
- private static final OldToolTester tester = new OldToolTester("Main", "pkg1");
-
- public static void main(String[] args) throws IOException {
- tester.run();
- tester.verify();
- }
-
- public static boolean start(RootDoc root) {
- try {
- for (ClassDoc cd : root.classes()) {
- tester.printClass(cd);
- }
-
- return true;
- } catch (IOException e) {
- return false;
- }
- }
-}
--- a/test/langtools/tools/javadoc/generics/genericClass/expected.out Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-class pkg1.A<T>
- name: A / A / pkg1.A
- type parameters:
- T
- superclass:
- java.lang.Object
- fields:
- T t
- pkg1.A<T> at
- pkg1.A<java.lang.String> as
- constructors:
- A()
- methods:
- void m1(T)
- void m2(A<T>)
- void m3(A<String>)
--- a/test/langtools/tools/javadoc/generics/genericClass/pkg1/A.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 pkg1;
-
-public class A<T> {
- public T t;
- public A<T> at;
- public A<String> as;
-
- public void m1(T t) {}
- public void m2(A<T> at) {}
- public void m3(A<String> as) {}
-}
--- a/test/langtools/tools/javadoc/generics/genericInnerAndOuter/Main.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/*
- * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 4421066
- * @summary Verify the contents of the ClassDoc of
- * a generic class with a generic inner class.
- * @library ../../lib
- * @modules jdk.javadoc
- * @compile ../../lib/OldToolTester.java Main.java
- * @run main Main
- */
-
-import java.io.IOException;
-import java.util.Arrays;
-import com.sun.javadoc.*;
-
-public class Main extends OldToolTester.Doclet {
-
- private static final OldToolTester tester = new OldToolTester("Main", "pkg1");
-
- public static void main(String[] args) throws IOException {
- tester.run();
- tester.verify();
- }
-
- public static boolean start(RootDoc root) {
- try {
- ClassDoc[] cds = root.classes();
- Arrays.sort(cds);
- for (ClassDoc cd : cds) {
- tester.printClass(cd);
- tester.println();
- }
-
- return true;
- } catch (IOException e) {
- return false;
- }
- }
-}
--- a/test/langtools/tools/javadoc/generics/genericInnerAndOuter/expected.out Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-class pkg1.O<T>
- name: O / O / pkg1.O
- type parameters:
- T
- superclass:
- java.lang.Object
- constructors:
- O()
-
-class pkg1.O<T>.I<S>
- name: I / O.I / pkg1.O.I
- type parameters:
- S
- nested in:
- pkg1.O<T>
- superclass:
- java.lang.Object
- constructors:
- I()
- methods:
- void m1(O<String>.I<Number>)
-
-class pkg1.X<T>
- name: X / X / pkg1.X
- type parameters:
- T
- superclass:
- java.lang.Object
- constructors:
- X()
-
-class pkg1.X<T>.Y
- name: Y / X.Y / pkg1.X.Y
- nested in:
- pkg1.X<T>
- superclass:
- java.lang.Object
- constructors:
- Y()
-
-class pkg1.X<T>.Y.Z<S>
- name: Z / X.Y.Z / pkg1.X.Y.Z
- type parameters:
- S
- nested in:
- pkg1.X<T>.Y
- superclass:
- java.lang.Object
- constructors:
- Z()
- methods:
- void m1(X<String>.Y.Z<Number>)
-
--- a/test/langtools/tools/javadoc/generics/genericInnerAndOuter/pkg1/O.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 pkg1;
-
-public class O<T> {
- public class I<S> {
- public void m1(O<String>.I<Number> a) {}
- }
-}
--- a/test/langtools/tools/javadoc/generics/genericInnerAndOuter/pkg1/X.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 pkg1;
-
-public class X<T> {
- public class Y {
- public class Z<S> {
- public void m1(X<String>.Y.Z<Number> a) {}
- }
- }
-}
--- a/test/langtools/tools/javadoc/generics/genericInterface/Main.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 4421066
- * @summary Verify the contents of the ClassDoc of a generic interface.
- * @library ../../lib
- * @modules jdk.javadoc
- * @compile ../../lib/OldToolTester.java Main.java
- * @run main Main
- */
-
-import java.io.IOException;
-import com.sun.javadoc.*;
-
-public class Main extends OldToolTester.Doclet {
-
- private static final OldToolTester tester = new OldToolTester("Main", "pkg1");
-
- public static void main(String[] args) throws IOException {
- tester.run();
- tester.verify();
- }
-
- public static boolean start(RootDoc root) {
- try {
- for (ClassDoc cd : root.classes()) {
- tester.printClass(cd);
- }
-
- return true;
- } catch (IOException e) {
- return false;
- }
- }
-}
--- a/test/langtools/tools/javadoc/generics/genericInterface/expected.out Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-interface pkg1.A<T>
- name: A / A / pkg1.A
- type parameters:
- T
- methods:
- void m1(T)
--- a/test/langtools/tools/javadoc/generics/genericInterface/pkg1/A.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 pkg1;
-
-public interface A<T> {
- void m1(T t);
-}
--- a/test/langtools/tools/javadoc/generics/genericMethod/Main.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 4421066
- * @summary Verify the reading of generic methods and constructors.
- * @library ../../lib
- * @modules jdk.javadoc
- * @compile ../../lib/OldToolTester.java Main.java
- * @run main Main
- */
-
-import java.io.IOException;
-import com.sun.javadoc.*;
-
-public class Main extends OldToolTester.Doclet {
-
- private static final OldToolTester tester = new OldToolTester("Main", "pkg1");
-
- public static void main(String[] args) throws IOException {
- tester.run();
- tester.verify();
- }
-
- public static boolean start(RootDoc root) {
- try {
- for (ClassDoc cd : root.classes()) {
- for (ConstructorDoc c : cd.constructors())
- tester.printConstructor(c);
- for (MethodDoc m : cd.methods())
- tester.printMethod(m);
- }
-
- return true;
- } catch (IOException e) {
- return false;
- }
- }
-}
--- a/test/langtools/tools/javadoc/generics/genericMethod/expected.out Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-constructor <T>pkg1.A()
- signature: ()
- ()
- type parameters:
- T
-method pkg1.A.<T>m1(T)
- signature: (T)
- (T)
- type parameters:
- T
- returns:
- void
-method pkg1.A.<T extends java.lang.Number, U>m2(T, U)
- signature: (T, U)
- (T, U)
- type parameters:
- T extends java.lang.Number
- U
- returns:
- void
--- a/test/langtools/tools/javadoc/generics/genericMethod/pkg1/A.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 pkg1;
-
-public class A {
- public <T> A() {}
- public <T> void m1(T t) {}
- public <T extends Number, U> void m2(T t, U u) {}
-}
--- a/test/langtools/tools/javadoc/generics/genericSuper/Main.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/*
- * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 4421066
- * @summary Verify the contents of the ClassDoc of a generic class.
- * @library ../../lib
- * @modules jdk.javadoc
- * @compile ../../lib/OldToolTester.java Main.java
- * @run main Main
- */
-
-import java.io.IOException;
-import java.util.Arrays;
-import com.sun.javadoc.*;
-
-public class Main extends OldToolTester.Doclet {
-
- private static final OldToolTester tester =
- new OldToolTester("Main", "pkg1", "-package");
-
- public static void main(String[] args) throws IOException {
- tester.run();
- tester.verify();
- }
-
- public static boolean start(RootDoc root) {
- try {
- ClassDoc[] cds = root.classes();
- Arrays.sort(cds);
- for (ClassDoc cd : cds) {
- tester.printClass(cd);
- tester.println();
- }
-
- return true;
- } catch (IOException e) {
- return false;
- }
- }
-}
--- a/test/langtools/tools/javadoc/generics/genericSuper/expected.out Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-class pkg1.A<V, W>
- name: A / A / pkg1.A
- type parameters:
- V
- W
- superclass:
- pkg1.S<W, V>
- interfaces:
- pkg1.I<java.lang.String>
- constructors:
- A()
-
-interface pkg1.I<R>
- name: I / I / pkg1.I
- type parameters:
- R
-
-class pkg1.S<T, U>
- name: S / S / pkg1.S
- type parameters:
- T
- U
- superclass:
- java.lang.Object
- constructors:
- S()
-
--- a/test/langtools/tools/javadoc/generics/genericSuper/pkg1/A.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 pkg1;
-
-class S<T,U> {
-}
-
-interface I<R> {
-}
-
-public class A<V,W> extends S<W,V> implements I<String> {
-}
--- a/test/langtools/tools/javadoc/generics/supertypes/Main.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/*
- * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 4922918
- * @summary Check supertypes and superinterfaces of parameterized types.
- * @library ../../lib
- * @modules jdk.javadoc
- * @compile ../../lib/OldToolTester.java Main.java
- * @run main Main
- */
-
-import java.io.IOException;
-import java.util.Comparator;
-import java.util.Arrays;
-import com.sun.javadoc.*;
-
-public class Main extends OldToolTester.Doclet {
-
- private static final OldToolTester tester = new OldToolTester("Main", "pkg1");
-
- public static void main(String[] args) throws IOException {
- tester.run();
- tester.verify();
- }
-
- public static boolean start(RootDoc root) {
- try {
- ClassDoc[] cds = root.classes();
- Arrays.sort(cds);
- for (ClassDoc cd : cds) {
- ParameterizedType arrayList =
- cd.superclassType().asParameterizedType();
- tester.println(arrayList);
- tester.println();
-
- tester.println(arrayList.superclassType());
- Type[] interfaces = arrayList.interfaceTypes();
- // Sort interfaces by type name, for consistent output.
- Arrays.sort(interfaces,
- new Comparator<Type>() {
- public int compare(Type t1, Type t2) {
- String name1 = t1.qualifiedTypeName();
- String name2 = t2.qualifiedTypeName();
- return name1.compareTo(name2);
- }
- });
- for (Type t : interfaces) {
- tester.println(t);
- }
- tester.println();
- }
-
- return true;
- } catch (IOException e) {
- return false;
- }
- }
-}
--- a/test/langtools/tools/javadoc/generics/supertypes/expected.out Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-java.util.ArrayList<java.lang.String>
-
-java.util.AbstractList<java.lang.String>
-java.io.Serializable
-java.lang.Cloneable
-java.util.List<java.lang.String>
-java.util.RandomAccess
-
-java.util.ArrayList<X>
-
-java.util.AbstractList<X>
-java.io.Serializable
-java.lang.Cloneable
-java.util.List<X>
-java.util.RandomAccess
-
--- a/test/langtools/tools/javadoc/generics/supertypes/pkg1/A.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 pkg1;
-
-import java.util.ArrayList;
-
-public class A extends ArrayList<String> {
-}
--- a/test/langtools/tools/javadoc/generics/supertypes/pkg1/B.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 pkg1;
-
-import java.util.ArrayList;
-
-public class B<X> extends ArrayList<X> {
-}
--- a/test/langtools/tools/javadoc/generics/throwsGeneric/Main.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/*
- * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 4421066
- * @summary Verify the reading of generic methods and constructors.
- * @library ../../lib
- * @modules jdk.javadoc
- * @compile ../../lib/OldToolTester.java Main.java
- * @run main Main
- */
-
-import java.io.IOException;
-import com.sun.javadoc.*;
-
-public class Main extends OldToolTester.Doclet {
-
- private static final OldToolTester tester = new OldToolTester("Main", "pkg1");
-
- public static void main(String[] args) throws IOException {
- tester.run();
- tester.verify();
- }
-
- public static boolean start(RootDoc root) {
- try {
- for (ClassDoc cd : root.classes()) {
- for (MethodDoc m : cd.methods())
- tester.printMethod(m);
- }
-
- return true;
- } catch (IOException e) {
- return false;
- }
- }
-}
--- a/test/langtools/tools/javadoc/generics/throwsGeneric/expected.out Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-method pkg1.A.m1()
- signature: ()
- ()
- throws:
- T extends java.lang.Throwable
- returns:
- void
-method pkg1.A.<U extends java.lang.Throwable>m2()
- signature: ()
- ()
- type parameters:
- U extends java.lang.Throwable
- throws:
- U extends java.lang.Throwable
- returns:
- void
--- a/test/langtools/tools/javadoc/generics/throwsGeneric/pkg1/A.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 pkg1;
-
-public interface A<T extends Throwable> {
- void m1() throws T;
- <U extends Throwable> void m2() throws U;
-}
--- a/test/langtools/tools/javadoc/generics/tparamCycle/Main.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 4421066
- * @summary Check a type parameter whose bound cycles back on itself.
- * @library ../../lib
- * @modules jdk.javadoc
- * @compile ../../lib/OldToolTester.java Main.java
- * @run main Main
- */
-
-import java.io.IOException;
-import com.sun.javadoc.*;
-
-public class Main extends OldToolTester.Doclet {
-
- private static final OldToolTester tester = new OldToolTester("Main", "pkg1");
-
- public static void main(String[] args) throws IOException {
- tester.run();
- }
-
- public static boolean start(RootDoc root) {
- ClassDoc cd = root.classes()[0];
- System.out.println("*** " + cd);
- TypeVariable E = cd.typeParameters()[0];
- System.out.println("*** " + E);
- Type bound = E.bounds()[0];
- System.out.println("*** " + bound);
-
- // Verify that we have an instantiation of Enum<E>, and not
- // the generic interface.
- ParameterizedType enumE = (ParameterizedType)bound;
-
- if (enumE.asClassDoc() != cd) {
- throw new Error("Type declaration and type use don't match up.");
- } else {
- return true;
- }
- }
-}
--- a/test/langtools/tools/javadoc/generics/tparamCycle/pkg1/LikeEnum.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 pkg1;
-
-public interface LikeEnum<E extends LikeEnum<E>> {
-}
--- a/test/langtools/tools/javadoc/generics/tparamTagOnMethod/Main.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 4421066
- * @summary Verify the reading of type parameter tags on methods.
- * @library ../../lib
- * @modules jdk.javadoc
- * @compile ../../lib/OldToolTester.java Main.java
- * @run main Main
- */
-
-import java.io.IOException;
-import com.sun.javadoc.*;
-
-public class Main extends OldToolTester.Doclet {
-
- private static final OldToolTester tester = new OldToolTester("Main", "pkg1");
-
- public static void main(String[] args) throws IOException {
- tester.run();
- tester.verify();
- }
-
- public static boolean start(RootDoc root) {
- try {
- for (ClassDoc cd : root.classes()) {
- for (MethodDoc m : cd.methods()) {
- tester.printMethod(m);
- }
- }
-
- return true;
- } catch (IOException e) {
- return false;
- }
- }
-}
--- a/test/langtools/tools/javadoc/generics/tparamTagOnMethod/expected.out Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-method pkg1.A.<T, U>m1(T, U)
- signature: (T, U)
- (T, U)
- @param <T> the kind of thing
- @param <U> the other kind of thing
- @param t the thing itself
- @param u the other thing
- type parameters:
- T
- U
- returns:
- void
--- a/test/langtools/tools/javadoc/generics/tparamTagOnMethod/pkg1/A.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 pkg1;
-
-public interface A {
- /**
- * @param <T> the kind of thing
- * @param <U> the other kind of thing
- * @param t the thing itself
- * @param u the other thing
- */
- public <T,U> void m1(T t, U u);
-}
--- a/test/langtools/tools/javadoc/generics/tparamTagOnType/Main.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 4421066
- * @summary Verify the reading of a type parameter tag on an interface.
- * @library ../../lib
- * @modules jdk.javadoc
- * @compile ../../lib/OldToolTester.java Main.java
- * @run main Main
- */
-
-import java.io.IOException;
-import com.sun.javadoc.*;
-
-public class Main extends OldToolTester.Doclet {
-
- private static final OldToolTester tester = new OldToolTester("Main", "pkg1");
-
- public static void main(String[] args) throws IOException {
- tester.run();
- tester.verify();
- }
-
- public static boolean start(RootDoc root) {
- try {
- for (ClassDoc cd : root.classes()) {
- tester.printClass(cd);
- }
-
- return true;
- } catch (IOException e) {
- return false;
- }
- }
-}
--- a/test/langtools/tools/javadoc/generics/tparamTagOnType/expected.out Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-interface pkg1.A<T>
- name: A / A / pkg1.A
- type parameters:
- T
- @param <T> the type parameter
--- a/test/langtools/tools/javadoc/generics/tparamTagOnType/pkg1/A.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 pkg1;
-
-/**
- * @param <T> the type parameter
- */
-public interface A<T> {
-}
--- a/test/langtools/tools/javadoc/generics/wildcards/Main.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 4421066
- * @summary Verify the contents of the ClassDoc of a generic class.
- * @library ../../lib
- * @modules jdk.javadoc
- * @compile ../../lib/OldToolTester.java Main.java
- * @run main Main
- */
-
-import java.io.IOException;
-import com.sun.javadoc.*;
-
-public class Main extends OldToolTester.Doclet {
-
- private static final OldToolTester tester = new OldToolTester("Main", "pkg1");
-
- public static void main(String[] args) throws IOException {
- tester.run();
- tester.verify();
- }
-
- public static boolean start(RootDoc root) {
- try {
- for (ClassDoc cd : root.classes()) {
- tester.printClass(cd);
- }
-
- return true;
- } catch (IOException e) {
- return false;
- }
- }
-}
--- a/test/langtools/tools/javadoc/generics/wildcards/expected.out Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-class pkg1.A<T>
- name: A / A / pkg1.A
- type parameters:
- T
- superclass:
- java.lang.Object
- fields:
- pkg1.A<?> f1
- pkg1.A<? extends java.lang.Number> f2
- pkg1.A<? super java.lang.Long> f3
- constructors:
- A()
- methods:
- void m1(A<?>)
- void m2(A<? extends Number>)
- void m3(A<? super Long>)
--- a/test/langtools/tools/javadoc/generics/wildcards/pkg1/A.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 pkg1;
-
-public class A<T> {
- public A<?> f1;
- public A<? extends Number> f2;
- public A<? super Long> f3;
-
- public void m1(A<?> p1) {}
- public void m2(A<? extends Number> p2) {}
- public void m3(A<? super Long> p3) {}
-}
--- a/test/langtools/tools/javadoc/imports/I.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-// The following imported class is bogus, but should still be returned
-// when inquired of.
-import bo.o.o.o.Gus;
-
-public interface I {
-}
--- a/test/langtools/tools/javadoc/imports/MissingImport.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/*
- * Copyright (c) 2004, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 5012972
- * @summary ClassDoc.getImportedClasses should return a class even if
- * it's not in the classpath.
- * @modules jdk.javadoc
- */
-
-import com.sun.javadoc.*;
-
-
-public class MissingImport extends Doclet {
-
- public static void main(String[] args) {
- String thisFile = "" +
- new java.io.File(System.getProperty("test.src", "."),
- "I.java");
-
- if (com.sun.tools.javadoc.Main.execute(
- "javadoc",
- "MissingImport",
- MissingImport.class.getClassLoader(),
- new String[] {thisFile}) != 0)
- throw new Error("Javadoc encountered warnings or errors.");
- }
-
- /*
- * The world's simplest doclet.
- */
- public static boolean start(RootDoc root) {
- ClassDoc c = root.classNamed("I");
- ClassDoc[] imps = c.importedClasses();
- if (imps.length == 0 ||
- !imps[0].qualifiedName().equals("bo.o.o.o.Gus")) {
- throw new Error("Import bo.o.o.o.Gus not found");
- }
- return true;
- }
-}
--- a/test/langtools/tools/javadoc/lib/OldToolTester.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,338 +0,0 @@
-/*
- * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * A utility used to invoke and test the javadoc tool.
- *
- * @author Scott Seligman
- */
-
-
-import java.io.*;
-import java.util.*;
-import com.sun.javadoc.*;
-
-
-public class OldToolTester {
-
- protected final String TEST_SRC = System.getProperty("test.src", ".");
- protected final String TEST_CLASSES = System.getProperty("test.classes",
- ".");
- private final String DEFAULT_ARGS[] = {
- "-sourcepath", TEST_SRC,
- };
-
- private final File outputFile = new File(TEST_CLASSES, "testrun.out");
- private final File expectedOutputFile = new File(TEST_SRC, "expected.out");
-// private final File bootstrapMarkerFile = new File("bootstrap");
-
- // True if we should "set expectations" by writing the expected output file
- // rather than reading it and comparing.
-// private final boolean bootstrap = bootstrapMarkerFile.isFile();
-
- private String docletName;
- private String[] args;
- private Writer out = null;
-
-
- /*
- * Individual tests can extend this to create generics-aware doclets.
- */
- public static abstract class Doclet extends com.sun.javadoc.Doclet {
- public static LanguageVersion languageVersion() {
- return LanguageVersion.JAVA_1_5;
- }
- }
-
-
- public OldToolTester(String docletName) {
- this(docletName, new String[0]);
- }
-
- public OldToolTester(String docletName, String... additionalArgs) {
- this.docletName = docletName;
-
- int len = DEFAULT_ARGS.length + additionalArgs.length;
- args = new String[len];
- System.arraycopy(DEFAULT_ARGS, 0, args, 0, DEFAULT_ARGS.length);
- System.arraycopy(additionalArgs, 0, args, DEFAULT_ARGS.length,
- additionalArgs.length);
-
- try {
- out = new BufferedWriter(new FileWriter(outputFile));
- } catch (IOException e) {
- throw new Error("Could not open output file " + outputFile);
- }
- }
-
- public void run() throws IOException {
- try {
- if (com.sun.tools.javadoc.Main.execute("javadoc",
- docletName,
- getClass().getClassLoader(),
- args) != 0) {
- throw new Error("Javadoc errors encountered.");
- }
- System.out.println("--> Output written to " + outputFile);
- } finally {
- out.close();
- }
- }
-
- /*
- * Compare output of test run to expected output.
- * Throw an Error if they don't match.
- */
- public void verify() throws IOException {
- BufferedReader thisRun =
- new BufferedReader(new FileReader(outputFile));
- BufferedReader expected =
- new BufferedReader(new FileReader(expectedOutputFile));
-
- for (int lineNum = 1; true; lineNum++) {
- String line1 = thisRun.readLine();
- String line2 = expected.readLine();
- if (line1 == null && line2 == null) {
- return; // EOF with all lines matching
- }
- if (line1 == null || !line1.equals(line2)) {
- throw new Error(outputFile + ":" + lineNum +
- ": output doesn't match");
- }
- }
- }
-
-
- public void println(Object o) throws IOException {
- prln(0, o);
- }
-
- public void println() throws IOException {
- prln();
- }
-
- public void printPackage(PackageDoc p) throws IOException {
- prPackage(0, p);
- }
-
- public void printClass(ClassDoc cd) throws IOException {
- if (cd.isAnnotationType())
- printAnnotationType((AnnotationTypeDoc)cd);
- else
- prClass(0, cd);
- }
-
- public void printAnnotationType(AnnotationTypeDoc at) throws IOException {
- prAnnotationType(0, at);
- }
-
- public void printField(FieldDoc f) throws IOException {
- prField(0, f);
- }
-
- public void printParameter(Parameter p) throws IOException {
- prParameter(0, p);
- }
-
- public void printMethod(MethodDoc m) throws IOException {
- prln(0, "method " + m);
- prMethod(0, m);
- }
-
- public void printAnnotationTypeElement(AnnotationTypeElementDoc e)
- throws IOException {
- prln(0, "element " + e);
- prMethod(0, e);
- }
-
- public void printConstructor(ConstructorDoc c) throws IOException {
- prln(0, "constructor " + c);
- prExecutable(0, c);
- }
-
-
- private void prPackage(int off, PackageDoc p) throws IOException {
- prln(off, "package " + p);
- prAnnotations(off + 2, p.annotations());
- }
-
- private void prClass(int off, ClassDoc cd) throws IOException {
- prln(off,
- (cd.isInterface() ? "interface" : cd.isEnum() ? "enum" : "class")
- + " " + cd);
- prln(off + 2, "name: " + cd.simpleTypeName() + " / " +
- cd.typeName() + " / " + cd.qualifiedTypeName());
- prAnnotations(off + 2, cd.annotations());
- prLabel(off + 2, "type parameters");
- for (Type t : cd.typeParameters())
- prln(off + 4, t);
- prParamTags(off + 2, cd.typeParamTags());
- prLabel(off + 2, "nested in");
- prln(off + 4, cd.containingClass());
- prLabel(off + 2, "superclass");
- prln(off + 4, cd.superclassType());
- prLabel(off + 2, "interfaces");
- Type[] ts = cd.interfaceTypes();
- Arrays.sort(ts);
- for (Type t : ts)
- prln(off + 4, t);
- prLabel(off + 2, "enum constants");
- for (FieldDoc f : cd.enumConstants())
- prln(off + 4, f.name());
- prLabel(off + 2, "fields");
- for (FieldDoc f : cd.fields())
- prln(off + 4, f.type() + " " + f.name());
- prLabel(off + 2, "constructors");
- for (ConstructorDoc c : cd.constructors())
- prln(off + 4, c.name() + c.flatSignature());
- prLabel(off + 2, "methods");
- for (MethodDoc m : cd.methods())
- prln(off + 4, typeUseString(m.returnType()) + " " +
- m.name() + m.flatSignature());
- }
-
- private void prAnnotationType(int off, AnnotationTypeDoc at)
- throws IOException {
- prln(off, "@interface " + at);
- prAnnotations(off + 2, at.annotations());
- prLabel(off + 2, "elements");
- for (AnnotationTypeElementDoc e : at.elements()) {
- String def = (e.defaultValue() == null)
- ? ""
- : " default " + e.defaultValue();
- prln(off + 4, typeUseString(e.returnType()) + " " + e.name() +
- e.flatSignature() + def);
- }
- }
-
- private void prField(int off, FieldDoc f) throws IOException {
- prln(off, "field " + typeUseString(f.type()) + " " + f.name());
- prAnnotations(off + 2, f.annotations());
- }
-
- private void prParameter(int off, Parameter p) throws IOException {
- prln(off, "parameter " + p);
- prAnnotations(off + 2, p.annotations());
- }
-
- private void prMethod(int off, MethodDoc m) throws IOException {
- prExecutable(off, m);
- prLabel(off + 2, "returns");
- prln(off + 4, typeUseString(m.returnType()));
- prLabel(off + 2, "overridden type");
- prln(off + 4, m.overriddenType());
- }
-
- private void prExecutable(int off, ExecutableMemberDoc m)
- throws IOException {
- if (!m.isAnnotationTypeElement()) {
- prln(off + 2, "signature: " + m.flatSignature());
- prln(off + 2, " " + m.signature());
- }
- prAnnotations(off + 2, m.annotations());
- prParamTags(off + 2, m.typeParamTags());
- prParamTags(off + 2, m.paramTags());
- prLabel(off + 2, "type parameters");
- for (Type t : m.typeParameters())
- prln(off + 4, t);
- prLabel(off + 2, "throws");
- Type[] ts = m.thrownExceptionTypes();
- Arrays.sort(ts);
- for (Type t : ts)
- prln(off + 4, t);
- }
-
- private void prAnnotations(int off, AnnotationDesc[] as)
- throws IOException {
- prLabel(off, "annotations");
- for (AnnotationDesc a : as)
- prln(off + 2, a.toString());
- }
-
- private void prParamTags(int off, ParamTag tags[]) throws IOException {
- for (ParamTag tag : tags)
- prParamTag(off, tag);
- }
-
- private void prParamTag(int off, ParamTag tag) throws IOException {
- String name = tag.parameterName();
- if (tag.isTypeParameter()) name = "<" + name + ">";
- prln(off, "@param " + name + " " + tag.parameterComment());
- }
-
-
- private String typeUseString(Type t) {
- return (t instanceof ClassDoc || t instanceof TypeVariable)
- ? t.typeName()
- : t.toString();
- }
-
-
- // Labels queued for possible printing. Innermost is first in list.
- List<Line> labels = new ArrayList<Line>();
-
- // Print label if its section is nonempty.
- void prLabel(int off, String s) {
- while (!labels.isEmpty() && labels.get(0).off >= off)
- labels.remove(0);
- labels.add(0, new Line(off, s));
- }
-
- // Print queued labels with offsets less than "off".
- void popLabels(int off) throws IOException {
- while (!labels.isEmpty()) {
- Line label = labels.remove(0);
- if (label.off < off)
- prln(label.off, label.o + ":");
- }
- }
-
- // Print "o" at given offset.
- void pr(int off, Object o) throws IOException {
- popLabels(off);
- for (int i = 0; i < off; i++)
- out.write(' ');
- if (o != null)
- out.write(o.toString());
- }
-
- // Print "o" (if non-null) at given offset, then newline.
- void prln(int off, Object o) throws IOException {
- if (o != null) {
- pr(off, o);
- prln();
- }
- }
-
- // Print newline.
- void prln() throws IOException {
- out.write('\n'); // don't want platform-dependent separator
- }
-
-
- static class Line {
- int off;
- Object o;
- Line(int off, Object o) { this.off = off; this.o = o; }
- }
-}
--- a/test/langtools/tools/javadoc/lib/ToyDoclet.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-import java.util.Arrays;
-
-import com.sun.javadoc.ClassDoc;
-import com.sun.javadoc.PackageDoc;
-import com.sun.javadoc.ProgramElementDoc;
-import com.sun.javadoc.RootDoc;
-
-@SuppressWarnings("deprecation")
-public class ToyDoclet {
-
- public static boolean start(RootDoc root) {
- String whoami = "I am a toy doclet";
- root.printNotice("Notice: " + whoami);
- boolean status = false;
- for (ClassDoc cls : root.classes()) {
- if (!status) status = true;
- root.printNotice("Classes: " + cls);
- printClassMembers(root, cls);
- }
- for (ClassDoc cls : root.specifiedClasses()) {
- if (!status) status = true;
- root.printNotice("Specified-classes: " + cls);
- printClassMembers(root, cls);
- }
- for (PackageDoc pkg : root.specifiedPackages()) {
- if (!status) status = true;
- root.printNotice("Specified-packages: " + pkg);
- }
- return status;
- }
-
- static void printClassMembers(RootDoc root, ClassDoc cls) {
- root.printNotice("Members for: " + cls);
- root.printNotice(" extends " + Arrays.asList(cls.superclass()));
- root.printNotice(" Fields: ");
- printMembers(root, cls.fields());
- root.printNotice(" Constructor: ");
- printMembers(root, cls.constructors());
- root.printNotice(" Method: ");
- printMembers(root, cls.methods());
- if (cls.superclass() != null && !cls.superclassType().toString().equals("java.lang.Object"))
- printClassMembers(root, cls.superclass());
- }
-
- static void printMembers(RootDoc root, ProgramElementDoc[] pgmDocs) {
- for (ProgramElementDoc pgmDoc : pgmDocs) {
- root.printNotice(" " + pgmDoc + ", Comments: " + pgmDoc.getRawCommentText());
- }
- }
-
- public static int optionLength(String option) {
- System.out.println("option: " + option);
- return 0; // all options are unsupported
- }
-}
--- a/test/langtools/tools/javadoc/nestedClass/NestedClass.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 4694497
- * @summary BDoclet API: Bad ClassDoc for nested classes when built from .class files
- * @author gafter
- * @modules jdk.javadoc
- * @compile NestedClass.java NestedClassB.java
- * @run main NestedClass
- */
-
-import com.sun.javadoc.*;
-import java.util.*;
-
-public class NestedClass extends Doclet
-{
- public NestedClassB b;
-
- public static void main(String[] args) {
- if (com.sun.tools.javadoc.Main.
- execute("javadoc", "NestedClass", NestedClass.class.getClassLoader(),
- new String[] {System.getProperty("test.src", ".") +
- java.io.File.separatorChar +
- "NestedClass.java"})
- != 0)
- throw new Error();
- }
-
- public static boolean start(com.sun.javadoc.RootDoc root) {
- ClassDoc[] classes = root.classes();
- if (classes.length != 1)
- throw new Error("1 " + Arrays.asList(classes));
- ClassDoc self = classes[0];
- FieldDoc B = self.fields()[0];
- ClassDoc[] Binner = B.type().asClassDoc().innerClasses();
- return Binner.length == 1;
- }
-}
--- a/test/langtools/tools/javadoc/nestedClass/NestedClassB.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
-public class NestedClassB {
- public static class Inner {}
-}
--- a/test/langtools/tools/javadoc/nonConstExprs/Test.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/*
- * Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
- * @test
- * @bug 8010310
- * @summary Error processing sources with -private
- * @modules jdk.javadoc
- */
-
-import java.io.File;
-
-public class Test {
- public static void main(String... args) throws Exception {
- File testSrc = new File(System.getProperty("test.src"));
- String[] jdoc_args = {
- new File(testSrc, Test.class.getSimpleName() + ".java").getPath()
- };
- int rc = com.sun.tools.javadoc.Main.execute(jdoc_args);
- if (rc != 0)
- throw new Exception("unexpected return code from javadoc: " + rc);
- }
-
- static int array[] = { 1, 2, 3};
- static int method(int p) { return p; }
- static int value = 0;
-
- public int not_static_not_final = 1;
- public static int static_not_final = 2;
- public final int not_static_final = 3;
- public static final int static_final = 4;
-
- public static final int array_index = array[0];
- public static final int method_call = method(0);
- public static final int inner_class = new Test() { }.method(0);
- public static final int new_class = new Test().method(0);
- public static final int pre_inc = ++value;
- public static final int pre_dec = --value;
- public static final int post_inc = value++;
- public static final int post_dec = value--;
-}
-
--- a/test/langtools/tools/javadoc/outputRedirect/Test.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/* @test
- * @bug 4587487
- * @summary com.sun.tools.javadoc.Main.execute ignores PrintWriters
- * @author gafter
- * @modules jdk.javadoc
- * @compile p/OutputRedirect.java
- * @run main p.OutputRedirect
- */
-
-// jtreg description-only file
--- a/test/langtools/tools/javadoc/outputRedirect/p/OutputRedirect.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 p;
-
-import java.io.*;
-import com.sun.tools.javadoc.Main;
-
-public class OutputRedirect {
-
- public static void main(String[] args) {
- PrintStream originalOutput = System.out;
- try {
- doTest();
- } finally {
- // restore things
- System.setOut(originalOutput);
- }
- }
-
- static void doTest() {
- ByteArrayOutputStream redirectedOutput = new ByteArrayOutputStream();
- PrintStream originalOutput = System.out;
-
- // redirect System.out to a buffer
- System.setOut(new PrintStream(redirectedOutput));
-
- PrintWriter sink = new PrintWriter(new ByteArrayOutputStream());
-
- // execute javadoc
- int result = Main.execute("javadoc", sink, sink, sink,
- "com.sun.tools.doclets.standard.Standard",
- new String[] {"p"}
- );
-
-
- // test whether javadoc did any output to System.out
- if (redirectedOutput.toByteArray().length > 0) {
- originalOutput.println("Test failed; here's what javadoc wrote on its standard output:");
- originalOutput.println(redirectedOutput.toString());
- throw new Error("javadoc output wasn\'t properly redirected");
- } else if (result != 0) {
- throw new Error("javadoc run failed");
- } else {
- originalOutput.println("OK, good");
- }
- }
-}
--- a/test/langtools/tools/javadoc/parser/7091528/T7091528.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-/*
- * Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
- * @test
- * @bug 7091528 8029145 8037484
- * @summary ensures javadoc parses unique source files and ignores all class files
- * @modules jdk.javadoc/com.sun.tools.doclets.standard
- * @library /tools/javadoc/lib
- * @build ToyDoclet
- * @compile p/C1.java p/q/C2.java
- * @run main T7091528
- */
-
-import java.io.File;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-public class T7091528 {
- public static void main(String... args) {
- new T7091528().run();
- }
- void run() {
- File testSrc = new File(System.getProperty("test.src"));
- File testClasses = new File(System.getProperty("test.classes"));
- // 7091528, tests if class files are being ignored
- runTest(
- "-sourcepath", testClasses + File.pathSeparator + testSrc,
- "-subpackages",
- "p");
- // 8029145, tests if unique source files are parsed
- runTest(
- "-sourcepath", testSrc.getAbsolutePath(),
- "-subpackages",
- "p:p.q");
- File testPkgDir = new File(testSrc, "p");
- File testFile = new File(testPkgDir, "C3.java");
- runTest(
- "-sourcepath", testSrc.getAbsolutePath(),
- testFile.getAbsolutePath(),
- "p");
- runTest(
- "-classpath", testSrc.getAbsolutePath(),
- testFile.getAbsolutePath(),
- "p");
-
- }
- void runTest(String... args) {
- StringWriter sw = new StringWriter();
- PrintWriter pw = new PrintWriter(sw);
- int rc = com.sun.tools.javadoc.Main.execute("example", pw, pw, pw,
- "ToyDoclet", getClass().getClassLoader(), args);
- pw.close();
-
- String out = sw.toString();
- if (!out.isEmpty()) {
- System.err.println(out);
- }
-
- if (rc != 0)
- throw new Error("javadoc failed: exit code = " + rc);
-
- if (out.matches("(?s).*p/[^ ]+\\.class.*"))
- throw new Error("reading .class files");
- }
-}
--- a/test/langtools/tools/javadoc/parser/7091528/p/C1.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package p1;
-
-/** This is class C1. */
-public class C1 { }
-
--- a/test/langtools/tools/javadoc/parser/7091528/p/C3.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
- * 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.
- *
- * 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.
- */
-
-/** This is class C3, and no package for me please */
-public class C3 {}
-
--- a/test/langtools/tools/javadoc/parser/7091528/p/q/C2.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package p.q;
-
-/** This is class p.q.C2. */
-public class C2 { }
-
--- a/test/langtools/tools/javadoc/sourceOnly/Test.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 4548768 8034258
- * @summary Javadoc in JDK 1.4 uses classpath and not just source dir
- * @author gafter
- * @modules jdk.javadoc
- * @compile p/SourceOnly.java p/NonSource.jasm
- * @run main p.SourceOnly
- */
-
-// this file is just a dummy to get the javadoc started.
-//
-// NOTE: this test only seems to work in separate JVM mode for
-// reasons having something to do with javing tools.jar
-// on the classpath. Until that is sorted out, these tests
-// must be run in separate VM mode.
--- a/test/langtools/tools/javadoc/sourceOnly/p/NonSource.jasm Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package p;
-
-super public class NonSource
- version 46:0
-{
- public Method "<init>":"()V"
- stack 1 locals 1
- {
- aload_0;
- invokespecial Method java/lang/Object."<init>":"()V";
- return;
- }
-}
--- a/test/langtools/tools/javadoc/sourceOnly/p/SourceOnly.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 2008, 2017, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package p;
-
-/** Test that when running javadoc on a package, we only get
- * documentation for those classes for which source was provided.
- */
-public class SourceOnly extends com.sun.javadoc.Doclet {
- NonSource dependency; // force a compilation error if not on classpath.
-
- public static void main(String[] args) {
- // run javadoc on package p
- int result = com.sun.tools.javadoc.Main.
- execute("javadoc", "p.SourceOnly", SourceOnly.class.getClassLoader(), new String[] {"p"});
- if (result != 0)
- throw new Error();
- }
-
- public static boolean start(com.sun.javadoc.RootDoc root) {
- if (root.classes().length != 1)
- throw new Error("wrong set of classes documented: " + java.util.Arrays.asList(root.classes()));
- return true;
- }
-}
--- a/test/langtools/tools/javadoc/sourceOption/SourceOption.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-/*
- * Copyright (c) 2006, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 6507179
- * @summary Ensure that "-source" option isn't ignored.
- * @author Scott Seligman
- * @modules jdk.javadoc
- * @run main/fail SourceOption 7
- * @run main SourceOption 9
- * @run main SourceOption
- */
-
-/*
- * In order to test whether or not the -source option is working
- * correctly, this test tries to parse source code that contains
- * a feature that is not available in at least one of the currently
- * supported previous versions.
- *
- * Parsing such code should be expected to fail; if the action
- * passes, that means the -source option is (incorrectly) ineffective.
- *
- * Additional actions are performed to ensure that the source
- * provided is valid for the current release of the JDK.
- *
- * As support for older versions of the platform are dropped, the
- * source code (currently p/LambdaConstructTest.java) will need to
- * be updated with a more recent feature.
- */
-
-import com.sun.javadoc.*;
-
-public class SourceOption extends Doclet {
-
- public static void main(String[] args) {
- String[] params;
- if ((args == null) || (args.length==0)) {
- params = new String[]{"p"};
- System.out.println("NOTE : -source not provided, default taken");
- } else {
- params = new String[]{"-source", args[0], "p"};
- System.out.println("NOTE : -source will be: " + args[0]);
- }
-
- if (com.sun.tools.javadoc.Main.execute(
- "javadoc",
- "SourceOption",
- SourceOption.class.getClassLoader(),
- params) != 0)
- throw new Error("Javadoc encountered warnings or errors.");
-
- }
-
- public static boolean start(RootDoc root) {
- root.classes(); // force parser into action
- return true;
- }
-}
--- a/test/langtools/tools/javadoc/sourceOption/p/LambdaConstructTest.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
- * 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.
- *
- * 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.
- */
-
-public class LambdaConstructTest {
- public static void main(String[] args) {
-
- System.out.println("=== LambdaConstructTest ===");
-
- // Lambda Runnable
- Runnable lambda = () -> System.out.println("it's a Lambda world!");
-
- // Run it!
- lambda.run();
-
- }
-}
-
--- a/test/langtools/tools/javadoc/subpackageIgnore/SubpackageIgnore.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 4773013
- * @summary When hunting subpackages, silently ignore any directory name that
- * can't be part of a subpackage.
- * @modules jdk.javadoc
- */
-
-import com.sun.javadoc.*;
-
-public class SubpackageIgnore extends Doclet {
-
- public static void main(String[] args) {
- if (com.sun.tools.javadoc.Main.execute(
- "javadoc",
- "SubpackageIgnore",
- SubpackageIgnore.class.getClassLoader(),
- new String[] {"-Xwerror",
- "-sourcepath",
- System.getProperty("test.src", "."),
- "-subpackages",
- "pkg1"}) != 0)
- throw new Error("Javadoc encountered warnings or errors.");
- }
-
- /*
- * The world's simplest doclet.
- */
- public static boolean start(RootDoc root) {
- return true;
- }
-}
--- a/test/langtools/tools/javadoc/subpackageIgnore/pkg1/not-subpkg/SomeJavaFile.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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.
- */
-
--- a/test/langtools/tools/javadoc/varArgs/Main.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-/*
- * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 4421066 5006659
- * @summary Verify the contents of a ClassDoc containing a varArgs method.
- * Verify that see/link tags can use "..." notation.
- * @library ../lib
- * @modules jdk.javadoc
- * @compile ../lib/OldToolTester.java Main.java
- * @run main Main
- */
-
-import java.io.IOException;
-import com.sun.javadoc.*;
-
-public class Main extends OldToolTester.Doclet {
-
- private static final OldToolTester tester =
- new OldToolTester("Main", "-Xwerror", "pkg1");
-
- public static void main(String[] args) throws IOException {
- tester.run();
- tester.verify();
- }
-
- public static boolean start(RootDoc root) {
- try {
- for (ClassDoc cd : root.classes()) {
- tester.printClass(cd);
-
- for (SeeTag tag : cd.seeTags()) {
- if (tag.referencedMember() != cd.methods()[0]) {
- throw new Error("5006659: @see tag meets varArgs");
- }
- }
- }
-
- return true;
- } catch (IOException e) {
- return false;
- }
- }
-}
--- a/test/langtools/tools/javadoc/varArgs/expected.out Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-interface pkg1.A
- name: A / A / pkg1.A
- methods:
- void m1(int, String...)
--- a/test/langtools/tools/javadoc/varArgs/pkg1/A.java Wed Feb 20 17:00:40 2019 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * 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 pkg1;
-
-/**
- * Interface A.
- *
- * @see #m1(int, String[])
- * @see #m1(int, String...)
- */
-public interface A {
- void m1(int i, String... ss);
-}