--- a/.hgtags Mon Apr 27 09:17:48 2015 -0700
+++ b/.hgtags Tue May 05 13:29:12 2015 -0700
@@ -304,3 +304,4 @@
da950f343762a856d69751570a4c07cfa68a415b jdk9-b59
38f98cb6b33562a926ec3b79c7b34128be37647d jdk9-b60
ac3f5a39d4ff14d70c365e12cf5ec8f2abd52a04 jdk9-b61
+e7dbbef69d12b6a74dfad331b7188e7f893e8d29 jdk9-b62
--- a/.hgtags-top-repo Mon Apr 27 09:17:48 2015 -0700
+++ b/.hgtags-top-repo Tue May 05 13:29:12 2015 -0700
@@ -304,3 +304,4 @@
39e8a131289e8386aa4c3e4b184faa812a7c0421 jdk9-b59
9fa2185bee17462d1014538bff60af6e6f0b01e7 jdk9-b60
ea38728b4f4bdd8fd0d7a89b18069f521cf05013 jdk9-b61
+105d045a69174d870b69bfe471b3f2d05a9f8ecc jdk9-b62
--- a/common/autoconf/basics.m4 Mon Apr 27 09:17:48 2015 -0700
+++ b/common/autoconf/basics.m4 Tue May 05 13:29:12 2015 -0700
@@ -478,6 +478,15 @@
AUTOCONF_DIR=$TOPDIR/common/autoconf
])
+# Evaluates platform specific overrides for devkit variables.
+# $1: Name of variable
+AC_DEFUN([BASIC_EVAL_DEVKIT_VARIABLE],
+[
+ if test "x[$]$1" = x; then
+ eval $1="\${$1_${OPENJDK_TARGET_CPU}}"
+ fi
+])
+
AC_DEFUN_ONCE([BASIC_SETUP_DEVKIT],
[
AC_ARG_WITH([devkit], [AS_HELP_STRING([--with-devkit],
@@ -487,12 +496,27 @@
DEVKIT_ROOT="$with_devkit"
# Check for a meta data info file in the root of the devkit
if test -f "$DEVKIT_ROOT/devkit.info"; then
+ . $DEVKIT_ROOT/devkit.info
# This potentially sets the following:
- # DEVKIT_NAME: A descriptive name of the devkit
- # DEVKIT_TOOLCHAIN_PATH: Corresponds to --with-toolchain-path
- # DEVKIT_EXTRA_PATH: Corresponds to --with-extra-path
- # DEVKIT_SYSROOT: Corresponds to --with-sysroot
- . $DEVKIT_ROOT/devkit.info
+ # A descriptive name of the devkit
+ BASIC_EVAL_DEVKIT_VARIABLE([DEVKIT_NAME])
+ # Corresponds to --with-extra-path
+ BASIC_EVAL_DEVKIT_VARIABLE([DEVKIT_EXTRA_PATH])
+ # Corresponds to --with-toolchain-path
+ BASIC_EVAL_DEVKIT_VARIABLE([DEVKIT_TOOLCHAIN_PATH])
+ # Corresponds to --with-sysroot
+ BASIC_EVAL_DEVKIT_VARIABLE([DEVKIT_SYSROOT])
+
+ # Identifies the Visual Studio version in the devkit
+ BASIC_EVAL_DEVKIT_VARIABLE([DEVKIT_VS_VERSION])
+ # The Visual Studio include environment variable
+ BASIC_EVAL_DEVKIT_VARIABLE([DEVKIT_VS_INCLUDE])
+ # The Visual Studio lib environment variable
+ BASIC_EVAL_DEVKIT_VARIABLE([DEVKIT_VS_LIB])
+ # Corresponds to --with-msvcr-dll
+ BASIC_EVAL_DEVKIT_VARIABLE([DEVKIT_MSVCR_DLL])
+ # Corresponds to --with-msvcp-dll
+ BASIC_EVAL_DEVKIT_VARIABLE([DEVKIT_MSVCP_DLL])
fi
AC_MSG_CHECKING([for devkit])
@@ -502,9 +526,7 @@
AC_MSG_RESULT([$DEVKIT_ROOT])
fi
- if test "x$DEVKIT_EXTRA_PATH" != x; then
- BASIC_PREPEND_TO_PATH([EXTRA_PATH],$DEVKIT_EXTRA_PATH)
- fi
+ BASIC_PREPEND_TO_PATH([EXTRA_PATH],$DEVKIT_EXTRA_PATH)
# Fallback default of just /bin if DEVKIT_PATH is not defined
if test "x$DEVKIT_TOOLCHAIN_PATH" = x; then
@@ -681,8 +703,12 @@
files_present=`$LS $OUTPUT_ROOT`
# Configure has already touched config.log and confdefs.h in the current dir when this check
# is performed.
- filtered_files=`$ECHO "$files_present" | $SED -e 's/config.log//g' -e 's/confdefs.h//g' -e 's/ //g' \
- | $TR -d '\n'`
+ filtered_files=`$ECHO "$files_present" \
+ | $SED -e 's/config.log//g' \
+ -e 's/confdefs.h//g' \
+ -e 's/fixpath.exe//g' \
+ -e 's/ //g' \
+ | $TR -d '\n'`
if test "x$filtered_files" != x; then
AC_MSG_NOTICE([Current directory is $CURDIR.])
AC_MSG_NOTICE([Since this is not the source root, configure will output the configuration here])
--- a/common/autoconf/basics_windows.m4 Mon Apr 27 09:17:48 2015 -0700
+++ b/common/autoconf/basics_windows.m4 Tue May 05 13:29:12 2015 -0700
@@ -66,7 +66,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -320,8 +320,8 @@
WINDOWS_ENV_VENDOR='cygwin'
WINDOWS_ENV_VERSION="$CYGWIN_VERSION"
- CYGWIN_VERSION_OK=`$ECHO $CYGWIN_VERSION | $GREP ^1.7.`
- if test "x$CYGWIN_VERSION_OK" = x; then
+ CYGWIN_VERSION_OLD=`$ECHO $CYGWIN_VERSION | $GREP -e '^1\.[0-6]'`
+ if test "x$CYGWIN_VERSION_OLD" != x; then
AC_MSG_NOTICE([Your cygwin is too old. You are running $CYGWIN_VERSION, but at least cygwin 1.7 is required. Please upgrade.])
AC_MSG_ERROR([Cannot continue])
fi
--- a/common/autoconf/generated-configure.sh Mon Apr 27 09:17:48 2015 -0700
+++ b/common/autoconf/generated-configure.sh Tue May 05 13:29:12 2015 -0700
@@ -3464,6 +3464,10 @@
# Setup basic configuration paths, and platform-specific stuff related to PATHs.
+# Evaluates platform specific overrides for devkit variables.
+# $1: Name of variable
+
+
@@ -4363,7 +4367,7 @@
#CUSTOM_AUTOCONF_INCLUDE
# Do not change or remove the following line, it is needed for consistency checks:
-DATE_WHEN_GENERATED=1429271657
+DATE_WHEN_GENERATED=1430822730
###############################################################################
#
@@ -14048,8 +14052,8 @@
WINDOWS_ENV_VENDOR='cygwin'
WINDOWS_ENV_VERSION="$CYGWIN_VERSION"
- CYGWIN_VERSION_OK=`$ECHO $CYGWIN_VERSION | $GREP ^1.7.`
- if test "x$CYGWIN_VERSION_OK" = x; then
+ CYGWIN_VERSION_OLD=`$ECHO $CYGWIN_VERSION | $GREP -e '^1\.0-6'`
+ if test "x$CYGWIN_VERSION_OLD" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: Your cygwin is too old. You are running $CYGWIN_VERSION, but at least cygwin 1.7 is required. Please upgrade." >&5
$as_echo "$as_me: Your cygwin is too old. You are running $CYGWIN_VERSION, but at least cygwin 1.7 is required. Please upgrade." >&6;}
as_fn_error $? "Cannot continue" "$LINENO" 5
@@ -14182,7 +14186,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -14308,7 +14312,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -14878,7 +14882,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -14965,12 +14969,63 @@
DEVKIT_ROOT="$with_devkit"
# Check for a meta data info file in the root of the devkit
if test -f "$DEVKIT_ROOT/devkit.info"; then
+ . $DEVKIT_ROOT/devkit.info
# This potentially sets the following:
- # DEVKIT_NAME: A descriptive name of the devkit
- # DEVKIT_TOOLCHAIN_PATH: Corresponds to --with-toolchain-path
- # DEVKIT_EXTRA_PATH: Corresponds to --with-extra-path
- # DEVKIT_SYSROOT: Corresponds to --with-sysroot
- . $DEVKIT_ROOT/devkit.info
+ # A descriptive name of the devkit
+
+ if test "x$DEVKIT_NAME" = x; then
+ eval DEVKIT_NAME="\${DEVKIT_NAME_${OPENJDK_TARGET_CPU}}"
+ fi
+
+ # Corresponds to --with-extra-path
+
+ if test "x$DEVKIT_EXTRA_PATH" = x; then
+ eval DEVKIT_EXTRA_PATH="\${DEVKIT_EXTRA_PATH_${OPENJDK_TARGET_CPU}}"
+ fi
+
+ # Corresponds to --with-toolchain-path
+
+ if test "x$DEVKIT_TOOLCHAIN_PATH" = x; then
+ eval DEVKIT_TOOLCHAIN_PATH="\${DEVKIT_TOOLCHAIN_PATH_${OPENJDK_TARGET_CPU}}"
+ fi
+
+ # Corresponds to --with-sysroot
+
+ if test "x$DEVKIT_SYSROOT" = x; then
+ eval DEVKIT_SYSROOT="\${DEVKIT_SYSROOT_${OPENJDK_TARGET_CPU}}"
+ fi
+
+
+ # Identifies the Visual Studio version in the devkit
+
+ if test "x$DEVKIT_VS_VERSION" = x; then
+ eval DEVKIT_VS_VERSION="\${DEVKIT_VS_VERSION_${OPENJDK_TARGET_CPU}}"
+ fi
+
+ # The Visual Studio include environment variable
+
+ if test "x$DEVKIT_VS_INCLUDE" = x; then
+ eval DEVKIT_VS_INCLUDE="\${DEVKIT_VS_INCLUDE_${OPENJDK_TARGET_CPU}}"
+ fi
+
+ # The Visual Studio lib environment variable
+
+ if test "x$DEVKIT_VS_LIB" = x; then
+ eval DEVKIT_VS_LIB="\${DEVKIT_VS_LIB_${OPENJDK_TARGET_CPU}}"
+ fi
+
+ # Corresponds to --with-msvcr-dll
+
+ if test "x$DEVKIT_MSVCR_DLL" = x; then
+ eval DEVKIT_MSVCR_DLL="\${DEVKIT_MSVCR_DLL_${OPENJDK_TARGET_CPU}}"
+ fi
+
+ # Corresponds to --with-msvcp-dll
+
+ if test "x$DEVKIT_MSVCP_DLL" = x; then
+ eval DEVKIT_MSVCP_DLL="\${DEVKIT_MSVCP_DLL_${OPENJDK_TARGET_CPU}}"
+ fi
+
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for devkit" >&5
@@ -14983,7 +15038,6 @@
$as_echo "$DEVKIT_ROOT" >&6; }
fi
- if test "x$DEVKIT_EXTRA_PATH" != x; then
if test "x$DEVKIT_EXTRA_PATH" != x; then
if test "x$EXTRA_PATH" = x; then
@@ -14993,7 +15047,6 @@
fi
fi
- fi
# Fallback default of just /bin if DEVKIT_PATH is not defined
if test "x$DEVKIT_TOOLCHAIN_PATH" = x; then
@@ -15288,8 +15341,12 @@
files_present=`$LS $OUTPUT_ROOT`
# Configure has already touched config.log and confdefs.h in the current dir when this check
# is performed.
- filtered_files=`$ECHO "$files_present" | $SED -e 's/config.log//g' -e 's/confdefs.h//g' -e 's/ //g' \
- | $TR -d '\n'`
+ filtered_files=`$ECHO "$files_present" \
+ | $SED -e 's/config.log//g' \
+ -e 's/confdefs.h//g' \
+ -e 's/fixpath.exe//g' \
+ -e 's/ //g' \
+ | $TR -d '\n'`
if test "x$filtered_files" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: Current directory is $CURDIR." >&5
$as_echo "$as_me: Current directory is $CURDIR." >&6;}
@@ -15356,7 +15413,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -15671,7 +15728,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -16058,7 +16115,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -16442,7 +16499,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -16831,7 +16888,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -17214,7 +17271,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -20279,7 +20336,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -20608,7 +20665,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -20799,7 +20856,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -20983,7 +21040,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -21166,7 +21223,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -21349,7 +21406,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -21523,7 +21580,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -21672,7 +21729,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -21842,7 +21899,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -22167,7 +22224,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -22379,7 +22436,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -22556,7 +22613,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -22761,7 +22818,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -22938,7 +22995,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -23143,7 +23200,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -23320,7 +23377,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -23525,7 +23582,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -23702,7 +23759,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -23894,7 +23951,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -24069,7 +24126,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -24262,7 +24319,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -24437,7 +24494,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -24629,7 +24686,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -24804,7 +24861,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -24997,7 +25054,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -25172,7 +25229,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -25346,7 +25403,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -26726,11 +26783,15 @@
ORG_CFLAGS="$CFLAGS"
ORG_CXXFLAGS="$CXXFLAGS"
+ # autoconf magic only relies on PATH, so update it if tools dir is specified
+ OLD_PATH="$PATH"
+
# On Windows, we need to detect the visual studio installation first.
# This will change the PATH, but we need to keep that new PATH even
# after toolchain detection is done, since the compiler (on x86) uses
# it for DLL resolution in runtime.
- if test "x$OPENJDK_BUILD_OS" = "xwindows" && test "x$TOOLCHAIN_TYPE" = "xmicrosoft"; then
+ if test "x$OPENJDK_BUILD_OS" = "xwindows" \
+ && test "x$TOOLCHAIN_TYPE" = "xmicrosoft"; then
# Store path to cygwin link.exe to help excluding it when searching for
# VS linker. This must be done before changing the PATH when looking for VS.
@@ -26808,6 +26869,56 @@
done
exit 0
+ elif test "x$DEVKIT_VS_VERSION" != x; then
+ VS_VERSION=$DEVKIT_VS_VERSION
+ TOOLCHAIN_VERSION=$VS_VERSION
+ eval VS_DESCRIPTION="\${VS_DESCRIPTION_${VS_VERSION}}"
+ eval VS_VERSION_INTERNAL="\${VS_VERSION_INTERNAL_${VS_VERSION}}"
+ eval MSVCR_NAME="\${VS_MSVCR_${VS_VERSION}}"
+ eval MSVCP_NAME="\${VS_MSVCP_${VS_VERSION}}"
+ eval PLATFORM_TOOLSET="\${VS_VS_PLATFORM_NAME_${VS_VERSION}}"
+ VS_PATH="$TOOLCHAIN_PATH:$PATH"
+
+ # Convert DEVKIT_VS_INCLUDE into windows style VS_INCLUDE so that it
+ # can still be exported as INCLUDE for compiler invocations without
+ # SYSROOT_CFLAGS
+ OLDIFS="$IFS"
+ IFS=";"
+ for i in $DEVKIT_VS_INCLUDE; do
+ ipath=$i
+
+ unix_path="$ipath"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ windows_path=`$CYGPATH -m "$unix_path"`
+ ipath="$windows_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ windows_path=`cmd //c echo $unix_path`
+ ipath="$windows_path"
+ fi
+
+ VS_INCLUDE="$VS_INCLUDE;$ipath"
+ done
+ # Convert DEVKIT_VS_LIB into VS_LIB so that it can still be exported
+ # as LIB for compiler invocations without SYSROOT_LDFLAGS
+ for i in $DEVKIT_VS_LIB; do
+ libpath=$i
+
+ unix_path="$libpath"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ windows_path=`$CYGPATH -m "$unix_path"`
+ libpath="$windows_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ windows_path=`cmd //c echo $unix_path`
+ libpath="$windows_path"
+ fi
+
+ VS_LIB="$VS_LIB;$libpath"
+ done
+ IFS="$OLDIFS"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found devkit $VS_DESCRIPTION" >&5
+$as_echo "$as_me: Found devkit $VS_DESCRIPTION" >&6;}
+
elif test "x$with_toolchain_version" != x; then
# User override; check that it is valid
if test "x${VALID_VS_VERSIONS/$with_toolchain_version/}" = "x${VALID_VS_VERSIONS}"; then
@@ -27380,8 +27491,10 @@
done
- if test "x$VS_ENV_CMD" != x; then
- # We have found a Visual Studio environment on disk, let's extract variables from the vsvars bat file.
+ # If we have a devkit, skip all of the below.
+ if test "x$DEVKIT_VS_VERSION" = x; then
+ if test "x$VS_ENV_CMD" != x; then
+ # We have found a Visual Studio environment on disk, let's extract variables from the vsvars bat file.
# Only process if variable expands to non-empty
@@ -27481,7 +27594,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -27669,17 +27782,17 @@
fi
- # Lets extract the variables that are set by vcvarsall.bat/vsvars32.bat/vsvars64.bat
- { $as_echo "$as_me:${as_lineno-$LINENO}: Trying to extract Visual Studio environment variables" >&5
+ # Lets extract the variables that are set by vcvarsall.bat/vsvars32.bat/vsvars64.bat
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Trying to extract Visual Studio environment variables" >&5
$as_echo "$as_me: Trying to extract Visual Studio environment variables" >&6;}
- # We need to create a couple of temporary files.
- VS_ENV_TMP_DIR="$CONFIGURESUPPORT_OUTPUTDIR/vs-env"
- $MKDIR -p $VS_ENV_TMP_DIR
-
- # Cannot use the VS10 setup script directly (since it only updates the DOS subshell environment).
- # Instead create a shell script which will set the relevant variables when run.
- WINPATH_VS_ENV_CMD="$VS_ENV_CMD"
+ # We need to create a couple of temporary files.
+ VS_ENV_TMP_DIR="$CONFIGURESUPPORT_OUTPUTDIR/vs-env"
+ $MKDIR -p $VS_ENV_TMP_DIR
+
+ # Cannot use the VS10 setup script directly (since it only updates the DOS subshell environment).
+ # Instead create a shell script which will set the relevant variables when run.
+ WINPATH_VS_ENV_CMD="$VS_ENV_CMD"
unix_path="$WINPATH_VS_ENV_CMD"
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
@@ -27690,7 +27803,7 @@
WINPATH_VS_ENV_CMD="$windows_path"
fi
- WINPATH_BASH="$BASH"
+ WINPATH_BASH="$BASH"
unix_path="$WINPATH_BASH"
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
@@ -27702,59 +27815,67 @@
fi
- # Generate a DOS batch file which runs $VS_ENV_CMD, and then creates a shell
- # script (executable by bash) that will setup the important variables.
- EXTRACT_VC_ENV_BAT_FILE="$VS_ENV_TMP_DIR/extract-vs-env.bat"
- $ECHO "@echo off" > $EXTRACT_VC_ENV_BAT_FILE
- # This will end up something like:
- # call C:/progra~2/micros~2.0/vc/bin/amd64/vcvars64.bat
- $ECHO "call $WINPATH_VS_ENV_CMD $VS_ENV_ARGS" >> $EXTRACT_VC_ENV_BAT_FILE
- # These will end up something like:
- # C:/CygWin/bin/bash -c 'echo VS_PATH=\"$PATH\" > localdevenv.sh
- # The trailing space for everyone except PATH is no typo, but is needed due
- # to trailing \ in the Windows paths. These will be stripped later.
- $ECHO "$WINPATH_BASH -c 'echo VS_PATH="'\"$PATH\" > set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
- $ECHO "$WINPATH_BASH -c 'echo VS_INCLUDE="'\"$INCLUDE\;$include \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
- $ECHO "$WINPATH_BASH -c 'echo VS_LIB="'\"$LIB\;$lib \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
- $ECHO "$WINPATH_BASH -c 'echo VCINSTALLDIR="'\"$VCINSTALLDIR \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
- $ECHO "$WINPATH_BASH -c 'echo WindowsSdkDir="'\"$WindowsSdkDir \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
- $ECHO "$WINPATH_BASH -c 'echo WINDOWSSDKDIR="'\"$WINDOWSSDKDIR \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
-
- # Now execute the newly created bat file.
- # The | cat is to stop SetEnv.Cmd to mess with system colors on msys.
- # Change directory so we don't need to mess with Windows paths in redirects.
- cd $VS_ENV_TMP_DIR
- cmd /c extract-vs-env.bat | $CAT
- cd $CURDIR
-
- if test ! -s $VS_ENV_TMP_DIR/set-vs-env.sh; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: Could not succesfully extract the envionment variables needed for the VS setup." >&5
+ # Generate a DOS batch file which runs $VS_ENV_CMD, and then creates a shell
+ # script (executable by bash) that will setup the important variables.
+ EXTRACT_VC_ENV_BAT_FILE="$VS_ENV_TMP_DIR/extract-vs-env.bat"
+ $ECHO "@echo off" > $EXTRACT_VC_ENV_BAT_FILE
+ # This will end up something like:
+ # call C:/progra~2/micros~2.0/vc/bin/amd64/vcvars64.bat
+ $ECHO "call $WINPATH_VS_ENV_CMD $VS_ENV_ARGS" >> $EXTRACT_VC_ENV_BAT_FILE
+ # These will end up something like:
+ # C:/CygWin/bin/bash -c 'echo VS_PATH=\"$PATH\" > localdevenv.sh
+ # The trailing space for everyone except PATH is no typo, but is needed due
+ # to trailing \ in the Windows paths. These will be stripped later.
+ $ECHO "$WINPATH_BASH -c 'echo VS_PATH="'\"$PATH\" > set-vs-env.sh' \
+ >> $EXTRACT_VC_ENV_BAT_FILE
+ $ECHO "$WINPATH_BASH -c 'echo VS_INCLUDE="'\"$INCLUDE\;$include \" >> set-vs-env.sh' \
+ >> $EXTRACT_VC_ENV_BAT_FILE
+ $ECHO "$WINPATH_BASH -c 'echo VS_LIB="'\"$LIB\;$lib \" >> set-vs-env.sh' \
+ >> $EXTRACT_VC_ENV_BAT_FILE
+ $ECHO "$WINPATH_BASH -c 'echo VCINSTALLDIR="'\"$VCINSTALLDIR \" >> set-vs-env.sh' \
+ >> $EXTRACT_VC_ENV_BAT_FILE
+ $ECHO "$WINPATH_BASH -c 'echo WindowsSdkDir="'\"$WindowsSdkDir \" >> set-vs-env.sh' \
+ >> $EXTRACT_VC_ENV_BAT_FILE
+ $ECHO "$WINPATH_BASH -c 'echo WINDOWSSDKDIR="'\"$WINDOWSSDKDIR \" >> set-vs-env.sh' \
+ >> $EXTRACT_VC_ENV_BAT_FILE
+
+ # Now execute the newly created bat file.
+ # The | cat is to stop SetEnv.Cmd to mess with system colors on msys.
+ # Change directory so we don't need to mess with Windows paths in redirects.
+ cd $VS_ENV_TMP_DIR
+ cmd /c extract-vs-env.bat | $CAT
+ cd $CURDIR
+
+ if test ! -s $VS_ENV_TMP_DIR/set-vs-env.sh; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not succesfully extract the envionment variables needed for the VS setup." >&5
$as_echo "$as_me: Could not succesfully extract the envionment variables needed for the VS setup." >&6;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: Try setting --with-tools-dir to the VC/bin directory within the VS installation" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Try setting --with-tools-dir to the VC/bin directory within the VS installation" >&5
$as_echo "$as_me: Try setting --with-tools-dir to the VC/bin directory within the VS installation" >&6;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: or run \"bash.exe -l\" from a VS command prompt and then run configure from there." >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: or run \"bash.exe -l\" from a VS command prompt and then run configure from there." >&5
$as_echo "$as_me: or run \"bash.exe -l\" from a VS command prompt and then run configure from there." >&6;}
- as_fn_error $? "Cannot continue" "$LINENO" 5
- fi
-
- # Now set all paths and other env variables. This will allow the rest of
- # the configure script to find and run the compiler in the proper way.
- { $as_echo "$as_me:${as_lineno-$LINENO}: Setting extracted environment variables" >&5
+ as_fn_error $? "Cannot continue" "$LINENO" 5
+ fi
+
+ # Now set all paths and other env variables. This will allow the rest of
+ # the configure script to find and run the compiler in the proper way.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting extracted environment variables" >&5
$as_echo "$as_me: Setting extracted environment variables" >&6;}
- . $VS_ENV_TMP_DIR/set-vs-env.sh
- # Now we have VS_PATH, VS_INCLUDE, VS_LIB. For further checking, we
- # also define VCINSTALLDIR, WindowsSdkDir and WINDOWSSDKDIR.
- else
- # We did not find a vsvars bat file, let's hope we are run from a VS command prompt.
- { $as_echo "$as_me:${as_lineno-$LINENO}: Cannot locate a valid Visual Studio installation, checking current environment" >&5
+ . $VS_ENV_TMP_DIR/set-vs-env.sh
+ # Now we have VS_PATH, VS_INCLUDE, VS_LIB. For further checking, we
+ # also define VCINSTALLDIR, WindowsSdkDir and WINDOWSSDKDIR.
+ else
+ # We did not find a vsvars bat file, let's hope we are run from a VS command prompt.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Cannot locate a valid Visual Studio installation, checking current environment" >&5
$as_echo "$as_me: Cannot locate a valid Visual Studio installation, checking current environment" >&6;}
+ fi
fi
# At this point, we should have correct variables in the environment, or we can't continue.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Visual Studio variables" >&5
$as_echo_n "checking for Visual Studio variables... " >&6; }
- if test "x$VCINSTALLDIR" != x || test "x$WindowsSDKDir" != x || test "x$WINDOWSSDKDIR" != x; then
+ if test "x$VCINSTALLDIR" != x || test "x$WindowsSDKDir" != x \
+ || test "x$WINDOWSSDKDIR" != x || test "x$DEVKIT_NAME" != x; then
if test "x$VS_INCLUDE" = x || test "x$VS_LIB" = x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: present but broken" >&5
$as_echo "present but broken" >&6; }
@@ -27839,7 +27960,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -27989,7 +28110,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -28108,9 +28229,6 @@
export LIB="$VS_LIB"
fi
- # autoconf magic only relies on PATH, so update it if tools dir is specified
- OLD_PATH="$PATH"
-
# For solaris we really need solaris tools, and not the GNU equivalent.
# The build tools on Solaris reside in /usr/ccs (C Compilation System),
# so add that to path before starting to probe.
@@ -28449,7 +28567,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -28910,7 +29028,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -30197,7 +30315,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -30658,7 +30776,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -31524,7 +31642,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -31943,7 +32061,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -32291,7 +32409,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -32790,7 +32908,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -33422,7 +33540,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -33897,7 +34015,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -34240,7 +34358,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -34581,7 +34699,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -34904,7 +35022,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -35423,7 +35541,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -35895,7 +36013,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -36367,7 +36485,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -36840,7 +36958,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -37424,7 +37542,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -38006,7 +38124,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -38597,7 +38715,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -39185,7 +39303,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -39681,7 +39799,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -40153,7 +40271,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -40625,7 +40743,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -41176,7 +41294,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -44730,7 +44848,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -44856,7 +44974,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -45091,7 +45209,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -45217,7 +45335,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -45713,7 +45831,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -45839,7 +45957,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -46049,7 +46167,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -46175,7 +46293,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -46376,7 +46494,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -46502,7 +46620,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -46703,7 +46821,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -46829,7 +46947,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -47031,7 +47149,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -47157,7 +47275,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -47360,7 +47478,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -47486,7 +47604,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -47685,7 +47803,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -47811,7 +47929,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -48010,7 +48128,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -48136,7 +48254,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -48318,7 +48436,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -48452,7 +48570,7 @@
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
+ # Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
@@ -49967,7 +50085,7 @@
if test "x$with_msvcr_dll" != x; then
# If given explicitely by user, do not probe. If not present, fail directly.
- DLL_NAME="$DLL_NAME"
+ DLL_NAME="$MSVCR_NAME"
POSSIBLE_MSVC_DLL="$with_msvcr_dll"
METHOD="--with-msvcr-dll"
if test -n "$POSSIBLE_MSVC_DLL" -a -e "$POSSIBLE_MSVC_DLL"; then
@@ -49997,6 +50115,132 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
$as_echo "ok" >&6; }
MSVC_DLL="$POSSIBLE_MSVC_DLL"
+
+ # Only process if variable expands to non-empty
+
+ if test "x$MSVC_DLL" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$MSVC_DLL"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of MSVC_DLL" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$MSVC_DLL"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$MSVC_DLL"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of MSVC_DLL, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ MSVC_DLL="`cd "$path"; $THEPWDCMD -L`"
+ fi
+ fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $DLL_NAME" >&5
$as_echo_n "checking for $DLL_NAME... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSVC_DLL" >&5
@@ -50012,9 +50256,183 @@
if test "x$MSVC_DLL" = x; then
as_fn_error $? "Could not find a proper $MSVCR_NAME as specified by --with-msvcr-dll" "$LINENO" 5
fi
- else
-
- VAR_NAME="MSVCR_DLL"
+ MSVCR_DLL="$MSVC_DLL"
+ elif test "x$DEVKIT_MSVCR_DLL" != x; then
+
+ DLL_NAME="$MSVCR_NAME"
+ POSSIBLE_MSVC_DLL="$DEVKIT_MSVCR_DLL"
+ METHOD="devkit"
+ if test -n "$POSSIBLE_MSVC_DLL" -a -e "$POSSIBLE_MSVC_DLL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD" >&5
+$as_echo "$as_me: Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD" >&6;}
+
+ # Need to check if the found msvcr is correct architecture
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking found $DLL_NAME architecture" >&5
+$as_echo_n "checking found $DLL_NAME architecture... " >&6; }
+ MSVC_DLL_FILETYPE=`$FILE -b "$POSSIBLE_MSVC_DLL"`
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ # The MSYS 'file' command returns "PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit"
+ # on x32 and "PE32+ executable for MS Windows (DLL) (GUI) Mono/.Net assembly" on x64 systems.
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ CORRECT_MSVCR_ARCH="PE32 executable"
+ else
+ CORRECT_MSVCR_ARCH="PE32+ executable"
+ fi
+ else
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ CORRECT_MSVCR_ARCH=386
+ else
+ CORRECT_MSVCR_ARCH=x86-64
+ fi
+ fi
+ if $ECHO "$MSVC_DLL_FILETYPE" | $GREP "$CORRECT_MSVCR_ARCH" 2>&1 > /dev/null; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+ MSVC_DLL="$POSSIBLE_MSVC_DLL"
+
+ # Only process if variable expands to non-empty
+
+ if test "x$MSVC_DLL" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$MSVC_DLL"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of MSVC_DLL" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$MSVC_DLL"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$MSVC_DLL"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of MSVC_DLL, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ MSVC_DLL="`cd "$path"; $THEPWDCMD -L`"
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $DLL_NAME" >&5
+$as_echo_n "checking for $DLL_NAME... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSVC_DLL" >&5
+$as_echo "$MSVC_DLL" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: incorrect, ignoring" >&5
+$as_echo "incorrect, ignoring" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE" >&5
+$as_echo "$as_me: The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE" >&6;}
+ fi
+ fi
+
+ if test "x$MSVC_DLL" = x; then
+ as_fn_error $? "Could not find a proper $MSVCR_NAME as specified by devkit" "$LINENO" 5
+ fi
+ MSVCR_DLL="$MSVC_DLL"
+ else
+
DLL_NAME="${MSVCR_NAME}"
MSVC_DLL=
@@ -50069,6 +50487,132 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
$as_echo "ok" >&6; }
MSVC_DLL="$POSSIBLE_MSVC_DLL"
+
+ # Only process if variable expands to non-empty
+
+ if test "x$MSVC_DLL" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$MSVC_DLL"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of MSVC_DLL" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$MSVC_DLL"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$MSVC_DLL"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of MSVC_DLL, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ MSVC_DLL="`cd "$path"; $THEPWDCMD -L`"
+ fi
+ fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $DLL_NAME" >&5
$as_echo_n "checking for $DLL_NAME... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSVC_DLL" >&5
@@ -50118,6 +50662,132 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
$as_echo "ok" >&6; }
MSVC_DLL="$POSSIBLE_MSVC_DLL"
+
+ # Only process if variable expands to non-empty
+
+ if test "x$MSVC_DLL" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$MSVC_DLL"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of MSVC_DLL" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$MSVC_DLL"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$MSVC_DLL"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of MSVC_DLL, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ MSVC_DLL="`cd "$path"; $THEPWDCMD -L`"
+ fi
+ fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $DLL_NAME" >&5
$as_echo_n "checking for $DLL_NAME... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSVC_DLL" >&5
@@ -50177,6 +50847,132 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
$as_echo "ok" >&6; }
MSVC_DLL="$POSSIBLE_MSVC_DLL"
+
+ # Only process if variable expands to non-empty
+
+ if test "x$MSVC_DLL" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$MSVC_DLL"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of MSVC_DLL" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$MSVC_DLL"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$MSVC_DLL"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of MSVC_DLL, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ MSVC_DLL="`cd "$path"; $THEPWDCMD -L`"
+ fi
+ fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $DLL_NAME" >&5
$as_echo_n "checking for $DLL_NAME... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSVC_DLL" >&5
@@ -50243,6 +51039,132 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
$as_echo "ok" >&6; }
MSVC_DLL="$POSSIBLE_MSVC_DLL"
+
+ # Only process if variable expands to non-empty
+
+ if test "x$MSVC_DLL" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$MSVC_DLL"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of MSVC_DLL" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$MSVC_DLL"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$MSVC_DLL"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of MSVC_DLL, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ MSVC_DLL="`cd "$path"; $THEPWDCMD -L`"
+ fi
+ fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $DLL_NAME" >&5
$as_echo_n "checking for $DLL_NAME... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSVC_DLL" >&5
@@ -50306,6 +51228,132 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
$as_echo "ok" >&6; }
MSVC_DLL="$POSSIBLE_MSVC_DLL"
+
+ # Only process if variable expands to non-empty
+
+ if test "x$MSVC_DLL" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$MSVC_DLL"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of MSVC_DLL" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$MSVC_DLL"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$MSVC_DLL"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of MSVC_DLL, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ MSVC_DLL="`cd "$path"; $THEPWDCMD -L`"
+ fi
+ fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $DLL_NAME" >&5
$as_echo_n "checking for $DLL_NAME... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSVC_DLL" >&5
@@ -50329,137 +51377,9 @@
as_fn_error $? "Could not find $DLL_NAME. Please specify using --with-msvcr-dll." "$LINENO" 5
fi
- MSVCR_DLL=$MSVC_DLL
-
- # Only process if variable expands to non-empty
-
- if test "x$MSVCR_DLL" != x; then
- if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
-
- # Input might be given as Windows format, start by converting to
- # unix format.
- path="$MSVCR_DLL"
- new_path=`$CYGPATH -u "$path"`
-
- # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
- # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
- # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
- # "foo.exe" is OK but "foo" is an error.
- #
- # This test is therefore slightly more accurate than "test -f" to check for file precense.
- # It is also a way to make sure we got the proper file name for the real test later on.
- test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
- if test "x$test_shortpath" = x; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVCR_DLL, which resolves as \"$path\", is invalid." >&5
-$as_echo "$as_me: The path of MSVCR_DLL, which resolves as \"$path\", is invalid." >&6;}
- as_fn_error $? "Cannot locate the the path of MSVCR_DLL" "$LINENO" 5
- fi
-
- # Call helper function which possibly converts this using DOS-style short mode.
- # If so, the updated path is stored in $new_path.
-
- input_path="$new_path"
- # Check if we need to convert this using DOS-style short mode. If the path
- # contains just simple characters, use it. Otherwise (spaces, weird characters),
- # take no chances and rewrite it.
- # Note: m4 eats our [], so we need to use [ and ] instead.
- has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
- if test "x$has_forbidden_chars" != x; then
- # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
- shortmode_path=`$CYGPATH -s -m -a "$input_path"`
- path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
- if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
- # Going to short mode and back again did indeed matter. Since short mode is
- # case insensitive, let's make it lowercase to improve readability.
- shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
- input_path=`$CYGPATH -u "$shortmode_path"`
- new_path="$input_path"
- fi
- fi
-
- test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
- if test "x$test_cygdrive_prefix" = x; then
- # As a simple fix, exclude /usr/bin since it's not a real path.
- if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
- # The path is in a Cygwin special directory (e.g. /home). We need this converted to
- # a path prefixed by /cygdrive for fixpath to work.
- new_path="$CYGWIN_ROOT_PATH$input_path"
- fi
- fi
-
-
- if test "x$path" != "x$new_path"; then
- MSVCR_DLL="$new_path"
- { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVCR_DLL to \"$new_path\"" >&5
-$as_echo "$as_me: Rewriting MSVCR_DLL to \"$new_path\"" >&6;}
- fi
-
- elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
-
- path="$MSVCR_DLL"
- has_colon=`$ECHO $path | $GREP ^.:`
- new_path="$path"
- if test "x$has_colon" = x; then
- # Not in mixed or Windows style, start by that.
- new_path=`cmd //c echo $path`
- fi
-
-
- input_path="$new_path"
- # Check if we need to convert this using DOS-style short mode. If the path
- # contains just simple characters, use it. Otherwise (spaces, weird characters),
- # take no chances and rewrite it.
- # Note: m4 eats our [], so we need to use [ and ] instead.
- has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
- if test "x$has_forbidden_chars" != x; then
- # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
- new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- fi
-
-
- windows_path="$new_path"
- if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
- unix_path=`$CYGPATH -u "$windows_path"`
- new_path="$unix_path"
- elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
- unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
- new_path="$unix_path"
- fi
-
- if test "x$path" != "x$new_path"; then
- MSVCR_DLL="$new_path"
- { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVCR_DLL to \"$new_path\"" >&5
-$as_echo "$as_me: Rewriting MSVCR_DLL to \"$new_path\"" >&6;}
- fi
-
- # Save the first 10 bytes of this path to the storage, so fixpath can work.
- all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
-
- else
- # We're on a unix platform. Hooray! :)
- path="$MSVCR_DLL"
- has_space=`$ECHO "$path" | $GREP " "`
- if test "x$has_space" != x; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVCR_DLL, which resolves as \"$path\", is invalid." >&5
-$as_echo "$as_me: The path of MSVCR_DLL, which resolves as \"$path\", is invalid." >&6;}
- as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
- fi
-
- # Use eval to expand a potential ~
- eval path="$path"
- if test ! -f "$path" && test ! -d "$path"; then
- as_fn_error $? "The path of MSVCR_DLL, which resolves as \"$path\", is not found." "$LINENO" 5
- fi
-
- MSVCR_DLL="`cd "$path"; $THEPWDCMD -L`"
- fi
- fi
-
- MSVCR_DLL=$MSVCR_DLL
-
-
- fi
+ MSVCR_DLL="$MSVC_DLL"
+ fi
+
# Check whether --with-msvcp-dll was given.
@@ -50472,7 +51392,7 @@
if test "x$with_msvcp_dll" != x; then
# If given explicitely by user, do not probe. If not present, fail directly.
- DLL_NAME="$DLL_NAME"
+ DLL_NAME="$MSVCP_NAME"
POSSIBLE_MSVC_DLL="$with_msvcp_dll"
METHOD="--with-msvcp-dll"
if test -n "$POSSIBLE_MSVC_DLL" -a -e "$POSSIBLE_MSVC_DLL"; then
@@ -50502,6 +51422,132 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
$as_echo "ok" >&6; }
MSVC_DLL="$POSSIBLE_MSVC_DLL"
+
+ # Only process if variable expands to non-empty
+
+ if test "x$MSVC_DLL" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$MSVC_DLL"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of MSVC_DLL" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$MSVC_DLL"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$MSVC_DLL"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of MSVC_DLL, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ MSVC_DLL="`cd "$path"; $THEPWDCMD -L`"
+ fi
+ fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $DLL_NAME" >&5
$as_echo_n "checking for $DLL_NAME... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSVC_DLL" >&5
@@ -50517,9 +51563,183 @@
if test "x$MSVC_DLL" = x; then
as_fn_error $? "Could not find a proper $MSVCP_NAME as specified by --with-msvcp-dll" "$LINENO" 5
fi
- else
-
- VAR_NAME="MSVCP_DLL"
+ MSVCP_DLL="$MSVC_DLL"
+ elif test "x$DEVKIT_MSVCP_DLL" != x; then
+
+ DLL_NAME="$MSVCP_NAME"
+ POSSIBLE_MSVC_DLL="$DEVKIT_MSVCP_DLL"
+ METHOD="devkit"
+ if test -n "$POSSIBLE_MSVC_DLL" -a -e "$POSSIBLE_MSVC_DLL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD" >&5
+$as_echo "$as_me: Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD" >&6;}
+
+ # Need to check if the found msvcr is correct architecture
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking found $DLL_NAME architecture" >&5
+$as_echo_n "checking found $DLL_NAME architecture... " >&6; }
+ MSVC_DLL_FILETYPE=`$FILE -b "$POSSIBLE_MSVC_DLL"`
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ # The MSYS 'file' command returns "PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit"
+ # on x32 and "PE32+ executable for MS Windows (DLL) (GUI) Mono/.Net assembly" on x64 systems.
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ CORRECT_MSVCR_ARCH="PE32 executable"
+ else
+ CORRECT_MSVCR_ARCH="PE32+ executable"
+ fi
+ else
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ CORRECT_MSVCR_ARCH=386
+ else
+ CORRECT_MSVCR_ARCH=x86-64
+ fi
+ fi
+ if $ECHO "$MSVC_DLL_FILETYPE" | $GREP "$CORRECT_MSVCR_ARCH" 2>&1 > /dev/null; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+ MSVC_DLL="$POSSIBLE_MSVC_DLL"
+
+ # Only process if variable expands to non-empty
+
+ if test "x$MSVC_DLL" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$MSVC_DLL"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of MSVC_DLL" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$MSVC_DLL"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$MSVC_DLL"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of MSVC_DLL, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ MSVC_DLL="`cd "$path"; $THEPWDCMD -L`"
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $DLL_NAME" >&5
+$as_echo_n "checking for $DLL_NAME... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSVC_DLL" >&5
+$as_echo "$MSVC_DLL" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: incorrect, ignoring" >&5
+$as_echo "incorrect, ignoring" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE" >&5
+$as_echo "$as_me: The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE" >&6;}
+ fi
+ fi
+
+ if test "x$MSVC_DLL" = x; then
+ as_fn_error $? "Could not find a proper $MSVCP_NAME as specified by devkit" "$LINENO" 5
+ fi
+ MSVCP_DLL="$MSVC_DLL"
+ else
+
DLL_NAME="${MSVCP_NAME}"
MSVC_DLL=
@@ -50574,6 +51794,132 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
$as_echo "ok" >&6; }
MSVC_DLL="$POSSIBLE_MSVC_DLL"
+
+ # Only process if variable expands to non-empty
+
+ if test "x$MSVC_DLL" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$MSVC_DLL"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of MSVC_DLL" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$MSVC_DLL"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$MSVC_DLL"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of MSVC_DLL, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ MSVC_DLL="`cd "$path"; $THEPWDCMD -L`"
+ fi
+ fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $DLL_NAME" >&5
$as_echo_n "checking for $DLL_NAME... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSVC_DLL" >&5
@@ -50623,6 +51969,132 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
$as_echo "ok" >&6; }
MSVC_DLL="$POSSIBLE_MSVC_DLL"
+
+ # Only process if variable expands to non-empty
+
+ if test "x$MSVC_DLL" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$MSVC_DLL"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of MSVC_DLL" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$MSVC_DLL"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$MSVC_DLL"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of MSVC_DLL, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ MSVC_DLL="`cd "$path"; $THEPWDCMD -L`"
+ fi
+ fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $DLL_NAME" >&5
$as_echo_n "checking for $DLL_NAME... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSVC_DLL" >&5
@@ -50682,6 +52154,132 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
$as_echo "ok" >&6; }
MSVC_DLL="$POSSIBLE_MSVC_DLL"
+
+ # Only process if variable expands to non-empty
+
+ if test "x$MSVC_DLL" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$MSVC_DLL"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of MSVC_DLL" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$MSVC_DLL"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$MSVC_DLL"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of MSVC_DLL, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ MSVC_DLL="`cd "$path"; $THEPWDCMD -L`"
+ fi
+ fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $DLL_NAME" >&5
$as_echo_n "checking for $DLL_NAME... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSVC_DLL" >&5
@@ -50748,6 +52346,132 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
$as_echo "ok" >&6; }
MSVC_DLL="$POSSIBLE_MSVC_DLL"
+
+ # Only process if variable expands to non-empty
+
+ if test "x$MSVC_DLL" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$MSVC_DLL"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of MSVC_DLL" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$MSVC_DLL"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$MSVC_DLL"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of MSVC_DLL, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ MSVC_DLL="`cd "$path"; $THEPWDCMD -L`"
+ fi
+ fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $DLL_NAME" >&5
$as_echo_n "checking for $DLL_NAME... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSVC_DLL" >&5
@@ -50811,6 +52535,132 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
$as_echo "ok" >&6; }
MSVC_DLL="$POSSIBLE_MSVC_DLL"
+
+ # Only process if variable expands to non-empty
+
+ if test "x$MSVC_DLL" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$MSVC_DLL"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of MSVC_DLL" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$MSVC_DLL"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$MSVC_DLL"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of MSVC_DLL, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ MSVC_DLL="`cd "$path"; $THEPWDCMD -L`"
+ fi
+ fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $DLL_NAME" >&5
$as_echo_n "checking for $DLL_NAME... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSVC_DLL" >&5
@@ -50834,137 +52684,9 @@
as_fn_error $? "Could not find $DLL_NAME. Please specify using --with-msvcr-dll." "$LINENO" 5
fi
- MSVCP_DLL=$MSVC_DLL
-
- # Only process if variable expands to non-empty
-
- if test "x$MSVCP_DLL" != x; then
- if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
-
- # Input might be given as Windows format, start by converting to
- # unix format.
- path="$MSVCP_DLL"
- new_path=`$CYGPATH -u "$path"`
-
- # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
- # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
- # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
- # "foo.exe" is OK but "foo" is an error.
- #
- # This test is therefore slightly more accurate than "test -f" to check for file precense.
- # It is also a way to make sure we got the proper file name for the real test later on.
- test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
- if test "x$test_shortpath" = x; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVCP_DLL, which resolves as \"$path\", is invalid." >&5
-$as_echo "$as_me: The path of MSVCP_DLL, which resolves as \"$path\", is invalid." >&6;}
- as_fn_error $? "Cannot locate the the path of MSVCP_DLL" "$LINENO" 5
- fi
-
- # Call helper function which possibly converts this using DOS-style short mode.
- # If so, the updated path is stored in $new_path.
-
- input_path="$new_path"
- # Check if we need to convert this using DOS-style short mode. If the path
- # contains just simple characters, use it. Otherwise (spaces, weird characters),
- # take no chances and rewrite it.
- # Note: m4 eats our [], so we need to use [ and ] instead.
- has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
- if test "x$has_forbidden_chars" != x; then
- # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
- shortmode_path=`$CYGPATH -s -m -a "$input_path"`
- path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
- if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
- # Going to short mode and back again did indeed matter. Since short mode is
- # case insensitive, let's make it lowercase to improve readability.
- shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-stile (cygpath)
- input_path=`$CYGPATH -u "$shortmode_path"`
- new_path="$input_path"
- fi
- fi
-
- test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
- if test "x$test_cygdrive_prefix" = x; then
- # As a simple fix, exclude /usr/bin since it's not a real path.
- if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
- # The path is in a Cygwin special directory (e.g. /home). We need this converted to
- # a path prefixed by /cygdrive for fixpath to work.
- new_path="$CYGWIN_ROOT_PATH$input_path"
- fi
- fi
-
-
- if test "x$path" != "x$new_path"; then
- MSVCP_DLL="$new_path"
- { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVCP_DLL to \"$new_path\"" >&5
-$as_echo "$as_me: Rewriting MSVCP_DLL to \"$new_path\"" >&6;}
- fi
-
- elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
-
- path="$MSVCP_DLL"
- has_colon=`$ECHO $path | $GREP ^.:`
- new_path="$path"
- if test "x$has_colon" = x; then
- # Not in mixed or Windows style, start by that.
- new_path=`cmd //c echo $path`
- fi
-
-
- input_path="$new_path"
- # Check if we need to convert this using DOS-style short mode. If the path
- # contains just simple characters, use it. Otherwise (spaces, weird characters),
- # take no chances and rewrite it.
- # Note: m4 eats our [], so we need to use [ and ] instead.
- has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
- if test "x$has_forbidden_chars" != x; then
- # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
- new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- fi
-
-
- windows_path="$new_path"
- if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
- unix_path=`$CYGPATH -u "$windows_path"`
- new_path="$unix_path"
- elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
- unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
- new_path="$unix_path"
- fi
-
- if test "x$path" != "x$new_path"; then
- MSVCP_DLL="$new_path"
- { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVCP_DLL to \"$new_path\"" >&5
-$as_echo "$as_me: Rewriting MSVCP_DLL to \"$new_path\"" >&6;}
- fi
-
- # Save the first 10 bytes of this path to the storage, so fixpath can work.
- all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
-
- else
- # We're on a unix platform. Hooray! :)
- path="$MSVCP_DLL"
- has_space=`$ECHO "$path" | $GREP " "`
- if test "x$has_space" != x; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVCP_DLL, which resolves as \"$path\", is invalid." >&5
-$as_echo "$as_me: The path of MSVCP_DLL, which resolves as \"$path\", is invalid." >&6;}
- as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
- fi
-
- # Use eval to expand a potential ~
- eval path="$path"
- if test ! -f "$path" && test ! -d "$path"; then
- as_fn_error $? "The path of MSVCP_DLL, which resolves as \"$path\", is not found." "$LINENO" 5
- fi
-
- MSVCP_DLL="`cd "$path"; $THEPWDCMD -L`"
- fi
- fi
-
- MSVCP_DLL=$MSVCP_DLL
-
-
- fi
+ MSVCP_DLL="$MSVC_DLL"
+ fi
+
fi
--- a/common/autoconf/toolchain.m4 Mon Apr 27 09:17:48 2015 -0700
+++ b/common/autoconf/toolchain.m4 Tue May 05 13:29:12 2015 -0700
@@ -189,11 +189,15 @@
ORG_CFLAGS="$CFLAGS"
ORG_CXXFLAGS="$CXXFLAGS"
+ # autoconf magic only relies on PATH, so update it if tools dir is specified
+ OLD_PATH="$PATH"
+
# On Windows, we need to detect the visual studio installation first.
# This will change the PATH, but we need to keep that new PATH even
# after toolchain detection is done, since the compiler (on x86) uses
# it for DLL resolution in runtime.
- if test "x$OPENJDK_BUILD_OS" = "xwindows" && test "x$TOOLCHAIN_TYPE" = "xmicrosoft"; then
+ if test "x$OPENJDK_BUILD_OS" = "xwindows" \
+ && test "x$TOOLCHAIN_TYPE" = "xmicrosoft"; then
TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV
# Reset path to VS_PATH. It will include everything that was on PATH at the time we
# ran TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV.
@@ -203,9 +207,6 @@
export LIB="$VS_LIB"
fi
- # autoconf magic only relies on PATH, so update it if tools dir is specified
- OLD_PATH="$PATH"
-
# For solaris we really need solaris tools, and not the GNU equivalent.
# The build tools on Solaris reside in /usr/ccs (C Compilation System),
# so add that to path before starting to probe.
--- a/common/autoconf/toolchain_windows.m4 Mon Apr 27 09:17:48 2015 -0700
+++ b/common/autoconf/toolchain_windows.m4 Tue May 05 13:29:12 2015 -0700
@@ -210,6 +210,37 @@
done
exit 0
+ elif test "x$DEVKIT_VS_VERSION" != x; then
+ VS_VERSION=$DEVKIT_VS_VERSION
+ TOOLCHAIN_VERSION=$VS_VERSION
+ eval VS_DESCRIPTION="\${VS_DESCRIPTION_${VS_VERSION}}"
+ eval VS_VERSION_INTERNAL="\${VS_VERSION_INTERNAL_${VS_VERSION}}"
+ eval MSVCR_NAME="\${VS_MSVCR_${VS_VERSION}}"
+ eval MSVCP_NAME="\${VS_MSVCP_${VS_VERSION}}"
+ eval PLATFORM_TOOLSET="\${VS_VS_PLATFORM_NAME_${VS_VERSION}}"
+ VS_PATH="$TOOLCHAIN_PATH:$PATH"
+
+ # Convert DEVKIT_VS_INCLUDE into windows style VS_INCLUDE so that it
+ # can still be exported as INCLUDE for compiler invocations without
+ # SYSROOT_CFLAGS
+ OLDIFS="$IFS"
+ IFS=";"
+ for i in $DEVKIT_VS_INCLUDE; do
+ ipath=$i
+ BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH([ipath])
+ VS_INCLUDE="$VS_INCLUDE;$ipath"
+ done
+ # Convert DEVKIT_VS_LIB into VS_LIB so that it can still be exported
+ # as LIB for compiler invocations without SYSROOT_LDFLAGS
+ for i in $DEVKIT_VS_LIB; do
+ libpath=$i
+ BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH([libpath])
+ VS_LIB="$VS_LIB;$libpath"
+ done
+ IFS="$OLDIFS"
+
+ AC_MSG_NOTICE([Found devkit $VS_DESCRIPTION])
+
elif test "x$with_toolchain_version" != x; then
# User override; check that it is valid
if test "x${VALID_VS_VERSIONS/$with_toolchain_version/}" = "x${VALID_VS_VERSIONS}"; then
@@ -262,71 +293,81 @@
# First-hand choice is to locate and run the vsvars bat file.
TOOLCHAIN_FIND_VISUAL_STUDIO
- if test "x$VS_ENV_CMD" != x; then
- # We have found a Visual Studio environment on disk, let's extract variables from the vsvars bat file.
- BASIC_FIXUP_EXECUTABLE(VS_ENV_CMD)
+ # If we have a devkit, skip all of the below.
+ if test "x$DEVKIT_VS_VERSION" = x; then
+ if test "x$VS_ENV_CMD" != x; then
+ # We have found a Visual Studio environment on disk, let's extract variables from the vsvars bat file.
+ BASIC_FIXUP_EXECUTABLE(VS_ENV_CMD)
- # Lets extract the variables that are set by vcvarsall.bat/vsvars32.bat/vsvars64.bat
- AC_MSG_NOTICE([Trying to extract Visual Studio environment variables])
+ # Lets extract the variables that are set by vcvarsall.bat/vsvars32.bat/vsvars64.bat
+ AC_MSG_NOTICE([Trying to extract Visual Studio environment variables])
- # We need to create a couple of temporary files.
- VS_ENV_TMP_DIR="$CONFIGURESUPPORT_OUTPUTDIR/vs-env"
- $MKDIR -p $VS_ENV_TMP_DIR
+ # We need to create a couple of temporary files.
+ VS_ENV_TMP_DIR="$CONFIGURESUPPORT_OUTPUTDIR/vs-env"
+ $MKDIR -p $VS_ENV_TMP_DIR
- # Cannot use the VS10 setup script directly (since it only updates the DOS subshell environment).
- # Instead create a shell script which will set the relevant variables when run.
- WINPATH_VS_ENV_CMD="$VS_ENV_CMD"
- BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH([WINPATH_VS_ENV_CMD])
- WINPATH_BASH="$BASH"
- BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH([WINPATH_BASH])
+ # Cannot use the VS10 setup script directly (since it only updates the DOS subshell environment).
+ # Instead create a shell script which will set the relevant variables when run.
+ WINPATH_VS_ENV_CMD="$VS_ENV_CMD"
+ BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH([WINPATH_VS_ENV_CMD])
+ WINPATH_BASH="$BASH"
+ BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH([WINPATH_BASH])
- # Generate a DOS batch file which runs $VS_ENV_CMD, and then creates a shell
- # script (executable by bash) that will setup the important variables.
- EXTRACT_VC_ENV_BAT_FILE="$VS_ENV_TMP_DIR/extract-vs-env.bat"
- $ECHO "@echo off" > $EXTRACT_VC_ENV_BAT_FILE
- # This will end up something like:
- # call C:/progra~2/micros~2.0/vc/bin/amd64/vcvars64.bat
- $ECHO "call $WINPATH_VS_ENV_CMD $VS_ENV_ARGS" >> $EXTRACT_VC_ENV_BAT_FILE
- # These will end up something like:
- # C:/CygWin/bin/bash -c 'echo VS_PATH=\"$PATH\" > localdevenv.sh
- # The trailing space for everyone except PATH is no typo, but is needed due
- # to trailing \ in the Windows paths. These will be stripped later.
- $ECHO "$WINPATH_BASH -c 'echo VS_PATH="'\"$PATH\" > set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
- $ECHO "$WINPATH_BASH -c 'echo VS_INCLUDE="'\"$INCLUDE\;$include \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
- $ECHO "$WINPATH_BASH -c 'echo VS_LIB="'\"$LIB\;$lib \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
- $ECHO "$WINPATH_BASH -c 'echo VCINSTALLDIR="'\"$VCINSTALLDIR \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
- $ECHO "$WINPATH_BASH -c 'echo WindowsSdkDir="'\"$WindowsSdkDir \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
- $ECHO "$WINPATH_BASH -c 'echo WINDOWSSDKDIR="'\"$WINDOWSSDKDIR \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
+ # Generate a DOS batch file which runs $VS_ENV_CMD, and then creates a shell
+ # script (executable by bash) that will setup the important variables.
+ EXTRACT_VC_ENV_BAT_FILE="$VS_ENV_TMP_DIR/extract-vs-env.bat"
+ $ECHO "@echo off" > $EXTRACT_VC_ENV_BAT_FILE
+ # This will end up something like:
+ # call C:/progra~2/micros~2.0/vc/bin/amd64/vcvars64.bat
+ $ECHO "call $WINPATH_VS_ENV_CMD $VS_ENV_ARGS" >> $EXTRACT_VC_ENV_BAT_FILE
+ # These will end up something like:
+ # C:/CygWin/bin/bash -c 'echo VS_PATH=\"$PATH\" > localdevenv.sh
+ # The trailing space for everyone except PATH is no typo, but is needed due
+ # to trailing \ in the Windows paths. These will be stripped later.
+ $ECHO "$WINPATH_BASH -c 'echo VS_PATH="'\"$PATH\" > set-vs-env.sh' \
+ >> $EXTRACT_VC_ENV_BAT_FILE
+ $ECHO "$WINPATH_BASH -c 'echo VS_INCLUDE="'\"$INCLUDE\;$include \" >> set-vs-env.sh' \
+ >> $EXTRACT_VC_ENV_BAT_FILE
+ $ECHO "$WINPATH_BASH -c 'echo VS_LIB="'\"$LIB\;$lib \" >> set-vs-env.sh' \
+ >> $EXTRACT_VC_ENV_BAT_FILE
+ $ECHO "$WINPATH_BASH -c 'echo VCINSTALLDIR="'\"$VCINSTALLDIR \" >> set-vs-env.sh' \
+ >> $EXTRACT_VC_ENV_BAT_FILE
+ $ECHO "$WINPATH_BASH -c 'echo WindowsSdkDir="'\"$WindowsSdkDir \" >> set-vs-env.sh' \
+ >> $EXTRACT_VC_ENV_BAT_FILE
+ $ECHO "$WINPATH_BASH -c 'echo WINDOWSSDKDIR="'\"$WINDOWSSDKDIR \" >> set-vs-env.sh' \
+ >> $EXTRACT_VC_ENV_BAT_FILE
- # Now execute the newly created bat file.
- # The | cat is to stop SetEnv.Cmd to mess with system colors on msys.
- # Change directory so we don't need to mess with Windows paths in redirects.
- cd $VS_ENV_TMP_DIR
- cmd /c extract-vs-env.bat | $CAT
- cd $CURDIR
+ # Now execute the newly created bat file.
+ # The | cat is to stop SetEnv.Cmd to mess with system colors on msys.
+ # Change directory so we don't need to mess with Windows paths in redirects.
+ cd $VS_ENV_TMP_DIR
+ cmd /c extract-vs-env.bat | $CAT
+ cd $CURDIR
- if test ! -s $VS_ENV_TMP_DIR/set-vs-env.sh; then
- AC_MSG_NOTICE([Could not succesfully extract the envionment variables needed for the VS setup.])
- AC_MSG_NOTICE([Try setting --with-tools-dir to the VC/bin directory within the VS installation])
- AC_MSG_NOTICE([or run "bash.exe -l" from a VS command prompt and then run configure from there.])
- AC_MSG_ERROR([Cannot continue])
- fi
+ if test ! -s $VS_ENV_TMP_DIR/set-vs-env.sh; then
+ AC_MSG_NOTICE([Could not succesfully extract the envionment variables needed for the VS setup.])
+ AC_MSG_NOTICE([Try setting --with-tools-dir to the VC/bin directory within the VS installation])
+ AC_MSG_NOTICE([or run "bash.exe -l" from a VS command prompt and then run configure from there.])
+ AC_MSG_ERROR([Cannot continue])
+ fi
- # Now set all paths and other env variables. This will allow the rest of
- # the configure script to find and run the compiler in the proper way.
- AC_MSG_NOTICE([Setting extracted environment variables])
- . $VS_ENV_TMP_DIR/set-vs-env.sh
- # Now we have VS_PATH, VS_INCLUDE, VS_LIB. For further checking, we
- # also define VCINSTALLDIR, WindowsSdkDir and WINDOWSSDKDIR.
- else
- # We did not find a vsvars bat file, let's hope we are run from a VS command prompt.
- AC_MSG_NOTICE([Cannot locate a valid Visual Studio installation, checking current environment])
+ # Now set all paths and other env variables. This will allow the rest of
+ # the configure script to find and run the compiler in the proper way.
+ AC_MSG_NOTICE([Setting extracted environment variables])
+ . $VS_ENV_TMP_DIR/set-vs-env.sh
+ # Now we have VS_PATH, VS_INCLUDE, VS_LIB. For further checking, we
+ # also define VCINSTALLDIR, WindowsSdkDir and WINDOWSSDKDIR.
+ else
+ # We did not find a vsvars bat file, let's hope we are run from a VS command prompt.
+ AC_MSG_NOTICE([Cannot locate a valid Visual Studio installation, checking current environment])
+ fi
fi
# At this point, we should have correct variables in the environment, or we can't continue.
AC_MSG_CHECKING([for Visual Studio variables])
- if test "x$VCINSTALLDIR" != x || test "x$WindowsSDKDir" != x || test "x$WINDOWSSDKDIR" != x; then
+ if test "x$VCINSTALLDIR" != x || test "x$WindowsSDKDir" != x \
+ || test "x$WINDOWSSDKDIR" != x || test "x$DEVKIT_NAME" != x; then
if test "x$VS_INCLUDE" = x || test "x$VS_LIB" = x; then
AC_MSG_RESULT([present but broken])
AC_MSG_ERROR([Your VC command prompt seems broken, INCLUDE and/or LIB is missing.])
@@ -403,10 +444,10 @@
POSSIBLE_MSVC_DLL="$2"
METHOD="$3"
if test -n "$POSSIBLE_MSVC_DLL" -a -e "$POSSIBLE_MSVC_DLL"; then
- AC_MSG_NOTICE([Found $1 at $POSSIBLE_MSVC_DLL using $METHOD])
+ AC_MSG_NOTICE([Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD])
# Need to check if the found msvcr is correct architecture
- AC_MSG_CHECKING([found $1 architecture])
+ AC_MSG_CHECKING([found $DLL_NAME architecture])
MSVC_DLL_FILETYPE=`$FILE -b "$POSSIBLE_MSVC_DLL"`
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
# The MSYS 'file' command returns "PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit"
@@ -426,19 +467,19 @@
if $ECHO "$MSVC_DLL_FILETYPE" | $GREP "$CORRECT_MSVCR_ARCH" 2>&1 > /dev/null; then
AC_MSG_RESULT([ok])
MSVC_DLL="$POSSIBLE_MSVC_DLL"
- AC_MSG_CHECKING([for $1])
+ BASIC_FIXUP_PATH(MSVC_DLL)
+ AC_MSG_CHECKING([for $DLL_NAME])
AC_MSG_RESULT([$MSVC_DLL])
else
AC_MSG_RESULT([incorrect, ignoring])
- AC_MSG_NOTICE([The file type of the located $1 is $MSVC_DLL_FILETYPE])
+ AC_MSG_NOTICE([The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE])
fi
fi
])
AC_DEFUN([TOOLCHAIN_SETUP_MSVC_DLL],
[
- VAR_NAME="$1"
- DLL_NAME="$2"
+ DLL_NAME="$1"
MSVC_DLL=
if test "x$MSVC_DLL" = x; then
@@ -517,10 +558,6 @@
AC_MSG_RESULT([no])
AC_MSG_ERROR([Could not find $DLL_NAME. Please specify using --with-msvcr-dll.])
fi
-
- $1=$MSVC_DLL
- BASIC_FIXUP_PATH($1)
- AC_SUBST($1, [$]$1)
])
AC_DEFUN([TOOLCHAIN_SETUP_VS_RUNTIME_DLLS],
@@ -530,14 +567,22 @@
if test "x$with_msvcr_dll" != x; then
# If given explicitely by user, do not probe. If not present, fail directly.
- TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL([$DLL_NAME], [$with_msvcr_dll],
- [--with-msvcr-dll])
+ TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL($MSVCR_NAME, [$with_msvcr_dll], [--with-msvcr-dll])
if test "x$MSVC_DLL" = x; then
AC_MSG_ERROR([Could not find a proper $MSVCR_NAME as specified by --with-msvcr-dll])
fi
+ MSVCR_DLL="$MSVC_DLL"
+ elif test "x$DEVKIT_MSVCR_DLL" != x; then
+ TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL($MSVCR_NAME, [$DEVKIT_MSVCR_DLL], [devkit])
+ if test "x$MSVC_DLL" = x; then
+ AC_MSG_ERROR([Could not find a proper $MSVCR_NAME as specified by devkit])
+ fi
+ MSVCR_DLL="$MSVC_DLL"
else
- TOOLCHAIN_SETUP_MSVC_DLL([MSVCR_DLL], [${MSVCR_NAME}])
+ TOOLCHAIN_SETUP_MSVC_DLL([${MSVCR_NAME}])
+ MSVCR_DLL="$MSVC_DLL"
fi
+ AC_SUBST(MSVCR_DLL)
AC_ARG_WITH(msvcp-dll, [AS_HELP_STRING([--with-msvcp-dll],
[path to microsoft C++ runtime dll (msvcp*.dll) (Windows only) @<:@probed@:>@])])
@@ -545,13 +590,21 @@
if test "x$MSVCP_NAME" != "x"; then
if test "x$with_msvcp_dll" != x; then
# If given explicitely by user, do not probe. If not present, fail directly.
- TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL([$DLL_NAME], [$with_msvcp_dll],
- [--with-msvcp-dll])
+ TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL($MSVCP_NAME, [$with_msvcp_dll], [--with-msvcp-dll])
if test "x$MSVC_DLL" = x; then
AC_MSG_ERROR([Could not find a proper $MSVCP_NAME as specified by --with-msvcp-dll])
fi
+ MSVCP_DLL="$MSVC_DLL"
+ elif test "x$DEVKIT_MSVCP_DLL" != x; then
+ TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL($MSVCP_NAME, [$DEVKIT_MSVCP_DLL], [devkit])
+ if test "x$MSVC_DLL" = x; then
+ AC_MSG_ERROR([Could not find a proper $MSVCP_NAME as specified by devkit])
+ fi
+ MSVCP_DLL="$MSVC_DLL"
else
- TOOLCHAIN_SETUP_MSVC_DLL([MSVCP_DLL], [${MSVCP_NAME}])
+ TOOLCHAIN_SETUP_MSVC_DLL([${MSVCP_NAME}])
+ MSVCP_DLL="$MSVC_DLL"
fi
+ AC_SUBST(MSVCP_DLL)
fi
])
--- a/common/bin/unshuffle_list.txt Mon Apr 27 09:17:48 2015 -0700
+++ b/common/bin/unshuffle_list.txt Tue May 05 13:29:12 2015 -0700
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014, 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
@@ -1156,7 +1156,6 @@
jdk/src/java.management/share/classes/com/sun/jmx/interceptor : jdk/src/share/classes/com/sun/jmx/interceptor
jdk/src/java.management/share/classes/com/sun/jmx/mbeanserver : jdk/src/share/classes/com/sun/jmx/mbeanserver
jdk/src/java.management/share/classes/com/sun/jmx/remote : jdk/src/share/classes/com/sun/jmx/remote
-jdk/src/java.management/share/classes/com/sun/management : jdk/src/share/classes/com/sun/management
jdk/src/java.management/share/classes/java/lang/management : jdk/src/share/classes/java/lang/management
jdk/src/java.management/share/classes/javax/management : jdk/src/share/classes/javax/management
jdk/src/java.management/share/classes/mgmt-overview.html : jdk/src/share/classes/com/sun/management/mgmt-overview.html
@@ -1429,6 +1428,7 @@
jdk/src/jdk.localedata/share/classes/sun/util/resources/uk : jdk/src/share/classes/sun/util/resources/uk
jdk/src/jdk.localedata/share/classes/sun/util/resources/vi : jdk/src/share/classes/sun/util/resources/vi
jdk/src/jdk.localedata/share/classes/sun/util/resources/zh : jdk/src/share/classes/sun/util/resources/zh
+jdk/src/jdk.management/share/classes/com/sun/management : jdk/src/share/classes/com/sun/management
jdk/src/jdk.naming.dns/share/classes/com/sun/jndi/dns : jdk/src/share/classes/com/sun/jndi/dns
jdk/src/jdk.naming.dns/share/classes/com/sun/jndi/url/dns : jdk/src/share/classes/com/sun/jndi/url/dns
jdk/src/jdk.naming.dns/share/classes/META-INF/services : jdk/src/share/classes/sun/net/spi/nameservice/dns/META-INF/services
--- a/corba/.hgtags Mon Apr 27 09:17:48 2015 -0700
+++ b/corba/.hgtags Tue May 05 13:29:12 2015 -0700
@@ -304,3 +304,4 @@
cda6ae062f85fac5555f4e1318885b0ecd998bd1 jdk9-b59
caa330b275f39282793466529f6864766b31d9fd jdk9-b60
d690f489ca0bb95a6157d996da2fa72bcbcf02ea jdk9-b61
+d27f7e0a7aca129969de23e9934408a31b4abf4c jdk9-b62
--- a/hotspot/.hgtags Mon Apr 27 09:17:48 2015 -0700
+++ b/hotspot/.hgtags Tue May 05 13:29:12 2015 -0700
@@ -464,3 +464,4 @@
96bcaec07cb165782bae1b9a1f28450b37a10e3a jdk9-b59
9c916db4bf3bc164a47b5a9cefe5ffd71e111f6a jdk9-b60
715d2da5801c410746e92f08066d53bde1496286 jdk9-b61
+1eab877142cce6ca06e556e2ad0af688f993f00b jdk9-b62
--- a/hotspot/make/windows/makefiles/compile.make Mon Apr 27 09:17:48 2015 -0700
+++ b/hotspot/make/windows/makefiles/compile.make Tue May 05 13:29:12 2015 -0700
@@ -74,7 +74,8 @@
!if "$(BUILDARCH)" == "i486"
MACHINE=I386
-CXX_FLAGS=$(CXX_FLAGS) /D "IA32"
+# VS2013 generates bad l2f without /arch:IA32
+CXX_FLAGS=$(CXX_FLAGS) /D "IA32" /arch:IA32
!endif
CXX_FLAGS=$(CXX_FLAGS) /D "WIN32" /D "_WINDOWS"
--- a/hotspot/src/cpu/aarch64/vm/aarch64.ad Mon Apr 27 09:17:48 2015 -0700
+++ b/hotspot/src/cpu/aarch64/vm/aarch64.ad Tue May 05 13:29:12 2015 -0700
@@ -449,7 +449,7 @@
R26
/* R27, */ // heapbase
/* R28, */ // thread
- /* R29, */ // fp
+ R29, // fp
/* R30, */ // lr
/* R31 */ // sp
);
@@ -483,7 +483,7 @@
R26, R26_H,
/* R27, R27_H, */ // heapbase
/* R28, R28_H, */ // thread
- /* R29, R29_H, */ // fp
+ R29, R29_H, // fp
/* R30, R30_H, */ // lr
/* R31, R31_H */ // sp
);
@@ -758,6 +758,8 @@
source_hpp %{
+#include "memory/cardTableModRefBS.hpp"
+
class CallStubImpl {
//--------------------------------------------------------------
@@ -2538,7 +2540,7 @@
}
const RegMask Matcher::method_handle_invoke_SP_save_mask() {
- return RegMask();
+ return FP_REG_mask();
}
// helper for encoding java_to_runtime calls on sim
--- a/hotspot/src/cpu/aarch64/vm/frame_aarch64.inline.hpp Mon Apr 27 09:17:48 2015 -0700
+++ b/hotspot/src/cpu/aarch64/vm/frame_aarch64.inline.hpp Tue May 05 13:29:12 2015 -0700
@@ -77,12 +77,6 @@
inline frame::frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc) {
intptr_t a = intptr_t(sp);
intptr_t b = intptr_t(fp);
-#ifndef PRODUCT
- if (fp)
- if (sp > fp || (fp - sp > 0x100000))
- for(;;)
- asm("nop");
-#endif
_sp = sp;
_unextended_sp = unextended_sp;
_fp = fp;
@@ -104,12 +98,6 @@
inline frame::frame(intptr_t* sp, intptr_t* fp) {
intptr_t a = intptr_t(sp);
intptr_t b = intptr_t(fp);
-#ifndef PRODUCT
- if (fp)
- if (sp > fp || (fp - sp > 0x100000))
- for(;;)
- asm("nop");
-#endif
_sp = sp;
_unextended_sp = sp;
_fp = fp;
--- a/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp Mon Apr 27 09:17:48 2015 -0700
+++ b/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp Tue May 05 13:29:12 2015 -0700
@@ -32,22 +32,14 @@
#include "compiler/disassembler.hpp"
#include "memory/resourceArea.hpp"
+#include "nativeInst_aarch64.hpp"
+#include "opto/compile.hpp"
+#include "opto/node.hpp"
#include "runtime/biasedLocking.hpp"
#include "runtime/icache.hpp"
#include "runtime/interfaceSupport.hpp"
#include "runtime/sharedRuntime.hpp"
-// #include "gc_interface/collectedHeap.inline.hpp"
-// #include "interpreter/interpreter.hpp"
-// #include "memory/cardTableModRefBS.hpp"
-// #include "prims/methodHandles.hpp"
-// #include "runtime/biasedLocking.hpp"
-// #include "runtime/interfaceSupport.hpp"
-// #include "runtime/objectMonitor.hpp"
-// #include "runtime/os.hpp"
-// #include "runtime/sharedRuntime.hpp"
-// #include "runtime/stubRoutines.hpp"
-
#if INCLUDE_ALL_GCS
#include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
#include "gc_implementation/g1/g1SATBCardTableModRefBS.hpp"
--- a/hotspot/test/compiler/floatingpoint/ModNaN.java Mon Apr 27 09:17:48 2015 -0700
+++ b/hotspot/test/compiler/floatingpoint/ModNaN.java Tue May 05 13:29:12 2015 -0700
@@ -25,7 +25,7 @@
* @test
* @bug 8015396
* @summary double a%b returns NaN for some (a,b) (|a| < inf, |b|>0) (on Core i7 980X)
- *
+ * @ignore 8015396
* @run main ModNaN
*/
public class ModNaN {
--- a/jaxp/.hgtags Mon Apr 27 09:17:48 2015 -0700
+++ b/jaxp/.hgtags Tue May 05 13:29:12 2015 -0700
@@ -304,3 +304,4 @@
a1a9d943446911a4a0f74f0d082c32094af944ae jdk9-b59
c12db18748dacfccd6581ead29228c2cb6e51b34 jdk9-b60
f4a4a54620370f077c2e830a5561c8cfa811712b jdk9-b61
+3bcf83c1bbc1b7663e930d72c133a9bd86c7618d jdk9-b62
--- a/jaxws/.hgtags Mon Apr 27 09:17:48 2015 -0700
+++ b/jaxws/.hgtags Tue May 05 13:29:12 2015 -0700
@@ -307,3 +307,4 @@
8a9ebae410bc388668fc203e559b5407bde757eb jdk9-b59
f31835b59035377a220efc5a248b90f090ee1689 jdk9-b60
77f44848c44c003205490bf5ab88035233b65418 jdk9-b61
+cd0cf72b2cbf4adb778a02505fb065bb2292688c jdk9-b62
--- a/jdk/.hgtags Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/.hgtags Tue May 05 13:29:12 2015 -0700
@@ -304,3 +304,4 @@
48ee960f29df93a9b2a895621321358a86909086 jdk9-b59
84c5527f742bc64562e47d3149c16197fe1c4c1a jdk9-b60
da84dcac1b0b12c5b836b05ac75ecbfadee0cd32 jdk9-b61
+49118e68fbd4cc0044e718c47db681946d5efd69 jdk9-b62
--- a/jdk/src/java.base/share/classes/com/sun/crypto/provider/JceKeyStore.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/com/sun/crypto/provider/JceKeyStore.java Tue May 05 13:29:12 2015 -0700
@@ -711,7 +711,7 @@
cf = CertificateFactory.getInstance("X509");
} else {
// version 2
- cfs = new Hashtable<String, CertificateFactory>(3);
+ cfs = new Hashtable<>(3);
}
entries.clear();
--- a/jdk/src/java.base/share/classes/com/sun/crypto/provider/PBEKeyFactory.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/com/sun/crypto/provider/PBEKeyFactory.java Tue May 05 13:29:12 2015 -0700
@@ -56,7 +56,7 @@
}
static {
- validTypes = new HashSet<String>(17);
+ validTypes = new HashSet<>(17);
validTypes.add("PBEWithMD5AndDES".toUpperCase(Locale.ENGLISH));
validTypes.add("PBEWithSHA1AndDESede".toUpperCase(Locale.ENGLISH));
validTypes.add("PBEWithSHA1AndRC2_40".toUpperCase(Locale.ENGLISH));
--- a/jdk/src/java.base/share/classes/com/sun/crypto/provider/SunJCE.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/com/sun/crypto/provider/SunJCE.java Tue May 05 13:29:12 2015 -0700
@@ -115,7 +115,7 @@
final String BLOCK_PADS = "NOPADDING|PKCS5PADDING|ISO10126PADDING";
AccessController.doPrivileged(
- new java.security.PrivilegedAction<Object>() {
+ new java.security.PrivilegedAction<>() {
public Object run() {
/*
--- a/jdk/src/java.base/share/classes/com/sun/net/ssl/KeyManagerFactory.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/com/sun/net/ssl/KeyManagerFactory.java Tue May 05 13:29:12 2015 -0700
@@ -63,7 +63,7 @@
*/
public final static String getDefaultAlgorithm() {
String type;
- type = AccessController.doPrivileged(new PrivilegedAction<String>() {
+ type = AccessController.doPrivileged(new PrivilegedAction<>() {
public String run() {
return Security.getProperty("sun.ssl.keymanager.type");
}
--- a/jdk/src/java.base/share/classes/com/sun/net/ssl/TrustManagerFactory.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/com/sun/net/ssl/TrustManagerFactory.java Tue May 05 13:29:12 2015 -0700
@@ -63,7 +63,7 @@
*/
public final static String getDefaultAlgorithm() {
String type;
- type = AccessController.doPrivileged(new PrivilegedAction<String>() {
+ type = AccessController.doPrivileged(new PrivilegedAction<>() {
public String run() {
return Security.getProperty("sun.ssl.trustmanager.type");
}
--- a/jdk/src/java.base/share/classes/java/lang/Runtime.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/lang/Runtime.java Tue May 05 13:29:12 2015 -0700
@@ -32,9 +32,9 @@
/**
* Every Java application has a single instance of class
- * <code>Runtime</code> that allows the application to interface with
+ * {@code Runtime} that allows the application to interface with
* the environment in which the application is running. The current
- * runtime can be obtained from the <code>getRuntime</code> method.
+ * runtime can be obtained from the {@code getRuntime} method.
* <p>
* An application cannot create its own instance of this class.
*
@@ -48,10 +48,10 @@
/**
* Returns the runtime object associated with the current Java application.
- * Most of the methods of class <code>Runtime</code> are instance
+ * Most of the methods of class {@code Runtime} are instance
* methods and must be invoked with respect to the current runtime object.
*
- * @return the <code>Runtime</code> object associated with the current
+ * @return the {@code Runtime} object associated with the current
* Java application.
*/
public static Runtime getRuntime() {
@@ -72,8 +72,7 @@
* if any, are started in some unspecified order and allowed to run
* concurrently until they finish. In the second phase all uninvoked
* finalizers are run if {@link #runFinalizersOnExit finalization-on-exit}
- * has been enabled. Once this is done the virtual machine {@link #halt
- * halts}.
+ * has been enabled. Once this is done the virtual machine {@link #halt halts}.
*
* <p> If this method is invoked after the virtual machine has begun its
* shutdown sequence then if shutdown hooks are being run this method will
@@ -82,7 +81,7 @@
* with the given status code if the status is nonzero; otherwise, it
* blocks indefinitely.
*
- * <p> The <tt>{@link System#exit(int) System.exit}</tt> method is the
+ * <p> The {@link System#exit(int) System.exit} method is the
* conventional and convenient means of invoking this method.
*
* @param status
@@ -90,8 +89,8 @@
* indicates abnormal termination.
*
* @throws SecurityException
- * If a security manager is present and its <tt>{@link
- * SecurityManager#checkExit checkExit}</tt> method does not permit
+ * If a security manager is present and its
+ * {@link SecurityManager#checkExit checkExit} method does not permit
* exiting with the specified status
*
* @see java.lang.SecurityException
@@ -118,11 +117,11 @@
* <ul>
*
* <li> The program <i>exits</i> normally, when the last non-daemon
- * thread exits or when the <tt>{@link #exit exit}</tt> (equivalently,
+ * thread exits or when the {@link #exit exit} (equivalently,
* {@link System#exit(int) System.exit}) method is invoked, or
*
* <li> The virtual machine is <i>terminated</i> in response to a
- * user interrupt, such as typing <tt>^C</tt>, or a system-wide event,
+ * user interrupt, such as typing {@code ^C}, or a system-wide event,
* such as user logoff or system shutdown.
*
* </ul>
@@ -134,17 +133,16 @@
* run all uninvoked finalizers if finalization-on-exit has been enabled.
* Finally, the virtual machine will halt. Note that daemon threads will
* continue to run during the shutdown sequence, as will non-daemon threads
- * if shutdown was initiated by invoking the <tt>{@link #exit exit}</tt>
- * method.
+ * if shutdown was initiated by invoking the {@link #exit exit} method.
*
* <p> Once the shutdown sequence has begun it can be stopped only by
- * invoking the <tt>{@link #halt halt}</tt> method, which forcibly
+ * invoking the {@link #halt halt} method, which forcibly
* terminates the virtual machine.
*
* <p> Once the shutdown sequence has begun it is impossible to register a
* new shutdown hook or de-register a previously-registered hook.
* Attempting either of these operations will cause an
- * <tt>{@link IllegalStateException}</tt> to be thrown.
+ * {@link IllegalStateException} to be thrown.
*
* <p> Shutdown hooks run at a delicate time in the life cycle of a virtual
* machine and should therefore be coded defensively. They should, in
@@ -156,7 +154,7 @@
* deadlocks.
*
* <p> Shutdown hooks should also finish their work quickly. When a
- * program invokes <tt>{@link #exit exit}</tt> the expectation is
+ * program invokes {@link #exit exit} the expectation is
* that the virtual machine will promptly shut down and exit. When the
* virtual machine is terminated due to user logoff or system shutdown the
* underlying operating system may only allow a fixed amount of time in
@@ -165,17 +163,17 @@
* hook.
*
* <p> Uncaught exceptions are handled in shutdown hooks just as in any
- * other thread, by invoking the <tt>{@link ThreadGroup#uncaughtException
- * uncaughtException}</tt> method of the thread's <tt>{@link
- * ThreadGroup}</tt> object. The default implementation of this method
- * prints the exception's stack trace to <tt>{@link System#err}</tt> and
+ * other thread, by invoking the
+ * {@link ThreadGroup#uncaughtException uncaughtException} method of the
+ * thread's {@link ThreadGroup} object. The default implementation of this
+ * method prints the exception's stack trace to {@link System#err} and
* terminates the thread; it does not cause the virtual machine to exit or
* halt.
*
* <p> In rare circumstances the virtual machine may <i>abort</i>, that is,
* stop running without shutting down cleanly. This occurs when the
* virtual machine is terminated externally, for example with the
- * <tt>SIGKILL</tt> signal on Unix or the <tt>TerminateProcess</tt> call on
+ * {@code SIGKILL} signal on Unix or the {@code TerminateProcess} call on
* Microsoft Windows. The virtual machine may also abort if a native
* method goes awry by, for example, corrupting internal data structures or
* attempting to access nonexistent memory. If the virtual machine aborts
@@ -183,7 +181,7 @@
* will be run.
*
* @param hook
- * An initialized but unstarted <tt>{@link Thread}</tt> object
+ * An initialized but unstarted {@link Thread} object
*
* @throws IllegalArgumentException
* If the specified hook has already been registered,
@@ -196,7 +194,7 @@
*
* @throws SecurityException
* If a security manager is present and it denies
- * <tt>{@link RuntimePermission}("shutdownHooks")</tt>
+ * {@link RuntimePermission}("shutdownHooks")
*
* @see #removeShutdownHook
* @see #halt(int)
@@ -212,11 +210,11 @@
}
/**
- * De-registers a previously-registered virtual-machine shutdown hook. <p>
+ * De-registers a previously-registered virtual-machine shutdown hook.
*
* @param hook the hook to remove
- * @return <tt>true</tt> if the specified hook had previously been
- * registered and was successfully de-registered, <tt>false</tt>
+ * @return {@code true} if the specified hook had previously been
+ * registered and was successfully de-registered, {@code false}
* otherwise.
*
* @throws IllegalStateException
@@ -225,7 +223,7 @@
*
* @throws SecurityException
* If a security manager is present and it denies
- * <tt>{@link RuntimePermission}("shutdownHooks")</tt>
+ * {@link RuntimePermission}("shutdownHooks")
*
* @see #addShutdownHook
* @see #exit(int)
@@ -244,23 +242,23 @@
* method never returns normally.
*
* <p> This method should be used with extreme caution. Unlike the
- * <tt>{@link #exit exit}</tt> method, this method does not cause shutdown
+ * {@link #exit exit} method, this method does not cause shutdown
* hooks to be started and does not run uninvoked finalizers if
* finalization-on-exit has been enabled. If the shutdown sequence has
* already been initiated then this method does not wait for any running
* shutdown hooks or finalizers to finish their work.
*
* @param status
- * Termination status. By convention, a nonzero status code
- * indicates abnormal termination. If the <tt>{@link Runtime#exit
- * exit}</tt> (equivalently, <tt>{@link System#exit(int)
- * System.exit}</tt>) method has already been invoked then this
- * status code will override the status code passed to that method.
+ * Termination status. By convention, a nonzero status code
+ * indicates abnormal termination. If the {@link Runtime#exit exit}
+ * (equivalently, {@link System#exit(int) System.exit}) method
+ * has already been invoked then this status code
+ * will override the status code passed to that method.
*
* @throws SecurityException
- * If a security manager is present and its <tt>{@link
- * SecurityManager#checkExit checkExit}</tt> method does not permit
- * an exit with the specified status
+ * If a security manager is present and its
+ * {@link SecurityManager#checkExit checkExit} method
+ * does not permit an exit with the specified status
*
* @see #exit
* @see #addShutdownHook
@@ -282,7 +280,7 @@
* By default, finalization on exit is disabled.
*
* <p>If there is a security manager,
- * its <code>checkExit</code> method is first called
+ * its {@code checkExit} method is first called
* with 0 as its argument to ensure the exit is allowed.
* This could result in a SecurityException.
*
@@ -293,7 +291,7 @@
* behavior or deadlock.
*
* @throws SecurityException
- * if a security manager exists and its <code>checkExit</code>
+ * if a security manager exists and its {@code checkExit}
* method doesn't allow the exit.
*
* @see java.lang.Runtime#exit(int)
@@ -318,9 +316,9 @@
* Executes the specified string command in a separate process.
*
* <p>This is a convenience method. An invocation of the form
- * <tt>exec(command)</tt>
+ * {@code exec(command)}
* behaves in exactly the same way as the invocation
- * <tt>{@link #exec(String, String[], File) exec}(command, null, null)</tt>.
+ * {@link #exec(String, String[], File) exec}{@code (command, null, null)}.
*
* @param command a specified system command.
*
@@ -335,10 +333,10 @@
* If an I/O error occurs
*
* @throws NullPointerException
- * If <code>command</code> is <code>null</code>
+ * If {@code command} is {@code null}
*
* @throws IllegalArgumentException
- * If <code>command</code> is empty
+ * If {@code command} is empty
*
* @see #exec(String[], String[], File)
* @see ProcessBuilder
@@ -352,16 +350,16 @@
* specified environment.
*
* <p>This is a convenience method. An invocation of the form
- * <tt>exec(command, envp)</tt>
+ * {@code exec(command, envp)}
* behaves in exactly the same way as the invocation
- * <tt>{@link #exec(String, String[], File) exec}(command, envp, null)</tt>.
+ * {@link #exec(String, String[], File) exec}{@code (command, envp, null)}.
*
* @param command a specified system command.
*
* @param envp array of strings, each element of which
* has environment variable settings in the format
* <i>name</i>=<i>value</i>, or
- * <tt>null</tt> if the subprocess should inherit
+ * {@code null} if the subprocess should inherit
* the environment of the current process.
*
* @return A new {@link Process} object for managing the subprocess
@@ -375,11 +373,11 @@
* If an I/O error occurs
*
* @throws NullPointerException
- * If <code>command</code> is <code>null</code>,
- * or one of the elements of <code>envp</code> is <code>null</code>
+ * If {@code command} is {@code null},
+ * or one of the elements of {@code envp} is {@code null}
*
* @throws IllegalArgumentException
- * If <code>command</code> is empty
+ * If {@code command} is empty
*
* @see #exec(String[], String[], File)
* @see ProcessBuilder
@@ -393,29 +391,29 @@
* specified environment and working directory.
*
* <p>This is a convenience method. An invocation of the form
- * <tt>exec(command, envp, dir)</tt>
+ * {@code exec(command, envp, dir)}
* behaves in exactly the same way as the invocation
- * <tt>{@link #exec(String[], String[], File) exec}(cmdarray, envp, dir)</tt>,
- * where <code>cmdarray</code> is an array of all the tokens in
- * <code>command</code>.
+ * {@link #exec(String[], String[], File) exec}{@code (cmdarray, envp, dir)},
+ * where {@code cmdarray} is an array of all the tokens in
+ * {@code command}.
*
- * <p>More precisely, the <code>command</code> string is broken
+ * <p>More precisely, the {@code command} string is broken
* into tokens using a {@link StringTokenizer} created by the call
- * <code>new {@link StringTokenizer}(command)</code> with no
+ * {@code new {@link StringTokenizer}(command)} with no
* further modification of the character categories. The tokens
* produced by the tokenizer are then placed in the new string
- * array <code>cmdarray</code>, in the same order.
+ * array {@code cmdarray}, in the same order.
*
* @param command a specified system command.
*
* @param envp array of strings, each element of which
* has environment variable settings in the format
* <i>name</i>=<i>value</i>, or
- * <tt>null</tt> if the subprocess should inherit
+ * {@code null} if the subprocess should inherit
* the environment of the current process.
*
* @param dir the working directory of the subprocess, or
- * <tt>null</tt> if the subprocess should inherit
+ * {@code null} if the subprocess should inherit
* the working directory of the current process.
*
* @return A new {@link Process} object for managing the subprocess
@@ -429,11 +427,11 @@
* If an I/O error occurs
*
* @throws NullPointerException
- * If <code>command</code> is <code>null</code>,
- * or one of the elements of <code>envp</code> is <code>null</code>
+ * If {@code command} is {@code null},
+ * or one of the elements of {@code envp} is {@code null}
*
* @throws IllegalArgumentException
- * If <code>command</code> is empty
+ * If {@code command} is empty
*
* @see ProcessBuilder
* @since 1.3
@@ -454,9 +452,9 @@
* Executes the specified command and arguments in a separate process.
*
* <p>This is a convenience method. An invocation of the form
- * <tt>exec(cmdarray)</tt>
+ * {@code exec(cmdarray)}
* behaves in exactly the same way as the invocation
- * <tt>{@link #exec(String[], String[], File) exec}(cmdarray, null, null)</tt>.
+ * {@link #exec(String[], String[], File) exec}{@code (cmdarray, null, null)}.
*
* @param cmdarray array containing the command to call and
* its arguments.
@@ -472,12 +470,12 @@
* If an I/O error occurs
*
* @throws NullPointerException
- * If <code>cmdarray</code> is <code>null</code>,
- * or one of the elements of <code>cmdarray</code> is <code>null</code>
+ * If {@code cmdarray} is {@code null},
+ * or one of the elements of {@code cmdarray} is {@code null}
*
* @throws IndexOutOfBoundsException
- * If <code>cmdarray</code> is an empty array
- * (has length <code>0</code>)
+ * If {@code cmdarray} is an empty array
+ * (has length {@code 0})
*
* @see ProcessBuilder
*/
@@ -490,9 +488,9 @@
* with the specified environment.
*
* <p>This is a convenience method. An invocation of the form
- * <tt>exec(cmdarray, envp)</tt>
+ * {@code exec(cmdarray, envp)}
* behaves in exactly the same way as the invocation
- * <tt>{@link #exec(String[], String[], File) exec}(cmdarray, envp, null)</tt>.
+ * {@link #exec(String[], String[], File) exec}{@code (cmdarray, envp, null)}.
*
* @param cmdarray array containing the command to call and
* its arguments.
@@ -500,7 +498,7 @@
* @param envp array of strings, each element of which
* has environment variable settings in the format
* <i>name</i>=<i>value</i>, or
- * <tt>null</tt> if the subprocess should inherit
+ * {@code null} if the subprocess should inherit
* the environment of the current process.
*
* @return A new {@link Process} object for managing the subprocess
@@ -514,13 +512,13 @@
* If an I/O error occurs
*
* @throws NullPointerException
- * If <code>cmdarray</code> is <code>null</code>,
- * or one of the elements of <code>cmdarray</code> is <code>null</code>,
- * or one of the elements of <code>envp</code> is <code>null</code>
+ * If {@code cmdarray} is {@code null},
+ * or one of the elements of {@code cmdarray} is {@code null},
+ * or one of the elements of {@code envp} is {@code null}
*
* @throws IndexOutOfBoundsException
- * If <code>cmdarray</code> is an empty array
- * (has length <code>0</code>)
+ * If {@code cmdarray} is an empty array
+ * (has length {@code 0})
*
* @see ProcessBuilder
*/
@@ -533,17 +531,17 @@
* Executes the specified command and arguments in a separate process with
* the specified environment and working directory.
*
- * <p>Given an array of strings <code>cmdarray</code>, representing the
- * tokens of a command line, and an array of strings <code>envp</code>,
+ * <p>Given an array of strings {@code cmdarray}, representing the
+ * tokens of a command line, and an array of strings {@code envp},
* representing "environment" variable settings, this method creates
* a new process in which to execute the specified command.
*
- * <p>This method checks that <code>cmdarray</code> is a valid operating
+ * <p>This method checks that {@code cmdarray} is a valid operating
* system command. Which commands are valid is system-dependent,
* but at the very least the command must be a non-empty list of
* non-null strings.
*
- * <p>If <tt>envp</tt> is <tt>null</tt>, the subprocess inherits the
+ * <p>If {@code envp} is {@code null}, the subprocess inherits the
* environment settings of the current process.
*
* <p>A minimal set of system dependent environment variables may
@@ -554,14 +552,14 @@
* <p>{@link ProcessBuilder#start()} is now the preferred way to
* start a process with a modified environment.
*
- * <p>The working directory of the new subprocess is specified by <tt>dir</tt>.
- * If <tt>dir</tt> is <tt>null</tt>, the subprocess inherits the
+ * <p>The working directory of the new subprocess is specified by {@code dir}.
+ * If {@code dir} is {@code null}, the subprocess inherits the
* current working directory of the current process.
*
* <p>If a security manager exists, its
* {@link SecurityManager#checkExec checkExec}
* method is invoked with the first component of the array
- * <code>cmdarray</code> as its argument. This may result in a
+ * {@code cmdarray} as its argument. This may result in a
* {@link SecurityException} being thrown.
*
* <p>Starting an operating system process is highly system-dependent.
@@ -586,11 +584,11 @@
* @param envp array of strings, each element of which
* has environment variable settings in the format
* <i>name</i>=<i>value</i>, or
- * <tt>null</tt> if the subprocess should inherit
+ * {@code null} if the subprocess should inherit
* the environment of the current process.
*
* @param dir the working directory of the subprocess, or
- * <tt>null</tt> if the subprocess should inherit
+ * {@code null} if the subprocess should inherit
* the working directory of the current process.
*
* @return A new {@link Process} object for managing the subprocess
@@ -607,13 +605,13 @@
* If an I/O error occurs
*
* @throws NullPointerException
- * If <code>cmdarray</code> is <code>null</code>,
- * or one of the elements of <code>cmdarray</code> is <code>null</code>,
- * or one of the elements of <code>envp</code> is <code>null</code>
+ * If {@code cmdarray} is {@code null},
+ * or one of the elements of {@code cmdarray} is {@code null},
+ * or one of the elements of {@code envp} is {@code null}
*
* @throws IndexOutOfBoundsException
- * If <code>cmdarray</code> is an empty array
- * (has length <code>0</code>)
+ * If {@code cmdarray} is an empty array
+ * (has length {@code 0})
*
* @see ProcessBuilder
* @since 1.3
@@ -643,8 +641,8 @@
/**
* Returns the amount of free memory in the Java Virtual Machine.
* Calling the
- * <code>gc</code> method may result in increasing the value returned
- * by <code>freeMemory.</code>
+ * {@code gc} method may result in increasing the value returned
+ * by {@code freeMemory.}
*
* @return an approximation to the total amount of memory currently
* available for future allocated objects, measured in bytes.
@@ -665,9 +663,9 @@
public native long totalMemory();
/**
- * Returns the maximum amount of memory that the Java virtual machine will
- * attempt to use. If there is no inherent limit then the value {@link
- * java.lang.Long#MAX_VALUE} will be returned.
+ * Returns the maximum amount of memory that the Java virtual machine
+ * will attempt to use. If there is no inherent limit then the value
+ * {@link java.lang.Long#MAX_VALUE} will be returned.
*
* @return the maximum amount of memory that the virtual machine will
* attempt to use, measured in bytes
@@ -683,10 +681,10 @@
* returns from the method call, the virtual machine has made
* its best effort to recycle all discarded objects.
* <p>
- * The name <code>gc</code> stands for "garbage
+ * The name {@code gc} stands for "garbage
* collector". The virtual machine performs this recycling
* process automatically as needed, in a separate thread, even if the
- * <code>gc</code> method is not invoked explicitly.
+ * {@code gc} method is not invoked explicitly.
* <p>
* The method {@link System#gc()} is the conventional and convenient
* means of invoking this method.
@@ -699,15 +697,15 @@
/**
* Runs the finalization methods of any objects pending finalization.
* Calling this method suggests that the Java virtual machine expend
- * effort toward running the <code>finalize</code> methods of objects
- * that have been found to be discarded but whose <code>finalize</code>
+ * effort toward running the {@code finalize} methods of objects
+ * that have been found to be discarded but whose {@code finalize}
* methods have not yet been run. When control returns from the
* method call, the virtual machine has made a best effort to
* complete all outstanding finalizations.
* <p>
* The virtual machine performs the finalization process
* automatically as needed, in a separate thread, if the
- * <code>runFinalization</code> method is not invoked explicitly.
+ * {@code runFinalization} method is not invoked explicitly.
* <p>
* The method {@link System#runFinalization()} is the conventional
* and convenient means of invoking this method.
@@ -720,7 +718,7 @@
/**
* Enables/Disables tracing of instructions.
- * If the <code>boolean</code> argument is <code>true</code>, this
+ * If the {@code boolean} argument is {@code true}, this
* method suggests that the Java virtual machine emit debugging
* information for each instruction in the virtual machine as it
* is executed. The format of this information, and the file or other
@@ -729,18 +727,18 @@
* this feature. The destination of the trace output is system
* dependent.
* <p>
- * If the <code>boolean</code> argument is <code>false</code>, this
+ * If the {@code boolean} argument is {@code false}, this
* method causes the virtual machine to stop performing the
* detailed instruction trace it is performing.
*
- * @param on <code>true</code> to enable instruction tracing;
- * <code>false</code> to disable this feature.
+ * @param on {@code true} to enable instruction tracing;
+ * {@code false} to disable this feature.
*/
public void traceInstructions(boolean on) { }
/**
* Enables/Disables tracing of method calls.
- * If the <code>boolean</code> argument is <code>true</code>, this
+ * If the {@code boolean} argument is {@code true}, this
* method suggests that the Java virtual machine emit debugging
* information for each method in the virtual machine as it is
* called. The format of this information, and the file or other output
@@ -751,8 +749,8 @@
* Calling this method with argument false suggests that the
* virtual machine cease emitting per-call debugging information.
*
- * @param on <code>true</code> to enable instruction tracing;
- * <code>false</code> to disable this feature.
+ * @param on {@code true} to enable instruction tracing;
+ * {@code false} to disable this feature.
*/
public void traceMethodCalls(boolean on) { }
@@ -760,7 +758,7 @@
* Loads the native library specified by the filename argument. The filename
* argument must be an absolute path name.
* (for example
- * <code>Runtime.getRuntime().load("/home/avh/lib/libX11.so");</code>).
+ * {@code Runtime.getRuntime().load("/home/avh/lib/libX11.so");}).
*
* If the filename argument, when stripped of any platform-specific library
* prefix, path, and file extension, indicates a library whose name is,
@@ -773,8 +771,8 @@
* Otherwise, the filename argument is mapped to a native library image in
* an implementation-dependent manner.
* <p>
- * First, if there is a security manager, its <code>checkLink</code>
- * method is called with the <code>filename</code> as its argument.
+ * First, if there is a security manager, its {@code checkLink}
+ * method is called with the {@code filename} as its argument.
* This may result in a security exception.
* <p>
* This is similar to the method {@link #loadLibrary(String)}, but it
@@ -786,14 +784,14 @@
*
* @param filename the file to load.
* @exception SecurityException if a security manager exists and its
- * <code>checkLink</code> method doesn't allow
+ * {@code checkLink} method doesn't allow
* loading of the specified dynamic library
* @exception UnsatisfiedLinkError if either the filename is not an
* absolute path name, the native library is not statically
* linked with the VM, or the library cannot be mapped to
* a native library image by the host system.
- * @exception NullPointerException if <code>filename</code> is
- * <code>null</code>
+ * @exception NullPointerException if {@code filename} is
+ * {@code null}
* @see java.lang.Runtime#getRuntime()
* @see java.lang.SecurityException
* @see java.lang.SecurityManager#checkLink(java.lang.String)
@@ -816,26 +814,26 @@
}
/**
- * Loads the native library specified by the <code>libname</code>
- * argument. The <code>libname</code> argument must not contain any platform
+ * Loads the native library specified by the {@code libname}
+ * argument. The {@code libname} argument must not contain any platform
* specific prefix, file extension or path. If a native library
- * called <code>libname</code> is statically linked with the VM, then the
- * JNI_OnLoad_<code>libname</code> function exported by the library is invoked.
+ * called {@code libname} is statically linked with the VM, then the
+ * JNI_OnLoad_{@code libname} function exported by the library is invoked.
* See the JNI Specification for more details.
*
* Otherwise, the libname argument is loaded from a system library
* location and mapped to a native library image in an implementation-
* dependent manner.
* <p>
- * First, if there is a security manager, its <code>checkLink</code>
- * method is called with the <code>libname</code> as its argument.
+ * First, if there is a security manager, its {@code checkLink}
+ * method is called with the {@code libname} as its argument.
* This may result in a security exception.
* <p>
* The method {@link System#loadLibrary(String)} is the conventional
* and convenient means of invoking this method. If native
* methods are to be used in the implementation of a class, a standard
* strategy is to put the native code in a library file (call it
- * <code>LibFile</code>) and then to put a static initializer:
+ * {@code LibFile}) and then to put a static initializer:
* <blockquote><pre>
* static { System.loadLibrary("LibFile"); }
* </pre></blockquote>
@@ -848,14 +846,14 @@
*
* @param libname the name of the library.
* @exception SecurityException if a security manager exists and its
- * <code>checkLink</code> method doesn't allow
+ * {@code checkLink} method doesn't allow
* loading of the specified dynamic library
* @exception UnsatisfiedLinkError if either the libname argument
* contains a file path, the native library is not statically
* linked with the VM, or the library cannot be mapped to a
* native library image by the host system.
- * @exception NullPointerException if <code>libname</code> is
- * <code>null</code>
+ * @exception NullPointerException if {@code libname} is
+ * {@code null}
* @see java.lang.SecurityException
* @see java.lang.SecurityManager#checkLink(java.lang.String)
*/
@@ -878,7 +876,7 @@
/**
* Creates a localized version of an input stream. This method takes
- * an <code>InputStream</code> and returns an <code>InputStream</code>
+ * an {@code InputStream} and returns an {@code InputStream}
* equivalent to the argument in all respects except that it is
* localized: as characters in the local character set are read from
* the stream, they are automatically converted from the local
@@ -894,7 +892,7 @@
* @see java.io.InputStreamReader#InputStreamReader(java.io.InputStream)
* @deprecated As of JDK 1.1, the preferred way to translate a byte
* stream in the local encoding into a character stream in Unicode is via
- * the <code>InputStreamReader</code> and <code>BufferedReader</code>
+ * the {@code InputStreamReader} and {@code BufferedReader}
* classes.
*/
@Deprecated
@@ -904,8 +902,8 @@
/**
* Creates a localized version of an output stream. This method
- * takes an <code>OutputStream</code> and returns an
- * <code>OutputStream</code> equivalent to the argument in all respects
+ * takes an {@code OutputStream} and returns an
+ * {@code OutputStream} equivalent to the argument in all respects
* except that it is localized: as Unicode characters are written to
* the stream, they are automatically converted to the local
* character set.
@@ -915,8 +913,8 @@
*
* @deprecated As of JDK 1.1, the preferred way to translate a
* Unicode character stream into a byte stream in the local encoding is via
- * the <code>OutputStreamWriter</code>, <code>BufferedWriter</code>, and
- * <code>PrintWriter</code> classes.
+ * the {@code OutputStreamWriter}, {@code BufferedWriter}, and
+ * {@code PrintWriter} classes.
*
* @param out OutputStream to localize
* @return a localized output stream
--- a/jdk/src/java.base/share/classes/java/lang/invoke/LambdaForm.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/lang/invoke/LambdaForm.java Tue May 05 13:29:12 2015 -0700
@@ -631,7 +631,7 @@
* as a sort of pre-invocation linkage step.)
*/
public void prepare() {
- if (COMPILE_THRESHOLD == 0) {
+ if (COMPILE_THRESHOLD == 0 && !isCompiled) {
compileToBytecode();
}
if (this.vmentry != null) {
@@ -645,11 +645,11 @@
/** Generate optimizable bytecode for this form. */
MemberName compileToBytecode() {
- MethodType invokerType = methodType();
- assert(vmentry == null || vmentry.getMethodType().basicType().equals(invokerType));
if (vmentry != null && isCompiled) {
return vmentry; // already compiled somehow
}
+ MethodType invokerType = methodType();
+ assert(vmentry == null || vmentry.getMethodType().basicType().equals(invokerType));
try {
vmentry = InvokerBytecodeGenerator.generateCustomizedCode(this, invokerType);
if (TRACE_INTERPRETER)
--- a/jdk/src/java.base/share/classes/java/nio/file/AtomicMoveNotSupportedException.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/nio/file/AtomicMoveNotSupportedException.java Tue May 05 13:29:12 2015 -0700
@@ -45,7 +45,7 @@
* @param target
* a string identifying the target file or {@code null} if not known
* @param reason
- * a reason message with additional information
+ * a reason message with additional information or {@code null}
*/
public AtomicMoveNotSupportedException(String source,
String target,
--- a/jdk/src/java.base/share/classes/java/security/AccessControlContext.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/security/AccessControlContext.java Tue May 05 13:29:12 2015 -0700
@@ -458,7 +458,7 @@
Thread.dumpStack();
final ProtectionDomain pd = context[i];
final Debug db = debug;
- AccessController.doPrivileged (new PrivilegedAction<Void>() {
+ AccessController.doPrivileged (new PrivilegedAction<>() {
public Void run() {
db.println("domain that failed "+pd);
return null;
--- a/jdk/src/java.base/share/classes/java/security/AccessController.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/security/AccessController.java Tue May 05 13:29:12 2015 -0700
@@ -612,7 +612,7 @@
private static ProtectionDomain getCallerPD(final Class <?> caller) {
ProtectionDomain callerPd = doPrivileged
- (new PrivilegedAction<ProtectionDomain>() {
+ (new PrivilegedAction<>() {
public ProtectionDomain run() {
return caller.getProtectionDomain();
}
--- a/jdk/src/java.base/share/classes/java/security/AllPermission.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/security/AllPermission.java Tue May 05 13:29:12 2015 -0700
@@ -212,7 +212,7 @@
* @return an enumeration of all the AllPermission objects.
*/
public Enumeration<Permission> elements() {
- return new Enumeration<Permission>() {
+ return new Enumeration<>() {
private boolean hasMore = all_allowed;
public boolean hasMoreElements() {
--- a/jdk/src/java.base/share/classes/java/security/BasicPermission.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/security/BasicPermission.java Tue May 05 13:29:12 2015 -0700
@@ -332,7 +332,7 @@
*/
public BasicPermissionCollection(Class<?> clazz) {
- perms = new HashMap<String, Permission>(11);
+ perms = new HashMap<>(11);
all_allowed = false;
permClass = clazz;
}
@@ -533,7 +533,7 @@
@SuppressWarnings("unchecked")
Hashtable<String, Permission> permissions =
(Hashtable<String, Permission>)gfields.get("permissions", null);
- perms = new HashMap<String, Permission>(permissions.size()*2);
+ perms = new HashMap<>(permissions.size()*2);
perms.putAll(permissions);
// Get all_allowed
--- a/jdk/src/java.base/share/classes/java/security/CodeSource.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/security/CodeSource.java Tue May 05 13:29:12 2015 -0700
@@ -543,7 +543,7 @@
if (size > 0) {
// we know of 3 different cert types: X.509, PGP, SDSI, which
// could all be present in the stream at the same time
- cfs = new Hashtable<String, CertificateFactory>(3);
+ cfs = new Hashtable<>(3);
this.certs = new java.security.cert.Certificate[size];
}
--- a/jdk/src/java.base/share/classes/java/security/Identity.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/security/Identity.java Tue May 05 13:29:12 2015 -0700
@@ -185,7 +185,7 @@
check("setIdentityPublicKey");
this.publicKey = key;
- certificates = new Vector<Certificate>();
+ certificates = new Vector<>();
}
/**
@@ -248,7 +248,7 @@
check("addIdentityCertificate");
if (certificates == null) {
- certificates = new Vector<Certificate>();
+ certificates = new Vector<>();
}
if (publicKey != null) {
if (!keyEquals(publicKey, certificate.getPublicKey())) {
--- a/jdk/src/java.base/share/classes/java/security/IdentityScope.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/security/IdentityScope.java Tue May 05 13:29:12 2015 -0700
@@ -74,7 +74,7 @@
private static void initializeSystemScope() {
String classname = AccessController.doPrivileged(
- new PrivilegedAction<String>() {
+ new PrivilegedAction<>() {
public String run() {
return Security.getProperty("system.scope");
}
--- a/jdk/src/java.base/share/classes/java/security/KeyStore.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/security/KeyStore.java Tue May 05 13:29:12 2015 -0700
@@ -976,7 +976,7 @@
*/
public final static String getDefaultType() {
String kstype;
- kstype = AccessController.doPrivileged(new PrivilegedAction<String>() {
+ kstype = AccessController.doPrivileged(new PrivilegedAction<>() {
public String run() {
return Security.getProperty(KEYSTORE_TYPE);
}
--- a/jdk/src/java.base/share/classes/java/security/Permissions.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/security/Permissions.java Tue May 05 13:29:12 2015 -0700
@@ -99,7 +99,7 @@
* Creates a new Permissions object containing no PermissionCollections.
*/
public Permissions() {
- permsMap = new HashMap<Class<?>, PermissionCollection>(11);
+ permsMap = new HashMap<>(11);
allPermission = null;
}
@@ -394,7 +394,7 @@
@SuppressWarnings("unchecked")
Hashtable<Class<?>, PermissionCollection> perms =
(Hashtable<Class<?>, PermissionCollection>)gfields.get("perms", null);
- permsMap = new HashMap<Class<?>, PermissionCollection>(perms.size()*2);
+ permsMap = new HashMap<>(perms.size()*2);
permsMap.putAll(perms);
// Set hasUnresolved
@@ -488,7 +488,7 @@
*/
PermissionsHash() {
- permsMap = new HashMap<Permission, Permission>(11);
+ permsMap = new HashMap<>(11);
}
/**
@@ -597,7 +597,7 @@
@SuppressWarnings("unchecked")
Hashtable<Permission, Permission> perms =
(Hashtable<Permission, Permission>)gfields.get("perms", null);
- permsMap = new HashMap<Permission, Permission>(perms.size()*2);
+ permsMap = new HashMap<>(perms.size()*2);
permsMap.putAll(perms);
}
}
--- a/jdk/src/java.base/share/classes/java/security/Policy.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/security/Policy.java Tue May 05 13:29:12 2015 -0700
@@ -170,7 +170,7 @@
PolicyInfo pinfo = policy.get();
if (pinfo.policy == null) {
String policy_class = AccessController.doPrivileged(
- new PrivilegedAction<String>() {
+ new PrivilegedAction<>() {
public String run() {
return Security.getProperty("policy.provider");
}
@@ -199,7 +199,7 @@
final String pc = policy_class;
Policy pol = AccessController.doPrivileged(
- new PrivilegedAction<Policy>() {
+ new PrivilegedAction<>() {
public Policy run() {
try {
ClassLoader cl =
@@ -303,7 +303,7 @@
*/
ProtectionDomain policyDomain =
- AccessController.doPrivileged(new PrivilegedAction<ProtectionDomain>() {
+ AccessController.doPrivileged(new PrivilegedAction<>() {
public ProtectionDomain run() {
return p.getClass().getProtectionDomain();
}
--- a/jdk/src/java.base/share/classes/java/security/ProtectionDomain.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/security/ProtectionDomain.java Tue May 05 13:29:12 2015 -0700
@@ -367,7 +367,7 @@
PermissionCollection perms =
java.security.AccessController.doPrivileged
- (new java.security.PrivilegedAction<PermissionCollection>() {
+ (new java.security.PrivilegedAction<>() {
public PermissionCollection run() {
Policy p = Policy.getPolicyNoCheck();
return p.getPermissions(ProtectionDomain.this);
--- a/jdk/src/java.base/share/classes/java/security/Provider.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/security/Provider.java Tue May 05 13:29:12 2015 -0700
@@ -711,7 +711,7 @@
legacyChanged = true;
if (legacyStrings == null) {
- legacyStrings = new LinkedHashMap<String,String>();
+ legacyStrings = new LinkedHashMap<>();
}
return true;
}
@@ -773,7 +773,7 @@
private void implReplaceAll(BiFunction<? super Object, ? super Object, ? extends Object> function) {
legacyChanged = true;
if (legacyStrings == null) {
- legacyStrings = new LinkedHashMap<String,String>();
+ legacyStrings = new LinkedHashMap<>();
} else {
legacyStrings.replaceAll((BiFunction<? super String, ? super String, ? extends String>) function);
}
@@ -905,7 +905,7 @@
}
serviceSet = null;
if (legacyMap == null) {
- legacyMap = new LinkedHashMap<ServiceKey,Service>();
+ legacyMap = new LinkedHashMap<>();
} else {
legacyMap.clear();
}
@@ -1133,7 +1133,7 @@
("service.getProvider() must match this Provider object");
}
if (serviceMap == null) {
- serviceMap = new LinkedHashMap<ServiceKey,Service>();
+ serviceMap = new LinkedHashMap<>();
}
servicesChanged = true;
String type = s.getType();
@@ -1305,7 +1305,7 @@
}
static {
- knownEngines = new HashMap<String,EngineDescription>();
+ knownEngines = new HashMap<>();
// JCA
addEngine("AlgorithmParameterGenerator", false, null);
addEngine("AlgorithmParameters", false, null);
@@ -1431,14 +1431,14 @@
private void addAlias(String alias) {
if (aliases.isEmpty()) {
- aliases = new ArrayList<String>(2);
+ aliases = new ArrayList<>(2);
}
aliases.add(alias);
}
void addAttribute(String type, String value) {
if (attributes.isEmpty()) {
- attributes = new HashMap<UString,String>(8);
+ attributes = new HashMap<>(8);
}
attributes.put(new UString(type), value);
}
@@ -1471,12 +1471,12 @@
if (aliases == null) {
this.aliases = Collections.<String>emptyList();
} else {
- this.aliases = new ArrayList<String>(aliases);
+ this.aliases = new ArrayList<>(aliases);
}
if (attributes == null) {
this.attributes = Collections.<UString,String>emptyMap();
} else {
- this.attributes = new HashMap<UString,String>();
+ this.attributes = new HashMap<>();
for (Map.Entry<String,String> entry : attributes.entrySet()) {
this.attributes.put(new UString(entry.getKey()), entry.getValue());
}
@@ -1644,7 +1644,7 @@
("class configured for " + type + " (provider: " +
provider.getName() + ") is not public.");
}
- classRef = new WeakReference<Class<?>>(clazz);
+ classRef = new WeakReference<>(clazz);
}
return clazz;
} catch (ClassNotFoundException e) {
--- a/jdk/src/java.base/share/classes/java/security/SecureRandom.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/security/SecureRandom.java Tue May 05 13:29:12 2015 -0700
@@ -616,7 +616,7 @@
throws NoSuchAlgorithmException {
String property = AccessController.doPrivileged(
- new PrivilegedAction<String>() {
+ new PrivilegedAction<>() {
@Override
public String run() {
return Security.getProperty(
--- a/jdk/src/java.base/share/classes/java/security/Security.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/security/Security.java Tue May 05 13:29:12 2015 -0700
@@ -66,7 +66,7 @@
// things in initialize that might require privs.
// (the FileInputStream call and the File.exists call,
// the securityPropFile call, etc)
- AccessController.doPrivileged(new PrivilegedAction<Void>() {
+ AccessController.doPrivileged(new PrivilegedAction<>() {
public Void run() {
initialize();
return null;
@@ -810,7 +810,7 @@
final boolean pd = key.equals("package.definition");
if (pa || pd) {
- AccessController.doPrivileged(new PrivilegedAction<Void>() {
+ AccessController.doPrivileged(new PrivilegedAction<>() {
public Void run() {
try {
/* Get the class via the bootstrap class loader. */
--- a/jdk/src/java.base/share/classes/java/security/Signature.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/security/Signature.java Tue May 05 13:29:12 2015 -0700
@@ -265,7 +265,7 @@
private final static Map<String,Boolean> signatureInfo;
static {
- signatureInfo = new ConcurrentHashMap<String,Boolean>();
+ signatureInfo = new ConcurrentHashMap<>();
Boolean TRUE = Boolean.TRUE;
// pre-initialize with values for our SignatureSpi implementations
signatureInfo.put("sun.security.provider.DSA$RawDSA", TRUE);
--- a/jdk/src/java.base/share/classes/java/security/Signer.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/security/Signer.java Tue May 05 13:29:12 2015 -0700
@@ -140,7 +140,7 @@
}
try {
AccessController.doPrivileged(
- new PrivilegedExceptionAction<Void>() {
+ new PrivilegedExceptionAction<>() {
public Void run() throws KeyManagementException {
setPublicKey(pub);
return null;
--- a/jdk/src/java.base/share/classes/java/security/UnresolvedPermission.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/security/UnresolvedPermission.java Tue May 05 13:29:12 2015 -0700
@@ -560,7 +560,7 @@
if (size > 0) {
// we know of 3 different cert types: X.509, PGP, SDSI, which
// could all be present in the stream at the same time
- cfs = new Hashtable<String, CertificateFactory>(3);
+ cfs = new Hashtable<>(3);
this.certs = new java.security.cert.Certificate[size];
}
--- a/jdk/src/java.base/share/classes/java/security/UnresolvedPermissionCollection.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/security/UnresolvedPermissionCollection.java Tue May 05 13:29:12 2015 -0700
@@ -61,7 +61,7 @@
*
*/
public UnresolvedPermissionCollection() {
- perms = new HashMap<String, List<UnresolvedPermission>>(11);
+ perms = new HashMap<>(11);
}
/**
@@ -82,7 +82,7 @@
synchronized (this) {
v = perms.get(up.getName());
if (v == null) {
- v = new ArrayList<UnresolvedPermission>();
+ v = new ArrayList<>();
perms.put(up.getName(), v);
}
}
@@ -203,7 +203,7 @@
Hashtable<String, Vector<UnresolvedPermission>> permissions =
(Hashtable<String, Vector<UnresolvedPermission>>)
gfields.get("permissions", null);
- perms = new HashMap<String, List<UnresolvedPermission>>(permissions.size()*2);
+ perms = new HashMap<>(permissions.size()*2);
// Convert each entry (Vector) into a List
Set<Map.Entry<String, Vector<UnresolvedPermission>>> set = permissions.entrySet();
--- a/jdk/src/java.base/share/classes/java/security/cert/CertPathBuilder.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/security/cert/CertPathBuilder.java Tue May 05 13:29:12 2015 -0700
@@ -301,7 +301,7 @@
*/
public final static String getDefaultType() {
String cpbtype =
- AccessController.doPrivileged(new PrivilegedAction<String>() {
+ AccessController.doPrivileged(new PrivilegedAction<>() {
public String run() {
return Security.getProperty(CPB_TYPE);
}
--- a/jdk/src/java.base/share/classes/java/security/cert/CertPathValidator.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/security/cert/CertPathValidator.java Tue May 05 13:29:12 2015 -0700
@@ -313,7 +313,7 @@
*/
public final static String getDefaultType() {
String cpvtype =
- AccessController.doPrivileged(new PrivilegedAction<String>() {
+ AccessController.doPrivileged(new PrivilegedAction<>() {
public String run() {
return Security.getProperty(CPV_TYPE);
}
--- a/jdk/src/java.base/share/classes/java/security/cert/CertStore.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/security/cert/CertStore.java Tue May 05 13:29:12 2015 -0700
@@ -409,7 +409,7 @@
*/
public final static String getDefaultType() {
String cstype;
- cstype = AccessController.doPrivileged(new PrivilegedAction<String>() {
+ cstype = AccessController.doPrivileged(new PrivilegedAction<>() {
public String run() {
return Security.getProperty(CERTSTORE_TYPE);
}
--- a/jdk/src/java.base/share/classes/java/security/cert/CertificateRevokedException.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/security/cert/CertificateRevokedException.java Tue May 05 13:29:12 2015 -0700
@@ -231,7 +231,7 @@
if (size == 0) {
extensions = Collections.emptyMap();
} else {
- extensions = new HashMap<String, Extension>(size);
+ extensions = new HashMap<>(size);
}
// Read in the extensions and put the mappings in the extensions map
--- a/jdk/src/java.base/share/classes/java/security/cert/PKIXParameters.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/security/cert/PKIXParameters.java Tue May 05 13:29:12 2015 -0700
@@ -120,8 +120,8 @@
setTrustAnchors(trustAnchors);
this.unmodInitialPolicies = Collections.<String>emptySet();
- this.certPathCheckers = new ArrayList<PKIXCertPathChecker>();
- this.certStores = new ArrayList<CertStore>();
+ this.certPathCheckers = new ArrayList<>();
+ this.certStores = new ArrayList<>();
}
/**
@@ -144,7 +144,7 @@
if (keystore == null)
throw new NullPointerException("the keystore parameter must be " +
"non-null");
- Set<TrustAnchor> hashSet = new HashSet<TrustAnchor>();
+ Set<TrustAnchor> hashSet = new HashSet<>();
Enumeration<String> aliases = keystore.aliases();
while (aliases.hasMoreElements()) {
String alias = aliases.nextElement();
@@ -156,8 +156,8 @@
}
setTrustAnchors(hashSet);
this.unmodInitialPolicies = Collections.<String>emptySet();
- this.certPathCheckers = new ArrayList<PKIXCertPathChecker>();
- this.certStores = new ArrayList<CertStore>();
+ this.certPathCheckers = new ArrayList<>();
+ this.certStores = new ArrayList<>();
}
/**
@@ -207,7 +207,7 @@
}
}
this.unmodTrustAnchors = Collections.unmodifiableSet
- (new HashSet<TrustAnchor>(trustAnchors));
+ (new HashSet<>(trustAnchors));
}
/**
@@ -256,7 +256,7 @@
+ "of type java.lang.String");
}
this.unmodInitialPolicies =
- Collections.unmodifiableSet(new HashSet<String>(initialPolicies));
+ Collections.unmodifiableSet(new HashSet<>(initialPolicies));
} else
this.unmodInitialPolicies = Collections.<String>emptySet();
}
@@ -280,7 +280,7 @@
*/
public void setCertStores(List<CertStore> stores) {
if (stores == null) {
- this.certStores = new ArrayList<CertStore>();
+ this.certStores = new ArrayList<>();
} else {
for (Iterator<CertStore> i = stores.iterator(); i.hasNext();) {
if (!(i.next() instanceof CertStore)) {
@@ -288,7 +288,7 @@
+ "of type java.security.cert.CertStore");
}
}
- this.certStores = new ArrayList<CertStore>(stores);
+ this.certStores = new ArrayList<>(stores);
}
}
@@ -316,7 +316,7 @@
*/
public List<CertStore> getCertStores() {
return Collections.unmodifiableList
- (new ArrayList<CertStore>(this.certStores));
+ (new ArrayList<>(this.certStores));
}
/**
@@ -544,14 +544,13 @@
*/
public void setCertPathCheckers(List<PKIXCertPathChecker> checkers) {
if (checkers != null) {
- List<PKIXCertPathChecker> tmpList =
- new ArrayList<PKIXCertPathChecker>();
+ List<PKIXCertPathChecker> tmpList = new ArrayList<>();
for (PKIXCertPathChecker checker : checkers) {
tmpList.add((PKIXCertPathChecker)checker.clone());
}
this.certPathCheckers = tmpList;
} else {
- this.certPathCheckers = new ArrayList<PKIXCertPathChecker>();
+ this.certPathCheckers = new ArrayList<>();
}
}
@@ -567,7 +566,7 @@
* @see #setCertPathCheckers
*/
public List<PKIXCertPathChecker> getCertPathCheckers() {
- List<PKIXCertPathChecker> tmpList = new ArrayList<PKIXCertPathChecker>();
+ List<PKIXCertPathChecker> tmpList = new ArrayList<>();
for (PKIXCertPathChecker ck : certPathCheckers) {
tmpList.add((PKIXCertPathChecker)ck.clone());
}
@@ -667,11 +666,11 @@
// must clone these because addCertStore, et al. modify them
if (certStores != null) {
- copy.certStores = new ArrayList<CertStore>(certStores);
+ copy.certStores = new ArrayList<>(certStores);
}
if (certPathCheckers != null) {
copy.certPathCheckers =
- new ArrayList<PKIXCertPathChecker>(certPathCheckers.size());
+ new ArrayList<>(certPathCheckers.size());
for (PKIXCertPathChecker checker : certPathCheckers) {
copy.certPathCheckers.add(
(PKIXCertPathChecker)checker.clone());
--- a/jdk/src/java.base/share/classes/java/security/cert/PKIXRevocationChecker.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/security/cert/PKIXRevocationChecker.java Tue May 05 13:29:12 2015 -0700
@@ -170,7 +170,7 @@
{
this.ocspExtensions = (extensions == null)
? Collections.<Extension>emptyList()
- : new ArrayList<Extension>(extensions);
+ : new ArrayList<>(extensions);
}
/**
@@ -232,7 +232,7 @@
public void setOptions(Set<Option> options) {
this.options = (options == null)
? Collections.<Option>emptySet()
- : new HashSet<Option>(options);
+ : new HashSet<>(options);
}
/**
--- a/jdk/src/java.base/share/classes/java/security/cert/X509CRLSelector.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/security/cert/X509CRLSelector.java Tue May 05 13:29:12 2015 -0700
@@ -124,8 +124,8 @@
issuerX500Principals = null;
} else {
// clone
- issuerX500Principals = new HashSet<X500Principal>(issuers);
- issuerNames = new HashSet<Object>();
+ issuerX500Principals = new HashSet<>(issuers);
+ issuerNames = new HashSet<>();
for (X500Principal p : issuerX500Principals) {
issuerNames.add(p.getEncoded());
}
@@ -288,10 +288,10 @@
*/
private void addIssuerNameInternal(Object name, X500Principal principal) {
if (issuerNames == null) {
- issuerNames = new HashSet<Object>();
+ issuerNames = new HashSet<>();
}
if (issuerX500Principals == null) {
- issuerX500Principals = new HashSet<X500Principal>();
+ issuerX500Principals = new HashSet<>();
}
issuerNames.add(name);
issuerX500Principals.add(principal);
@@ -311,7 +311,7 @@
private static HashSet<Object> cloneAndCheckIssuerNames(Collection<?> names)
throws IOException
{
- HashSet<Object> namesCopy = new HashSet<Object>();
+ HashSet<Object> namesCopy = new HashSet<>();
Iterator<?> i = names.iterator();
while (i.hasNext()) {
Object nameObject = i.next();
@@ -363,7 +363,7 @@
*/
private static HashSet<X500Principal> parseIssuerNames(Collection<Object> names)
throws IOException {
- HashSet<X500Principal> x500Principals = new HashSet<X500Principal>();
+ HashSet<X500Principal> x500Principals = new HashSet<>();
for (Iterator<Object> t = names.iterator(); t.hasNext(); ) {
Object nameObject = t.next();
if (nameObject instanceof String) {
@@ -701,9 +701,9 @@
X509CRLSelector copy = (X509CRLSelector)super.clone();
if (issuerNames != null) {
copy.issuerNames =
- new HashSet<Object>(issuerNames);
+ new HashSet<>(issuerNames);
copy.issuerX500Principals =
- new HashSet<X500Principal>(issuerX500Principals);
+ new HashSet<>(issuerX500Principals);
}
return copy;
} catch (CloneNotSupportedException e) {
--- a/jdk/src/java.base/share/classes/java/security/cert/X509CertSelector.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/security/cert/X509CertSelector.java Tue May 05 13:29:12 2015 -0700
@@ -619,8 +619,8 @@
keyPurposeOIDSet = null;
} else {
this.keyPurposeSet =
- Collections.unmodifiableSet(new HashSet<String>(keyPurposeSet));
- keyPurposeOIDSet = new HashSet<ObjectIdentifier>();
+ Collections.unmodifiableSet(new HashSet<>(keyPurposeSet));
+ keyPurposeOIDSet = new HashSet<>();
for (String s : this.keyPurposeSet) {
keyPurposeOIDSet.add(new ObjectIdentifier(s));
}
@@ -815,12 +815,12 @@
// First, ensure that the name parses
GeneralNameInterface tempName = makeGeneralNameInterface(type, name);
if (subjectAlternativeNames == null) {
- subjectAlternativeNames = new HashSet<List<?>>();
+ subjectAlternativeNames = new HashSet<>();
}
if (subjectAlternativeGeneralNames == null) {
- subjectAlternativeGeneralNames = new HashSet<GeneralNameInterface>();
+ subjectAlternativeGeneralNames = new HashSet<>();
}
- List<Object> list = new ArrayList<Object>(2);
+ List<Object> list = new ArrayList<>(2);
list.add(Integer.valueOf(type));
list.add(name);
subjectAlternativeNames.add(list);
@@ -845,7 +845,7 @@
* @throws IOException if a parsing error occurs
*/
private static Set<GeneralNameInterface> parseNames(Collection<List<?>> names) throws IOException {
- Set<GeneralNameInterface> genNames = new HashSet<GeneralNameInterface>();
+ Set<GeneralNameInterface> genNames = new HashSet<>();
for (List<?> nameList : names) {
if (nameList.size() != 2) {
throw new IOException("name list size not 2");
@@ -1096,10 +1096,10 @@
} else {
// Snapshot set and parse it
Set<String> tempSet = Collections.unmodifiableSet
- (new HashSet<String>(certPolicySet));
+ (new HashSet<>(certPolicySet));
/* Convert to Vector of ObjectIdentifiers */
Iterator<String> i = tempSet.iterator();
- Vector<CertificatePolicyId> polIdVector = new Vector<CertificatePolicyId>();
+ Vector<CertificatePolicyId> polIdVector = new Vector<>();
while (i.hasNext()) {
Object o = i.next();
if (!(o instanceof String)) {
@@ -1267,10 +1267,10 @@
// First, ensure that the name parses
GeneralNameInterface tempName = makeGeneralNameInterface(type, name);
if (pathToGeneralNames == null) {
- pathToNames = new HashSet<List<?>>();
- pathToGeneralNames = new HashSet<GeneralNameInterface>();
+ pathToNames = new HashSet<>();
+ pathToGeneralNames = new HashSet<>();
}
- List<Object> list = new ArrayList<Object>(2);
+ List<Object> list = new ArrayList<>(2);
list.add(Integer.valueOf(type));
list.add(name);
pathToNames.add(list);
@@ -1671,10 +1671,10 @@
*/
private static Set<List<?>> cloneAndCheckNames(Collection<List<?>> names) throws IOException {
// Copy the Lists and Collection
- Set<List<?>> namesCopy = new HashSet<List<?>>();
+ Set<List<?>> namesCopy = new HashSet<>();
for (List<?> o : names)
{
- namesCopy.add(new ArrayList<Object>(o));
+ namesCopy.add(new ArrayList<>(o));
}
// Check the contents of the Lists and clone any byte arrays
@@ -2397,7 +2397,7 @@
* Convert the Vector of PolicyInformation to a Vector
* of CertificatePolicyIds for easier comparison.
*/
- List<CertificatePolicyId> policyIDs = new ArrayList<CertificatePolicyId>(policies.size());
+ List<CertificatePolicyId> policyIDs = new ArrayList<>(policies.size());
for (PolicyInformation info : policies) {
policyIDs.add(info.getPolicyIdentifier());
}
--- a/jdk/src/java.base/share/classes/java/util/JapaneseImperialCalendar.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/JapaneseImperialCalendar.java Tue May 05 13:29:12 2015 -0700
@@ -53,9 +53,9 @@
* ------------------------------------------------------
* }</pre>
*
- * <p><code>ERA</code> value 0 specifies the years before Meiji and
- * the Gregorian year values are used. Unlike {@link
- * GregorianCalendar}, the Julian to Gregorian transition is not
+ * <p>{@code ERA} value 0 specifies the years before Meiji and
+ * the Gregorian year values are used. Unlike
+ * {@link GregorianCalendar}, the Julian to Gregorian transition is not
* supported because it doesn't make any sense to the Japanese
* calendar systems used before Meiji. To represent the years before
* Gregorian year 1, 0 and negative values are used. The Japanese
@@ -66,7 +66,7 @@
* <p>A new era can be specified using property
* jdk.calendar.japanese.supplemental.era. The new era is added to the
* predefined eras. The syntax of the property is as follows.
- * <p><pre>
+ * <pre>
* {@code name=<name>,abbr=<abbr>,since=<time['u']>}
* </pre>
* where
@@ -83,7 +83,7 @@
* ignored.
*
* <p>The following is an example of the property usage.
- * <p><pre>
+ * <pre>
* java -Djdk.calendar.japanese.supplemental.era="name=NewEra,abbr=N,since=253374307200000"
* </pre>
* The property specifies an era change to NewEra at 9999-02-11T00:00:00 local time.
@@ -315,7 +315,7 @@
private transient int[] originalFields;
/**
- * Constructs a <code>JapaneseImperialCalendar</code> based on the current time
+ * Constructs a {@code JapaneseImperialCalendar} based on the current time
* in the given time zone with the given locale.
*
* @param zone the given time zone.
@@ -351,16 +351,16 @@
}
/**
- * Compares this <code>JapaneseImperialCalendar</code> to the specified
- * <code>Object</code>. The result is <code>true</code> if and
- * only if the argument is a <code>JapaneseImperialCalendar</code> object
+ * Compares this {@code JapaneseImperialCalendar} to the specified
+ * {@code Object}. The result is {@code true} if and
+ * only if the argument is a {@code JapaneseImperialCalendar} object
* that represents the same time value (millisecond offset from
* the <a href="Calendar.html#Epoch">Epoch</a>) under the same
- * <code>Calendar</code> parameters.
+ * {@code Calendar} parameters.
*
* @param obj the object to compare with.
- * @return <code>true</code> if this object is equal to <code>obj</code>;
- * <code>false</code> otherwise.
+ * @return {@code true} if this object is equal to {@code obj};
+ * {@code false} otherwise.
* @see Calendar#compareTo(Calendar)
*/
@Override
@@ -371,7 +371,7 @@
/**
* Generates the hash code for this
- * <code>JapaneseImperialCalendar</code> object.
+ * {@code JapaneseImperialCalendar} object.
*/
@Override
public int hashCode() {
@@ -382,27 +382,27 @@
* Adds the specified (signed) amount of time to the given calendar field,
* based on the calendar's rules.
*
- * <p><em>Add rule 1</em>. The value of <code>field</code>
- * after the call minus the value of <code>field</code> before the
- * call is <code>amount</code>, modulo any overflow that has occurred in
- * <code>field</code>. Overflow occurs when a field value exceeds its
+ * <p><em>Add rule 1</em>. The value of {@code field}
+ * after the call minus the value of {@code field} before the
+ * call is {@code amount}, modulo any overflow that has occurred in
+ * {@code field}. Overflow occurs when a field value exceeds its
* range and, as a result, the next larger field is incremented or
* decremented and the field value is adjusted back into its range.</p>
*
* <p><em>Add rule 2</em>. If a smaller field is expected to be
* invariant, but it is impossible for it to be equal to its
* prior value because of changes in its minimum or maximum after
- * <code>field</code> is changed, then its value is adjusted to be as close
+ * {@code field} is changed, then its value is adjusted to be as close
* as possible to its expected value. A smaller field represents a
- * smaller unit of time. <code>HOUR</code> is a smaller field than
- * <code>DAY_OF_MONTH</code>. No adjustment is made to smaller fields
+ * smaller unit of time. {@code HOUR} is a smaller field than
+ * {@code DAY_OF_MONTH}. No adjustment is made to smaller fields
* that are not expected to be invariant. The calendar system
* determines what fields are expected to be invariant.</p>
*
* @param field the calendar field.
* @param amount the amount of date or time to be added to the field.
- * @exception IllegalArgumentException if <code>field</code> is
- * <code>ZONE_OFFSET</code>, <code>DST_OFFSET</code>, or unknown,
+ * @exception IllegalArgumentException if {@code field} is
+ * {@code ZONE_OFFSET}, {@code DST_OFFSET}, or unknown,
* or if any calendar fields have out-of-range values in
* non-lenient mode.
*/
@@ -548,12 +548,12 @@
* <p>This method calls {@link #complete()} before adding the
* amount so that all the calendar fields are normalized. If there
* is any calendar field having an out-of-range value in non-lenient mode, then an
- * <code>IllegalArgumentException</code> is thrown.
+ * {@code IllegalArgumentException} is thrown.
*
* @param field the calendar field.
- * @param amount the signed amount to add to <code>field</code>.
- * @exception IllegalArgumentException if <code>field</code> is
- * <code>ZONE_OFFSET</code>, <code>DST_OFFSET</code>, or unknown,
+ * @param amount the signed amount to add to {@code field}.
+ * @exception IllegalArgumentException if {@code field} is
+ * {@code ZONE_OFFSET}, {@code DST_OFFSET}, or unknown,
* or if any calendar fields have out-of-range values in
* non-lenient mode.
* @see #roll(int,boolean)
@@ -1055,9 +1055,9 @@
/**
* Returns the minimum value for the given calendar field of this
- * <code>Calendar</code> instance. The minimum value is
- * defined as the smallest value returned by the {@link
- * Calendar#get(int) get} method for any possible time value,
+ * {@code Calendar} instance. The minimum value is
+ * defined as the smallest value returned by the
+ * {@link Calendar#get(int) get} method for any possible time value,
* taking into consideration the current values of the
* {@link Calendar#getFirstDayOfWeek() getFirstDayOfWeek},
* {@link Calendar#getMinimalDaysInFirstWeek() getMinimalDaysInFirstWeek},
@@ -1077,9 +1077,9 @@
/**
* Returns the maximum value for the given calendar field of this
- * <code>GregorianCalendar</code> instance. The maximum value is
- * defined as the largest value returned by the {@link
- * Calendar#get(int) get} method for any possible time value,
+ * {@code GregorianCalendar} instance. The maximum value is
+ * defined as the largest value returned by the
+ * {@link Calendar#get(int) get} method for any possible time value,
* taking into consideration the current values of the
* {@link Calendar#getFirstDayOfWeek() getFirstDayOfWeek},
* {@link Calendar#getMinimalDaysInFirstWeek() getMinimalDaysInFirstWeek},
@@ -1108,7 +1108,7 @@
/**
* Returns the highest minimum value for the given calendar field
- * of this <code>GregorianCalendar</code> instance. The highest
+ * of this {@code GregorianCalendar} instance. The highest
* minimum value is defined as the largest value returned by
* {@link #getActualMinimum(int)} for any possible time value,
* taking into consideration the current values of the
@@ -1130,7 +1130,7 @@
/**
* Returns the lowest maximum value for the given calendar field
- * of this <code>GregorianCalendar</code> instance. The lowest
+ * of this {@code GregorianCalendar} instance. The lowest
* maximum value is defined as the smallest value returned by
* {@link #getActualMaximum(int)} for any possible time value,
* taking into consideration the current values of the
@@ -1166,7 +1166,7 @@
*
* @param field the calendar field
* @return the minimum of the given field for the time value of
- * this <code>JapaneseImperialCalendar</code>
+ * this {@code JapaneseImperialCalendar}
* @see #getMinimum(int)
* @see #getMaximum(int)
* @see #getGreatestMinimum(int)
@@ -1269,13 +1269,13 @@
* and
* {@link Calendar#getTimeZone() getTimeZone} methods.
* For example, if the date of this instance is Heisei 16February 1,
- * the actual maximum value of the <code>DAY_OF_MONTH</code> field
+ * the actual maximum value of the {@code DAY_OF_MONTH} field
* is 29 because Heisei 16 is a leap year, and if the date of this
* instance is Heisei 17 February 1, it's 28.
*
* @param field the calendar field
* @return the maximum of the given field for the time value of
- * this <code>JapaneseImperialCalendar</code>
+ * this {@code JapaneseImperialCalendar}
* @see #getMinimum(int)
* @see #getMaximum(int)
* @see #getGreatestMinimum(int)
@@ -1558,7 +1558,7 @@
* href="Calendar.html#Epoch">Epoch</a>) to calendar field values.
* The time is <em>not</em>
* recomputed first; to recompute the time, then the fields, call the
- * <code>complete</code> method.
+ * {@code complete} method.
*
* @see Calendar#complete
*/
--- a/jdk/src/java.base/share/classes/java/util/concurrent/ForkJoinPool.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/ForkJoinPool.java Tue May 05 13:29:12 2015 -0700
@@ -2411,7 +2411,7 @@
int j = ((am & s) << ASHIFT) + ABASE;
U.putOrderedObject(a, j, task);
U.putOrderedInt(q, QTOP, s + 1);
- U.putOrderedInt(q, QLOCK, 0);
+ U.putIntVolatile(q, QLOCK, 0);
if (n <= 1)
signalWork(ws, q);
return;
--- a/jdk/src/java.base/share/classes/java/util/spi/LocaleServiceProvider.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/spi/LocaleServiceProvider.java Tue May 05 13:29:12 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -140,11 +140,24 @@
*/
public abstract class LocaleServiceProvider {
+ private static Void checkPermission() {
+ SecurityManager sm = System.getSecurityManager();
+ if (sm != null) {
+ sm.checkPermission(new RuntimePermission("localeServiceProvider"));
+ }
+ return null;
+ }
+ private LocaleServiceProvider(Void ignore) { }
+
/**
- * Sole constructor. (For invocation by subclass constructors, typically
- * implicit.)
+ * Initializes a new locale service provider.
+ *
+ * @throws SecurityException
+ * If a security manager has been installed and it denies
+ * {@link RuntimePermission RuntimePermission("localeServiceProvider")}
*/
protected LocaleServiceProvider() {
+ this(checkPermission());
}
/**
--- a/jdk/src/java.base/share/classes/javax/crypto/JceSecurity.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/javax/crypto/JceSecurity.java Tue May 05 13:29:12 2015 -0700
@@ -76,7 +76,7 @@
static {
try {
AccessController.doPrivileged(
- new PrivilegedExceptionAction<Void> () {
+ new PrivilegedExceptionAction<> () {
@Override
public Void run() throws Exception {
setupJurisdictionPolicies();
@@ -225,7 +225,7 @@
URL url = codeBaseCacheRef.get(clazz);
if (url == null) {
url = AccessController.doPrivileged(
- new PrivilegedAction<URL>() {
+ new PrivilegedAction<>() {
@Override
public URL run() {
ProtectionDomain pd = clazz.getProtectionDomain();
--- a/jdk/src/java.base/share/classes/javax/crypto/JceSecurityManager.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/javax/crypto/JceSecurityManager.java Tue May 05 13:29:12 2015 -0700
@@ -66,7 +66,7 @@
exemptPolicy = JceSecurity.getExemptPolicy();
allPerm = CryptoAllPermission.INSTANCE;
INSTANCE = AccessController.doPrivileged(
- new PrivilegedAction<JceSecurityManager>() {
+ new PrivilegedAction<>() {
public JceSecurityManager run() {
return new JceSecurityManager();
}
--- a/jdk/src/java.base/share/classes/javax/net/ssl/KeyManagerFactory.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/javax/net/ssl/KeyManagerFactory.java Tue May 05 13:29:12 2015 -0700
@@ -63,7 +63,7 @@
*/
public final static String getDefaultAlgorithm() {
String type;
- type = AccessController.doPrivileged(new PrivilegedAction<String>() {
+ type = AccessController.doPrivileged(new PrivilegedAction<>() {
@Override
public String run() {
return Security.getProperty(
--- a/jdk/src/java.base/share/classes/javax/net/ssl/SSLSocketFactory.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/javax/net/ssl/SSLSocketFactory.java Tue May 05 13:29:12 2015 -0700
@@ -126,7 +126,7 @@
}
static String getSecurityProperty(final String name) {
- return AccessController.doPrivileged(new PrivilegedAction<String>() {
+ return AccessController.doPrivileged(new PrivilegedAction<>() {
@Override
public String run() {
String s = java.security.Security.getProperty(name);
--- a/jdk/src/java.base/share/classes/javax/net/ssl/TrustManagerFactory.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/javax/net/ssl/TrustManagerFactory.java Tue May 05 13:29:12 2015 -0700
@@ -63,7 +63,7 @@
*/
public final static String getDefaultAlgorithm() {
String type;
- type = AccessController.doPrivileged(new PrivilegedAction<String>() {
+ type = AccessController.doPrivileged(new PrivilegedAction<>() {
@Override
public String run() {
return Security.getProperty(
--- a/jdk/src/java.base/share/classes/javax/security/auth/Subject.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/javax/security/auth/Subject.java Tue May 05 13:29:12 2015 -0700
@@ -154,11 +154,11 @@
public Subject() {
this.principals = Collections.synchronizedSet
- (new SecureSet<Principal>(this, PRINCIPAL_SET));
+ (new SecureSet<>(this, PRINCIPAL_SET));
this.pubCredentials = Collections.synchronizedSet
- (new SecureSet<Object>(this, PUB_CREDENTIAL_SET));
+ (new SecureSet<>(this, PUB_CREDENTIAL_SET));
this.privCredentials = Collections.synchronizedSet
- (new SecureSet<Object>(this, PRIV_CREDENTIAL_SET));
+ (new SecureSet<>(this, PRIV_CREDENTIAL_SET));
}
/**
@@ -206,11 +206,11 @@
collectionNullClean(pubCredentials);
collectionNullClean(privCredentials);
- this.principals = Collections.synchronizedSet(new SecureSet<Principal>
+ this.principals = Collections.synchronizedSet(new SecureSet<>
(this, PRINCIPAL_SET, principals));
- this.pubCredentials = Collections.synchronizedSet(new SecureSet<Object>
+ this.pubCredentials = Collections.synchronizedSet(new SecureSet<>
(this, PUB_CREDENTIAL_SET, pubCredentials));
- this.privCredentials = Collections.synchronizedSet(new SecureSet<Object>
+ this.privCredentials = Collections.synchronizedSet(new SecureSet<>
(this, PRIV_CREDENTIAL_SET, privCredentials));
this.readOnly = readOnly;
}
@@ -292,7 +292,7 @@
// return the Subject from the DomainCombiner of the provided context
return AccessController.doPrivileged
- (new java.security.PrivilegedAction<Subject>() {
+ (new java.security.PrivilegedAction<>() {
public Subject run() {
DomainCombiner dc = acc.getDomainCombiner();
if (!(dc instanceof SubjectDomainCombiner)) {
@@ -555,7 +555,7 @@
return java.security.AccessController.doPrivileged
- (new java.security.PrivilegedAction<AccessControlContext>() {
+ (new java.security.PrivilegedAction<>() {
public AccessControlContext run() {
if (subject == null) {
return new AccessControlContext(acc, null);
@@ -801,7 +801,7 @@
Set<Principal> thatPrincipals;
synchronized(that.principals) {
// avoid deadlock from dual locks
- thatPrincipals = new HashSet<Principal>(that.principals);
+ thatPrincipals = new HashSet<>(that.principals);
}
if (!principals.equals(thatPrincipals)) {
return false;
@@ -810,7 +810,7 @@
Set<Object> thatPubCredentials;
synchronized(that.pubCredentials) {
// avoid deadlock from dual locks
- thatPubCredentials = new HashSet<Object>(that.pubCredentials);
+ thatPubCredentials = new HashSet<>(that.pubCredentials);
}
if (!pubCredentials.equals(thatPubCredentials)) {
return false;
@@ -819,7 +819,7 @@
Set<Object> thatPrivCredentials;
synchronized(that.privCredentials) {
// avoid deadlock from dual locks
- thatPrivCredentials = new HashSet<Object>(that.privCredentials);
+ thatPrivCredentials = new HashSet<>(that.privCredentials);
}
if (!privCredentials.equals(thatPrivCredentials)) {
return false;
@@ -970,21 +970,21 @@
// Rewrap the principals into a SecureSet
try {
- principals = Collections.synchronizedSet(new SecureSet<Principal>
+ principals = Collections.synchronizedSet(new SecureSet<>
(this, PRINCIPAL_SET, inputPrincs));
} catch (NullPointerException npe) {
// Sometimes people deserialize the principals set only.
// Subject is not accessible, so just don't fail.
principals = Collections.synchronizedSet
- (new SecureSet<Principal>(this, PRINCIPAL_SET));
+ (new SecureSet<>(this, PRINCIPAL_SET));
}
// The Credential {@code Set} is not serialized, but we do not
// want the default deserialization routine to set it to null.
this.pubCredentials = Collections.synchronizedSet
- (new SecureSet<Object>(this, PUB_CREDENTIAL_SET));
+ (new SecureSet<>(this, PUB_CREDENTIAL_SET));
this.privCredentials = Collections.synchronizedSet
- (new SecureSet<Object>(this, PRIV_CREDENTIAL_SET));
+ (new SecureSet<>(this, PRIV_CREDENTIAL_SET));
}
/**
@@ -1497,7 +1497,7 @@
Object next;
if (which == Subject.PRIV_CREDENTIAL_SET) {
next = java.security.AccessController.doPrivileged
- (new java.security.PrivilegedAction<Object>() {
+ (new java.security.PrivilegedAction<>() {
public Object run() {
return iterator.next();
}
--- a/jdk/src/java.base/share/classes/javax/security/auth/login/Configuration.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/javax/security/auth/login/Configuration.java Tue May 05 13:29:12 2015 -0700
@@ -229,7 +229,7 @@
if (configuration == null) {
String config_class = null;
config_class = AccessController.doPrivileged
- (new PrivilegedAction<String>() {
+ (new PrivilegedAction<>() {
public String run() {
return java.security.Security.getProperty
("login.configuration.provider");
@@ -242,7 +242,7 @@
try {
final String finalClass = config_class;
Configuration untrustedImpl = AccessController.doPrivileged(
- new PrivilegedExceptionAction<Configuration>() {
+ new PrivilegedExceptionAction<>() {
public Configuration run() throws ClassNotFoundException,
InstantiationException,
IllegalAccessException {
@@ -254,7 +254,7 @@
}
});
AccessController.doPrivileged(
- new PrivilegedExceptionAction<Void>() {
+ new PrivilegedExceptionAction<>() {
public Void run() {
setConfiguration(untrustedImpl);
return null;
--- a/jdk/src/java.base/share/classes/javax/security/cert/X509Certificate.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/javax/security/cert/X509Certificate.java Tue May 05 13:29:12 2015 -0700
@@ -142,7 +142,7 @@
static {
X509Provider = AccessController.doPrivileged(
- new PrivilegedAction<String>() {
+ new PrivilegedAction<>() {
public String run() {
return Security.getProperty(X509_PROVIDER);
}
--- a/jdk/src/java.base/share/classes/jdk/net/NetworkPermission.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/jdk/net/NetworkPermission.java Tue May 05 13:29:12 2015 -0700
@@ -33,7 +33,7 @@
* name, but no actions list. Callers either possess the permission or not.
* <p>
* The following targets are defined:
- * <p>
+ *
* <table border=1 cellpadding=5 summary="permission target name,
* what the target allows,and associated risks">
* <tr>
--- a/jdk/src/java.base/share/classes/sun/security/pkcs/PKCS7.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/security/pkcs/PKCS7.java Tue May 05 13:29:12 2015 -0700
@@ -530,7 +530,7 @@
// CRLs (optional)
if (crls != null && crls.length != 0) {
// cast to X509CRLImpl[] since X509CRLImpl implements DerEncoder
- Set<X509CRLImpl> implCRLs = new HashSet<X509CRLImpl>(crls.length);
+ Set<X509CRLImpl> implCRLs = new HashSet<>(crls.length);
for (X509CRL crl: crls) {
if (crl instanceof X509CRLImpl)
implCRLs.add((X509CRLImpl) crl);
@@ -590,7 +590,7 @@
public SignerInfo[] verify(byte[] bytes)
throws NoSuchAlgorithmException, SignatureException {
- Vector<SignerInfo> intResult = new Vector<SignerInfo>();
+ Vector<SignerInfo> intResult = new Vector<>();
for (int i = 0; i < signerInfos.length; i++) {
SignerInfo signerInfo = verify(signerInfos[i], bytes);
--- a/jdk/src/java.base/share/classes/sun/security/pkcs/PKCS9Attributes.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/security/pkcs/PKCS9Attributes.java Tue May 05 13:29:12 2015 -0700
@@ -85,8 +85,7 @@
DerInputStream in) throws IOException {
if (permittedAttributes != null) {
this.permittedAttributes =
- new Hashtable<ObjectIdentifier, ObjectIdentifier>(
- permittedAttributes.length);
+ new Hashtable<>(permittedAttributes.length);
for (int i = 0; i < permittedAttributes.length; i++)
this.permittedAttributes.put(permittedAttributes[i],
--- a/jdk/src/java.base/share/classes/sun/security/pkcs/SignerInfo.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/security/pkcs/SignerInfo.java Tue May 05 13:29:12 2015 -0700
@@ -237,7 +237,7 @@
if (userCert == null)
return null;
- ArrayList<X509Certificate> certList = new ArrayList<X509Certificate>();
+ ArrayList<X509Certificate> certList = new ArrayList<>();
certList.add(userCert);
X509Certificate[] pkcsCerts = block.getCertificates();
--- a/jdk/src/java.base/share/classes/sun/security/provider/SeedGenerator.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/security/provider/SeedGenerator.java Tue May 05 13:29:12 2015 -0700
@@ -165,7 +165,7 @@
md.update(b);
java.security.AccessController.doPrivileged
- (new java.security.PrivilegedAction<Void>() {
+ (new java.security.PrivilegedAction<>() {
@Override
public Void run() {
try {
@@ -295,7 +295,7 @@
final ThreadGroup[] finalsg = new ThreadGroup[1];
Thread t = java.security.AccessController.doPrivileged
- (new java.security.PrivilegedAction<Thread>() {
+ (new java.security.PrivilegedAction<>() {
@Override
public Thread run() {
ThreadGroup parent, group =
@@ -501,7 +501,7 @@
final URL device = new URL(deviceName);
try {
seedStream = java.security.AccessController.doPrivileged
- (new java.security.PrivilegedExceptionAction<InputStream>() {
+ (new java.security.PrivilegedExceptionAction<>() {
@Override
public InputStream run() throws IOException {
/*
--- a/jdk/src/java.base/share/classes/sun/security/ssl/SunJSSE.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/security/ssl/SunJSSE.java Tue May 05 13:29:12 2015 -0700
@@ -148,7 +148,7 @@
}
private void registerAlgorithms(final boolean isfips) {
- AccessController.doPrivileged(new PrivilegedAction<Object>() {
+ AccessController.doPrivileged(new PrivilegedAction<>() {
@Override
public Object run() {
doRegister(isfips);
--- a/jdk/src/java.base/share/classes/sun/security/util/DerInputStream.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/security/util/DerInputStream.java Tue May 05 13:29:12 2015 -0700
@@ -394,7 +394,7 @@
/*
* Pull values out of the stream.
*/
- Vector<DerValue> vec = new Vector<DerValue>(startLen);
+ Vector<DerValue> vec = new Vector<>(startLen);
DerValue value;
do {
--- a/jdk/src/java.base/share/classes/sun/security/util/ManifestDigester.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/security/util/ManifestDigester.java Tue May 05 13:29:12 2015 -0700
@@ -110,7 +110,7 @@
public ManifestDigester(byte bytes[])
{
rawBytes = bytes;
- entries = new HashMap<String, Entry>();
+ entries = new HashMap<>();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
--- a/jdk/src/java.base/share/classes/sun/security/util/ManifestEntryVerifier.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/security/util/ManifestEntryVerifier.java Tue May 05 13:29:12 2015 -0700
@@ -77,9 +77,9 @@
*/
public ManifestEntryVerifier(Manifest man)
{
- createdDigests = new HashMap<String, MessageDigest>(11);
- digests = new ArrayList<MessageDigest>();
- manifestHashes = new ArrayList<byte[]>();
+ createdDigests = new HashMap<>(11);
+ digests = new ArrayList<>();
+ manifestHashes = new ArrayList<>();
this.man = man;
}
--- a/jdk/src/java.base/share/classes/sun/security/util/SignatureFileVerifier.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/security/util/SignatureFileVerifier.java Tue May 05 13:29:12 2015 -0700
@@ -203,7 +203,7 @@
private MessageDigest getDigest(String algorithm)
{
if (createdDigests == null)
- createdDigests = new HashMap<String, MessageDigest>();
+ createdDigests = new HashMap<>();
MessageDigest digest = createdDigests.get(algorithm);
@@ -523,7 +523,7 @@
ArrayList<X509Certificate> chain = info.getCertificateChain(block);
CertPath certChain = certificateFactory.generateCertPath(chain);
if (signers == null) {
- signers = new ArrayList<CodeSigner>();
+ signers = new ArrayList<>();
}
// Append the new code signer
signers.add(new CodeSigner(certChain, info.getTimestamp()));
--- a/jdk/src/java.base/share/classes/sun/security/x509/AVA.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/security/x509/AVA.java Tue May 05 13:29:12 2015 -0700
@@ -307,7 +307,7 @@
// doublequote.
int c = readChar(in, "Quoted string did not end in quote");
- List<Byte> embeddedHex = new ArrayList<Byte>();
+ List<Byte> embeddedHex = new ArrayList<>();
boolean isPrintableString = true;
while (c != '"') {
if (c == '\\') {
--- a/jdk/src/java.base/share/classes/sun/security/x509/AlgorithmId.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/security/x509/AlgorithmId.java Tue May 05 13:29:12 2015 -0700
@@ -571,7 +571,7 @@
break;
}
if (oidTable == null) {
- oidTable = new HashMap<String,ObjectIdentifier>();
+ oidTable = new HashMap<>();
}
oidString = alias.substring(index);
String stdAlgName = provs[i].getProperty(alias);
@@ -588,7 +588,7 @@
}
if (oidTable == null) {
- oidTable = new HashMap<String,ObjectIdentifier>(1);
+ oidTable = new HashMap<>(1);
}
initOidTable = true;
}
@@ -887,7 +887,7 @@
*/
sha1WithDSA_oid = ObjectIdentifier.newInternal(dsaWithSHA1_PKIX_data);
- nameTable = new HashMap<ObjectIdentifier,String>();
+ nameTable = new HashMap<>();
nameTable.put(MD5_oid, "MD5");
nameTable.put(MD2_oid, "MD2");
nameTable.put(SHA_oid, "SHA-1");
--- a/jdk/src/java.base/share/classes/sun/security/x509/CertificatePolicySet.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/security/x509/CertificatePolicySet.java Tue May 05 13:29:12 2015 -0700
@@ -58,7 +58,7 @@
* @exception IOException on decoding errors.
*/
public CertificatePolicySet(DerInputStream in) throws IOException {
- ids = new Vector<CertificatePolicyId>();
+ ids = new Vector<>();
DerValue[] seq = in.getSequence(5);
for (int i = 0; i < seq.length; i++) {
--- a/jdk/src/java.base/share/classes/sun/security/x509/GeneralSubtrees.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/security/x509/GeneralSubtrees.java Tue May 05 13:29:12 2015 -0700
@@ -59,11 +59,11 @@
* The default constructor for the class.
*/
public GeneralSubtrees() {
- trees = new ArrayList<GeneralSubtree>();
+ trees = new ArrayList<>();
}
private GeneralSubtrees(GeneralSubtrees source) {
- trees = new ArrayList<GeneralSubtree>(source.trees);
+ trees = new ArrayList<>(source.trees);
}
/**
--- a/jdk/src/java.base/share/classes/sun/security/x509/RDN.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/security/x509/RDN.java Tue May 05 13:29:12 2015 -0700
@@ -102,7 +102,7 @@
int quoteCount = 0;
int searchOffset = 0;
int avaOffset = 0;
- List<AVA> avaVec = new ArrayList<AVA>(3);
+ List<AVA> avaVec = new ArrayList<>(3);
int nextPlus = name.indexOf('+');
while (nextPlus >= 0) {
quoteCount += X500Name.countQuotes(name, searchOffset, nextPlus);
@@ -182,7 +182,7 @@
}
int searchOffset = 0;
int avaOffset = 0;
- List<AVA> avaVec = new ArrayList<AVA>(3);
+ List<AVA> avaVec = new ArrayList<>(3);
int nextPlus = name.indexOf('+');
while (nextPlus >= 0) {
/*
@@ -453,7 +453,7 @@
} else {
// order the string type AVA's alphabetically,
// followed by the oid type AVA's numerically
- List<AVA> avaList = new ArrayList<AVA>(assertion.length);
+ List<AVA> avaList = new ArrayList<>(assertion.length);
for (int i = 0; i < assertion.length; i++) {
avaList.add(assertion[i]);
}
--- a/jdk/src/java.base/share/classes/sun/security/x509/X500Name.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/security/x509/X500Name.java Tue May 05 13:29:12 2015 -0700
@@ -342,7 +342,7 @@
public List<AVA> allAvas() {
List<AVA> list = allAvaList;
if (list == null) {
- list = new ArrayList<AVA>();
+ list = new ArrayList<>();
for (int i = 0; i < names.length; i++) {
list.addAll(names[i].avas());
}
@@ -1382,7 +1382,7 @@
*/
static {
PrivilegedExceptionAction<Object[]> pa =
- new PrivilegedExceptionAction<Object[]>() {
+ new PrivilegedExceptionAction<>() {
public Object[] run() throws Exception {
Class<X500Principal> pClass = X500Principal.class;
Class<?>[] args = new Class<?>[] { X500Name.class };
--- a/jdk/src/java.base/share/classes/sun/util/locale/provider/AuxLocaleProviderAdapter.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/util/locale/provider/AuxLocaleProviderAdapter.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,8 @@
package sun.util.locale.provider;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import java.text.spi.BreakIteratorProvider;
import java.text.spi.CollatorProvider;
import java.text.spi.DateFormatProvider;
@@ -177,7 +179,9 @@
* A dummy locale service provider that indicates there is no
* provider available
*/
- private static final NullProvider NULL_PROVIDER = new NullProvider();
+ private static final NullProvider NULL_PROVIDER = AccessController.doPrivileged(
+ (PrivilegedAction<NullProvider>) () -> new NullProvider());
+
private static class NullProvider extends LocaleServiceProvider {
@Override
public Locale[] getAvailableLocales() {
--- a/jdk/src/java.base/share/classes/sun/util/locale/provider/JRELocaleProviderAdapter.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/util/locale/provider/JRELocaleProviderAdapter.java Tue May 05 13:29:12 2015 -0700
@@ -26,7 +26,7 @@
package sun.util.locale.provider;
import java.security.AccessController;
-import java.security.PrivilegedActionException;
+import java.security.PrivilegedAction;
import java.security.PrivilegedExceptionAction;
import java.text.spi.BreakIteratorProvider;
import java.text.spi.CollatorProvider;
@@ -133,8 +133,12 @@
@Override
public BreakIteratorProvider getBreakIteratorProvider() {
if (breakIteratorProvider == null) {
- BreakIteratorProvider provider = new BreakIteratorProviderImpl(getAdapterType(),
- getLanguageTagSet("FormatData"));
+ BreakIteratorProvider provider = AccessController.doPrivileged(
+ (PrivilegedAction<BreakIteratorProvider>) () ->
+ new BreakIteratorProviderImpl(
+ getAdapterType(),
+ getLanguageTagSet("FormatData")));
+
synchronized (this) {
if (breakIteratorProvider == null) {
breakIteratorProvider = provider;
@@ -147,8 +151,12 @@
@Override
public CollatorProvider getCollatorProvider() {
if (collatorProvider == null) {
- CollatorProvider provider = new CollatorProviderImpl(getAdapterType(),
- getLanguageTagSet("CollationData"));
+ CollatorProvider provider = AccessController.doPrivileged(
+ (PrivilegedAction<CollatorProvider>) () ->
+ new CollatorProviderImpl(
+ getAdapterType(),
+ getLanguageTagSet("CollationData")));
+
synchronized (this) {
if (collatorProvider == null) {
collatorProvider = provider;
@@ -161,8 +169,12 @@
@Override
public DateFormatProvider getDateFormatProvider() {
if (dateFormatProvider == null) {
- DateFormatProvider provider = new DateFormatProviderImpl(getAdapterType(),
- getLanguageTagSet("FormatData"));
+ DateFormatProvider provider = AccessController.doPrivileged(
+ (PrivilegedAction<DateFormatProvider>) () ->
+ new DateFormatProviderImpl(
+ getAdapterType(),
+ getLanguageTagSet("FormatData")));
+
synchronized (this) {
if (dateFormatProvider == null) {
dateFormatProvider = provider;
@@ -175,8 +187,12 @@
@Override
public DateFormatSymbolsProvider getDateFormatSymbolsProvider() {
if (dateFormatSymbolsProvider == null) {
- DateFormatSymbolsProvider provider = new DateFormatSymbolsProviderImpl(getAdapterType(),
- getLanguageTagSet("FormatData"));
+ DateFormatSymbolsProvider provider = AccessController.doPrivileged(
+ (PrivilegedAction<DateFormatSymbolsProvider>) () ->
+ new DateFormatSymbolsProviderImpl(
+ getAdapterType(),
+ getLanguageTagSet("FormatData")));
+
synchronized (this) {
if (dateFormatSymbolsProvider == null) {
dateFormatSymbolsProvider = provider;
@@ -189,7 +205,12 @@
@Override
public DecimalFormatSymbolsProvider getDecimalFormatSymbolsProvider() {
if (decimalFormatSymbolsProvider == null) {
- DecimalFormatSymbolsProvider provider = new DecimalFormatSymbolsProviderImpl(getAdapterType(), getLanguageTagSet("FormatData"));
+ DecimalFormatSymbolsProvider provider = AccessController.doPrivileged(
+ (PrivilegedAction<DecimalFormatSymbolsProvider>) () ->
+ new DecimalFormatSymbolsProviderImpl(
+ getAdapterType(),
+ getLanguageTagSet("FormatData")));
+
synchronized (this) {
if (decimalFormatSymbolsProvider == null) {
decimalFormatSymbolsProvider = provider;
@@ -202,8 +223,12 @@
@Override
public NumberFormatProvider getNumberFormatProvider() {
if (numberFormatProvider == null) {
- NumberFormatProvider provider = new NumberFormatProviderImpl(getAdapterType(),
- getLanguageTagSet("FormatData"));
+ NumberFormatProvider provider = AccessController.doPrivileged(
+ (PrivilegedAction<NumberFormatProvider>) () ->
+ new NumberFormatProviderImpl(
+ getAdapterType(),
+ getLanguageTagSet("FormatData")));
+
synchronized (this) {
if (numberFormatProvider == null) {
numberFormatProvider = provider;
@@ -219,8 +244,12 @@
@Override
public CurrencyNameProvider getCurrencyNameProvider() {
if (currencyNameProvider == null) {
- CurrencyNameProvider provider = new CurrencyNameProviderImpl(getAdapterType(),
- getLanguageTagSet("CurrencyNames"));
+ CurrencyNameProvider provider = AccessController.doPrivileged(
+ (PrivilegedAction<CurrencyNameProvider>) () ->
+ new CurrencyNameProviderImpl(
+ getAdapterType(),
+ getLanguageTagSet("CurrencyNames")));
+
synchronized (this) {
if (currencyNameProvider == null) {
currencyNameProvider = provider;
@@ -233,8 +262,12 @@
@Override
public LocaleNameProvider getLocaleNameProvider() {
if (localeNameProvider == null) {
- LocaleNameProvider provider = new LocaleNameProviderImpl(getAdapterType(),
- getLanguageTagSet("LocaleNames"));
+ LocaleNameProvider provider = AccessController.doPrivileged(
+ (PrivilegedAction<LocaleNameProvider>) () ->
+ new LocaleNameProviderImpl(
+ getAdapterType(),
+ getLanguageTagSet("LocaleNames")));
+
synchronized (this) {
if (localeNameProvider == null) {
localeNameProvider = provider;
@@ -247,8 +280,12 @@
@Override
public TimeZoneNameProvider getTimeZoneNameProvider() {
if (timeZoneNameProvider == null) {
- TimeZoneNameProvider provider = new TimeZoneNameProviderImpl(getAdapterType(),
- getLanguageTagSet("TimeZoneNames"));
+ TimeZoneNameProvider provider = AccessController.doPrivileged(
+ (PrivilegedAction<TimeZoneNameProvider>) () ->
+ new TimeZoneNameProviderImpl(
+ getAdapterType(),
+ getLanguageTagSet("TimeZoneNames")));
+
synchronized (this) {
if (timeZoneNameProvider == null) {
timeZoneNameProvider = provider;
@@ -261,9 +298,12 @@
@Override
public CalendarDataProvider getCalendarDataProvider() {
if (calendarDataProvider == null) {
- CalendarDataProvider provider;
- provider = new CalendarDataProviderImpl(getAdapterType(),
- getLanguageTagSet("CalendarData"));
+ CalendarDataProvider provider = AccessController.doPrivileged(
+ (PrivilegedAction<CalendarDataProvider>) () ->
+ new CalendarDataProviderImpl(
+ getAdapterType(),
+ getLanguageTagSet("CalendarData")));
+
synchronized (this) {
if (calendarDataProvider == null) {
calendarDataProvider = provider;
@@ -276,9 +316,12 @@
@Override
public CalendarNameProvider getCalendarNameProvider() {
if (calendarNameProvider == null) {
- CalendarNameProvider provider;
- provider = new CalendarNameProviderImpl(getAdapterType(),
- getLanguageTagSet("FormatData"));
+ CalendarNameProvider provider = AccessController.doPrivileged(
+ (PrivilegedAction<CalendarNameProvider>) () ->
+ new CalendarNameProviderImpl(
+ getAdapterType(),
+ getLanguageTagSet("FormatData")));
+
synchronized (this) {
if (calendarNameProvider == null) {
calendarNameProvider = provider;
@@ -294,8 +337,12 @@
@Override
public CalendarProvider getCalendarProvider() {
if (calendarProvider == null) {
- CalendarProvider provider = new CalendarProviderImpl(getAdapterType(),
- getLanguageTagSet("CalendarData"));
+ CalendarProvider provider = AccessController.doPrivileged(
+ (PrivilegedAction<CalendarProvider>) () ->
+ new CalendarProviderImpl(
+ getAdapterType(),
+ getLanguageTagSet("CalendarData")));
+
synchronized (this) {
if (calendarProvider == null) {
calendarProvider = provider;
@@ -319,6 +366,7 @@
}
// ResourceBundleBasedAdapter method implementation
+
@Override
public LocaleData getLocaleData() {
if (localeData == null) {
@@ -449,4 +497,4 @@
}
return locales;
}
- }
+}
--- a/jdk/src/java.base/unix/classes/sun/security/provider/NativePRNG.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.base/unix/classes/sun/security/provider/NativePRNG.java Tue May 05 13:29:12 2015 -0700
@@ -125,7 +125,7 @@
*/
private static RandomIO initIO(final Variant v) {
return AccessController.doPrivileged(
- new PrivilegedAction<RandomIO>() {
+ new PrivilegedAction<>() {
@Override
public RandomIO run() {
@@ -440,7 +440,7 @@
if (seedOutInitialized == false) {
seedOutInitialized = true;
seedOut = AccessController.doPrivileged(
- new PrivilegedAction<OutputStream>() {
+ new PrivilegedAction<>() {
@Override
public OutputStream run() {
try {
--- a/jdk/src/java.management/share/classes/com/sun/management/DiagnosticCommandMBean.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.management/share/classes/com/sun/management/DiagnosticCommandMBean.java Tue May 05 13:29:12 2015 -0700
@@ -93,7 +93,7 @@
* returns the diagnostic command description
* (the same as the one return in the 'help' command)</li>
* <li>{@link javax.management.MBeanOperationInfo#getImpact() getImpact()}
- * returns <code>ACTION_INFO</code></li>
+ * returns {@code ACTION_INFO}</li>
* <li>{@link javax.management.MBeanOperationInfo#getReturnType() getReturnType()}
* returns {@code java.lang.String}</li>
* <li>{@link javax.management.MBeanOperationInfo#getDescriptor() getDescriptor()}
@@ -105,7 +105,6 @@
* meta-data for a JMX element. A field is a name and an associated value.
* The additional meta-data provided for an operation associated with a
* diagnostic command are described in the table below:
- * <p>
*
* <table border="1" cellpadding="5">
* <tr>
@@ -161,7 +160,6 @@
* arguments supported by the diagnostic command (see below)</td>
* </tr>
* </table>
- * <p>
*
* <p>The description of parameters (options or arguments) of a diagnostic
* command is provided within a Descriptor instance. In this Descriptor,
--- a/jdk/src/java.management/share/classes/com/sun/management/GarbageCollectionNotificationInfo.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.management/share/classes/com/sun/management/GarbageCollectionNotificationInfo.java Tue May 05 13:29:12 2015 -0700
@@ -41,14 +41,14 @@
* when the Java virtual machine completes a garbage collection action
* The notification emitted will contain the garbage collection notification
* information about the status of the memory:
- * <u1>
+ * <ul>
* <li>The name of the garbage collector used to perform the collection.</li>
* <li>The action performed by the garbage collector.</li>
* <li>The cause of the garbage collection action.</li>
* <li>A {@link GcInfo} object containing some statistics about the GC cycle
(start time, end time) and the memory usage before and after
the GC cycle.</li>
- * </u1>
+ * </ul>
*
* <p>
* A {@link CompositeData CompositeData} representing
@@ -81,7 +81,7 @@
* <li>A {@linkplain #GARBAGE_COLLECTION_NOTIFICATION garbage collection notification}.
* <br>Used by every notification emitted by the garbage collector, the details about
* the notification are provided in the {@linkplain #getGcAction action} String
- * <p></li>
+ * </li>
* </ul>
**/
--- a/jdk/src/java.management/share/classes/com/sun/management/GcInfo.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.management/share/classes/com/sun/management/GcInfo.java Tue May 05 13:29:12 2015 -0700
@@ -52,13 +52,13 @@
* </blockquote>
*
* <p>
- * <tt>GcInfo</tt> is a {@link CompositeData CompositeData}
+ * {@code GcInfo} is a {@link CompositeData CompositeData}
* The GC-specific attributes can be obtained via the CompositeData
* interface. This is a historical relic, and other classes should
* not copy this pattern. Use {@link CompositeDataView} instead.
*
* <h4>MXBean Mapping</h4>
- * <tt>GcInfo</tt> is mapped to a {@link CompositeData CompositeData}
+ * {@code GcInfo} is mapped to a {@link CompositeData CompositeData}
* with attributes as specified in the {@link #from from} method.
*
* @author Mandy Chung
@@ -152,11 +152,11 @@
* Returns the memory usage of all memory pools
* at the beginning of this GC.
* This method returns
- * a <tt>Map</tt> of the name of a memory pool
+ * a {@code Map} of the name of a memory pool
* to the memory usage of the corresponding
* memory pool before GC starts.
*
- * @return a <tt>Map</tt> of memory pool names to the memory
+ * @return a {@code Map} of memory pool names to the memory
* usage of a memory pool before GC starts.
*/
public Map<String, MemoryUsage> getMemoryUsageBeforeGc() {
@@ -167,11 +167,11 @@
* Returns the memory usage of all memory pools
* at the end of this GC.
* This method returns
- * a <tt>Map</tt> of the name of a memory pool
+ * a {@code Map} of the name of a memory pool
* to the memory usage of the corresponding
* memory pool when GC finishes.
*
- * @return a <tt>Map</tt> of memory pool names to the memory
+ * @return a {@code Map} of memory pool names to the memory
* usage of a memory pool when GC finishes.
*/
public Map<String, MemoryUsage> getMemoryUsageAfterGc() {
@@ -179,12 +179,11 @@
}
/**
- * Returns a <tt>GcInfo</tt> object represented by the
- * given <tt>CompositeData</tt>. The given
- * <tt>CompositeData</tt> must contain
+ * Returns a {@code GcInfo} object represented by the
+ * given {@code CompositeData}. The given
+ * {@code CompositeData} must contain
* all the following attributes:
*
- * <p>
* <blockquote>
* <table border>
* <tr>
@@ -193,33 +192,33 @@
* </tr>
* <tr>
* <td>index</td>
- * <td><tt>java.lang.Long</tt></td>
+ * <td>{@code java.lang.Long}</td>
* </tr>
* <tr>
* <td>startTime</td>
- * <td><tt>java.lang.Long</tt></td>
+ * <td>{@code java.lang.Long}</td>
* </tr>
* <tr>
* <td>endTime</td>
- * <td><tt>java.lang.Long</tt></td>
+ * <td>{@code java.lang.Long}</td>
* </tr>
* <tr>
* <td>memoryUsageBeforeGc</td>
- * <td><tt>javax.management.openmbean.TabularData</tt></td>
+ * <td>{@code javax.management.openmbean.TabularData}</td>
* </tr>
* <tr>
* <td>memoryUsageAfterGc</td>
- * <td><tt>javax.management.openmbean.TabularData</tt></td>
+ * <td>{@code javax.management.openmbean.TabularData}</td>
* </tr>
* </table>
* </blockquote>
*
- * @throws IllegalArgumentException if <tt>cd</tt> does not
- * represent a <tt>GcInfo</tt> object with the attributes
+ * @throws IllegalArgumentException if {@code cd} does not
+ * represent a {@code GcInfo} object with the attributes
* described above.
*
- * @return a <tt>GcInfo</tt> object represented by <tt>cd</tt>
- * if <tt>cd</tt> is not <tt>null</tt>; <tt>null</tt> otherwise.
+ * @return a {@code GcInfo} object represented by {@code cd}
+ * if {@code cd} is not {@code null}; {@code null} otherwise.
*/
public static GcInfo from(CompositeData cd) {
if (cd == null) {
@@ -272,7 +271,7 @@
}
/**
- * <p>Return the {@code CompositeData} representation of this
+ * Return the {@code CompositeData} representation of this
* {@code GcInfo}, including any GC-specific attributes. The
* returned value will have at least all the attributes described
* in the {@link #from(CompositeData) from} method, plus optionally
--- a/jdk/src/java.management/share/classes/com/sun/management/VMOption.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.management/share/classes/com/sun/management/VMOption.java Tue May 05 13:29:12 2015 -0700
@@ -42,10 +42,10 @@
* be set dynamically via a management interface after
* the VM was started.
*
- * A <tt>VMOption</tt> contains the value of a VM option
- * and the origin of that value at the time this <tt>VMOption</tt>
+ * A {@code VMOption} contains the value of a VM option
+ * and the origin of that value at the time this {@code VMOption}
* object was constructed. The value of the VM option
- * may be changed after the <tt>VMOption</tt> object was constructed,
+ * may be changed after the {@code VMOption} object was constructed,
*
* @see <a href="{@docRoot}/../../../../technotes/guides/vm/index.html">
* Java Virtual Machine</a>
@@ -108,15 +108,15 @@
}
/**
- * Constructs a <tt>VMOption</tt>.
+ * Constructs a {@code VMOption}.
*
* @param name Name of a VM option.
* @param value Value of a VM option.
- * @param writeable <tt>true</tt> if a VM option can be set dynamically,
- * or <tt>false</tt> otherwise.
+ * @param writeable {@code true} if a VM option can be set dynamically,
+ * or {@code false} otherwise.
* @param origin where the value of a VM option came from.
*
- * @throws NullPointerException if the name or value is <tt>null</tt>
+ * @throws NullPointerException if the name or value is {@code null}
*/
public VMOption(String name, String value, boolean writeable, Origin origin) {
this.name = name;
@@ -126,7 +126,7 @@
}
/**
- * Constructs a <tt>VMOption</tt> object from a
+ * Constructs a {@code VMOption} object from a
* {@link CompositeData CompositeData}.
*/
private VMOption(CompositeData cd) {
@@ -150,10 +150,10 @@
/**
* Returns the value of this VM option at the time when
- * this <tt>VMOption</tt> was created. The value could have been changed.
+ * this {@code VMOption} was created. The value could have been changed.
*
* @return the value of the VM option at the time when
- * this <tt>VMOption</tt> was created.
+ * this {@code VMOption} was created.
*/
public String getValue() {
return value;
@@ -174,7 +174,7 @@
* it can be set by the {@link HotSpotDiagnosticMXBean#setVMOption
* HotSpotDiagnosticMXBean.setVMOption} method.
*
- * @return <tt>true</tt> if this VM option is writeable; <tt>false</tt>
+ * @return {@code true} if this VM option is writeable; {@code false}
* otherwise.
*/
public boolean isWriteable() {
@@ -189,10 +189,10 @@
}
/**
- * Returns a <tt>VMOption</tt> object represented by the
- * given <tt>CompositeData</tt>. The given <tt>CompositeData</tt>
+ * Returns a {@code VMOption} object represented by the
+ * given {@code CompositeData}. The given {@code CompositeData}
* must contain the following attributes:
- * <p>
+ *
* <blockquote>
* <table border>
* <tr>
@@ -201,32 +201,32 @@
* </tr>
* <tr>
* <td>name</td>
- * <td><tt>java.lang.String</tt></td>
+ * <td>{@code java.lang.String}</td>
* </tr>
* <tr>
* <td>value</td>
- * <td><tt>java.lang.String</tt></td>
+ * <td>{@code java.lang.String}</td>
* </tr>
* <tr>
* <td>origin</td>
- * <td><tt>java.lang.String</tt></td>
+ * <td>{@code java.lang.String}</td>
* </tr>
* <tr>
* <td>writeable</td>
- * <td><tt>java.lang.Boolean</tt></td>
+ * <td>{@code java.lang.Boolean}</td>
* </tr>
* </table>
* </blockquote>
*
- * @param cd <tt>CompositeData</tt> representing a <tt>VMOption</tt>
+ * @param cd {@code CompositeData} representing a {@code VMOption}
*
- * @throws IllegalArgumentException if <tt>cd</tt> does not
- * represent a <tt>VMOption</tt> with the attributes described
+ * @throws IllegalArgumentException if {@code cd} does not
+ * represent a {@code VMOption} with the attributes described
* above.
*
- * @return a <tt>VMOption</tt> object represented by <tt>cd</tt>
- * if <tt>cd</tt> is not <tt>null</tt>;
- * <tt>null</tt> otherwise.
+ * @return a {@code VMOption} object represented by {@code cd}
+ * if {@code cd} is not {@code null};
+ * {@code null} otherwise.
*/
public static VMOption from(CompositeData cd) {
if (cd == null) {
--- a/jdk/src/java.prefs/share/classes/java/util/prefs/AbstractPreferences.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.prefs/share/classes/java/util/prefs/AbstractPreferences.java Tue May 05 13:29:12 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -78,10 +78,9 @@
* under which these calls cannot even enqueue the requested operation for
* later processing. Even under these circumstances it is generally better to
* simply ignore the invocation and return, rather than throwing an
- * exception. Under these circumstances, however, all subsequent invocations
- * of <tt>flush()</tt> and <tt>sync</tt> should return <tt>false</tt>, as
- * returning <tt>true</tt> would imply that all previous operations had
- * successfully been made permanent.
+ * exception. Under these circumstances, however, subsequently invoking
+ * <tt>flush()</tt> or <tt>sync</tt> would not imply that all previous
+ * operations had successfully been made permanent.
*
* <p>There is one circumstance under which <tt>putSpi, removeSpi and
* childSpi</tt> <i>should</i> throw an exception: if the caller lacks
@@ -123,6 +122,13 @@
*/
public abstract class AbstractPreferences extends Preferences {
/**
+ * The code point U+0000, assigned to the null control character, is the
+ * only character encoded in Unicode and ISO/IEC 10646 that is always
+ * invalid in any XML 1.0 and 1.1 document.
+ */
+ static final int CODE_POINT_U0000 = '\u0000';
+
+ /**
* Our name relative to parent.
*/
private final String name;
@@ -234,6 +240,8 @@
* @throws IllegalArgumentException if <tt>key.length()</tt> exceeds
* <tt>MAX_KEY_LENGTH</tt> or if <tt>value.length</tt> exceeds
* <tt>MAX_VALUE_LENGTH</tt>.
+ * @throws IllegalArgumentException if either key or value contain
+ * the null control character, code point U+0000.
* @throws IllegalStateException if this node (or an ancestor) has been
* removed with the {@link #removeNode()} method.
*/
@@ -244,6 +252,10 @@
throw new IllegalArgumentException("Key too long: "+key);
if (value.length() > MAX_VALUE_LENGTH)
throw new IllegalArgumentException("Value too long: "+value);
+ if (key.indexOf(CODE_POINT_U0000) != -1)
+ throw new IllegalArgumentException("Key contains code point U+0000");
+ if (value.indexOf(CODE_POINT_U0000) != -1)
+ throw new IllegalArgumentException("Value contains code point U+0000");
synchronized(lock) {
if (removed)
@@ -275,10 +287,14 @@
* removed with the {@link #removeNode()} method.
* @throws NullPointerException if key is <tt>null</tt>. (A
* <tt>null</tt> default <i>is</i> permitted.)
+ * @throws IllegalArgumentException if key contains the null control
+ * character, code point U+0000.
*/
public String get(String key, String def) {
if (key==null)
throw new NullPointerException("Null key");
+ if (key.indexOf(CODE_POINT_U0000) != -1)
+ throw new IllegalArgumentException("Key contains code point U+0000");
synchronized(lock) {
if (removed)
throw new IllegalStateException("Node has been removed.");
@@ -306,10 +322,14 @@
* @param key key whose mapping is to be removed from the preference node.
* @throws IllegalStateException if this node (or an ancestor) has been
* removed with the {@link #removeNode()} method.
+ * @throws IllegalArgumentException if key contains the null control
+ * character, code point U+0000.
* @throws NullPointerException {@inheritDoc}.
*/
public void remove(String key) {
Objects.requireNonNull(key, "Specified key cannot be null");
+ if (key.indexOf(CODE_POINT_U0000) != -1)
+ throw new IllegalArgumentException("Key contains code point U+0000");
synchronized(lock) {
if (removed)
throw new IllegalStateException("Node has been removed.");
@@ -353,6 +373,8 @@
* @throws NullPointerException if key is <tt>null</tt>.
* @throws IllegalArgumentException if <tt>key.length()</tt> exceeds
* <tt>MAX_KEY_LENGTH</tt>.
+ * @throws IllegalArgumentException if key contains
+ * the null control character, code point U+0000.
* @throws IllegalStateException if this node (or an ancestor) has been
* removed with the {@link #removeNode()} method.
*/
@@ -381,6 +403,8 @@
* @throws IllegalStateException if this node (or an ancestor) has been
* removed with the {@link #removeNode()} method.
* @throws NullPointerException if <tt>key</tt> is <tt>null</tt>.
+ * @throws IllegalArgumentException if key contains the null control
+ * character, code point U+0000.
*/
public int getInt(String key, int def) {
int result = def;
@@ -408,6 +432,8 @@
* @throws NullPointerException if key is <tt>null</tt>.
* @throws IllegalArgumentException if <tt>key.length()</tt> exceeds
* <tt>MAX_KEY_LENGTH</tt>.
+ * @throws IllegalArgumentException if key contains
+ * the null control character, code point U+0000.
* @throws IllegalStateException if this node (or an ancestor) has been
* removed with the {@link #removeNode()} method.
*/
@@ -436,6 +462,8 @@
* @throws IllegalStateException if this node (or an ancestor) has been
* removed with the {@link #removeNode()} method.
* @throws NullPointerException if <tt>key</tt> is <tt>null</tt>.
+ * @throws IllegalArgumentException if key contains the null control
+ * character, code point U+0000.
*/
public long getLong(String key, long def) {
long result = def;
@@ -463,6 +491,8 @@
* @throws NullPointerException if key is <tt>null</tt>.
* @throws IllegalArgumentException if <tt>key.length()</tt> exceeds
* <tt>MAX_KEY_LENGTH</tt>.
+ * @throws IllegalArgumentException if key contains
+ * the null control character, code point U+0000.
* @throws IllegalStateException if this node (or an ancestor) has been
* removed with the {@link #removeNode()} method.
*/
@@ -494,6 +524,8 @@
* @throws IllegalStateException if this node (or an ancestor) has been
* removed with the {@link #removeNode()} method.
* @throws NullPointerException if <tt>key</tt> is <tt>null</tt>.
+ * @throws IllegalArgumentException if key contains the null control
+ * character, code point U+0000.
*/
public boolean getBoolean(String key, boolean def) {
boolean result = def;
@@ -521,6 +553,8 @@
* @throws NullPointerException if key is <tt>null</tt>.
* @throws IllegalArgumentException if <tt>key.length()</tt> exceeds
* <tt>MAX_KEY_LENGTH</tt>.
+ * @throws IllegalArgumentException if key contains
+ * the null control character, code point U+0000.
* @throws IllegalStateException if this node (or an ancestor) has been
* removed with the {@link #removeNode()} method.
*/
@@ -549,6 +583,8 @@
* @throws IllegalStateException if this node (or an ancestor) has been
* removed with the {@link #removeNode()} method.
* @throws NullPointerException if <tt>key</tt> is <tt>null</tt>.
+ * @throws IllegalArgumentException if key contains the null control
+ * character, code point U+0000.
*/
public float getFloat(String key, float def) {
float result = def;
@@ -576,6 +612,8 @@
* @throws NullPointerException if key is <tt>null</tt>.
* @throws IllegalArgumentException if <tt>key.length()</tt> exceeds
* <tt>MAX_KEY_LENGTH</tt>.
+ * @throws IllegalArgumentException if key contains
+ * the null control character, code point U+0000.
* @throws IllegalStateException if this node (or an ancestor) has been
* removed with the {@link #removeNode()} method.
*/
@@ -604,6 +642,8 @@
* @throws IllegalStateException if this node (or an ancestor) has been
* removed with the {@link #removeNode()} method.
* @throws NullPointerException if <tt>key</tt> is <tt>null</tt>.
+ * @throws IllegalArgumentException if key contains the null control
+ * character, code point U+0000.
*/
public double getDouble(String key, double def) {
double result = def;
@@ -627,6 +667,8 @@
* @throws NullPointerException if key or value is <tt>null</tt>.
* @throws IllegalArgumentException if key.length() exceeds MAX_KEY_LENGTH
* or if value.length exceeds MAX_VALUE_LENGTH*3/4.
+ * @throws IllegalArgumentException if key contains
+ * the null control character, code point U+0000.
* @throws IllegalStateException if this node (or an ancestor) has been
* removed with the {@link #removeNode()} method.
*/
@@ -650,6 +692,8 @@
* removed with the {@link #removeNode()} method.
* @throws NullPointerException if <tt>key</tt> is <tt>null</tt>. (A
* <tt>null</tt> value for <tt>def</tt> <i>is</i> permitted.)
+ * @throws IllegalArgumentException if key contains the null control
+ * character, code point U+0000.
*/
public byte[] getByteArray(String key, byte[] def) {
byte[] result = def;
--- a/jdk/src/java.prefs/share/classes/java/util/prefs/Preferences.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.prefs/share/classes/java/util/prefs/Preferences.java Tue May 05 13:29:12 2015 -0700
@@ -489,7 +489,7 @@
* <tt>MAX_VALUE_LENGTH</tt>.
* @throws IllegalStateException if this node (or an ancestor) has been
* removed with the {@link #removeNode()} method.
- * @throws IllegalArgumentException if either the key or the value contain
+ * @throws IllegalArgumentException if either key or value contain
* the null control character, code point U+0000.
*/
public abstract void put(String key, String value);
@@ -514,6 +514,8 @@
* removed with the {@link #removeNode()} method.
* @throws NullPointerException if <tt>key</tt> is <tt>null</tt>. (A
* <tt>null</tt> value for <tt>def</tt> <i>is</i> permitted.)
+ * @throws IllegalArgumentException if key contains the null control
+ * character, code point U+0000.
*/
public abstract String get(String key, String def);
@@ -530,6 +532,8 @@
* @throws NullPointerException if <tt>key</tt> is <tt>null</tt>.
* @throws IllegalStateException if this node (or an ancestor) has been
* removed with the {@link #removeNode()} method.
+ * @throws IllegalArgumentException if key contains the null control
+ * character, code point U+0000.
*/
public abstract void remove(String key);
@@ -566,6 +570,8 @@
* <tt>MAX_KEY_LENGTH</tt>.
* @throws IllegalStateException if this node (or an ancestor) has been
* removed with the {@link #removeNode()} method.
+ * @throws IllegalArgumentException if key contains
+ * the null control character, code point U+0000.
* @see #getInt(String,int)
*/
public abstract void putInt(String key, int value);
@@ -597,6 +603,8 @@
* @throws IllegalStateException if this node (or an ancestor) has been
* removed with the {@link #removeNode()} method.
* @throws NullPointerException if <tt>key</tt> is <tt>null</tt>.
+ * @throws IllegalArgumentException if key contains the null control
+ * character, code point U+0000.
* @see #putInt(String,int)
* @see #get(String,String)
*/
@@ -616,6 +624,8 @@
* <tt>MAX_KEY_LENGTH</tt>.
* @throws IllegalStateException if this node (or an ancestor) has been
* removed with the {@link #removeNode()} method.
+ * @throws IllegalArgumentException if key contains
+ * the null control character, code point U+0000.
* @see #getLong(String,long)
*/
public abstract void putLong(String key, long value);
@@ -647,6 +657,8 @@
* @throws IllegalStateException if this node (or an ancestor) has been
* removed with the {@link #removeNode()} method.
* @throws NullPointerException if <tt>key</tt> is <tt>null</tt>.
+ * @throws IllegalArgumentException if key contains the null control
+ * character, code point U+0000.
* @see #putLong(String,long)
* @see #get(String,String)
*/
@@ -666,6 +678,8 @@
* <tt>MAX_KEY_LENGTH</tt>.
* @throws IllegalStateException if this node (or an ancestor) has been
* removed with the {@link #removeNode()} method.
+ * @throws IllegalArgumentException if key contains
+ * the null control character, code point U+0000.
* @see #getBoolean(String,boolean)
* @see #get(String,String)
*/
@@ -702,6 +716,8 @@
* @throws IllegalStateException if this node (or an ancestor) has been
* removed with the {@link #removeNode()} method.
* @throws NullPointerException if <tt>key</tt> is <tt>null</tt>.
+ * @throws IllegalArgumentException if key contains the null control
+ * character, code point U+0000.
* @see #get(String,String)
* @see #putBoolean(String,boolean)
*/
@@ -721,6 +737,8 @@
* <tt>MAX_KEY_LENGTH</tt>.
* @throws IllegalStateException if this node (or an ancestor) has been
* removed with the {@link #removeNode()} method.
+ * @throws IllegalArgumentException if key contains
+ * the null control character, code point U+0000.
* @see #getFloat(String,float)
*/
public abstract void putFloat(String key, float value);
@@ -751,6 +769,8 @@
* @throws IllegalStateException if this node (or an ancestor) has been
* removed with the {@link #removeNode()} method.
* @throws NullPointerException if <tt>key</tt> is <tt>null</tt>.
+ * @throws IllegalArgumentException if key contains the null control
+ * character, code point U+0000.
* @see #putFloat(String,float)
* @see #get(String,String)
*/
@@ -770,6 +790,8 @@
* <tt>MAX_KEY_LENGTH</tt>.
* @throws IllegalStateException if this node (or an ancestor) has been
* removed with the {@link #removeNode()} method.
+ * @throws IllegalArgumentException if key contains
+ * the null control character, code point U+0000.
* @see #getDouble(String,double)
*/
public abstract void putDouble(String key, double value);
@@ -800,6 +822,8 @@
* @throws IllegalStateException if this node (or an ancestor) has been
* removed with the {@link #removeNode()} method.
* @throws NullPointerException if <tt>key</tt> is <tt>null</tt>.
+ * @throws IllegalArgumentException if key contains the null control
+ * character, code point U+0000.
* @see #putDouble(String,double)
* @see #get(String,String)
*/
@@ -825,6 +849,8 @@
* or if value.length exceeds MAX_VALUE_LENGTH*3/4.
* @throws IllegalStateException if this node (or an ancestor) has been
* removed with the {@link #removeNode()} method.
+ * @throws IllegalArgumentException if key contains
+ * the null control character, code point U+0000.
* @see #getByteArray(String,byte[])
* @see #get(String,String)
*/
@@ -864,6 +890,8 @@
* removed with the {@link #removeNode()} method.
* @throws NullPointerException if <tt>key</tt> is <tt>null</tt>. (A
* <tt>null</tt> value for <tt>def</tt> <i>is</i> permitted.)
+ * @throws IllegalArgumentException if key contains the null control
+ * character, code point U+0000.
* @see #get(String,String)
* @see #putByteArray(String,byte[])
*/
--- a/jdk/src/java.prefs/unix/classes/java/util/prefs/FileSystemPreferences.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.prefs/unix/classes/java/util/prefs/FileSystemPreferences.java Tue May 05 13:29:12 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -49,13 +49,6 @@
*/
class FileSystemPreferences extends AbstractPreferences {
- /**
- * The code point U+0000, assigned to the null control character, is the
- * only character encoded in Unicode and ISO/IEC 10646 that is always
- * invalid in any XML 1.0 and 1.1 document.
- */
- private static final String CODE_POINT_U0000 = String.valueOf('\u0000');
-
static {
PrivilegedAction<Void> load = () -> {
System.loadLibrary("prefs");
@@ -532,11 +525,6 @@
}
protected void putSpi(String key, String value) {
- if (key.indexOf(CODE_POINT_U0000) != -1) {
- throw new IllegalArgumentException("Key contains code point U+0000");
- } else if (value.indexOf(CODE_POINT_U0000) != -1) {
- throw new IllegalArgumentException("Value contains code point U+0000");
- }
initCacheIfNecessary();
changeLog.add(new Put(key, value));
prefsCache.put(key, value);
--- a/jdk/src/java.prefs/windows/classes/java/util/prefs/WindowsPreferences.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.prefs/windows/classes/java/util/prefs/WindowsPreferences.java Tue May 05 13:29:12 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -25,8 +25,6 @@
package java.util.prefs;
-import java.util.Map;
-import java.util.TreeMap;
import java.util.StringTokenizer;
import java.io.ByteArrayOutputStream;
import java.security.AccessController;
@@ -46,7 +44,7 @@
* @since 1.4
*/
-class WindowsPreferences extends AbstractPreferences{
+class WindowsPreferences extends AbstractPreferences {
static {
PrivilegedAction<Void> load = () -> {
@@ -620,22 +618,22 @@
* @see #getSpi(String)
*/
protected void putSpi(String javaName, String value) {
- int nativeHandle = openKey(KEY_SET_VALUE);
- if (nativeHandle == NULL_NATIVE_HANDLE) {
- isBackingStoreAvailable = false;
- return;
- }
- int result = WindowsRegSetValueEx1(nativeHandle,
- toWindowsName(javaName), toWindowsValueString(value));
- if (result != ERROR_SUCCESS) {
- logger().warning("Could not assign value to key " +
- byteArrayToString(toWindowsName(javaName))+ " at Windows registry node "
- + byteArrayToString(windowsAbsolutePath()) + " at root 0x"
- + Integer.toHexString(rootNativeHandle()) +
- ". Windows RegSetValueEx(...) returned error code " + result + ".");
- isBackingStoreAvailable = false;
+ int nativeHandle = openKey(KEY_SET_VALUE);
+ if (nativeHandle == NULL_NATIVE_HANDLE) {
+ isBackingStoreAvailable = false;
+ return;
}
- closeKey(nativeHandle);
+ int result = WindowsRegSetValueEx1(nativeHandle,
+ toWindowsName(javaName), toWindowsValueString(value));
+ if (result != ERROR_SUCCESS) {
+ logger().warning("Could not assign value to key " +
+ byteArrayToString(toWindowsName(javaName))+ " at Windows registry node "
+ + byteArrayToString(windowsAbsolutePath()) + " at root 0x"
+ + Integer.toHexString(rootNativeHandle()) +
+ ". Windows RegSetValueEx(...) returned error code " + result + ".");
+ isBackingStoreAvailable = false;
+ }
+ closeKey(nativeHandle);
}
/**
@@ -645,18 +643,18 @@
* @see #putSpi(String, String)
*/
protected String getSpi(String javaName) {
- int nativeHandle = openKey(KEY_QUERY_VALUE);
- if (nativeHandle == NULL_NATIVE_HANDLE) {
- return null;
- }
- Object resultObject = WindowsRegQueryValueEx(nativeHandle,
- toWindowsName(javaName));
- if (resultObject == null) {
+ int nativeHandle = openKey(KEY_QUERY_VALUE);
+ if (nativeHandle == NULL_NATIVE_HANDLE) {
+ return null;
+ }
+ Object resultObject = WindowsRegQueryValueEx(nativeHandle,
+ toWindowsName(javaName));
+ if (resultObject == null) {
+ closeKey(nativeHandle);
+ return null;
+ }
closeKey(nativeHandle);
- return null;
- }
- closeKey(nativeHandle);
- return toJavaValueString((byte[]) resultObject);
+ return toJavaValueString((byte[]) resultObject);
}
/**
--- a/jdk/src/java.smartcardio/share/classes/javax/smartcardio/package.html Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/java.smartcardio/share/classes/javax/smartcardio/package.html Tue May 05 13:29:12 2015 -0700
@@ -46,27 +46,23 @@
<a href="CommandAPDU.html">CommandAPDU</a>,
<a href="ResponseAPDU.html">ResponseAPDU</a>
-<p>
<dt>Factory to obtain implementations
<dd>
<a href="TerminalFactory.html">TerminalFactory</a>
-<p>
<dt>Main classes for card and terminal functions
<dd>
-<a href="CardTerminals.html">CardTerminals</a>,
-<a href="CardTerminal.html">CardTerminal</a>,
+<a href="CardTerminals.html">CardTerminals</a>,
+<a href="CardTerminal.html">CardTerminal</a>,
<a href="Card.html">Card</a>,
<a href="CardChannel.html">CardChannel</a>
-<p>
<dt>Supporting permission and exception classes
<dd>
-<a href="CardPermission.html">CardPermission</a>,
-<a href="CardException.html">CardException</a>,
+<a href="CardPermission.html">CardPermission</a>,
+<a href="CardException.html">CardException</a>,
<a href="CardNotPresentException.html">CardNotPresentException</a>
-<p>
<dt>Service provider interface, not accessed directly by applications
<dd>
<a href="TerminalFactorySpi.html">TerminalFactorySpi</a>
@@ -94,7 +90,6 @@
card.disconnect(false);
</pre>
-<P>
@since 1.6
@author Andreas Sterbenz
@author JSR 268 Expert Group
--- a/jdk/src/jdk.attach/share/classes/com/sun/tools/attach/AgentInitializationException.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.attach/share/classes/com/sun/tools/attach/AgentInitializationException.java Tue May 05 13:29:12 2015 -0700
@@ -29,15 +29,15 @@
* The exception thrown when an agent fails to initialize in the target
* Java virtual machine.
*
- * <p> This exception is thrown by {@link
- * com.sun.tools.attach.VirtualMachine#loadAgent VirtualMachine.loadAgent},
+ * <p> This exception is thrown by
+ * {@link com.sun.tools.attach.VirtualMachine#loadAgent VirtualMachine.loadAgent},
* {@link com.sun.tools.attach.VirtualMachine#loadAgentLibrary
- * VirtualMachine.loadAgentLibrary}, {@link
- * com.sun.tools.attach.VirtualMachine#loadAgentPath VirtualMachine.loadAgentPath}
+ * VirtualMachine.loadAgentLibrary},
+ * {@link com.sun.tools.attach.VirtualMachine#loadAgentPath VirtualMachine.loadAgentPath}
* methods if an agent, or agent library, cannot be initialized.
- * When thrown by <tt>VirtualMachine.loadAgentLibrary</tt>, or
- * <tt>VirtualMachine.loadAgentPath</tt> then the exception encapsulates
- * the error returned by the agent's <code>Agent_OnAttach</code> function.
+ * When thrown by {@code VirtualMachine.loadAgentLibrary}, or
+ * {@code VirtualMachine.loadAgentPath} then the exception encapsulates
+ * the error returned by the agent's {@code Agent_OnAttach} function.
* This error code can be obtained by invoking the {@link #returnValue() returnValue} method.
*/
@jdk.Exported
@@ -49,7 +49,7 @@
private int returnValue;
/**
- * Constructs an <code>AgentInitializationException</code> with
+ * Constructs an {@code AgentInitializationException} with
* no detail message.
*/
public AgentInitializationException() {
@@ -58,7 +58,7 @@
}
/**
- * Constructs an <code>AgentInitializationException</code> with
+ * Constructs an {@code AgentInitializationException} with
* the specified detail message.
*
* @param s the detail message.
@@ -69,9 +69,9 @@
}
/**
- * Constructs an <code>AgentInitializationException</code> with
+ * Constructs an {@code AgentInitializationException} with
* the specified detail message and the return value from the
- * execution of the agent's <code>Agent_OnAttach</code> function.
+ * execution of the agent's {@code Agent_OnAttach} function.
*
* @param s the detail message.
* @param returnValue the return value
@@ -83,8 +83,8 @@
/**
* If the exception was created with the return value from the agent
- * <code>Agent_OnAttach</code> function then this returns that value,
- * otherwise returns <code>0</code>. </p>
+ * {@code Agent_OnAttach} function then this returns that value,
+ * otherwise returns {@code 0}.
*
* @return the return value
*/
--- a/jdk/src/jdk.attach/share/classes/com/sun/tools/attach/spi/AttachProvider.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.attach/share/classes/com/sun/tools/attach/spi/AttachProvider.java Tue May 05 13:29:12 2015 -0700
@@ -41,7 +41,7 @@
*
* <p> An attach provider is a concrete subclass of this class that has a
* zero-argument constructor and implements the abstract methods specified
- * below. </p>
+ * below.
*
* <p> An attach provider implementation is typically tied to a Java virtual
* machine implementation, version, or even mode of operation. That is, a specific
@@ -51,7 +51,7 @@
* Sun's <i>HotSpot</i> virtual machine. In general, if an environment
* consists of Java virtual machines of different versions and from different
* vendors then there will be an attach provider implementation for each
- * <i>family</i> of implementations or versions. </p>
+ * <i>family</i> of implementations or versions.
*
* <p> An attach provider is identified by its {@link #name <i>name</i>} and
* {@link #type <i>type</i>}. The <i>name</i> is typically, but not required to
@@ -61,15 +61,15 @@
* implementation that uses the Doors inter-process communication mechanism
* might use the type <i>"doors"</i>. The purpose of the name and type is to
* identify providers in environments where there are multiple providers
- * installed. </p>
+ * installed.
*
* <p> AttachProvider implementations are loaded and instantiated at the first
* invocation of the {@link #providers() providers} method. This method
* attempts to load all provider implementations that are installed on the
- * platform. </p>
+ * platform.
*
* <p> All of the methods in this class are safe for use by multiple
- * concurrent threads. </p>
+ * concurrent threads.
*
* @since 1.6
*/
@@ -81,12 +81,12 @@
private static List<AttachProvider> providers = null;
/**
- * Initializes a new instance of this class. </p>
+ * Initializes a new instance of this class.
*
* @throws SecurityException
* If a security manager has been installed and it denies
* {@link com.sun.tools.attach.AttachPermission AttachPermission}
- * <tt>("createAttachProvider")</tt>
+ * ("{@code createAttachProvider}")
*/
protected AttachProvider() {
SecurityManager sm = System.getSecurityManager();
@@ -95,14 +95,14 @@
}
/**
- * Return this provider's name. </p>
+ * Return this provider's name.
*
* @return The name of this provider
*/
public abstract String name();
/**
- * Return this provider's type. </p>
+ * Return this provider's type.
*
* @return The type of this provider
*/
@@ -113,18 +113,18 @@
*
* <p> A Java virtual machine is identified by an abstract identifier. The
* nature of this identifier is platform dependent but in many cases it will be the
- * string representation of the process identifier (or pid). </p>
+ * string representation of the process identifier (or pid).
*
* <p> This method parses the identifier and maps the identifier to a Java
* virtual machine (in an implementation dependent manner). If the identifier
- * cannot be parsed by the provider then an {@link
- * com.sun.tools.attach.AttachNotSupportedException AttachNotSupportedException}
+ * cannot be parsed by the provider then an
+ * {@link com.sun.tools.attach.AttachNotSupportedException AttachNotSupportedException}
* is thrown. Once parsed this method attempts to attach to the Java virtual machine.
* If the provider detects that the identifier corresponds to a Java virtual machine
* that does not exist, or it corresponds to a Java virtual machine that does not support
* the attach mechanism implemented by this provider, or it detects that the
* Java virtual machine is a version to which this provider cannot attach, then
- * an <code>AttachNotSupportedException</code> is thrown. </p>
+ * an {@code AttachNotSupportedException} is thrown.
*
* @param id
* The abstract identifier that identifies the Java virtual machine.
@@ -134,7 +134,7 @@
* @throws SecurityException
* If a security manager has been installed and it denies
* {@link com.sun.tools.attach.AttachPermission AttachPermission}
- * <tt>("attachVirtualMachine")</tt>, or other permission
+ * ("{@code attachVirtualMachine}"), or other permission
* required by the implementation.
*
* @throws AttachNotSupportedException
@@ -147,7 +147,7 @@
* If some other I/O error occurs
*
* @throws NullPointerException
- * If <code>id</code> is <code>null</code>
+ * If {@code id} is {@code null}
*/
public abstract VirtualMachine attachVirtualMachine(String id)
throws AttachNotSupportedException, IOException;
@@ -155,10 +155,10 @@
/**
* Attaches to a Java virtual machine.
*
- * <p> A Java virtual machine can be described using a {@link
- * com.sun.tools.attach.VirtualMachineDescriptor VirtualMachineDescriptor}.
- * This method invokes the descriptor's {@link
- * com.sun.tools.attach.VirtualMachineDescriptor#provider() provider()} method
+ * <p> A Java virtual machine can be described using a
+ * {@link com.sun.tools.attach.VirtualMachineDescriptor VirtualMachineDescriptor}.
+ * This method invokes the descriptor's
+ * {@link com.sun.tools.attach.VirtualMachineDescriptor#provider() provider()} method
* to check that it is equal to this provider. It then attempts to attach to the
* Java virtual machine.
*
@@ -170,20 +170,20 @@
* @throws SecurityException
* If a security manager has been installed and it denies
* {@link com.sun.tools.attach.AttachPermission AttachPermission}
- * <tt>("attachVirtualMachine")</tt>, or other permission
+ * ("{@code attachVirtualMachine}"), or other permission
* required by the implementation.
*
* @throws AttachNotSupportedException
- * If the descriptor's {@link
- * com.sun.tools.attach.VirtualMachineDescriptor#provider() provider()} method
- * returns a provider that is not this provider, or it does not correspond
- * to a Java virtual machine to which this provider can attach.
+ * If the descriptor's
+ * {@link com.sun.tools.attach.VirtualMachineDescriptor#provider() provider()}
+ * method returns a provider that is not this provider, or it does not
+ * correspond to a Java virtual machine to which this provider can attach.
*
* @throws IOException
* If some other I/O error occurs
*
* @throws NullPointerException
- * If <code>vmd</code> is <code>null</code>
+ * If {@code vmd} is {@code null}
*/
public VirtualMachine attachVirtualMachine(VirtualMachineDescriptor vmd)
throws AttachNotSupportedException, IOException
@@ -197,12 +197,13 @@
/**
* Lists the Java virtual machines known to this provider.
*
- * <p> This method returns a list of {@link
- * com.sun.tools.attach.VirtualMachineDescriptor} elements. Each
- * <code>VirtualMachineDescriptor</code> describes a Java virtual machine
+ * <p> This method returns a list of
+ * {@link com.sun.tools.attach.VirtualMachineDescriptor} elements. Each
+ * {@code VirtualMachineDescriptor} describes a Java virtual machine
* to which this provider can <i>potentially</i> attach. There isn't any
- * guarantee that invoking {@link #attachVirtualMachine(VirtualMachineDescriptor)
- * attachVirtualMachine} on each descriptor in the list will succeed.
+ * guarantee that invoking
+ * {@link #attachVirtualMachine(VirtualMachineDescriptor) attachVirtualMachine}
+ * on each descriptor in the list will succeed.
*
* @return The list of virtual machine descriptors which describe the
* Java virtual machines known to this provider (may be empty).
@@ -216,31 +217,31 @@
* <p> An AttachProvider is installed on the platform if:
*
* <ul>
- * <li><p>It is installed in a JAR file that is visible to the defining
+ * <li>It is installed in a JAR file that is visible to the defining
* class loader of the AttachProvider type (usually, but not required
* to be, the {@link java.lang.ClassLoader#getSystemClassLoader system
- * class loader}).</p></li>
+ * class loader}).</li>
*
- * <li><p>The JAR file contains a provider configuration named
- * <tt>com.sun.tools.attach.spi.AttachProvider</tt> in the resource directory
- * <tt>META-INF/services</tt>. </p></li>
+ * <li>The JAR file contains a provider configuration named
+ * {@code com.sun.tools.attach.spi.AttachProvider} in the resource directory
+ * {@code META-INF/services}.</li>
*
- * <li><p>The provider configuration file lists the full-qualified class
- * name of the AttachProvider implementation. </p></li>
+ * <li>The provider configuration file lists the full-qualified class
+ * name of the AttachProvider implementation.</li>
* </ul>
*
* <p> The format of the provider configuration file is one fully-qualified
* class name per line. Space and tab characters surrounding each class name,
* as well as blank lines are ignored. The comment character is
- * <tt>'#'</tt> (<tt>0x23</tt>), and on each line all characters following
+ * {@code '#'} ({@code 0x23}), and on each line all characters following
* the first comment character are ignored. The file must be encoded in
- * UTF-8. </p>
+ * UTF-8.
*
* <p> AttachProvider implementations are loaded and instantiated
* (using the zero-arg constructor) at the first invocation of this method.
* The list returned by the first invocation of this method is the list
* of providers. Subsequent invocations of this method return a list of the same
- * providers. The list is unmodifable.</p>
+ * providers. The list is unmodifable.
*
* @return A list of the installed attach providers.
*/
--- a/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/Filter.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/Filter.java Tue May 05 13:29:12 2015 -0700
@@ -72,7 +72,7 @@
* exchange handler will not be invoked.
* @param exchange the HttpExchange
* @throws IOException let exceptions pass up the stack
- * @throws NullPointerException if exchange is <code>null</code>
+ * @throws NullPointerException if exchange is {@code null}
*/
public void doFilter (HttpExchange exchange) throws IOException {
if (!iter.hasNext()) {
@@ -86,14 +86,14 @@
/**
* Asks this filter to pre/post-process the given exchange. The filter
- * can :-
+ * can:
* <ul><li>examine or modify the request headers</li>
* <li>filter the request body or the response body, by creating suitable
* filter streams and calling
* {@link HttpExchange#setStreams(InputStream,OutputStream)}</li>
* <li>set attribute Objects in the exchange, which other filters or the
* exchange handler can access.</li>
- * <li>decide to either :-<ol>
+ * <li>decide to either<ol>
* <li>invoke the next filter in the chain, by calling
* {@link Filter.Chain#doFilter(HttpExchange)}</li>
* <li>terminate the chain of invocation, by <b>not</b> calling
@@ -102,12 +102,13 @@
* filters in the Chain have been called, and the response headers can be
* examined or modified.</li>
* <li>if option 2. above taken, then this Filter must use the HttpExchange
- * to send back an appropriate response</li></ul><p>
- * @param exchange the <code>HttpExchange</code> to be filtered.
+ * to send back an appropriate response</li></ul>
+ *
+ * @param exchange the {@code HttpExchange} to be filtered.
* @param chain the Chain which allows the next filter to be invoked.
* @throws IOException may be thrown by any filter module, and if
* caught, must be rethrown again.
- * @throws NullPointerException if either exchange or chain are <code>null</code>
+ * @throws NullPointerException if either exchange or chain are {@code null}
*/
public abstract void doFilter (HttpExchange exchange, Chain chain)
throws IOException;
--- a/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/Headers.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/Headers.java Tue May 05 13:29:12 2015 -0700
@@ -29,18 +29,21 @@
/**
* HTTP request and response headers are represented by this class which implements
- * the interface {@link java.util.Map}<
- * {@link java.lang.String},{@link java.util.List}<{@link java.lang.String}>>.
+ * the interface
+ * {@link java.util.Map}{@literal <}{@link java.lang.String}, {@link java.util.List}
+ * {@literal <}{@link java.lang.String}{@literal >>}.
* The keys are case-insensitive Strings representing the header names and
- * the value associated with each key is a {@link List}<{@link String}> with one
+ * the value associated with each key is
+ * a {@link List}{@literal <}{@link String}{@literal >} with one
* element for each occurrence of the header name in the request or response.
* <p>
- * For example, if a response header instance contains one key "HeaderName" with two values "value1 and value2"
+ * For example, if a response header instance contains
+ * one key "HeaderName" with two values "value1 and value2"
* then this object is output as two header lines:
* <blockquote><pre>
* HeaderName: value1
* HeaderName: value2
- * </blockquote></pre>
+ * </pre></blockquote>
* <p>
* All the normal {@link java.util.Map} methods are provided, but the following
* additional convenience methods are most likely to be used:
--- a/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/HttpExchange.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/HttpExchange.java Tue May 05 13:29:12 2015 -0700
@@ -116,9 +116,9 @@
public abstract HttpContext getHttpContext ();
/**
- * Ends this exchange by doing the following in sequence:<p><ol>
- * <li>close the request InputStream, if not already closed<p></li>
- * <li>close the response OutputStream, if not already closed. </li>
+ * Ends this exchange by doing the following in sequence:<ol>
+ * <li>close the request InputStream, if not already closed;</li>
+ * <li>close the response OutputStream, if not already closed.</li>
* </ol>
*/
public abstract void close () ;
@@ -163,9 +163,9 @@
* and the numeric response code as specified in this method. The response body length is also specified
* as follows. If the response length parameter is greater than zero, this specifies an exact
* number of bytes to send and the application must send that exact amount of data.
- * If the response length parameter is <code>zero</code>, then chunked transfer encoding is
+ * If the response length parameter is {@code zero}, then chunked transfer encoding is
* used and an arbitrary amount of data may be sent. The application terminates the
- * response body by closing the OutputStream. If response length has the value <code>-1</code>
+ * response body by closing the OutputStream. If response length has the value {@code -1}
* then no response body is being sent.
* <p>
* If the content-length response header has not already been set then
@@ -192,7 +192,7 @@
/**
* Returns the response code, if it has already been set
- * @return the response code, if available. <code>-1</code> if not available yet.
+ * @return the response code, if available. {@code -1} if not available yet.
*/
public abstract int getResponseCode ();
@@ -219,7 +219,7 @@
* available.
* @param name the name of the attribute to retrieve
* @return the attribute object, or null if it does not exist
- * @throws NullPointerException if name is <code>null</code>
+ * @throws NullPointerException if name is {@code null}
*/
public abstract Object getAttribute (String name) ;
@@ -231,9 +231,9 @@
* Each Filter class will document the attributes which they make
* available.
* @param name the name to associate with the attribute value
- * @param value the object to store as the attribute value. <code>null</code>
+ * @param value the object to store as the attribute value. {@code null}
* value is permitted.
- * @throws NullPointerException if name is <code>null</code>
+ * @throws NullPointerException if name is {@code null}
*/
public abstract void setAttribute (String name, Object value) ;
@@ -248,9 +248,9 @@
* required to be) sub-classes of {@link java.io.FilterInputStream}
* and {@link java.io.FilterOutputStream}.
* @param i the filtered input stream to set as this object's inputstream,
- * or <code>null</code> if no change.
+ * or {@code null} if no change.
* @param o the filtered output stream to set as this object's outputstream,
- * or <code>null</code> if no change.
+ * or {@code null} if no change.
*/
public abstract void setStreams (InputStream i, OutputStream o);
@@ -259,7 +259,7 @@
* If an authenticator is set on the HttpContext that owns this exchange,
* then this method will return the {@link HttpPrincipal} that represents
* the authenticated user for this HttpExchange.
- * @return the HttpPrincipal, or <code>null</code> if no authenticator is set.
+ * @return the HttpPrincipal, or {@code null} if no authenticator is set.
*/
public abstract HttpPrincipal getPrincipal ();
}
--- a/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/HttpServer.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/HttpServer.java Tue May 05 13:29:12 2015 -0700
@@ -58,8 +58,8 @@
* whose path is the longest matching prefix of the request URI's path.
* Paths are matched literally, which means that the strings are compared
* case sensitively, and with no conversion to or from any encoded forms.
- * For example. Given a HttpServer with the following HttpContexts configured.<p>
- * <table >
+ * For example. Given a HttpServer with the following HttpContexts configured.
+ * <table>
* <tr><td><i>Context</i></td><td><i>Context path</i></td></tr>
* <tr><td>ctx1</td><td>"/"</td></tr>
* <tr><td>ctx2</td><td>"/apps/"</td></tr>
@@ -67,7 +67,7 @@
* </table>
* <p>
* the following table shows some request URIs and which, if any context they would
- * match with.<p>
+ * match with.
* <table>
* <tr><td><i>Request URI</i></td><td><i>Matches context</i></td></tr>
* <tr><td>"http://foo.com/apps/foo/bar"</td><td>ctx3</td></tr>
@@ -181,7 +181,7 @@
* approximately <i>delay</i> seconds have elapsed (whichever happens
* sooner). Then, all open TCP connections are closed, the background
* thread created by start() exits, and the method returns.
- * Once stopped, a HttpServer cannot be re-used. <p>
+ * Once stopped, a HttpServer cannot be re-used.
*
* @param delay the maximum time in seconds to wait until exchanges have finished.
* @throws IllegalArgumentException if delay is less than zero.
--- a/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/HttpsConfigurator.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/HttpsConfigurator.java Tue May 05 13:29:12 2015 -0700
@@ -42,8 +42,8 @@
* the default configuration.
* <p>
* The following <a name="example">example</a> shows how this may be done:
- * <p>
- * <pre><blockquote>
+ *
+ * <blockquote><pre>
* SSLContext sslContext = SSLContext.getInstance (....);
* HttpsServer server = HttpsServer.create();
*
@@ -64,7 +64,7 @@
* params.setSSLParameters(sslparams);
* }
* });
- * </blockquote></pre>
+ * </pre></blockquote>
* @since 1.6
*/
@jdk.Exported
@@ -102,7 +102,7 @@
* <p>
* The default implementation of this method uses the
* SSLParameters returned from <p>
- * <code>getSSLContext().getDefaultSSLParameters()</code>
+ * {@code getSSLContext().getDefaultSSLParameters()}
* <p>
* configure() may be overridden in order to modify this behavior.
* See, the example <a href="#example">above</a>.
--- a/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/package-info.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/package-info.java Tue May 05 13:29:12 2015 -0700
@@ -58,7 +58,7 @@
server.createContext("/applications/myapp", new MyHandler());
server.setExecutor(null); // creates a default executor
server.start();
- </blockquote></pre>
+ </pre></blockquote>
<p>The example above creates a simple HttpServer which uses the calling
application thread to invoke the handle() method for incoming http
requests directed to port 8000, and to the path /applications/myapp/.
@@ -92,7 +92,7 @@
SSLContext ssl = SSLContext.getInstance("TLS");
ssl.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
- </blockquote></pre>
+ </pre></blockquote>
<p>
In the example above, a keystore file called "testkeys", created with the keytool utility
is used as a certificate store for client and server certificates.
@@ -119,8 +119,8 @@
}
});
- </blockquote></pre>
- <p>
+ </pre></blockquote>
+
@since 1.6
*/
@jdk.Exported
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/Bootstrap.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/Bootstrap.java Tue May 05 13:29:12 2015 -0700
@@ -43,13 +43,12 @@
* <p> May throw an unspecified error if initialization of the
* {@link com.sun.jdi.VirtualMachineManager} fails or if
* the virtual machine manager is unable to locate or create
- * any {@link com.sun.jdi.connect.Connector Connectors}. </p>
- * <p>
+ * any {@link com.sun.jdi.connect.Connector Connectors}.
+ *
* @throws java.lang.SecurityException if a security manager has been
* installed and it denies {@link JDIPermission}
- * <tt>("virtualMachineManager")</tt> or other unspecified
+ * ("{@code virtualMachineManager}") or other unspecified
* permissions required by the implementation.
- * </p>
*/
static public synchronized VirtualMachineManager virtualMachineManager() {
return com.sun.tools.jdi.VirtualMachineManagerImpl.virtualMachineManager();
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/Field.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/Field.java Tue May 05 13:29:12 2015 -0700
@@ -65,22 +65,22 @@
* short s;
* Date d;
* byte[] ba;</PRE>
- * And the JDI client defines these <CODE>Field</CODE> objects:
+ * And the JDI client defines these {@code Field} objects:
* <PRE>
* Field sField = targetClass.fieldByName("s");
* Field dField = targetClass.fieldByName("d");
* Field baField = targetClass.fieldByName("ba");</PRE>
- * to mirror the corresponding fields, then <CODE>sField.type()</CODE>
- * is a {@link ShortType}, <CODE>dField.type()</CODE> is the
- * {@link ReferenceType} for <CODE>java.util.Date</CODE> and
- * <CODE>((ArrayType)(baField.type())).componentType()</CODE> is a
+ * to mirror the corresponding fields, then {@code sField.type()}
+ * is a {@link ShortType}, {@code dField.type()} is the
+ * {@link ReferenceType} for {@code java.util.Date} and
+ * {@code ((ArrayType)(baField.type())).componentType()} is a
* {@link ByteType}.
* <P>
* Note: if the type of this field is a reference type (class,
* interface, or array) and it has not been created or loaded
* by the declaring type's class loader - that is,
- * {@link TypeComponent#declaringType <CODE>declaringType()</CODE>}
- * <CODE>.classLoader()</CODE>,
+ * {@link TypeComponent#declaringType declaringType()}
+ * {@code .classLoader()},
* then ClassNotLoadedException will be thrown.
* Also, a reference type may have been loaded but not yet prepared,
* in which case the type will be returned
@@ -100,28 +100,28 @@
/**
* Determine if this is a transient field.
*
- * @return <code>true</code> if this field is transient; false otherwise.
+ * @return {@code true} if this field is transient; {@code false} otherwise.
*/
boolean isTransient();
/**
* Determine if this is a volatile field.
*
- * @return <code>true</code> if this field is volatile; false otherwise.
+ * @return {@code true} if this field is volatile; {@code false} otherwise.
*/
boolean isVolatile();
/**
* Determine if this is a field that represents an enum constant.
- * @return <code>true</code> if this field represents an enum constant;
- * false otherwise.
+ * @return {@code true} if this field represents an enum constant;
+ * {@code false} otherwise.
*/
boolean isEnumConstant();
/**
* Compares the specified Object with this field for equality.
*
- * @return true if the Object is a Field and if both
+ * @return {@code true} if the Object is a Field and if both
* mirror the same field (declared in the same class or interface, in
* the same VM).
*/
@@ -130,7 +130,7 @@
/**
* Returns the hash code value for this Field.
*
- * @return the integer hash code
+ * @return the integer hash code.
*/
int hashCode();
}
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/JDIPermission.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/JDIPermission.java Tue May 05 13:29:12 2015 -0700
@@ -26,20 +26,20 @@
package com.sun.jdi;
/**
- * The <code>JDIPermission</code> class represents access rights to
- * the <code>VirtualMachineManager</code>. This is the permission
+ * The {@code JDIPermission} class represents access rights to
+ * the {@code VirtualMachineManager}. This is the permission
* which the SecurityManager will check when code that is running with
* a SecurityManager requests access to the VirtualMachineManager, as
* defined in the Java Debug Interface (JDI) for the Java platform.
* <P>
- * A <code>JDIPermission</code> object contains a name (also referred
+ * A {@code JDIPermission} object contains a name (also referred
* to as a "target name") but no actions list; you either have the
* named permission or you don't.
* <P>
* The following table provides a summary description of what the
* permission allows, and discusses the risks of granting code the
* permission.
- * <P>
+ *
* <table border=1 cellpadding=5 summary="Table shows permission
* target name, what the permission allows, and associated risks">
* <tr>
@@ -51,10 +51,10 @@
* <tr>
* <td>virtualMachineManager</td>
* <td>Ability to inspect and modify the JDI objects in the
- * <code>VirtualMachineManager</code>
+ * {@code VirtualMachineManager}
* </td>
* <td>This allows an attacker to control the
- * <code>VirtualMachineManager</code> and cause the system to
+ * {@code VirtualMachineManager} and cause the system to
* misbehave.
* </td>
* </tr>
@@ -82,8 +82,8 @@
public final class JDIPermission extends java.security.BasicPermission {
private static final long serialVersionUID = -6988461416938786271L;
/**
- * The <code>JDIPermission</code> class represents access rights to the
- * <code>VirtualMachineManager</code>
+ * The {@code JDIPermission} class represents access rights to the
+ * {@code VirtualMachineManager}
* @param name Permission name. Must be "virtualMachineManager".
* @throws IllegalArgumentException if the name argument is invalid.
*/
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/Method.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/Method.java Tue May 05 13:29:12 2015 -0700
@@ -49,7 +49,7 @@
* This type name is always available even if
* the type has not yet been created or loaded.
*
- * @return a String containing the return type name.
+ * @return a {@code String} containing the return type name.
*/
String returnTypeName();
@@ -60,8 +60,8 @@
* Note: if the return type of this method is a reference type (class,
* interface, or array) and it has not been created or loaded
* by the declaring type's class loader - that is,
- * {@link TypeComponent#declaringType <CODE>declaringType()</CODE>}
- * <CODE>.classLoader()</CODE>,
+ * {@link TypeComponent#declaringType declaringType()}
+ * {@code .classLoader()},
* then ClassNotLoadedException will be thrown.
* Also, a reference type may have been loaded but not yet prepared,
* in which case the type will be returned
@@ -93,7 +93,6 @@
* as specified at compile-time.
* If the formal parameter was declared with an ellipsis, then
* it is represented as an array of the type before the ellipsis.
- *
*/
List<String> argumentTypeNames();
@@ -105,8 +104,8 @@
* is a reference type (class, interface, or array)
* and it has not been created or loaded
* by the declaring type's class loader - that is,
- * {@link TypeComponent#declaringType <CODE>declaringType()</CODE>}
- * <CODE>.classLoader()</CODE>,
+ * {@link TypeComponent#declaringType declaringType()}
+ * {@code .classLoader()},
* then ClassNotLoadedException will be thrown.
* Also, a reference type may have been loaded but not yet prepared,
* in which case the list will be returned
@@ -132,16 +131,16 @@
/**
* Determine if this method is abstract.
*
- * @return <code>true</code> if the method is declared abstract;
- * false otherwise.
+ * @return {@code true} if the method is declared abstract;
+ * {@code false} otherwise.
*/
boolean isAbstract();
/**
* Determine if this method is a default method
*
- * @return <code>true</code> if the method is declared default;
- * false otherwise
+ * @return {@code true} if the method is declared default;
+ * {@code false} otherwise.
*
* @since 1.8
*/
@@ -152,24 +151,24 @@
/**
* Determine if this method is synchronized.
*
- * @return <code>true</code> if the method is declared synchronized;
- * false otherwise.
+ * @return {@code true} if the method is declared synchronized;
+ * {@code false} otherwise.
*/
boolean isSynchronized();
/**
* Determine if this method is native.
*
- * @return <code>true</code> if the method is declared native;
- * false otherwise.
+ * @return {@code true} if the method is declared native;
+ * {@code false} otherwise.
*/
boolean isNative();
/**
* Determine if this method accepts a variable number of arguments.
*
- * @return <code>true</code> if the method accepts a variable number
- * of arguments, false otherwise.
+ * @return {@code true} if the method accepts a variable number
+ * of arguments, {@code false} otherwise.
*
* @since 1.5
*/
@@ -180,8 +179,8 @@
* methods are defined in
* <cite>The Java™ Language Specification</cite>.
*
- * @return <code>true</code> if the method is a bridge method,
- * false otherwise.
+ * @return {@code true} if the method is a bridge method,
+ * {@code false} otherwise.
*
* @since 1.5
*/
@@ -190,23 +189,23 @@
/**
* Determine if this method is a constructor.
*
- * @return <code>true</code> if the method is a constructor;
- * false otherwise.
+ * @return {@code true} if the method is a constructor;
+ * {@code false} otherwise.
*/
boolean isConstructor();
/**
* Determine if this method is a static initializer.
*
- * @return <code>true</code> if the method is a static initializer;
- * false otherwise.
+ * @return {@code true} if the method is a static initializer;
+ * {@code false} otherwise.
*/
boolean isStaticInitializer();
/**
* Determine if this method is obsolete.
*
- * @return <code>true</code> if this method has been made obsolete by a
+ * @return {@code true} if this method has been made obsolete by a
* {@link VirtualMachine#redefineClasses} operation.
*
* @since 1.4
@@ -218,7 +217,7 @@
* each executable source line in this method.
* <P>
* This method is equivalent to
- * <code>allLineLocations(vm.getDefaultStratum(),null)</code> -
+ * {@code allLineLocations(vm.getDefaultStratum(),null)} -
* see {@link #allLineLocations(String,String)}
* for more information.
*
@@ -252,16 +251,16 @@
* (see {@link Location} for a description of strata).
*
* @param stratum The stratum to retrieve information from
- * or <code>null</code> for the {@link ReferenceType#defaultStratum()}
+ * or {@code null} for the {@link ReferenceType#defaultStratum()}
*
* @param sourceName Return locations only within this
- * source file or <code>null</code> to return locations.
+ * source file or {@code null} to return locations.
*
* @return a List of all source line {@link Location} objects.
*
* @throws AbsentInformationException if there is no line
* number information for this (non-native, non-abstract)
- * method. Or if <i>sourceName</i> is non-<code>null</code>
+ * method. Or if <i>sourceName</i> is non-{@code null}
* and source name information is not present.
*
* @since 1.4
@@ -274,8 +273,8 @@
* that map to the given line number.
* <P>
* This method is equivalent to
- * <code>locationsOfLine(vm.getDefaultStratum(), null,
- * lineNumber)</code> -
+ * {@code locationsOfLine(vm.getDefaultStratum(), null,
+ * lineNumber)} -
* see {@link
* #locationsOfLine(java.lang.String,java.lang.String,int)}
* for more information.
@@ -320,7 +319,7 @@
*
* @throws AbsentInformationException if there is no line
* number information for this method.
- * Or if <i>sourceName</i> is non-<code>null</code>
+ * Or if <i>sourceName</i> is non-{@code null}
* and source name information is not present.
*
* @since 1.4
@@ -436,7 +435,7 @@
/**
* Returns the hash code value for this Method.
*
- * @return the integer hash code
+ * @return the integer hash code.
*/
int hashCode();
}
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/Value.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/Value.java Tue May 05 13:29:12 2015 -0700
@@ -63,47 +63,47 @@
* <TH id="type" align="left">{@link Type} of value<br>{@link #type() Value.type()}</TH>
* <TR>
* <TD headers="primval kind"> a boolean</TD>
- * <TD headers="primval example"> <CODE>true</CODE></TD>
+ * <TD headers="primval example"> {@code true}</TD>
* <TD headers="primval mirrored"> {@link BooleanValue}</TD>
* <TD headers="primval type"> {@link BooleanType}</TD>
* <TR>
* <TD headers="primval kind"> a byte</TD>
- * <TD headers="primval example"> <CODE>(byte)4</CODE></TD>
+ * <TD headers="primval example"> {@code (byte)4}</TD>
* <TD headers="primval mirrored"> {@link ByteValue}</TD>
* <TD headers="primval type"> {@link ByteType}</TD>
* <TR>
* <TD headers="primval kind"> a char</TD>
- * <TD headers="primval example"> <CODE>'a'</CODE></TD>
+ * <TD headers="primval example"> {@code 'a'}</TD>
* <TD headers="primval mirrored"> {@link CharValue}</TD>
* <TD headers="primval type"> {@link CharType}</TD>
* <TR>
* <TD headers="primval kind"> a double</TD>
- * <TD headers="primval example"> <CODE>3.1415926</CODE></TD>
+ * <TD headers="primval example"> {@code 3.1415926}</TD>
* <TD headers="primval mirrored"> {@link DoubleValue}</TD>
* <TD headers="primval type"> {@link DoubleType}</TD>
* <TR>
* <TD headers="primval kind"> a float</TD>
- * <TD headers="primval example"> <CODE>2.5f</CODE></TD>
+ * <TD headers="primval example"> {@code 2.5f}</TD>
* <TD headers="primval mirrored"> {@link FloatValue}</TD>
* <TD headers="primval type"> {@link FloatType}</TD>
* <TR>
* <TD headers="primval kind"> an int</TD>
- * <TD headers="primval example"> <CODE>22</CODE></TD>
+ * <TD headers="primval example"> {@code 22}</TD>
* <TD headers="primval mirrored"> {@link IntegerValue}</TD>
* <TD headers="primval type"> {@link IntegerType}</TD>
* <TR>
* <TD headers="primval kind"> a long</TD>
- * <TD headers="primval example"> <CODE>1024L</CODE></TD>
+ * <TD headers="primval example"> {@code 1024L}</TD>
* <TD headers="primval mirrored"> {@link LongValue}</TD>
* <TD headers="primval type"> {@link LongType}</TD>
* <TR>
* <TD headers="primval kind"> a short</TD>
- * <TD headers="primval example"> <CODE>(short)12</CODE></TD>
+ * <TD headers="primval example"> {@code (short)12}</TD>
* <TD headers="primval mirrored"> {@link ShortValue}</TD>
* <TD headers="primval type"> {@link ShortType}</TD>
* <TR>
* <TD headers="primval kind"> a void</TD>
- * <TD headers="primval example"> <CODE> </CODE></TD>
+ * <TD headers="primval example"> </TD>
* <TD headers="primval mirrored"> {@link VoidValue}</TD>
* <TD headers="primval type"> {@link VoidType}</TD>
* <TR BGCOLOR="#EEEEFF">
@@ -115,50 +115,50 @@
* <TH id="type2" align="left">{@link Type} of value<br>{@link #type() Value.type()}</TH>
* <TR>
* <TD headers="objref kind2"> a class instance</TD>
- * <TD headers="objref example2"> <CODE>this</CODE></TD>
+ * <TD headers="objref example2"> {@code this}</TD>
* <TD headers="objref mirrored2"> {@link ObjectReference}</TD>
* <TD headers="objref type2"> {@link ClassType}</TD>
* <TR>
* <TD headers="objref kind2"> an array</TD>
- * <TD headers="objref example2"> <CODE>new int[5]</CODE></TD>
+ * <TD headers="objref example2"> {@code new int[5]}</TD>
* <TD headers="objref mirrored2"> {@link ArrayReference}</TD>
* <TD headers="objref type2"> {@link ArrayType}</TD>
* <TR>
* <TD headers="objref kind2"> a string</TD>
- * <TD headers="objref example2"> <CODE>"hello"</CODE></TD>
+ * <TD headers="objref example2"> {@code "hello"}</TD>
* <TD headers="objref mirrored2"> {@link StringReference}</TD>
* <TD headers="objref type2"> {@link ClassType}</TD>
* <TR>
* <TD headers="objref kind2"> a thread</TD>
- * <TD headers="objref example2"> <CODE>Thread.currentThread()</CODE></TD>
+ * <TD headers="objref example2"> {@code Thread.currentThread()}</TD>
* <TD headers="objref mirrored2"> {@link ThreadReference}</TD>
* <TD headers="objref type2"> {@link ClassType}</TD>
* <TR>
* <TD headers="objref kind2"> a thread group</TD>
- * <TD headers="objref example2"> <CODE>Thread.currentThread()<br> .getThreadGroup()</CODE></TD>
+ * <TD headers="objref example2"> {@code Thread.currentThread()}<br> {@code .getThreadGroup()}</TD>
* <TD headers="objref mirrored2"> {@link ThreadGroupReference}</TD>
* <TD headers="objref type2"> {@link ClassType}</TD>
* <TR>
- * <TD headers="objref kind2"> a <CODE>java.lang.Class</CODE><br>instance</TD>
- * <TD headers="objref example2"> <CODE>this.getClass()</CODE></TD>
+ * <TD headers="objref kind2"> a {@code java.lang.Class}<br>instance</TD>
+ * <TD headers="objref example2"> {@code this.getClass()}</TD>
* <TD headers="objref mirrored2"> {@link ClassObjectReference}</TD>
* <TD headers="objref type2"> {@link ClassType}</TD>
* <TR>
* <TD headers="objref kind2"> a class loader</TD>
- * <TD headers="objref example2"> <CODE>this.getClass()<br> .getClassLoader() </CODE></TD>
+ * <TD headers="objref example2"> {@code this.getClass()}<br> {@code .getClassLoader()}</TD>
* <TD headers="objref mirrored2"> {@link ClassLoaderReference}</TD>
* <TD headers="objref type2"> {@link ClassType}</TD>
* <TR BGCOLOR="#EEEEFF">
* <TH id="other" colspan=4>Other</TH>
* <TR BGCOLOR="#EEEEFF">
- * <TH id="kind3" align="left">Kind of value</TD>
- * <TH id="example3" align="left">For example -<br>expression in target</TD>
- * <TH id="mirrored3" align="left">Is mirrored as</TD>
- * <TH id="type3" align="left">{@link Type} of value</TD>
+ * <TD id="kind3" align="left">Kind of value</TD>
+ * <TD id="example3" align="left">For example -<br>expression in target</TD>
+ * <TD id="mirrored3" align="left">Is mirrored as</TD>
+ * <TD id="type3" align="left">{@link Type} of value</TD>
* <TR>
* <TD headers="other kind3"> null</TD>
- * <TD headers="other example3"> <CODE>null</CODE></TD>
- * <TD headers="other mirrored3"> <CODE>null</CODE></TD>
+ * <TD headers="other example3"> {@code null}</TD>
+ * <TD headers="other mirrored3"> {@code null}</TD>
* <TD headers="other type3"> n/a</TD>
* </TABLE>
*
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/VirtualMachineManager.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/VirtualMachineManager.java Tue May 05 13:29:12 2015 -0700
@@ -50,7 +50,7 @@
* examples use the command line syntax in Sun's implementation.
* Some {@link com.sun.jdi.connect.Connector} implementations may require slightly
* different handling than presented below.
- * <p>
+ *
* <TABLE BORDER WIDTH="75%" SUMMARY="Four scenarios for connecting a debugger
* to a virtual machine">
* <TR>
@@ -85,7 +85,7 @@
* <UL>
* <LI>
* Target VM is launched using the options
- * <code>-agentlib:jdwp=transport=xxx,server=y</code>
+ * {@code -agentlib:jdwp=transport=xxx,server=y}
* </LI>
* <LI>
* Target VM generates and outputs the tranport-specific address at which it will
@@ -110,6 +110,7 @@
* <TR>
* <TD>Target VM attaches to previously-running debugger</TD>
* <TD>
+ * <UL>
* <LI>
* At startup, debugger selects one or more connectors from
* the list returned by {@link #listeningConnectors} for one or more
@@ -126,7 +127,7 @@
* a target VM to connect.</LI>
* <LI>
* Later, target VM is launched by end user with the options
- * <code>-agentlib:jdwp=transport=xxx,address=yyy</code>
+ * {@code -agentlib:jdwp=transport=xxx,address=yyy}
* where "xxx" the transport for one of the connectors selected by the
* the debugger and "yyy"
* is the address generated by
@@ -135,15 +136,17 @@
* <LI>
* Debugger's call to {@link com.sun.jdi.connect.ListeningConnector#accept(java.util.Map)} returns
* a {@link VirtualMachine} mirror.</LI>
+ * </UL>
* </TD>
* </TR>
*
* <TR>
* <TD>Target VM launches debugger (sometimes called "Just-In-Time" debugging)</TD>
* <TD>
+ * <UL>
* <LI>
* Target VM is launched with the options
- * <code>-agentlib:jdwp=launch=cmdline,onuncaught=y,transport=xxx,server=y</code>
+ * {@code -agentlib:jdwp=launch=cmdline,onuncaught=y,transport=xxx,server=y}
* </LI>
* <LI>
* Later, an uncaught exception is thrown in the target VM. The target
@@ -171,6 +174,7 @@
* {@link com.sun.jdi.connect.AttachingConnector#attach(java.util.Map)} method
* of the selected to attach to the target VM. A {@link VirtualMachine}
* mirror is returned.
+ * </UL>
* </TD>
* </TR>
* </TABLE>
@@ -380,7 +384,7 @@
* a virtual machine mirror when a connection is established
* to a target VM. Only developers creating new Connector
* implementations should need to make direct use of this
- * method. </p>
+ * method.
*
* @param connection
* The open connection to the target VM.
@@ -415,7 +419,7 @@
* a virtual machine mirror when a connection is established
* to a target VM. Only developers creating new Connector
* implementations should need to make direct use of this
- * method. </p>
+ * method.
*
* @return the new virtual machine
*
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/connect/spi/Connection.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/connect/spi/Connection.java Tue May 05 13:29:12 2015 -0700
@@ -51,7 +51,7 @@
*
* <p> A Connection is safe for access by multiple concurrent threads,
* although at most one thread may be reading and at most one thread may
- * be writing at any given time. </p>
+ * be writing at any given time.
*
* @since 1.5
*/
@@ -70,18 +70,18 @@
*
* <p> Reading a packet does not do any integrity checking on
* the packet aside from a check that the length of the packet
- * (as indicated by the value of the <tt>length</tt> field, the
+ * (as indicated by the value of the {@code length} field, the
* first four bytes of the packet) is 11 or more bytes.
- * If the value of the <tt>length</tt> value is less then 11
- * then an <tt>IOException</tt> is thrown.
+ * If the value of the {@code length} value is less then 11
+ * then an {@code IOException} is thrown.
*
* <p> Returns a byte array of a length equal to the length
* of the received packet, or a byte array of length 0 when an
* end of stream is encountered. If end of stream is encountered
* after some, but not all bytes of a packet, are read then it
- * is considered an I/O error and an <tt>IOException</tt> is
+ * is considered an I/O error and an {@code IOException} is
* thrown. The first byte of the packet is stored in element
- * <tt>0</tt> of the byte array, the second in element <tt>1</tt>,
+ * {@code 0} of the byte array, the second in element {@code 1},
* and so on. The bytes in the byte array are laid out as per the
* <a href="../../../../../../../../../technotes/guides/jpda/jdwp-spec.html">
* JDWP specification</a>. That is, all fields in the packet
@@ -90,7 +90,7 @@
* <p> This method may be invoked at any time. If another thread has
* already initiated a {@link #readPacket readPacket} on this
* connection then the invocation of this method will block until the
- * first operation is complete. </p>
+ * first operation is complete.
*
* @return the packet read from the target VM
*
@@ -123,21 +123,21 @@
* href="../../../../../../../../../technotes/guides/jpda/jdwp-spec.html">
* JDWP specification</a>. That is, all fields in the packet
* are in big endian order. The first byte, that is element
- * <tt>pkt[0]</tt>, is the first byte of the <tt>length</tt> field.
- * <tt>pkt[1]</tt> is the second byte of the <tt>length</tt> field,
+ * {@code pkt[0]}, is the first byte of the {@code length} field.
+ * {@code pkt[1]} is the second byte of the {@code length} field,
* and so on.
*
* <p> Writing a packet does not do any integrity checking on
* the packet aside from checking the packet length. Checking
* the packet length requires checking that the value of the
- * <tt>length</tt> field (as indicated by the first four bytes
+ * {@code length} field (as indicated by the first four bytes
* of the packet) is 11 or greater. Consequently the length of
* the byte array provided to this method, that is
- * <tt>pkt.length</tt>, must be 11 or more, and must be equal
- * or greater than the value of the <tt>length</tt> field. If the
+ * {@code pkt.length}, must be 11 or more, and must be equal
+ * or greater than the value of the {@code length} field. If the
* length of the byte array is greater than the value of
- * the <tt>length</tt> field then all bytes from element
- * <tt>pkt[length]</tt> onwards are ignored. In other words,
+ * the {@code length} field then all bytes from element
+ * {@code pkt[length]} onwards are ignored. In other words,
* any additional bytes that follow the packet in the byte
* array are ignored and will not be transmitted to the target
* VM.
@@ -152,7 +152,7 @@
* <p> This method may be invoked at any time. If another thread has
* already initiated a write operation upon this Connection then
* a subsequent invocation of this method will block until the first
- * operation is complete. </p>
+ * operation is complete.
*
* @param pkt
* The packet to write to the target VM.
@@ -165,7 +165,7 @@
* If an I/O error occurs.
*
* @throws IllegalArgumentException
- * If the value of the <tt>length</tt> field is invalid,
+ * If the value of the {@code length} field is invalid,
* or the byte array is of insufficient length.
*/
public abstract void writePacket(byte pkt[]) throws IOException;
@@ -185,7 +185,7 @@
* <p> This method may be invoked at any time. If some other thread has
* already invoked it, however, then another invocation will block until
* the first invocation is complete, after which it will return without
- * effect. </p>
+ * effect.
*
* @throws java.io.IOException
* If an I/O error occurs
@@ -193,9 +193,9 @@
public abstract void close() throws IOException;
/**
- * Tells whether or not this connection is open. </p>
+ * Tells whether or not this connection is open.
*
- * @return <tt>true</tt> if, and only if, this connection is open
+ * @return {@code true} if and only if this connection is open
*/
public abstract boolean isOpen();
}
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/doc-files/signature.html Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/doc-files/signature.html Tue May 05 13:29:12 2015 -0700
@@ -7,7 +7,7 @@
<BODY BGCOLOR="white">
<dl><dd>
<Table Border="0">
-<caption><h2>JDI Type Signatures</h2></caption>
+<caption><font size=5><b>JDI Type Signatures</b></font></caption>
<tr><th>Type Signature
<th>Java Type
<tr><td>Z<td>boolean
@@ -31,9 +31,9 @@
</Table>
</dd></dl>
<p>For example, the Java method:
-<p><pre> long f (int n, String s, int[] arr);
+<pre> long f (int n, String s, int[] arr);
</pre>has the following type signature:
-<p><pre> (ILjava/lang/String;[I)J
+<pre> (ILjava/lang/String;[I)J
</pre>
</BODY>
</HTML>
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/EventSet.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/EventSet.java Tue May 05 13:29:12 2015 -0700
@@ -51,7 +51,6 @@
* <P>
* The events that are grouped in an EventSet are restricted in the
* following ways:
- * <P>
* <UL>
* <LI>Always singleton sets:
* <UL>
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/MonitorContendedEnterEvent.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/MonitorContendedEnterEvent.java Tue May 05 13:29:12 2015 -0700
@@ -29,9 +29,8 @@
/**
*
- * Notification that a thread in the target VM is attempting
- * to enter a monitor that is already acquired by another thread.
- * <P>
+ * Notification that a thread in the target VM is attempting
+ * to enter a monitor that is already acquired by another thread.
*
* @see EventQueue
* @see MonitorContendedEnteredEvent
@@ -45,7 +44,6 @@
/**
* Returns the thread in which this event has occurred.
- * <p>
*
* @return a {@link ThreadReference} which mirrors the event's thread in
* the target VM.
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/MonitorContendedEnteredEvent.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/MonitorContendedEnteredEvent.java Tue May 05 13:29:12 2015 -0700
@@ -31,7 +31,6 @@
*
* Notification that a thread in the target VM is entering a monitor
* after waiting for it to be released by another thread.
- * <P>
*
* @see EventQueue
* @see MonitorContendedEnterEvent
@@ -44,7 +43,6 @@
/**
* Returns the thread in which this event has occurred.
- * <p>
*
* @return a {@link ThreadReference} which mirrors the event's thread in
* the target VM.
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/MonitorWaitEvent.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/MonitorWaitEvent.java Tue May 05 13:29:12 2015 -0700
@@ -30,7 +30,6 @@
/**
* Notification that a thread in the target VM is about to
* wait on a monitor object.
- * <P>
*
* @see EventQueue
* @see MonitorWaitedEvent
@@ -43,7 +42,6 @@
/**
* Returns the thread in which monitor wait event has occurred.
- * <p>
*
* @return a {@link ThreadReference} which mirrors the event's thread in
* the target VM.
@@ -60,7 +58,7 @@
/**
* Returns the number of millisecond the thread will wait.
*
- * @return a <code>jlong</code> containing monitor wait time in milliseconds.
+ * @return a {@code jlong} containing monitor wait time in milliseconds.
*/
public long timeout();
}
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/MonitorWaitedEvent.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/event/MonitorWaitedEvent.java Tue May 05 13:29:12 2015 -0700
@@ -30,7 +30,6 @@
/**
* Notification that a thread in the target VM has finished
* waiting on an monitor object.
- * <P>
*
* @see EventQueue
* @see MonitorWaitEvent
@@ -43,7 +42,6 @@
/**
* Returns the thread in which this event has occurred.
- * <p>
*
* @return a {@link ThreadReference} which mirrors the event's thread in
* the target VM.
@@ -60,7 +58,7 @@
/**
* Returns whether the wait has timed out or been interrupted.
*
- * @return <code>true</code> if the wait is timed out.
+ * @return {@code true} if the wait is timed out.
*/
public boolean timedout();
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/EventRequest.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/EventRequest.java Tue May 05 13:29:12 2015 -0700
@@ -61,14 +61,14 @@
* Filters can dramatically improve debugger performance by reducing the
* amount of event traffic sent from the target VM to the debugger VM.
* <p>
- * Any method on <code>EventRequest</code> which
- * takes <code>EventRequest</code> as an parameter may throw
+ * Any method on {@code EventRequest} which
+ * takes {@code EventRequest} as an parameter may throw
* {@link com.sun.jdi.VMDisconnectedException} if the target VM is
* disconnected and the {@link com.sun.jdi.event.VMDisconnectEvent} has been or is
* available to be read from the {@link com.sun.jdi.event.EventQueue}.
* <p>
- * Any method on <code>EventRequest</code> which
- * takes <code>EventRequest</code> as an parameter may throw
+ * Any method on {@code EventRequest} which
+ * takes {@code EventRequest} as an parameter may throw
* {@link com.sun.jdi.VMOutOfMemoryException} if the target VM has run out of memory.
*
* @see com.sun.jdi.event.BreakpointEvent
@@ -84,8 +84,8 @@
/**
* Determines if this event request is currently enabled.
*
- * @return <code>true</code> if enabled;
- * <code>false</code> otherwise.
+ * @return {@code true} if enabled;
+ * {@code false} otherwise.
*/
boolean isEnabled();
@@ -97,18 +97,18 @@
* and are included in event request lists such as
* {@link EventRequestManager#breakpointRequests()}.
*
- * @param val <code>true</code> if the event request is to be enabled;
- * <code>false</code> otherwise.
+ * @param val {@code true} if the event request is to be enabled;
+ * {@code false} otherwise.
* @throws InvalidRequestStateException if this request
* has been deleted.
* @throws IllegalThreadStateException if this is a StepRequest,
- * <code>val</code> is <code>true</code>, and the
+ * {@code val} is {@code true}, and the
* thread named in the request has died or is not yet started.
*/
void setEnabled(boolean val);
/**
- * Same as {@link #setEnabled <CODE>setEnabled(true)</CODE>}.
+ * Same as {@link #setEnabled setEnabled(true)}.
* @throws InvalidRequestStateException if this request
* has been deleted.
* @throws IllegalThreadStateException if this is a StepRequest
@@ -117,7 +117,7 @@
void enable();
/**
- * Same as {@link #setEnabled <CODE>setEnabled(false)</CODE>}.
+ * Same as {@link #setEnabled setEnabled(false)}.
* @throws InvalidRequestStateException if this request
* has been deleted.
*/
@@ -126,7 +126,7 @@
/**
* Limit the requested event to be reported at most once after a
* given number of occurrences. The event is not reported
- * the first <code>count - 1</code> times this filter is reached.
+ * the first {@code count - 1} times this filter is reached.
* To request a one-off event, call this method with a count of 1.
* <p>
* Once the count reaches 0, any subsequent filters in this request
@@ -139,7 +139,7 @@
* @throws InvalidRequestStateException if this request is currently
* enabled or has been deleted.
* Filters may be added only to disabled requests.
- * @throws IllegalArgumentException if <CODE>count</CODE>
+ * @throws IllegalArgumentException if {@code count}
* is less than one.
*/
void addCountFilter(int count);
@@ -189,7 +189,7 @@
* These client-set properties are not used internally
* by the JDI.
* <p>
- * The <code>get/putProperty</code> methods provide access to
+ * The {@code get/putProperty} methods provide access to
* a small per-instance map. This is <b>not</b> to be confused
* with {@link java.util.Properties}.
* <p>
--- a/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/EventRequestManager.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/jdi/request/EventRequestManager.java Tue May 05 13:29:12 2015 -0700
@@ -217,20 +217,20 @@
* activate this event request.
* <p>
* The returned request will control stepping only in the specified
- * <code>thread</code>; all other threads will be unaffected.
- * A <code>size</code>value of {@link com.sun.jdi.request.StepRequest#STEP_MIN} will generate a
+ * {@code thread}; all other threads will be unaffected.
+ * A {@code size} value of {@link com.sun.jdi.request.StepRequest#STEP_MIN} will generate a
* step event each time the code index changes. It represents the
* smallest step size available and often maps to the instruction
* level.
- * A <code>size</code> value of {@link com.sun.jdi.request.StepRequest#STEP_LINE} will generate a
+ * A {@code size} value of {@link com.sun.jdi.request.StepRequest#STEP_LINE} will generate a
* step event each time the source line changes unless line number information is not available,
* in which case a STEP_MIN will be done instead. For example, no line number information is
* available during the execution of a method that has been rendered obsolete by
* by a {@link com.sun.jdi.VirtualMachine#redefineClasses} operation.
- * A <code>depth</code> value of {@link com.sun.jdi.request.StepRequest#STEP_INTO} will generate
- * step events in any called methods. A <code>depth</code> value
+ * A {@code depth} value of {@link com.sun.jdi.request.StepRequest#STEP_INTO} will generate
+ * step events in any called methods. A {@code depth} value
* of {@link com.sun.jdi.request.StepRequest#STEP_OVER} restricts step events to the current frame
- * or caller frames. A <code>depth</code> value of {@link com.sun.jdi.request.StepRequest#STEP_OUT}
+ * or caller frames. A {@code depth} value of {@link com.sun.jdi.request.StepRequest#STEP_OUT}
* restricts step events to caller frames only. All depth
* restrictions are relative to the call stack immediately before the
* step takes place.
@@ -240,8 +240,7 @@
* Note that a typical debugger will want to cancel stepping
* after the first step is detected. Thus a next line method
* would do the following:
- * <code>
- * <pre>
+ * <pre>{@code
* EventRequestManager mgr = myVM.{@link VirtualMachine#eventRequestManager eventRequestManager}();
* StepRequest request = mgr.createStepRequest(myThread,
* StepRequest.{@link StepRequest#STEP_LINE STEP_LINE},
@@ -249,8 +248,7 @@
* request.{@link EventRequest#addCountFilter addCountFilter}(1); // next step only
* request.enable();
* myVM.{@link VirtualMachine#resume resume}();
- * </pre>
- * </code>
+ * }</pre>
*
* @param thread the thread in which to step
* @param depth the step depth
--- a/jdk/src/jdk.jdi/share/classes/jdi-overview.html Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.jdi/share/classes/jdi-overview.html Tue May 05 13:29:12 2015 -0700
@@ -49,7 +49,6 @@
Any method which takes a {@link java.lang.Object} as an parameter will throw
{@link java.lang.NullPointerException} if null is passed directly or indirectly
-- unless null is explicitly mentioned as a valid parameter.
- <p>
</blockquote>
NOTE: The exceptions below may be thrown whenever the specified
conditions are met but a guarantee that they are thrown only
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTDomainPrincipal.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTDomainPrincipal.java Tue May 05 13:29:12 2015 -0700
@@ -28,19 +28,19 @@
import java.security.Principal;
/**
- * <p> This class implements the <code>Principal</code> interface
+ * This class implements the {@code Principal} interface
* and represents the name of the Windows NT domain into which the
* user authenticated. This will be a domain name if the user logged
* into a Windows NT domain, a workgroup name if the user logged into
* a workgroup, or a machine name if the user logged into a standalone
* configuration.
*
- * <p> Principals such as this <code>NTDomainPrincipal</code>
- * may be associated with a particular <code>Subject</code>
- * to augment that <code>Subject</code> with an additional
- * identity. Refer to the <code>Subject</code> class for more information
+ * <p> Principals such as this {@code NTDomainPrincipal}
+ * may be associated with a particular {@code Subject}
+ * to augment that {@code Subject} with an additional
+ * identity. Refer to the {@code Subject} class for more information
* on how to achieve this. Authorization decisions can then be based upon
- * the Principals associated with a <code>Subject</code>.
+ * the Principals associated with a {@code Subject}.
*
* @see java.security.Principal
* @see javax.security.auth.Subject
@@ -56,14 +56,12 @@
private String name;
/**
- * Create an <code>NTDomainPrincipal</code> with a Windows NT domain name.
- *
- * <p>
+ * Create an {@code NTDomainPrincipal} with a Windows NT domain name.
*
- * @param name the Windows NT domain name for this user. <p>
+ * @param name the Windows NT domain name for this user.
*
- * @exception NullPointerException if the <code>name</code>
- * is <code>null</code>.
+ * @exception NullPointerException if the {@code name}
+ * is {@code null}.
*/
public NTDomainPrincipal(String name) {
if (name == null) {
@@ -79,23 +77,19 @@
/**
* Return the Windows NT domain name for this
- * <code>NTDomainPrincipal</code>.
- *
- * <p>
+ * {@code NTDomainPrincipal}.
*
* @return the Windows NT domain name for this
- * <code>NTDomainPrincipal</code>
+ * {@code NTDomainPrincipal}
*/
public String getName() {
return name;
}
/**
- * Return a string representation of this <code>NTDomainPrincipal</code>.
+ * Return a string representation of this {@code NTDomainPrincipal}.
*
- * <p>
- *
- * @return a string representation of this <code>NTDomainPrincipal</code>.
+ * @return a string representation of this {@code NTDomainPrincipal}.
*/
public String toString() {
java.text.MessageFormat form = new java.text.MessageFormat
@@ -107,18 +101,16 @@
}
/**
- * Compares the specified Object with this <code>NTDomainPrincipal</code>
+ * Compares the specified Object with this {@code NTDomainPrincipal}
* for equality. Returns true if the given object is also a
- * <code>NTDomainPrincipal</code> and the two NTDomainPrincipals
+ * {@code NTDomainPrincipal} and the two NTDomainPrincipals
* have the same name.
*
- * <p>
- *
* @param o Object to be compared for equality with this
- * <code>NTDomainPrincipal</code>.
+ * {@code NTDomainPrincipal}.
*
* @return true if the specified Object is equal to this
- * <code>NTDomainPrincipal</code>.
+ * {@code NTDomainPrincipal}.
*/
public boolean equals(Object o) {
if (o == null)
@@ -137,11 +129,9 @@
}
/**
- * Return a hash code for this <code>NTDomainPrincipal</code>.
+ * Return a hash code for this {@code NTDomainPrincipal}.
*
- * <p>
- *
- * @return a hash code for this <code>NTDomainPrincipal</code>.
+ * @return a hash code for this {@code NTDomainPrincipal}.
*/
public int hashCode() {
return this.getName().hashCode();
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTNumericCredential.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTNumericCredential.java Tue May 05 13:29:12 2015 -0700
@@ -26,9 +26,8 @@
package com.sun.security.auth;
/**
- * <p> This class abstracts an NT security token
+ * This class abstracts an NT security token
* and provides a mechanism to do same-process security impersonation.
- *
*/
@jdk.Exported
@@ -37,12 +36,9 @@
private long impersonationToken;
/**
- * Create an <code>NTNumericCredential</code> with an integer value.
+ * Create an {@code NTNumericCredential} with an integer value.
*
- * <p>
- *
- * @param token the Windows NT security token for this user. <p>
- *
+ * @param token the Windows NT security token for this user.
*/
public NTNumericCredential(long token) {
this.impersonationToken = token;
@@ -50,23 +46,19 @@
/**
* Return an integer representation of this
- * <code>NTNumericCredential</code>.
- *
- * <p>
+ * {@code NTNumericCredential}.
*
* @return an integer representation of this
- * <code>NTNumericCredential</code>.
+ * {@code NTNumericCredential}.
*/
public long getToken() {
return impersonationToken;
}
/**
- * Return a string representation of this <code>NTNumericCredential</code>.
+ * Return a string representation of this {@code NTNumericCredential}.
*
- * <p>
- *
- * @return a string representation of this <code>NTNumericCredential</code>.
+ * @return a string representation of this {@code NTNumericCredential}.
*/
public String toString() {
java.text.MessageFormat form = new java.text.MessageFormat
@@ -78,18 +70,16 @@
}
/**
- * Compares the specified Object with this <code>NTNumericCredential</code>
+ * Compares the specified Object with this {@code NTNumericCredential}
* for equality. Returns true if the given object is also a
- * <code>NTNumericCredential</code> and the two NTNumericCredentials
+ * {@code NTNumericCredential} and the two NTNumericCredentials
* represent the same NT security token.
*
- * <p>
- *
* @param o Object to be compared for equality with this
- * <code>NTNumericCredential</code>.
+ * {@code NTNumericCredential}.
*
* @return true if the specified Object is equal to this
- * <code>NTNumericCredential</code>.
+ * {@code NTNumericCredential}.
*/
public boolean equals(Object o) {
if (o == null)
@@ -108,11 +98,9 @@
}
/**
- * Return a hash code for this <code>NTNumericCredential</code>.
+ * Return a hash code for this {@code NTNumericCredential}.
*
- * <p>
- *
- * @return a hash code for this <code>NTNumericCredential</code>.
+ * @return a hash code for this {@code NTNumericCredential}.
*/
public int hashCode() {
return (int)this.impersonationToken;
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTSid.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTSid.java Tue May 05 13:29:12 2015 -0700
@@ -28,7 +28,7 @@
import java.security.Principal;
/**
- * <p> This class implements the <code>Principal</code> interface
+ * This class implements the {@code Principal} interface
* and represents information about a Windows NT user, group or realm.
*
* <p> Windows NT chooses to represent users, groups and realms (or domains)
@@ -37,12 +37,12 @@
* also provides services that render these SIDs into string forms.
* This class represents these string forms.
*
- * <p> Principals such as this <code>NTSid</code>
- * may be associated with a particular <code>Subject</code>
- * to augment that <code>Subject</code> with an additional
- * identity. Refer to the <code>Subject</code> class for more information
+ * <p> Principals such as this {@code NTSid}
+ * may be associated with a particular {@code Subject}
+ * to augment that {@code Subject} with an additional
+ * identity. Refer to the {@code Subject} class for more information
* on how to achieve this. Authorization decisions can then be based upon
- * the Principals associated with a <code>Subject</code>.
+ * the Principals associated with a {@code Subject}.
*
* @see java.security.Principal
* @see javax.security.auth.Subject
@@ -58,16 +58,14 @@
private String sid;
/**
- * Create an <code>NTSid</code> with a Windows NT SID.
+ * Create an {@code NTSid} with a Windows NT SID.
*
- * <p>
+ * @param stringSid the Windows NT SID.
*
- * @param stringSid the Windows NT SID. <p>
+ * @exception NullPointerException if the {@code String}
+ * is {@code null}.
*
- * @exception NullPointerException if the <code>String</code>
- * is <code>null</code>.
- *
- * @exception IllegalArgumentException if the <code>String</code>
+ * @exception IllegalArgumentException if the {@code String}
* has zero length.
*/
public NTSid (String stringSid) {
@@ -89,22 +87,18 @@
}
/**
- * Return a string version of this <code>NTSid</code>.
+ * Return a string version of this {@code NTSid}.
*
- * <p>
- *
- * @return a string version of this <code>NTSid</code>
+ * @return a string version of this {@code NTSid}
*/
public String getName() {
return sid;
}
/**
- * Return a string representation of this <code>NTSid</code>.
+ * Return a string representation of this {@code NTSid}.
*
- * <p>
- *
- * @return a string representation of this <code>NTSid</code>.
+ * @return a string representation of this {@code NTSid}.
*/
public String toString() {
java.text.MessageFormat form = new java.text.MessageFormat
@@ -116,18 +110,16 @@
}
/**
- * Compares the specified Object with this <code>NTSid</code>
+ * Compares the specified Object with this {@code NTSid}
* for equality. Returns true if the given object is also a
- * <code>NTSid</code> and the two NTSids have the same String
+ * {@code NTSid} and the two NTSids have the same String
* representation.
*
- * <p>
- *
* @param o Object to be compared for equality with this
- * <code>NTSid</code>.
+ * {@code NTSid}.
*
* @return true if the specified Object is equal to this
- * <code>NTSid</code>.
+ * {@code NTSid}.
*/
public boolean equals(Object o) {
if (o == null)
@@ -147,11 +139,9 @@
}
/**
- * Return a hash code for this <code>NTSid</code>.
+ * Return a hash code for this {@code NTSid}.
*
- * <p>
- *
- * @return a hash code for this <code>NTSid</code>.
+ * @return a hash code for this {@code NTSid}.
*/
public int hashCode() {
return sid.hashCode();
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTSidDomainPrincipal.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTSidDomainPrincipal.java Tue May 05 13:29:12 2015 -0700
@@ -26,19 +26,19 @@
package com.sun.security.auth;
/**
- * <p> This class extends <code>NTSid</code>
+ * This class extends {@code NTSid}
* and represents a Windows NT user's domain SID.
*
* <p> An NT user only has a domain SID if in fact they are logged
* into an NT domain. If the user is logged into a workgroup or
* just a standalone configuration, they will NOT have a domain SID.
*
- * <p> Principals such as this <code>NTSidDomainPrincipal</code>
- * may be associated with a particular <code>Subject</code>
- * to augment that <code>Subject</code> with an additional
- * identity. Refer to the <code>Subject</code> class for more information
+ * <p> Principals such as this {@code NTSidDomainPrincipal}
+ * may be associated with a particular {@code Subject}
+ * to augment that {@code Subject} with an additional
+ * identity. Refer to the {@code Subject} class for more information
* on how to achieve this. Authorization decisions can then be based upon
- * the Principals associated with a <code>Subject</code>.
+ * the Principals associated with a {@code Subject}.
*
* @see java.security.Principal
* @see javax.security.auth.Subject
@@ -49,27 +49,23 @@
private static final long serialVersionUID = 5247810785821650912L;
/**
- * Create an <code>NTSidDomainPrincipal</code> with a Windows NT SID.
- *
- * <p>
+ * Create an {@code NTSidDomainPrincipal} with a Windows NT SID.
*
* @param name a string version of the Windows NT SID for this
- * user's domain.<p>
+ * user's domain.
*
- * @exception NullPointerException if the <code>name</code>
- * is <code>null</code>.
+ * @exception NullPointerException if the {@code name}
+ * is {@code null}.
*/
public NTSidDomainPrincipal(String name) {
super(name);
}
/**
- * Return a string representation of this <code>NTSidDomainPrincipal</code>.
- *
- * <p>
+ * Return a string representation of this {@code NTSidDomainPrincipal}.
*
* @return a string representation of this
- * <code>NTSidDomainPrincipal</code>.
+ * {@code NTSidDomainPrincipal}.
*/
public String toString() {
java.text.MessageFormat form = new java.text.MessageFormat
@@ -81,18 +77,16 @@
}
/**
- * Compares the specified Object with this <code>NTSidDomainPrincipal</code>
+ * Compares the specified Object with this {@code NTSidDomainPrincipal}
* for equality. Returns true if the given object is also a
- * <code>NTSidDomainPrincipal</code> and the two NTSidDomainPrincipals
+ * {@code NTSidDomainPrincipal} and the two NTSidDomainPrincipals
* have the same SID.
*
- * <p>
- *
* @param o Object to be compared for equality with this
- * <code>NTSidDomainPrincipal</code>.
+ * {@code NTSidDomainPrincipal}.
*
* @return true if the specified Object is equal to this
- * <code>NTSidDomainPrincipal</code>.
+ * {@code NTSidDomainPrincipal}.
*/
public boolean equals(Object o) {
if (o == null)
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTSidGroupPrincipal.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTSidGroupPrincipal.java Tue May 05 13:29:12 2015 -0700
@@ -26,15 +26,15 @@
package com.sun.security.auth;
/**
- * <p> This class extends <code>NTSid</code>
+ * This class extends {@code NTSid}
* and represents one of the groups to which a Windows NT user belongs.
*
- * <p> Principals such as this <code>NTSidGroupPrincipal</code>
- * may be associated with a particular <code>Subject</code>
- * to augment that <code>Subject</code> with an additional
- * identity. Refer to the <code>Subject</code> class for more information
+ * <p> Principals such as this {@code NTSidGroupPrincipal}
+ * may be associated with a particular {@code Subject}
+ * to augment that {@code Subject} with an additional
+ * identity. Refer to the {@code Subject} class for more information
* on how to achieve this. Authorization decisions can then be based upon
- * the Principals associated with a <code>Subject</code>.
+ * the Principals associated with a {@code Subject}.
*
* @see java.security.Principal
* @see javax.security.auth.Subject
@@ -46,25 +46,21 @@
private static final long serialVersionUID = -1373347438636198229L;
/**
- * Create an <code>NTSidGroupPrincipal</code> with a Windows NT group name.
- *
- * <p>
+ * Create an {@code NTSidGroupPrincipal} with a Windows NT group name.
*
- * @param name the Windows NT group SID for this user. <p>
+ * @param name the Windows NT group SID for this user.
*
- * @exception NullPointerException if the <code>name</code>
- * is <code>null</code>.
+ * @exception NullPointerException if the {@code name}
+ * is {@code null}.
*/
public NTSidGroupPrincipal(String name) {
super(name);
}
/**
- * Return a string representation of this <code>NTSidGroupPrincipal</code>.
+ * Return a string representation of this {@code NTSidGroupPrincipal}.
*
- * <p>
- *
- * @return a string representation of this <code>NTSidGroupPrincipal</code>.
+ * @return a string representation of this {@code NTSidGroupPrincipal}.
*/
public String toString() {
java.text.MessageFormat form = new java.text.MessageFormat
@@ -76,18 +72,16 @@
}
/**
- * Compares the specified Object with this <code>NTSidGroupPrincipal</code>
+ * Compares the specified Object with this {@code NTSidGroupPrincipal}
* for equality. Returns true if the given object is also a
- * <code>NTSidGroupPrincipal</code> and the two NTSidGroupPrincipals
+ * {@code NTSidGroupPrincipal} and the two NTSidGroupPrincipals
* have the same SID.
*
- * <p>
- *
* @param o Object to be compared for equality with this
- * <code>NTSidGroupPrincipal</code>.
+ * {@code NTSidGroupPrincipal}.
*
* @return true if the specified Object is equal to this
- * <code>NTSidGroupPrincipal</code>.
+ * {@code NTSidGroupPrincipal}.
*/
public boolean equals(Object o) {
if (o == null)
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTSidPrimaryGroupPrincipal.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTSidPrimaryGroupPrincipal.java Tue May 05 13:29:12 2015 -0700
@@ -26,15 +26,15 @@
package com.sun.security.auth;
/**
- * <p> This class extends <code>NTSid</code>
+ * This class extends {@code NTSid}
* and represents a Windows NT user's primary group SID.
*
- * <p> Principals such as this <code>NTSidPrimaryGroupPrincipal</code>
- * may be associated with a particular <code>Subject</code>
- * to augment that <code>Subject</code> with an additional
- * identity. Refer to the <code>Subject</code> class for more information
+ * <p> Principals such as this {@code NTSidPrimaryGroupPrincipal}
+ * may be associated with a particular {@code Subject}
+ * to augment that {@code Subject} with an additional
+ * identity. Refer to the {@code Subject} class for more information
* on how to achieve this. Authorization decisions can then be based upon
- * the Principals associated with a <code>Subject</code>.
+ * the Principals associated with a {@code Subject}.
*
* @see java.security.Principal
* @see javax.security.auth.Subject
@@ -45,15 +45,13 @@
private static final long serialVersionUID = 8011978367305190527L;
/**
- * Create an <code>NTSidPrimaryGroupPrincipal</code> with a Windows NT
+ * Create an {@code NTSidPrimaryGroupPrincipal} with a Windows NT
* group SID.
*
- * <p>
+ * @param name the primary Windows NT group SID for this user.
*
- * @param name the primary Windows NT group SID for this user. <p>
- *
- * @exception NullPointerException if the <code>name</code>
- * is <code>null</code>.
+ * @exception NullPointerException if the {@code name}
+ * is {@code null}.
*/
public NTSidPrimaryGroupPrincipal(String name) {
super(name);
@@ -61,12 +59,10 @@
/**
* Return a string representation of this
- * <code>NTSidPrimaryGroupPrincipal</code>.
- *
- * <p>
+ * {@code NTSidPrimaryGroupPrincipal}.
*
* @return a string representation of this
- * <code>NTSidPrimaryGroupPrincipal</code>.
+ * {@code NTSidPrimaryGroupPrincipal}.
*/
public String toString() {
java.text.MessageFormat form = new java.text.MessageFormat
@@ -79,18 +75,16 @@
/**
* Compares the specified Object with this
- * <code>NTSidPrimaryGroupPrincipal</code>
+ * {@code NTSidPrimaryGroupPrincipal}
* for equality. Returns true if the given object is also a
- * <code>NTSidPrimaryGroupPrincipal</code> and the two
+ * {@code NTSidPrimaryGroupPrincipal} and the two
* NTSidPrimaryGroupPrincipals have the same SID.
*
- * <p>
- *
* @param o Object to be compared for equality with this
- * <code>NTSidPrimaryGroupPrincipal</code>.
+ * {@code NTSidPrimaryGroupPrincipal}.
*
* @return true if the specified Object is equal to this
- * <code>NTSidPrimaryGroupPrincipal</code>.
+ * {@code NTSidPrimaryGroupPrincipal}.
*/
public boolean equals(Object o) {
if (o == null)
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTSidUserPrincipal.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTSidUserPrincipal.java Tue May 05 13:29:12 2015 -0700
@@ -26,15 +26,15 @@
package com.sun.security.auth;
/**
- * <p> This class extends <code>NTSid</code>
+ * This class extends {@code NTSid}
* and represents a Windows NT user's SID.
*
- * <p> Principals such as this <code>NTSidUserPrincipal</code>
- * may be associated with a particular <code>Subject</code>
- * to augment that <code>Subject</code> with an additional
- * identity. Refer to the <code>Subject</code> class for more information
+ * <p> Principals such as this {@code NTSidUserPrincipal}
+ * may be associated with a particular {@code Subject}
+ * to augment that {@code Subject} with an additional
+ * identity. Refer to the {@code Subject} class for more information
* on how to achieve this. Authorization decisions can then be based upon
- * the Principals associated with a <code>Subject</code>.
+ * the Principals associated with a {@code Subject}.
*
* @see java.security.Principal
* @see javax.security.auth.Subject
@@ -45,25 +45,21 @@
private static final long serialVersionUID = -5573239889517749525L;
/**
- * Create an <code>NTSidUserPrincipal</code> with a Windows NT SID.
- *
- * <p>
+ * Create an {@code NTSidUserPrincipal} with a Windows NT SID.
*
- * @param name a string version of the Windows NT SID for this user.<p>
+ * @param name a string version of the Windows NT SID for this user.
*
- * @exception NullPointerException if the <code>name</code>
- * is <code>null</code>.
+ * @exception NullPointerException if the {@code name}
+ * is {@code null}.
*/
public NTSidUserPrincipal(String name) {
super(name);
}
/**
- * Return a string representation of this <code>NTSidUserPrincipal</code>.
+ * Return a string representation of this {@code NTSidUserPrincipal}.
*
- * <p>
- *
- * @return a string representation of this <code>NTSidUserPrincipal</code>.
+ * @return a string representation of this {@code NTSidUserPrincipal}.
*/
public String toString() {
java.text.MessageFormat form = new java.text.MessageFormat
@@ -75,18 +71,16 @@
}
/**
- * Compares the specified Object with this <code>NTSidUserPrincipal</code>
+ * Compares the specified Object with this {@code NTSidUserPrincipal}
* for equality. Returns true if the given object is also a
- * <code>NTSidUserPrincipal</code> and the two NTSidUserPrincipals
+ * {@code NTSidUserPrincipal} and the two NTSidUserPrincipals
* have the same SID.
*
- * <p>
- *
* @param o Object to be compared for equality with this
- * <code>NTSidUserPrincipal</code>.
+ * {@code NTSidUserPrincipal}.
*
* @return true if the specified Object is equal to this
- * <code>NTSidUserPrincipal</code>.
+ * {@code NTSidUserPrincipal}.
*/
public boolean equals(Object o) {
if (o == null)
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTUserPrincipal.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/NTUserPrincipal.java Tue May 05 13:29:12 2015 -0700
@@ -28,15 +28,15 @@
import java.security.Principal;
/**
- * <p> This class implements the <code>Principal</code> interface
+ * This class implements the {@code Principal} interface
* and represents a Windows NT user.
*
- * <p> Principals such as this <code>NTUserPrincipal</code>
- * may be associated with a particular <code>Subject</code>
- * to augment that <code>Subject</code> with an additional
- * identity. Refer to the <code>Subject</code> class for more information
+ * <p> Principals such as this {@code NTUserPrincipal}
+ * may be associated with a particular {@code Subject}
+ * to augment that {@code Subject} with an additional
+ * identity. Refer to the {@code Subject} class for more information
* on how to achieve this. Authorization decisions can then be based upon
- * the Principals associated with a <code>Subject</code>.
+ * the Principals associated with a {@code Subject}.
*
* @see java.security.Principal
* @see javax.security.auth.Subject
@@ -52,14 +52,12 @@
private String name;
/**
- * Create an <code>NTUserPrincipal</code> with a Windows NT username.
- *
- * <p>
+ * Create an {@code NTUserPrincipal} with a Windows NT username.
*
- * @param name the Windows NT username for this user. <p>
+ * @param name the Windows NT username for this user.
*
- * @exception NullPointerException if the <code>name</code>
- * is <code>null</code>.
+ * @exception NullPointerException if the {@code name}
+ * is {@code null}.
*/
public NTUserPrincipal(String name) {
if (name == null) {
@@ -74,22 +72,18 @@
}
/**
- * Return the Windows NT username for this <code>NTPrincipal</code>.
+ * Return the Windows NT username for this {@code NTPrincipal}.
*
- * <p>
- *
- * @return the Windows NT username for this <code>NTPrincipal</code>
+ * @return the Windows NT username for this {@code NTPrincipal}
*/
public String getName() {
return name;
}
/**
- * Return a string representation of this <code>NTPrincipal</code>.
+ * Return a string representation of this {@code NTPrincipal}.
*
- * <p>
- *
- * @return a string representation of this <code>NTPrincipal</code>.
+ * @return a string representation of this {@code NTPrincipal}.
*/
public String toString() {
java.text.MessageFormat form = new java.text.MessageFormat
@@ -101,18 +95,16 @@
}
/**
- * Compares the specified Object with this <code>NTUserPrincipal</code>
+ * Compares the specified Object with this {@code NTUserPrincipal}
* for equality. Returns true if the given object is also a
- * <code>NTUserPrincipal</code> and the two NTUserPrincipals
+ * {@code NTUserPrincipal} and the two NTUserPrincipals
* have the same name.
*
- * <p>
- *
* @param o Object to be compared for equality with this
- * <code>NTPrincipal</code>.
+ * {@code NTPrincipal}.
*
* @return true if the specified Object is equal to this
- * <code>NTPrincipal</code>.
+ * {@code NTPrincipal}.
*/
public boolean equals(Object o) {
if (o == null)
@@ -131,11 +123,9 @@
}
/**
- * Return a hash code for this <code>NTUserPrincipal</code>.
+ * Return a hash code for this {@code NTUserPrincipal}.
*
- * <p>
- *
- * @return a hash code for this <code>NTUserPrincipal</code>.
+ * @return a hash code for this {@code NTUserPrincipal}.
*/
public int hashCode() {
return this.getName().hashCode();
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/PolicyFile.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/PolicyFile.java Tue May 05 13:29:12 2015 -0700
@@ -31,25 +31,25 @@
/**
* This class represents a default implementation for
- * <code>javax.security.auth.Policy</code>.
+ * {@code javax.security.auth.Policy}.
*
* <p> This object stores the policy for entire Java runtime,
* and is the amalgamation of multiple static policy
* configurations that resides in files.
* The algorithm for locating the policy file(s) and reading their
- * information into this <code>Policy</code> object is:
+ * information into this {@code Policy} object is:
*
* <ol>
* <li>
* Loop through the security properties,
* <i>auth.policy.url.1</i>, <i>auth.policy.url.2</i>, ...,
* <i>auth.policy.url.X</i>".
- * Each property value specifies a <code>URL</code> pointing to a
+ * Each property value specifies a {@code URL} pointing to a
* policy file to be loaded. Read in and load each policy.
*
* <li>
- * The <code>java.lang.System</code> property <i>java.security.auth.policy</i>
- * may also be set to a <code>URL</code> pointing to another policy file
+ * The {@code java.lang.System} property <i>java.security.auth.policy</i>
+ * may also be set to a {@code URL} pointing to another policy file
* (which is the case when a user uses the -D switch at runtime).
* If this property is defined, and its use is allowed by the
* security property file (the Security property,
@@ -83,35 +83,35 @@
* doesn't matter and some are optional, as noted below).
* Italicized items represent variable values.
*
- * <p> A grant entry must begin with the word <code>grant</code>.
- * The <code>signedBy</code> and <code>codeBase</code>
+ * <p> A grant entry must begin with the word {@code grant}.
+ * The {@code signedBy} and {@code codeBase}
* name/value pairs are optional.
* If they are not present, then any signer (including unsigned code)
* will match, and any codeBase will match. Note that the
- * <code>principal</code> name/value pair is not optional.
- * This <code>Policy</code> implementation only permits
+ * {@code principal} name/value pair is not optional.
+ * This {@code Policy} implementation only permits
* Principal-based grant entries. Note that the <i>principalClass</i>
* may be set to the wildcard value, *, which allows it to match
- * any <code>Principal</code> class. In addition, the <i>principalName</i>
+ * any {@code Principal} class. In addition, the <i>principalName</i>
* may also be set to the wildcard value, *, allowing it to match
- * any <code>Principal</code> name. When setting the <i>principalName</i>
+ * any {@code Principal} name. When setting the <i>principalName</i>
* to the *, do not surround the * with quotes.
*
- * <p> A permission entry must begin with the word <code>permission</code>.
- * The word <code><i>Type</i></code> in the template above is
- * a specific permission type, such as <code>java.io.FilePermission</code>
- * or <code>java.lang.RuntimePermission</code>.
+ * <p> A permission entry must begin with the word {@code permission}.
+ * The word <i>{@code Type}</i> in the template above is
+ * a specific permission type, such as {@code java.io.FilePermission}
+ * or {@code java.lang.RuntimePermission}.
*
* <p> The "<i>action</i>" is required for
- * many permission types, such as <code>java.io.FilePermission</code>
+ * many permission types, such as {@code java.io.FilePermission}
* (where it specifies what type of file access that is permitted).
* It is not required for categories such as
- * <code>java.lang.RuntimePermission</code>
+ * {@code java.lang.RuntimePermission}
* where it is not necessary - you either have the
- * permission specified by the <code>"<i>name</i>"</code>
+ * permission specified by the "<i>{@code name}</i>"
* value following the type name or you don't.
*
- * <p> The <code>signedBy</code> name/value pair for a permission entry
+ * <p> The {@code signedBy} name/value pair for a permission entry
* is optional. If present, it indicates a signed permission. That is,
* the permission class itself must be signed by the given alias in
* order for it to be granted. For example,
@@ -124,18 +124,18 @@
* </pre>
*
* <p> Then this permission of type <i>Foo</i> is granted if the
- * <code>Foo.class</code> permission has been signed by the
- * "FooSoft" alias, or if <code>Foo.class</code> is a
+ * {@code Foo.class} permission has been signed by the
+ * "FooSoft" alias, or if {@code Foo.class} is a
* system class (i.e., is found on the CLASSPATH).
*
* <p> Items that appear in an entry must appear in the specified order
- * (<code>permission</code>, <i>Type</i>, "<i>name</i>", and
+ * ({@code permission}, <i>Type</i>, "<i>name</i>", and
* "<i>action</i>"). An entry is terminated with a semicolon.
*
- * <p> Case is unimportant for the identifiers (<code>permission</code>,
- * <code>signedBy</code>, <code>codeBase</code>, etc.) but is
+ * <p> Case is unimportant for the identifiers ({@code permission},
+ * {@code signedBy}, {@code codeBase}, etc.) but is
* significant for the <i>Type</i>
- * or for any string that is passed in as a value. <p>
+ * or for any string that is passed in as a value.
*
* <p> An example of two entries in a policy configuration file is
* <pre>
@@ -153,15 +153,15 @@
* permission java.util.PropertyPermission "java.vendor";
* </pre>
*
- * <p> This <code>Policy</code> implementation supports
+ * <p> This {@code Policy} implementation supports
* special handling for PrivateCredentialPermissions.
* If a grant entry is configured with a
- * <code>PrivateCredentialPermission</code>,
+ * {@code PrivateCredentialPermission},
* and the "Principal Class/Principal Name" for that
- * <code>PrivateCredentialPermission</code> is "self",
- * then the entry grants the specified <code>Subject</code> permission to
+ * {@code PrivateCredentialPermission} is "self",
+ * then the entry grants the specified {@code Subject} permission to
* access its own private Credential. For example,
- * the following grants the <code>Subject</code> "Duke"
+ * the following grants the {@code Subject} "Duke"
* access to its own a.b.Credential.
*
* <pre>
@@ -172,7 +172,7 @@
* };
* </pre>
*
- * The following grants the <code>Subject</code> "Duke"
+ * The following grants the {@code Subject} "Duke"
* access to all of its own private Credentials:
*
* <pre>
@@ -184,7 +184,7 @@
* </pre>
*
* The following grants all Subjects authenticated as a
- * <code>SolarisPrincipal</code> (regardless of their respective names)
+ * {@code SolarisPrincipal} (regardless of their respective names)
* permission to access their own private Credentials:
*
* <pre>
@@ -207,7 +207,7 @@
* </pre>
* @deprecated As of JDK 1.4, replaced by
- * <code>sun.security.provider.PolicyFile</code>.
+ * {@code sun.security.provider.PolicyFile}.
* This class is entirely deprecated.
*
* @see java.security.CodeSource
@@ -232,10 +232,8 @@
/**
* Refreshes the policy object by re-reading all the policy files.
*
- * <p>
- *
* @exception SecurityException if the caller doesn't have permission
- * to refresh the <code>Policy</code>.
+ * to refresh the {@code Policy}.
*/
@Override
public void refresh() {
@@ -243,59 +241,56 @@
}
/**
- * Examines this <code>Policy</code> and returns the Permissions granted
- * to the specified <code>Subject</code> and <code>CodeSource</code>.
+ * Examines this {@code Policy} and returns the Permissions granted
+ * to the specified {@code Subject} and {@code CodeSource}.
*
* <p> Permissions for a particular <i>grant</i> entry are returned
- * if the <code>CodeSource</code> constructed using the codebase and
- * signedby values specified in the entry <code>implies</code>
- * the <code>CodeSource</code> provided to this method, and if the
- * <code>Subject</code> provided to this method contains all of the
+ * if the {@code CodeSource} constructed using the codebase and
+ * signedby values specified in the entry {@code implies}
+ * the {@code CodeSource} provided to this method, and if the
+ * {@code Subject} provided to this method contains all of the
* Principals specified in the entry.
*
- * <p> The <code>Subject</code> provided to this method contains all
+ * <p> The {@code Subject} provided to this method contains all
* of the Principals specified in the entry if, for each
- * <code>Principal</code>, "P1", specified in the <i>grant</i> entry
+ * {@code Principal}, "P1", specified in the <i>grant</i> entry
* one of the following two conditions is met:
*
- * <p>
* <ol>
- * <li> the <code>Subject</code> has a
- * <code>Principal</code>, "P2", where
- * <code>P2.getClass().getName()</code> equals the
+ * <li> the {@code Subject} has a
+ * {@code Principal}, "P2", where
+ * {@code P2.getClass().getName()} equals the
* P1's class name, and where
- * <code>P2.getName()</code> equals the P1's name.
+ * {@code P2.getName()} equals the P1's name.
*
* <li> P1 implements
- * <code>com.sun.security.auth.PrincipalComparator</code>,
- * and <code>P1.implies</code> the provided <code>Subject</code>.
+ * {@code com.sun.security.auth.PrincipalComparator},
+ * and {@code P1.implies} the provided {@code Subject}.
* </ol>
*
- * <p> Note that this <code>Policy</code> implementation has
+ * <p> Note that this {@code Policy} implementation has
* special handling for PrivateCredentialPermissions.
- * When this method encounters a <code>PrivateCredentialPermission</code>
- * which specifies "self" as the <code>Principal</code> class and name,
- * it does not add that <code>Permission</code> to the returned
- * <code>PermissionCollection</code>. Instead, it builds
- * a new <code>PrivateCredentialPermission</code>
- * for each <code>Principal</code> associated with the provided
- * <code>Subject</code>. Each new <code>PrivateCredentialPermission</code>
+ * When this method encounters a {@code PrivateCredentialPermission}
+ * which specifies "self" as the {@code Principal} class and name,
+ * it does not add that {@code Permission} to the returned
+ * {@code PermissionCollection}. Instead, it builds
+ * a new {@code PrivateCredentialPermission}
+ * for each {@code Principal} associated with the provided
+ * {@code Subject}. Each new {@code PrivateCredentialPermission}
* contains the same Credential class as specified in the
* originally granted permission, as well as the Class and name
- * for the respective <code>Principal</code>.
- *
- * <p>
+ * for the respective {@code Principal}.
*
- * @param subject the Permissions granted to this <code>Subject</code>
- * and the additionally provided <code>CodeSource</code>
- * are returned. <p>
- *
- * @param codesource the Permissions granted to this <code>CodeSource</code>
- * and the additionally provided <code>Subject</code>
+ * @param subject the Permissions granted to this {@code Subject}
+ * and the additionally provided {@code CodeSource}
* are returned.
*
- * @return the Permissions granted to the provided <code>Subject</code>
- * <code>CodeSource</code>.
+ * @param codesource the Permissions granted to this {@code CodeSource}
+ * and the additionally provided {@code Subject}
+ * are returned.
+ *
+ * @return the Permissions granted to the provided {@code Subject}
+ * {@code CodeSource}.
*/
@Override
public PermissionCollection getPermissions(final Subject subject,
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/PrincipalComparator.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/PrincipalComparator.java Tue May 05 13:29:12 2015 -0700
@@ -26,25 +26,25 @@
package com.sun.security.auth;
/**
- * An object that implements the <code>java.security.Principal</code>
+ * An object that implements the {@code java.security.Principal}
* interface typically also implements this interface to provide
- * a means for comparing that object to a specified <code>Subject</code>.
+ * a means for comparing that object to a specified {@code Subject}.
*
- * <p> The comparison is achieved via the <code>implies</code> method.
- * The implementation of the <code>implies</code> method determines
- * whether this object "implies" the specified <code>Subject</code>.
+ * <p> The comparison is achieved via the {@code implies} method.
+ * The implementation of the {@code implies} method determines
+ * whether this object "implies" the specified {@code Subject}.
* One example application of this method may be for
- * a "group" object to imply a particular <code>Subject</code>
- * if that <code>Subject</code> belongs to the group.
+ * a "group" object to imply a particular {@code Subject}
+ * if that {@code Subject} belongs to the group.
* Another example application of this method would be for
- * "role" object to imply a particular <code>Subject</code>
- * if that <code>Subject</code> is currently acting in that role.
+ * "role" object to imply a particular {@code Subject}
+ * if that {@code Subject} is currently acting in that role.
*
* <p> Although classes that implement this interface typically
- * also implement the <code>java.security.Principal</code> interface,
+ * also implement the {@code java.security.Principal} interface,
* it is not required. In other words, classes may implement the
- * <code>java.security.Principal</code> interface by itself,
- * the <code>PrincipalComparator</code> interface by itself,
+ * {@code java.security.Principal} interface by itself,
+ * the {@code PrincipalComparator} interface by itself,
* or both at the same time.
*
* @see java.security.Principal
@@ -53,12 +53,10 @@
@jdk.Exported
public interface PrincipalComparator {
/**
- * Check if the specified <code>Subject</code> is implied by
+ * Check if the specified {@code Subject} is implied by
* this object.
*
- * <p>
- *
- * @return true if the specified <code>Subject</code> is implied by
+ * @return true if the specified {@code Subject} is implied by
* this object, or false otherwise.
*/
boolean implies(javax.security.auth.Subject subject);
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/SolarisNumericGroupPrincipal.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/SolarisNumericGroupPrincipal.java Tue May 05 13:29:12 2015 -0700
@@ -28,15 +28,15 @@
import java.security.Principal;
/**
- * <p> This class implements the <code>Principal</code> interface
+ * This class implements the {@code Principal} interface
* and represents a user's Solaris group identification number (GID).
*
- * <p> Principals such as this <code>SolarisNumericGroupPrincipal</code>
- * may be associated with a particular <code>Subject</code>
- * to augment that <code>Subject</code> with an additional
- * identity. Refer to the <code>Subject</code> class for more information
+ * <p> Principals such as this {@code SolarisNumericGroupPrincipal}
+ * may be associated with a particular {@code Subject}
+ * to augment that {@code Subject} with an additional
+ * identity. Refer to the {@code Subject} class for more information
* on how to achieve this. Authorization decisions can then be based upon
- * the Principals associated with a <code>Subject</code>.
+ * the Principals associated with a {@code Subject}.
* @deprecated As of JDK 1.4, replaced by
* {@link UnixNumericGroupPrincipal}.
@@ -73,20 +73,18 @@
private boolean primaryGroup;
/**
- * Create a <code>SolarisNumericGroupPrincipal</code> using a
- * <code>String</code> representation of the user's
+ * Create a {@code SolarisNumericGroupPrincipal} using a
+ * {@code String} representation of the user's
* group identification number (GID).
*
- * <p>
- *
* @param name the user's group identification number (GID)
- * for this user. <p>
+ * for this user.
*
* @param primaryGroup true if the specified GID represents the
* primary group to which this user belongs.
*
- * @exception NullPointerException if the <code>name</code>
- * is <code>null</code>.
+ * @exception NullPointerException if the {@code name}
+ * is {@code null}.
*/
public SolarisNumericGroupPrincipal(String name, boolean primaryGroup) {
if (name == null)
@@ -97,13 +95,11 @@
}
/**
- * Create a <code>SolarisNumericGroupPrincipal</code> using a
+ * Create a {@code SolarisNumericGroupPrincipal} using a
* long representation of the user's group identification number (GID).
*
- * <p>
- *
* @param name the user's group identification number (GID) for this user
- * represented as a long. <p>
+ * represented as a long.
*
* @param primaryGroup true if the specified GID represents the
* primary group to which this user belongs.
@@ -116,12 +112,10 @@
/**
* Return the user's group identification number (GID) for this
- * <code>SolarisNumericGroupPrincipal</code>.
- *
- * <p>
+ * {@code SolarisNumericGroupPrincipal}.
*
* @return the user's group identification number (GID) for this
- * <code>SolarisNumericGroupPrincipal</code>
+ * {@code SolarisNumericGroupPrincipal}
*/
public String getName() {
return name;
@@ -129,12 +123,10 @@
/**
* Return the user's group identification number (GID) for this
- * <code>SolarisNumericGroupPrincipal</code> as a long.
- *
- * <p>
+ * {@code SolarisNumericGroupPrincipal} as a long.
*
* @return the user's group identification number (GID) for this
- * <code>SolarisNumericGroupPrincipal</code> as a long.
+ * {@code SolarisNumericGroupPrincipal} as a long.
*/
public long longValue() {
return Long.parseLong(name);
@@ -144,8 +136,6 @@
* Return whether this group identification number (GID) represents
* the primary group to which this user belongs.
*
- * <p>
- *
* @return true if this group identification number (GID) represents
* the primary group to which this user belongs,
* or false otherwise.
@@ -156,12 +146,10 @@
/**
* Return a string representation of this
- * <code>SolarisNumericGroupPrincipal</code>.
- *
- * <p>
+ * {@code SolarisNumericGroupPrincipal}.
*
* @return a string representation of this
- * <code>SolarisNumericGroupPrincipal</code>.
+ * {@code SolarisNumericGroupPrincipal}.
*/
public String toString() {
return((primaryGroup ?
@@ -173,19 +161,17 @@
/**
* Compares the specified Object with this
- * <code>SolarisNumericGroupPrincipal</code>
+ * {@code SolarisNumericGroupPrincipal}
* for equality. Returns true if the given object is also a
- * <code>SolarisNumericGroupPrincipal</code> and the two
+ * {@code SolarisNumericGroupPrincipal} and the two
* SolarisNumericGroupPrincipals
* have the same group identification number (GID).
*
- * <p>
- *
* @param o Object to be compared for equality with this
- * <code>SolarisNumericGroupPrincipal</code>.
+ * {@code SolarisNumericGroupPrincipal}.
*
* @return true if the specified Object is equal to this
- * <code>SolarisNumericGroupPrincipal</code>.
+ * {@code SolarisNumericGroupPrincipal}.
*/
public boolean equals(Object o) {
if (o == null)
@@ -205,11 +191,9 @@
}
/**
- * Return a hash code for this <code>SolarisNumericGroupPrincipal</code>.
+ * Return a hash code for this {@code SolarisNumericGroupPrincipal}.
*
- * <p>
- *
- * @return a hash code for this <code>SolarisNumericGroupPrincipal</code>.
+ * @return a hash code for this {@code SolarisNumericGroupPrincipal}.
*/
public int hashCode() {
return toString().hashCode();
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/SolarisNumericUserPrincipal.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/SolarisNumericUserPrincipal.java Tue May 05 13:29:12 2015 -0700
@@ -28,15 +28,15 @@
import java.security.Principal;
/**
- * <p> This class implements the <code>Principal</code> interface
+ * This class implements the {@code Principal} interface
* and represents a user's Solaris identification number (UID).
*
- * <p> Principals such as this <code>SolarisNumericUserPrincipal</code>
- * may be associated with a particular <code>Subject</code>
- * to augment that <code>Subject</code> with an additional
- * identity. Refer to the <code>Subject</code> class for more information
+ * <p> Principals such as this {@code SolarisNumericUserPrincipal}
+ * may be associated with a particular {@code Subject}
+ * to augment that {@code Subject} with an additional
+ * identity. Refer to the {@code Subject} class for more information
* on how to achieve this. Authorization decisions can then be based upon
- * the Principals associated with a <code>Subject</code>.
+ * the Principals associated with a {@code Subject}.
* @deprecated As of JDK 1.4, replaced by
* {@link UnixNumericUserPrincipal}.
* This class is entirely deprecated.
@@ -68,16 +68,14 @@
private String name;
/**
- * Create a <code>SolarisNumericUserPrincipal</code> using a
- * <code>String</code> representation of the
+ * Create a {@code SolarisNumericUserPrincipal} using a
+ * {@code String} representation of the
* user's identification number (UID).
*
- * <p>
- *
* @param name the user identification number (UID) for this user.
*
- * @exception NullPointerException if the <code>name</code>
- * is <code>null</code>.
+ * @exception NullPointerException if the {@code name}
+ * is {@code null}.
*/
public SolarisNumericUserPrincipal(String name) {
if (name == null)
@@ -87,11 +85,9 @@
}
/**
- * Create a <code>SolarisNumericUserPrincipal</code> using a
+ * Create a {@code SolarisNumericUserPrincipal} using a
* long representation of the user's identification number (UID).
*
- * <p>
- *
* @param name the user identification number (UID) for this user
* represented as a long.
*/
@@ -101,12 +97,10 @@
/**
* Return the user identification number (UID) for this
- * <code>SolarisNumericUserPrincipal</code>.
- *
- * <p>
+ * {@code SolarisNumericUserPrincipal}.
*
* @return the user identification number (UID) for this
- * <code>SolarisNumericUserPrincipal</code>
+ * {@code SolarisNumericUserPrincipal}
*/
public String getName() {
return name;
@@ -114,12 +108,10 @@
/**
* Return the user identification number (UID) for this
- * <code>SolarisNumericUserPrincipal</code> as a long.
- *
- * <p>
+ * {@code SolarisNumericUserPrincipal} as a long.
*
* @return the user identification number (UID) for this
- * <code>SolarisNumericUserPrincipal</code> as a long.
+ * {@code SolarisNumericUserPrincipal} as a long.
*/
public long longValue() {
return Long.parseLong(name);
@@ -127,12 +119,10 @@
/**
* Return a string representation of this
- * <code>SolarisNumericUserPrincipal</code>.
- *
- * <p>
+ * {@code SolarisNumericUserPrincipal}.
*
* @return a string representation of this
- * <code>SolarisNumericUserPrincipal</code>.
+ * {@code SolarisNumericUserPrincipal}.
*/
public String toString() {
return(rb.getString("SolarisNumericUserPrincipal.") + name);
@@ -140,19 +130,17 @@
/**
* Compares the specified Object with this
- * <code>SolarisNumericUserPrincipal</code>
+ * {@code SolarisNumericUserPrincipal}
* for equality. Returns true if the given object is also a
- * <code>SolarisNumericUserPrincipal</code> and the two
+ * {@code SolarisNumericUserPrincipal} and the two
* SolarisNumericUserPrincipals
* have the same user identification number (UID).
*
- * <p>
- *
* @param o Object to be compared for equality with this
- * <code>SolarisNumericUserPrincipal</code>.
+ * {@code SolarisNumericUserPrincipal}.
*
* @return true if the specified Object is equal to this
- * <code>SolarisNumericUserPrincipal</code>.
+ * {@code SolarisNumericUserPrincipal}.
*/
public boolean equals(Object o) {
if (o == null)
@@ -167,15 +155,14 @@
if (this.getName().equals(that.getName()))
return true;
- return false;
+
+ return false;
}
/**
- * Return a hash code for this <code>SolarisNumericUserPrincipal</code>.
+ * Return a hash code for this {@code SolarisNumericUserPrincipal}.
*
- * <p>
- *
- * @return a hash code for this <code>SolarisNumericUserPrincipal</code>.
+ * @return a hash code for this {@code SolarisNumericUserPrincipal}.
*/
public int hashCode() {
return name.hashCode();
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/SolarisPrincipal.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/SolarisPrincipal.java Tue May 05 13:29:12 2015 -0700
@@ -28,15 +28,15 @@
import java.security.Principal;
/**
- * <p> This class implements the <code>Principal</code> interface
+ * This class implements the {@code Principal} interface
* and represents a Solaris user.
*
- * <p> Principals such as this <code>SolarisPrincipal</code>
- * may be associated with a particular <code>Subject</code>
- * to augment that <code>Subject</code> with an additional
- * identity. Refer to the <code>Subject</code> class for more information
+ * <p> Principals such as this {@code SolarisPrincipal}
+ * may be associated with a particular {@code Subject}
+ * to augment that {@code Subject} with an additional
+ * identity. Refer to the {@code Subject} class for more information
* on how to achieve this. Authorization decisions can then be based upon
- * the Principals associated with a <code>Subject</code>.
+ * the Principals associated with a {@code Subject}.
*
* @deprecated As of JDK 1.4, replaced by
* {@link UnixPrincipal}.
@@ -68,12 +68,10 @@
/**
* Create a SolarisPrincipal with a Solaris username.
*
- * <p>
- *
* @param name the Unix username for this user.
*
- * @exception NullPointerException if the <code>name</code>
- * is <code>null</code>.
+ * @exception NullPointerException if the {@code name}
+ * is {@code null}.
*/
public SolarisPrincipal(String name) {
if (name == null)
@@ -83,40 +81,34 @@
}
/**
- * Return the Unix username for this <code>SolarisPrincipal</code>.
+ * Return the Unix username for this {@code SolarisPrincipal}.
*
- * <p>
- *
- * @return the Unix username for this <code>SolarisPrincipal</code>
+ * @return the Unix username for this {@code SolarisPrincipal}
*/
public String getName() {
return name;
}
/**
- * Return a string representation of this <code>SolarisPrincipal</code>.
+ * Return a string representation of this {@code SolarisPrincipal}.
*
- * <p>
- *
- * @return a string representation of this <code>SolarisPrincipal</code>.
+ * @return a string representation of this {@code SolarisPrincipal}.
*/
public String toString() {
return(rb.getString("SolarisPrincipal.") + name);
}
/**
- * Compares the specified Object with this <code>SolarisPrincipal</code>
+ * Compares the specified Object with this {@code SolarisPrincipal}
* for equality. Returns true if the given object is also a
- * <code>SolarisPrincipal</code> and the two SolarisPrincipals
+ * {@code SolarisPrincipal} and the two SolarisPrincipals
* have the same username.
*
- * <p>
- *
* @param o Object to be compared for equality with this
- * <code>SolarisPrincipal</code>.
+ * {@code SolarisPrincipal}.
*
* @return true if the specified Object is equal to this
- * <code>SolarisPrincipal</code>.
+ * {@code SolarisPrincipal}.
*/
public boolean equals(Object o) {
if (o == null)
@@ -135,11 +127,9 @@
}
/**
- * Return a hash code for this <code>SolarisPrincipal</code>.
+ * Return a hash code for this {@code SolarisPrincipal}.
*
- * <p>
- *
- * @return a hash code for this <code>SolarisPrincipal</code>.
+ * @return a hash code for this {@code SolarisPrincipal}.
*/
public int hashCode() {
return name.hashCode();
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/UnixNumericGroupPrincipal.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/UnixNumericGroupPrincipal.java Tue May 05 13:29:12 2015 -0700
@@ -28,15 +28,15 @@
import java.security.Principal;
/**
- * <p> This class implements the <code>Principal</code> interface
+ * This class implements the {@code Principal} interface
* and represents a user's Unix group identification number (GID).
*
- * <p> Principals such as this <code>UnixNumericGroupPrincipal</code>
- * may be associated with a particular <code>Subject</code>
- * to augment that <code>Subject</code> with an additional
- * identity. Refer to the <code>Subject</code> class for more information
+ * <p> Principals such as this {@code UnixNumericGroupPrincipal}
+ * may be associated with a particular {@code Subject}
+ * to augment that {@code Subject} with an additional
+ * identity. Refer to the {@code Subject} class for more information
* on how to achieve this. Authorization decisions can then be based upon
- * the Principals associated with a <code>Subject</code>.
+ * the Principals associated with a {@code Subject}.
*
* @see java.security.Principal
* @see javax.security.auth.Subject
@@ -59,20 +59,18 @@
private boolean primaryGroup;
/**
- * Create a <code>UnixNumericGroupPrincipal</code> using a
- * <code>String</code> representation of the user's
+ * Create a {@code UnixNumericGroupPrincipal} using a
+ * {@code String} representation of the user's
* group identification number (GID).
*
- * <p>
- *
* @param name the user's group identification number (GID)
- * for this user. <p>
+ * for this user.
*
* @param primaryGroup true if the specified GID represents the
* primary group to which this user belongs.
*
- * @exception NullPointerException if the <code>name</code>
- * is <code>null</code>.
+ * @exception NullPointerException if the {@code name}
+ * is {@code null}.
*/
public UnixNumericGroupPrincipal(String name, boolean primaryGroup) {
if (name == null) {
@@ -89,13 +87,11 @@
}
/**
- * Create a <code>UnixNumericGroupPrincipal</code> using a
+ * Create a {@code UnixNumericGroupPrincipal} using a
* long representation of the user's group identification number (GID).
*
- * <p>
- *
* @param name the user's group identification number (GID) for this user
- * represented as a long. <p>
+ * represented as a long.
*
* @param primaryGroup true if the specified GID represents the
* primary group to which this user belongs.
@@ -108,12 +104,10 @@
/**
* Return the user's group identification number (GID) for this
- * <code>UnixNumericGroupPrincipal</code>.
- *
- * <p>
+ * {@code UnixNumericGroupPrincipal}.
*
* @return the user's group identification number (GID) for this
- * <code>UnixNumericGroupPrincipal</code>
+ * {@code UnixNumericGroupPrincipal}
*/
public String getName() {
return name;
@@ -121,12 +115,10 @@
/**
* Return the user's group identification number (GID) for this
- * <code>UnixNumericGroupPrincipal</code> as a long.
- *
- * <p>
+ * {@code UnixNumericGroupPrincipal} as a long.
*
* @return the user's group identification number (GID) for this
- * <code>UnixNumericGroupPrincipal</code> as a long.
+ * {@code UnixNumericGroupPrincipal} as a long.
*/
public long longValue() {
return Long.parseLong(name);
@@ -136,8 +128,6 @@
* Return whether this group identification number (GID) represents
* the primary group to which this user belongs.
*
- * <p>
- *
* @return true if this group identification number (GID) represents
* the primary group to which this user belongs,
* or false otherwise.
@@ -148,12 +138,10 @@
/**
* Return a string representation of this
- * <code>UnixNumericGroupPrincipal</code>.
- *
- * <p>
+ * {@code UnixNumericGroupPrincipal}.
*
* @return a string representation of this
- * <code>UnixNumericGroupPrincipal</code>.
+ * {@code UnixNumericGroupPrincipal}.
*/
public String toString() {
@@ -176,19 +164,17 @@
/**
* Compares the specified Object with this
- * <code>UnixNumericGroupPrincipal</code>
+ * {@code UnixNumericGroupPrincipal}
* for equality. Returns true if the given object is also a
- * <code>UnixNumericGroupPrincipal</code> and the two
+ * {@code UnixNumericGroupPrincipal} and the two
* UnixNumericGroupPrincipals
* have the same group identification number (GID).
*
- * <p>
- *
* @param o Object to be compared for equality with this
- * <code>UnixNumericGroupPrincipal</code>.
+ * {@code UnixNumericGroupPrincipal}.
*
* @return true if the specified Object is equal to this
- * <code>UnixNumericGroupPrincipal</code>.
+ * {@code UnixNumericGroupPrincipal}.
*/
public boolean equals(Object o) {
if (o == null)
@@ -208,11 +194,9 @@
}
/**
- * Return a hash code for this <code>UnixNumericGroupPrincipal</code>.
+ * Return a hash code for this {@code UnixNumericGroupPrincipal}.
*
- * <p>
- *
- * @return a hash code for this <code>UnixNumericGroupPrincipal</code>.
+ * @return a hash code for this {@code UnixNumericGroupPrincipal}.
*/
public int hashCode() {
return toString().hashCode();
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/UnixNumericUserPrincipal.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/UnixNumericUserPrincipal.java Tue May 05 13:29:12 2015 -0700
@@ -28,15 +28,15 @@
import java.security.Principal;
/**
- * <p> This class implements the <code>Principal</code> interface
+ * This class implements the {@code Principal} interface
* and represents a user's Unix identification number (UID).
*
- * <p> Principals such as this <code>UnixNumericUserPrincipal</code>
- * may be associated with a particular <code>Subject</code>
- * to augment that <code>Subject</code> with an additional
- * identity. Refer to the <code>Subject</code> class for more information
+ * <p> Principals such as this {@code UnixNumericUserPrincipal}
+ * may be associated with a particular {@code Subject}
+ * to augment that {@code Subject} with an additional
+ * identity. Refer to the {@code Subject} class for more information
* on how to achieve this. Authorization decisions can then be based upon
- * the Principals associated with a <code>Subject</code>.
+ * the Principals associated with a {@code Subject}.
*
* @see java.security.Principal
* @see javax.security.auth.Subject
@@ -53,16 +53,14 @@
private String name;
/**
- * Create a <code>UnixNumericUserPrincipal</code> using a
- * <code>String</code> representation of the
+ * Create a {@code UnixNumericUserPrincipal} using a
+ * {@code String} representation of the
* user's identification number (UID).
*
- * <p>
- *
* @param name the user identification number (UID) for this user.
*
- * @exception NullPointerException if the <code>name</code>
- * is <code>null</code>.
+ * @exception NullPointerException if the {@code name}
+ * is {@code null}.
*/
public UnixNumericUserPrincipal(String name) {
if (name == null) {
@@ -78,11 +76,9 @@
}
/**
- * Create a <code>UnixNumericUserPrincipal</code> using a
+ * Create a {@code UnixNumericUserPrincipal} using a
* long representation of the user's identification number (UID).
*
- * <p>
- *
* @param name the user identification number (UID) for this user
* represented as a long.
*/
@@ -92,12 +88,10 @@
/**
* Return the user identification number (UID) for this
- * <code>UnixNumericUserPrincipal</code>.
- *
- * <p>
+ * {@code UnixNumericUserPrincipal}.
*
* @return the user identification number (UID) for this
- * <code>UnixNumericUserPrincipal</code>
+ * {@code UnixNumericUserPrincipal}
*/
public String getName() {
return name;
@@ -105,12 +99,10 @@
/**
* Return the user identification number (UID) for this
- * <code>UnixNumericUserPrincipal</code> as a long.
- *
- * <p>
+ * {@code UnixNumericUserPrincipal} as a long.
*
* @return the user identification number (UID) for this
- * <code>UnixNumericUserPrincipal</code> as a long.
+ * {@code UnixNumericUserPrincipal} as a long.
*/
public long longValue() {
return Long.parseLong(name);
@@ -118,12 +110,10 @@
/**
* Return a string representation of this
- * <code>UnixNumericUserPrincipal</code>.
- *
- * <p>
+ * {@code UnixNumericUserPrincipal}.
*
* @return a string representation of this
- * <code>UnixNumericUserPrincipal</code>.
+ * {@code UnixNumericUserPrincipal}.
*/
public String toString() {
java.text.MessageFormat form = new java.text.MessageFormat
@@ -136,19 +126,17 @@
/**
* Compares the specified Object with this
- * <code>UnixNumericUserPrincipal</code>
+ * {@code UnixNumericUserPrincipal}
* for equality. Returns true if the given object is also a
- * <code>UnixNumericUserPrincipal</code> and the two
+ * {@code UnixNumericUserPrincipal} and the two
* UnixNumericUserPrincipals
* have the same user identification number (UID).
*
- * <p>
- *
* @param o Object to be compared for equality with this
- * <code>UnixNumericUserPrincipal</code>.
+ * {@code UnixNumericUserPrincipal}.
*
* @return true if the specified Object is equal to this
- * <code>UnixNumericUserPrincipal</code>.
+ * {@code UnixNumericUserPrincipal}.
*/
public boolean equals(Object o) {
if (o == null)
@@ -167,11 +155,9 @@
}
/**
- * Return a hash code for this <code>UnixNumericUserPrincipal</code>.
+ * Return a hash code for this {@code UnixNumericUserPrincipal}.
*
- * <p>
- *
- * @return a hash code for this <code>UnixNumericUserPrincipal</code>.
+ * @return a hash code for this {@code UnixNumericUserPrincipal}.
*/
public int hashCode() {
return name.hashCode();
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/UnixPrincipal.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/UnixPrincipal.java Tue May 05 13:29:12 2015 -0700
@@ -28,15 +28,15 @@
import java.security.Principal;
/**
- * <p> This class implements the <code>Principal</code> interface
+ * This class implements the {@code Principal} interface
* and represents a Unix user.
*
- * <p> Principals such as this <code>UnixPrincipal</code>
- * may be associated with a particular <code>Subject</code>
- * to augment that <code>Subject</code> with an additional
- * identity. Refer to the <code>Subject</code> class for more information
+ * <p> Principals such as this {@code UnixPrincipal}
+ * may be associated with a particular {@code Subject}
+ * to augment that {@code Subject} with an additional
+ * identity. Refer to the {@code Subject} class for more information
* on how to achieve this. Authorization decisions can then be based upon
- * the Principals associated with a <code>Subject</code>.
+ * the Principals associated with a {@code Subject}.
*
* @see java.security.Principal
* @see javax.security.auth.Subject
@@ -54,12 +54,10 @@
/**
* Create a UnixPrincipal with a Unix username.
*
- * <p>
- *
* @param name the Unix username for this user.
*
- * @exception NullPointerException if the <code>name</code>
- * is <code>null</code>.
+ * @exception NullPointerException if the {@code name}
+ * is {@code null}.
*/
public UnixPrincipal(String name) {
if (name == null) {
@@ -75,22 +73,18 @@
}
/**
- * Return the Unix username for this <code>UnixPrincipal</code>.
+ * Return the Unix username for this {@code UnixPrincipal}.
*
- * <p>
- *
- * @return the Unix username for this <code>UnixPrincipal</code>
+ * @return the Unix username for this {@code UnixPrincipal}
*/
public String getName() {
return name;
}
/**
- * Return a string representation of this <code>UnixPrincipal</code>.
+ * Return a string representation of this {@code UnixPrincipal}.
*
- * <p>
- *
- * @return a string representation of this <code>UnixPrincipal</code>.
+ * @return a string representation of this {@code UnixPrincipal}.
*/
public String toString() {
java.text.MessageFormat form = new java.text.MessageFormat
@@ -102,18 +96,16 @@
}
/**
- * Compares the specified Object with this <code>UnixPrincipal</code>
+ * Compares the specified Object with this {@code UnixPrincipal}
* for equality. Returns true if the given object is also a
- * <code>UnixPrincipal</code> and the two UnixPrincipals
+ * {@code UnixPrincipal} and the two UnixPrincipals
* have the same username.
*
- * <p>
- *
* @param o Object to be compared for equality with this
- * <code>UnixPrincipal</code>.
+ * {@code UnixPrincipal}.
*
* @return true if the specified Object is equal to this
- * <code>UnixPrincipal</code>.
+ * {@code UnixPrincipal}.
*/
public boolean equals(Object o) {
if (o == null)
@@ -132,11 +124,9 @@
}
/**
- * Return a hash code for this <code>UnixPrincipal</code>.
+ * Return a hash code for this {@code UnixPrincipal}.
*
- * <p>
- *
- * @return a hash code for this <code>UnixPrincipal</code>.
+ * @return a hash code for this {@code UnixPrincipal}.
*/
public int hashCode() {
return name.hashCode();
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/X500Principal.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/X500Principal.java Tue May 05 13:29:12 2015 -0700
@@ -29,17 +29,17 @@
import sun.security.x509.X500Name;
/**
- * <p> This class represents an X.500 <code>Principal</code>.
+ * This class represents an X.500 {@code Principal}.
* X500Principals have names such as,
* "CN=Duke, OU=JavaSoft, O=Sun Microsystems, C=US"
* (RFC 1779 style).
*
- * <p> Principals such as this <code>X500Principal</code>
- * may be associated with a particular <code>Subject</code>
- * to augment that <code>Subject</code> with an additional
- * identity. Refer to the <code>Subject</code> class for more information
+ * <p> Principals such as this {@code X500Principal}
+ * may be associated with a particular {@code Subject}
+ * to augment that {@code Subject} with an additional
+ * identity. Refer to the {@code Subject} class for more information
* on how to achieve this. Authorization decisions can then be based upon
- * the Principals associated with a <code>Subject</code>.
+ * the Principals associated with a {@code Subject}.
*
* @see java.security.Principal
* @see javax.security.auth.Subject
@@ -76,14 +76,12 @@
* such as "CN=Duke, OU=JavaSoft, O=Sun Microsystems, C=US"
* (RFC 1779 style).
*
- * <p>
- *
* @param name the X.500 name
*
- * @exception NullPointerException if the <code>name</code>
- * is <code>null</code>. <p>
+ * @exception NullPointerException if the {@code name}
+ * is {@code null}.
*
- * @exception IllegalArgumentException if the <code>name</code>
+ * @exception IllegalArgumentException if the {@code name}
* is improperly specified.
*/
public X500Principal(String name) {
@@ -100,38 +98,32 @@
}
/**
- * Return the Unix username for this <code>X500Principal</code>.
+ * Return the Unix username for this {@code X500Principal}.
*
- * <p>
- *
- * @return the Unix username for this <code>X500Principal</code>
+ * @return the Unix username for this {@code X500Principal}
*/
public String getName() {
return thisX500Name.getName();
}
/**
- * Return a string representation of this <code>X500Principal</code>.
+ * Return a string representation of this {@code X500Principal}.
*
- * <p>
- *
- * @return a string representation of this <code>X500Principal</code>.
+ * @return a string representation of this {@code X500Principal}.
*/
public String toString() {
return thisX500Name.toString();
}
/**
- * Compares the specified Object with this <code>X500Principal</code>
+ * Compares the specified Object with this {@code X500Principal}
* for equality.
*
- * <p>
- *
* @param o Object to be compared for equality with this
- * <code>X500Principal</code>.
+ * {@code X500Principal}.
*
* @return true if the specified Object is equal to this
- * <code>X500Principal</code>.
+ * {@code X500Principal}.
*/
public boolean equals(Object o) {
if (o == null)
@@ -159,11 +151,9 @@
}
/**
- * Return a hash code for this <code>X500Principal</code>.
+ * Return a hash code for this {@code X500Principal}.
*
- * <p>
- *
- * @return a hash code for this <code>X500Principal</code>.
+ * @return a hash code for this {@code X500Principal}.
*/
public int hashCode() {
return thisX500Name.hashCode();
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/JndiLoginModule.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/JndiLoginModule.java Tue May 05 13:29:12 2015 -0700
@@ -44,28 +44,28 @@
/**
- * <p> The module prompts for a username and password
+ * The module prompts for a username and password
* and then verifies the password against the password stored in
* a directory service configured under JNDI.
*
- * <p> This <code>LoginModule</code> interoperates with
+ * <p> This {@code LoginModule} interoperates with
* any conformant JNDI service provider. To direct this
- * <code>LoginModule</code> to use a specific JNDI service provider,
- * two options must be specified in the login <code>Configuration</code>
- * for this <code>LoginModule</code>.
+ * {@code LoginModule} to use a specific JNDI service provider,
+ * two options must be specified in the login {@code Configuration}
+ * for this {@code LoginModule}.
* <pre>
* user.provider.url=<b>name_service_url</b>
* group.provider.url=<b>name_service_url</b>
* </pre>
*
* <b>name_service_url</b> specifies
- * the directory service and path where this <code>LoginModule</code>
+ * the directory service and path where this {@code LoginModule}
* can access the relevant user and group information. Because this
- * <code>LoginModule</code> only performs one-level searches to
- * find the relevant user information, the <code>URL</code>
+ * {@code LoginModule} only performs one-level searches to
+ * find the relevant user information, the {@code URL}
* must point to a directory one level above where the user and group
* information is stored in the directory service.
- * For example, to instruct this <code>LoginModule</code>
+ * For example, to instruct this {@code LoginModule}
* to contact a NIS server, the following URLs must be specified:
* <pre>
* user.provider.url="nis://<b>NISServerHostName</b>/<b>NISDomain</b>/user"
@@ -90,14 +90,14 @@
*
* <p> The format in which the user's information must be stored in
* the directory service is specified in RFC 2307. Specifically,
- * this <code>LoginModule</code> will search for the user's entry in the
+ * this {@code LoginModule} will search for the user's entry in the
* directory service using the user's <i>uid</i> attribute,
* where <i>uid=<b>username</b></i>. If the search succeeds,
- * this <code>LoginModule</code> will then
+ * this {@code LoginModule} will then
* obtain the user's encrypted password from the retrieved entry
* using the <i>userPassword</i> attribute.
- * This <code>LoginModule</code> assumes that the password is stored
- * as a byte array, which when converted to a <code>String</code>,
+ * This {@code LoginModule} assumes that the password is stored
+ * as a byte array, which when converted to a {@code String},
* has the following format:
* <pre>
* "{crypt}<b>encrypted_password</b>"
@@ -106,12 +106,12 @@
* The LDAP directory server must be configured
* to permit read access to the userPassword attribute.
* If the user entered a valid username and password,
- * this <code>LoginModule</code> associates a
- * <code>UnixPrincipal</code>, <code>UnixNumericUserPrincipal</code>,
+ * this {@code LoginModule} associates a
+ * {@code UnixPrincipal}, {@code UnixNumericUserPrincipal},
* and the relevant UnixNumericGroupPrincipals with the
- * <code>Subject</code>.
+ * {@code Subject}.
*
- * <p> This LoginModule also recognizes the following <code>Configuration</code>
+ * <p> This LoginModule also recognizes the following {@code Configuration}
* options:
* <pre>
* debug if, true, debug messages are output to System.out.
@@ -144,7 +144,7 @@
* exist for the username and password in the shared state,
* or if authentication fails.
*
- * clearPass if, true, this <code>LoginModule</code> clears the
+ * clearPass if, true, this {@code LoginModule} clears the
* username and password stored in the module's shared state
* after both phases of authentication (login and commit)
* have completed.
@@ -208,21 +208,19 @@
private static final String PWD = "javax.security.auth.login.password";
/**
- * Initialize this <code>LoginModule</code>.
+ * Initialize this {@code LoginModule}.
*
- * <p>
- *
- * @param subject the <code>Subject</code> to be authenticated. <p>
+ * @param subject the {@code Subject} to be authenticated.
*
- * @param callbackHandler a <code>CallbackHandler</code> for communicating
+ * @param callbackHandler a {@code CallbackHandler} for communicating
* with the end user (prompting for usernames and
- * passwords, for example). <p>
+ * passwords, for example).
*
- * @param sharedState shared <code>LoginModule</code> state. <p>
+ * @param sharedState shared {@code LoginModule} state.
*
* @param options options specified in the login
- * <code>Configuration</code> for this particular
- * <code>LoginModule</code>.
+ * {@code Configuration} for this particular
+ * {@code LoginModule}.
*/
// Unchecked warning from (Map<String, Object>)sharedState is safe
// since javax.security.auth.login.LoginContext passes a raw HashMap.
@@ -255,17 +253,15 @@
}
/**
- * <p> Prompt for username and password.
+ * Prompt for username and password.
* Verify the password against the relevant name service.
*
- * <p>
- *
- * @return true always, since this <code>LoginModule</code>
+ * @return true always, since this {@code LoginModule}
* should not be ignored.
*
- * @exception FailedLoginException if the authentication fails. <p>
+ * @exception FailedLoginException if the authentication fails.
*
- * @exception LoginException if this <code>LoginModule</code>
+ * @exception LoginException if this {@code LoginModule}
* is unable to perform the authentication.
*/
public boolean login() throws LoginException {
@@ -367,15 +363,13 @@
*
* <p> If this LoginModule's own authentication attempt
* succeeded (checked by retrieving the private state saved by the
- * <code>login</code> method), then this method associates a
- * <code>UnixPrincipal</code>
- * with the <code>Subject</code> located in the
- * <code>LoginModule</code>. If this LoginModule's own
+ * {@code login} method), then this method associates a
+ * {@code UnixPrincipal}
+ * with the {@code Subject} located in the
+ * {@code LoginModule}. If this LoginModule's own
* authentication attempted failed, then this method removes
* any state that was originally saved.
*
- * <p>
- *
* @exception LoginException if the commit fails
*
* @return true if this LoginModule's own login and commit
@@ -418,18 +412,16 @@
}
/**
- * <p> This method is called if the LoginContext's
+ * This method is called if the LoginContext's
* overall authentication failed.
* (the relevant REQUIRED, REQUISITE, SUFFICIENT and OPTIONAL LoginModules
* did not succeed).
*
* <p> If this LoginModule's own authentication attempt
* succeeded (checked by retrieving the private state saved by the
- * <code>login</code> and <code>commit</code> methods),
+ * {@code login} and {@code commit} methods),
* then this method cleans up any state that was originally saved.
*
- * <p>
- *
* @exception LoginException if the abort fails.
*
* @return false if this LoginModule's own login and/or commit attempts
@@ -464,13 +456,11 @@
* Logout a user.
*
* <p> This method removes the Principals
- * that were added by the <code>commit</code> method.
- *
- * <p>
+ * that were added by the {@code commit} method.
*
* @exception LoginException if the logout fails.
*
- * @return true in all cases since this <code>LoginModule</code>
+ * @return true in all cases since this {@code LoginModule}
* should not be ignored.
*/
public boolean logout() throws LoginException {
@@ -506,8 +496,6 @@
/**
* Attempt authentication
*
- * <p>
- *
* @param getPasswdFromSharedState boolean that tells this method whether
* to retrieve the password from the sharedState.
*/
@@ -674,8 +662,6 @@
* values in the shared state in case subsequent LoginModules
* want to use them via use/tryFirstPass.
*
- * <p>
- *
* @param getPasswdFromSharedState boolean that tells this method whether
* to retrieve the password from the sharedState.
*/
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/KeyStoreLoginModule.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/KeyStoreLoginModule.java Tue May 05 13:29:12 2015 -0700
@@ -55,53 +55,53 @@
/**
* Provides a JAAS login module that prompts for a key store alias and
* populates the subject with the alias's principal and credentials. Stores
- * an <code>X500Principal</code> for the subject distinguished name of the
+ * an {@code X500Principal} for the subject distinguished name of the
* first certificate in the alias's credentials in the subject's principals,
* the alias's certificate path in the subject's public credentials, and a
- * <code>X500PrivateCredential</code> whose certificate is the first
+ * {@code X500PrivateCredential} whose certificate is the first
* certificate in the alias's certificate path and whose private key is the
* alias's private key in the subject's private credentials. <p>
*
* Recognizes the following options in the configuration file:
* <dl>
*
- * <dt> <code>keyStoreURL</code> </dt>
+ * <dt> {@code keyStoreURL} </dt>
* <dd> A URL that specifies the location of the key store. Defaults to
* a URL pointing to the .keystore file in the directory specified by the
- * <code>user.home</code> system property. The input stream from this
- * URL is passed to the <code>KeyStore.load</code> method.
- * "NONE" may be specified if a <code>null</code> stream must be
- * passed to the <code>KeyStore.load</code> method.
+ * {@code user.home} system property. The input stream from this
+ * URL is passed to the {@code KeyStore.load} method.
+ * "NONE" may be specified if a {@code null} stream must be
+ * passed to the {@code KeyStore.load} method.
* "NONE" should be specified if the KeyStore resides
* on a hardware token device, for example.</dd>
*
- * <dt> <code>keyStoreType</code> </dt>
+ * <dt> {@code keyStoreType} </dt>
* <dd> The key store type. If not specified, defaults to the result of
- * calling <code>KeyStore.getDefaultType()</code>.
+ * calling {@code KeyStore.getDefaultType()}.
* If the type is "PKCS11", then keyStoreURL must be "NONE"
* and privateKeyPasswordURL must not be specified.</dd>
*
- * <dt> <code>keyStoreProvider</code> </dt>
+ * <dt> {@code keyStoreProvider} </dt>
* <dd> The key store provider. If not specified, uses the standard search
* order to find the provider. </dd>
*
- * <dt> <code>keyStoreAlias</code> </dt>
+ * <dt> {@code keyStoreAlias} </dt>
* <dd> The alias in the key store to login as. Required when no callback
* handler is provided. No default value. </dd>
*
- * <dt> <code>keyStorePasswordURL</code> </dt>
+ * <dt> {@code keyStorePasswordURL} </dt>
* <dd> A URL that specifies the location of the key store password. Required
* when no callback handler is provided and
- * <code>protected</code> is false.
+ * {@code protected} is false.
* No default value. </dd>
*
- * <dt> <code>privateKeyPasswordURL</code> </dt>
+ * <dt> {@code privateKeyPasswordURL} </dt>
* <dd> A URL that specifies the location of the specific private key password
* needed to access the private key for this alias.
* The keystore password
* is used if this value is needed and not specified. </dd>
*
- * <dt> <code>protected</code> </dt>
+ * <dt> {@code protected} </dt>
* <dd> This value should be set to "true" if the KeyStore
* has a separate, protected authentication path
* (for example, a dedicated PIN-pad attached to a smart card).
@@ -174,22 +174,20 @@
/* -- Methods -- */
/**
- * Initialize this <code>LoginModule</code>.
- *
- * <p>
+ * Initialize this {@code LoginModule}.
*
- * @param subject the <code>Subject</code> to be authenticated. <p>
+ * @param subject the {@code Subject} to be authenticated.
*
- * @param callbackHandler a <code>CallbackHandler</code> for communicating
+ * @param callbackHandler a {@code CallbackHandler} for communicating
* with the end user (prompting for usernames and
* passwords, for example),
- * which may be <code>null</code>. <p>
+ * which may be {@code null}.
*
- * @param sharedState shared <code>LoginModule</code> state. <p>
+ * @param sharedState shared {@code LoginModule} state.
*
* @param options options specified in the login
- * <code>Configuration</code> for this particular
- * <code>LoginModule</code>.
+ * {@code Configuration} for this particular
+ * {@code LoginModule}.
*/
// Unchecked warning from (Map<String, Object>)sharedState is safe
// since javax.security.auth.login.LoginContext passes a raw HashMap.
@@ -258,11 +256,9 @@
* <p> Get the Keystore alias and relevant passwords.
* Retrieve the alias's principal and credentials from the Keystore.
*
- * <p>
+ * @exception FailedLoginException if the authentication fails.
*
- * @exception FailedLoginException if the authentication fails. <p>
- *
- * @return true in all cases (this <code>LoginModule</code>
+ * @return true in all cases (this {@code LoginModule}
* should not be ignored).
*/
@@ -719,19 +715,17 @@
*
* <p> If this LoginModule's own authentication attempt
* succeeded (checked by retrieving the private state saved by the
- * <code>login</code> method), then this method associates a
- * <code>X500Principal</code> for the subject distinguished name of the
+ * {@code login} method), then this method associates a
+ * {@code X500Principal} for the subject distinguished name of the
* first certificate in the alias's credentials in the subject's
* principals,the alias's certificate path in the subject's public
- * credentials, and a<code>X500PrivateCredential</code> whose certificate
+ * credentials, and a {@code X500PrivateCredential} whose certificate
* is the first certificate in the alias's certificate path and whose
* private key is the alias's private key in the subject's private
* credentials. If this LoginModule's own
* authentication attempted failed, then this method removes
* any state that was originally saved.
*
- * <p>
- *
* @exception LoginException if the commit fails
*
* @return true if this LoginModule's own login and commit
@@ -774,21 +768,19 @@
}
/**
- * <p> This method is called if the LoginContext's
+ * This method is called if the LoginContext's
* overall authentication failed.
* (the relevant REQUIRED, REQUISITE, SUFFICIENT and OPTIONAL LoginModules
* did not succeed).
*
* <p> If this LoginModule's own authentication attempt
* succeeded (checked by retrieving the private state saved by the
- * <code>login</code> and <code>commit</code> methods),
+ * {@code login} and {@code commit} methods),
* then this method cleans up any state that was originally saved.
*
* <p> If the loaded KeyStore's provider extends
- * <code>java.security.AuthProvider</code>,
- * then the provider's <code>logout</code> method is invoked.
- *
- * <p>
+ * {@code java.security.AuthProvider},
+ * then the provider's {@code logout} method is invoked.
*
* @exception LoginException if the abort fails.
*
@@ -815,17 +807,15 @@
* Logout a user.
*
* <p> This method removes the Principals, public credentials and the
- * private credentials that were added by the <code>commit</code> method.
+ * private credentials that were added by the {@code commit} method.
*
* <p> If the loaded KeyStore's provider extends
- * <code>java.security.AuthProvider</code>,
- * then the provider's <code>logout</code> method is invoked.
- *
- * <p>
+ * {@code java.security.AuthProvider},
+ * then the provider's {@code logout} method is invoked.
*
* @exception LoginException if the logout fails.
*
- * @return true in all cases since this <code>LoginModule</code>
+ * @return true in all cases since this {@code LoginModule}
* should not be ignored.
*/
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/Krb5LoginModule.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/Krb5LoginModule.java Tue May 05 13:29:12 2015 -0700
@@ -47,147 +47,142 @@
import sun.misc.HexDumpEncoder;
/**
- * <p> This <code>LoginModule</code> authenticates users using
+ * This {@code LoginModule} authenticates users using
* Kerberos protocols.
*
- * <p> The configuration entry for <code>Krb5LoginModule</code> has
+ * <p> The configuration entry for {@code Krb5LoginModule} has
* several options that control the authentication process and
- * additions to the <code>Subject</code>'s private credential
- * set. Irrespective of these options, the <code>Subject</code>'s
+ * additions to the {@code Subject}'s private credential
+ * set. Irrespective of these options, the {@code Subject}'s
* principal set and private credentials set are updated only when
- * <code>commit</code> is called.
- * When <code>commit</code> is called, the <code>KerberosPrincipal</code>
- * is added to the <code>Subject</code>'s principal set (unless the
- * <code>principal</code> is specified as "*"). If <code>isInitiator</code>
- * is true, the <code>KerberosTicket</code> is
- * added to the <code>Subject</code>'s private credentials.
+ * {@code commit} is called.
+ * When {@code commit} is called, the {@code KerberosPrincipal}
+ * is added to the {@code Subject}'s principal set (unless the
+ * {@code principal} is specified as "*"). If {@code isInitiator}
+ * is true, the {@code KerberosTicket} is
+ * added to the {@code Subject}'s private credentials.
*
- * <p> If the configuration entry for <code>KerberosLoginModule</code>
- * has the option <code>storeKey</code> set to true, then
- * <code>KerberosKey</code> or <code>KeyTab</code> will also be added to the
- * subject's private credentials. <code>KerberosKey</code>, the principal's
- * key(s) will be derived from user's password, and <code>KeyTab</code> is
- * the keytab used when <code>useKeyTab</code> is set to true. The
- * <code>KeyTab</code> object is restricted to be used by the specified
+ * <p> If the configuration entry for {@code KerberosLoginModule}
+ * has the option {@code storeKey} set to true, then
+ * {@code KerberosKey} or {@code KeyTab} will also be added to the
+ * subject's private credentials. {@code KerberosKey}, the principal's
+ * key(s) will be derived from user's password, and {@code KeyTab} is
+ * the keytab used when {@code useKeyTab} is set to true. The
+ * {@code KeyTab} object is restricted to be used by the specified
* principal unless the principal value is "*".
*
- * <p> This <code>LoginModule</code> recognizes the <code>doNotPrompt</code>
+ * <p> This {@code LoginModule} recognizes the {@code doNotPrompt}
* option. If set to true the user will not be prompted for the password.
*
* <p> The user can specify the location of the ticket cache by using
- * the option <code>ticketCache</code> in the configuration entry.
+ * the option {@code ticketCache} in the configuration entry.
*
* <p>The user can specify the keytab location by using
- * the option <code>keyTab</code>
+ * the option {@code keyTab}
* in the configuration entry.
*
* <p> The principal name can be specified in the configuration entry
- * by using the option <code>principal</code>. The principal name
+ * by using the option {@code principal}. The principal name
* can either be a simple user name, a service name such as
- * <code>host/mission.eng.sun.com</code>, or "*". The principal can also
- * be set using the system property <code>sun.security.krb5.principal</code>.
+ * {@code host/mission.eng.sun.com}, or "*". The principal can also
+ * be set using the system property {@code sun.security.krb5.principal}.
* This property is checked during login. If this property is not set, then
* the principal name from the configuration is used. In the
* case where the principal property is not set and the principal
* entry also does not exist, the user is prompted for the name.
- * When this property of entry is set, and <code>useTicketCache</code>
+ * When this property of entry is set, and {@code useTicketCache}
* is set to true, only TGT belonging to this principal is used.
*
* <p> The following is a list of configuration options supported
- * for <code>Krb5LoginModule</code>:
+ * for {@code Krb5LoginModule}:
* <blockquote><dl>
- * <dt><b><code>refreshKrb5Config</code></b>:</dt>
+ * <dt>{@code refreshKrb5Config}:</dt>
* <dd> Set this to true, if you want the configuration
- * to be refreshed before the <code>login</code> method is called.</dd>
- * <dt><b><code>useTicketCache</code></b>:</dt>
+ * to be refreshed before the {@code login} method is called.</dd>
+ * <dt>{@code useTicketCache}:</dt>
* <dd>Set this to true, if you want the
- * TGT to be obtained
- * from the ticket cache. Set this option
+ * TGT to be obtained from the ticket cache. Set this option
* to false if you do not want this module to use the ticket cache.
* (Default is False).
- * This module will
- * search for the ticket
- * cache in the following locations:
- * On Solaris and Linux
- * it will look for the ticket cache in /tmp/krb5cc_<code>uid</code>
- * where the uid is numeric user
- * identifier. If the ticket cache is
+ * This module will search for the ticket
+ * cache in the following locations: On Solaris and Linux
+ * it will look for the ticket cache in /tmp/krb5cc_{@code uid}
+ * where the uid is numeric user identifier. If the ticket cache is
* not available in the above location, or if we are on a
* Windows platform, it will look for the cache as
* {user.home}{file.separator}krb5cc_{user.name}.
* You can override the ticket cache location by using
- * <code>ticketCache</code>.
+ * {@code ticketCache}.
* For Windows, if a ticket cannot be retrieved from the file ticket cache,
* it will use Local Security Authority (LSA) API to get the TGT.
- * <dt><b><code>ticketCache</code></b>:</dt>
+ * <dt>{@code ticketCache}:</dt>
* <dd>Set this to the name of the ticket
* cache that contains user's TGT.
- * If this is set, <code>useTicketCache</code>
+ * If this is set, {@code useTicketCache}
* must also be set to true; Otherwise a configuration error will
* be returned.</dd>
- * <dt><b><code>renewTGT</code></b>:</dt>
+ * <dt>{@code renewTGT}:</dt>
* <dd>Set this to true, if you want to renew
- * the TGT. If this is set, <code>useTicketCache</code> must also be
+ * the TGT. If this is set, {@code useTicketCache} must also be
* set to true; otherwise a configuration error will be returned.</dd>
- * <dt><b><code>doNotPrompt</code></b>:</dt>
+ * <dt>{@code doNotPrompt}:</dt>
* <dd>Set this to true if you do not want to be
* prompted for the password
* if credentials can not be obtained from the cache, the keytab,
* or through shared state.(Default is false)
* If set to true, credential must be obtained through cache, keytab,
* or shared state. Otherwise, authentication will fail.</dd>
- * <dt><b><code>useKeyTab</code></b>:</dt>
+ * <dt>{@code useKeyTab}:</dt>
* <dd>Set this to true if you
* want the module to get the principal's key from the
* the keytab.(default value is False)
- * If <code>keytab</code>
- * is not set then
+ * If {@code keytab} is not set then
* the module will locate the keytab from the
* Kerberos configuration file.
* If it is not specified in the Kerberos configuration file
* then it will look for the file
- * <code>{user.home}{file.separator}</code>krb5.keytab.</dd>
- * <dt><b><code>keyTab</code></b>:</dt>
+ * {@code {user.home}{file.separator}}krb5.keytab.</dd>
+ * <dt>{@code keyTab}:</dt>
* <dd>Set this to the file name of the
* keytab to get principal's secret key.</dd>
- * <dt><b><code>storeKey</code></b>:</dt>
+ * <dt>{@code storeKey}:</dt>
* <dd>Set this to true to if you want the keytab or the
* principal's key to be stored in the Subject's private credentials.
- * For <code>isInitiator</code> being false, if <code>principal</code>
+ * For {@code isInitiator} being false, if {@code principal}
* is "*", the {@link KeyTab} stored can be used by anyone, otherwise,
* it's restricted to be used by the specified principal only.</dd>
- * <dt><b><code>principal</code></b>:</dt>
+ * <dt>{@code principal}:</dt>
* <dd>The name of the principal that should
* be used. The principal can be a simple username such as
- * "<code>testuser</code>" or a service name such as
- * "<code>host/testhost.eng.sun.com</code>". You can use the
- * <code>principal</code> option to set the principal when there are
+ * "{@code testuser}" or a service name such as
+ * "{@code host/testhost.eng.sun.com}". You can use the
+ * {@code principal} option to set the principal when there are
* credentials for multiple principals in the
- * <code>keyTab</code> or when you want a specific ticket cache only.
+ * {@code keyTab} or when you want a specific ticket cache only.
* The principal can also be set using the system property
- * <code>sun.security.krb5.principal</code>. In addition, if this
+ * {@code sun.security.krb5.principal}. In addition, if this
* system property is defined, then it will be used. If this property
* is not set, then the principal name from the configuration will be
* used.
- * The principal name can be set to "*" when <code>isInitiator</code> is false.
+ * The principal name can be set to "*" when {@code isInitiator} is false.
* In this case, the acceptor is not bound to a single principal. It can
* act as any principal an initiator requests if keys for that principal
- * can be found. When <code>isInitiator</code> is true, the principal name
+ * can be found. When {@code isInitiator} is true, the principal name
* cannot be set to "*".
* </dd>
- * <dt><b><code>isInitiator</code></b>:</dt>
+ * <dt>{@code isInitiator}:</dt>
* <dd>Set this to true, if initiator. Set this to false, if acceptor only.
* (Default is true).
* Note: Do not set this value to false for initiators.</dd>
* </dl></blockquote>
*
- * <p> This <code>LoginModule</code> also recognizes the following additional
- * <code>Configuration</code>
+ * <p> This {@code LoginModule} also recognizes the following additional
+ * {@code Configuration}
* options that enable you to share username and passwords across different
* authentication modules:
* <blockquote><dl>
*
- * <dt><b><code>useFirstPass</code></b>:</dt>
+ * <dt>{@code useFirstPass}:</dt>
* <dd>if, true, this LoginModule retrieves the
* username and password from the module's shared state,
* using "javax.security.auth.login.name" and
@@ -197,7 +192,7 @@
* is made, and the failure is reported back to the
* calling application.</dd>
*
- * <dt><b><code>tryFirstPass</code></b>:</dt>
+ * <dt>{@code tryFirstPass}:</dt>
* <dd>if, true, this LoginModule retrieves the
* the username and password from the module's shared
* state using "javax.security.auth.login.name" and
@@ -210,7 +205,7 @@
* is made. If the authentication fails,
* the failure is reported back to the calling application</dd>
*
- * <dt><b><code>storePass</code></b>:</dt>
+ * <dt>{@code storePass}:</dt>
* <dd>if, true, this LoginModule stores the username and
* password obtained from the CallbackHandler in the
* modules shared state, using
@@ -220,7 +215,7 @@
* exist for the username and password in the shared
* state, or if authentication fails.</dd>
*
- * <dt><b><code>clearPass</code></b>:</dt>
+ * <dt>{@code clearPass}:</dt>
* <dd>if, true, this LoginModule clears the
* username and password stored in the module's shared
* state after both phases of authentication
@@ -236,148 +231,137 @@
* <li>shared state
* <li>user prompt
* </ol>
+ *
* <p>Note that if any step fails, it will fallback to the next step.
* There's only one exception, if the shared state step fails and
- * <code>useFirstPass</code>=true, no user prompt is made.
+ * {@code useFirstPass = true}, no user prompt is made.
* <p>Examples of some configuration values for Krb5LoginModule in
* JAAS config file and the results are:
- * <ul>
- * <p> <code>doNotPrompt</code>=true;
- * </ul>
- * <p> This is an illegal combination since none of <code>useTicketCache</code>,
- * <code>useKeyTab</code>, <code>useFirstPass</code> and <code>tryFirstPass</code>
- * is set and the user can not be prompted for the password.
- *<ul>
- * <p> <code>ticketCache</code> = <filename>;
- *</ul>
- * <p> This is an illegal combination since <code>useTicketCache</code>
+ * <blockquote><dl>
+ * <dd><pre>{@code
+ * doNotPrompt = true}</pre>
+ * This is an illegal combination since none of {@code useTicketCache,
+ * useKeyTab, useFirstPass} and {@code tryFirstPass}
+ * is set and the user can not be prompted for the password.</dd>
+ *
+ * <dd><pre>{@code
+ * ticketCache = <filename>}</pre>
+ * This is an illegal combination since {@code useTicketCache}
* is not set to true and the ticketCache is set. A configuration error
- * will occur.
- * <ul>
- * <p> <code>renewTGT</code>=true;
- *</ul>
- * <p> This is an illegal combination since <code>useTicketCache</code> is
- * not set to true and renewTGT is set. A configuration error will occur.
- * <ul>
- * <p> <code>storeKey</code>=true
- * <code>useTicketCache</code> = true
- * <code>doNotPrompt</code>=true;;
- *</ul>
- * <p> This is an illegal combination since <code>storeKey</code> is set to
+ * will occur.</dd>
+ *
+ * <dd><pre>{@code
+ * renewTGT = true}</pre>
+ * This is an illegal combination since {@code useTicketCache} is
+ * not set to true and renewTGT is set. A configuration error will occur.</dd>
+ *
+ * <dd><pre>{@code
+ * storeKey = true useTicketCache = true doNotPrompt = true}</pre>
+ * This is an illegal combination since {@code storeKey} is set to
* true but the key can not be obtained either by prompting the user or from
- * the keytab, or from the shared state. A configuration error will occur.
- * <ul>
- * <p> <code>keyTab</code> = <filename> <code>doNotPrompt</code>=true ;
- * </ul>
- * <p>This is an illegal combination since useKeyTab is not set to true and
- * the keyTab is set. A configuration error will occur.
- * <ul>
- * <p> <code>debug=true </code>
- *</ul>
- * <p> Prompt the user for the principal name and the password.
+ * the keytab, or from the shared state. A configuration error will occur.</dd>
+ *
+ * <dd><pre>{@code
+ * keyTab = <filename> doNotPrompt = true}</pre>
+ * This is an illegal combination since useKeyTab is not set to true and
+ * the keyTab is set. A configuration error will occur.</dd>
+ *
+ * <dd><pre>{@code
+ * debug = true}</pre>
+ * Prompt the user for the principal name and the password.
* Use the authentication exchange to get TGT from the KDC and
- * populate the <code>Subject</code> with the principal and TGT.
- * Output debug messages.
- * <ul>
- * <p> <code>useTicketCache</code> = true <code>doNotPrompt</code>=true;
- *</ul>
- * <p>Check the default cache for TGT and populate the <code>Subject</code>
+ * populate the {@code Subject} with the principal and TGT.
+ * Output debug messages.</dd>
+ *
+ * <dd><pre>{@code
+ * useTicketCache = true doNotPrompt = true}</pre>
+ * Check the default cache for TGT and populate the {@code Subject}
* with the principal and TGT. If the TGT is not available,
- * do not prompt the user, instead fail the authentication.
- * <ul>
- * <p><code>principal</code>=<name><code>useTicketCache</code> = true
- * <code>doNotPrompt</code>=true;
- *</ul>
- * <p> Get the TGT from the default cache for the principal and populate the
+ * do not prompt the user, instead fail the authentication.</dd>
+ *
+ * <dd><pre>{@code
+ * principal = <name> useTicketCache = true doNotPrompt = true}</pre>
+ * Get the TGT from the default cache for the principal and populate the
* Subject's principal and private creds set. If ticket cache is
* not available or does not contain the principal's TGT
- * authentication will fail.
- * <ul>
- * <p> <code>useTicketCache</code> = true
- * <code>ticketCache</code>=<file name><code>useKeyTab</code> = true
- * <code> keyTab</code>=<keytab filename>
- * <code>principal</code> = <principal name>
- * <code>doNotPrompt</code>=true;
- *</ul>
- * <p> Search the cache for the principal's TGT. If it is not available
+ * authentication will fail.</dd>
+ *
+ * <dd><pre>{@code
+ * useTicketCache = true
+ * ticketCache = <file name>
+ * useKeyTab = true
+ * keyTab = <keytab filename>
+ * principal = <principal name>
+ * doNotPrompt = true}</pre>
+ * Search the cache for the principal's TGT. If it is not available
* use the key in the keytab to perform authentication exchange with the
* KDC and acquire the TGT.
* The Subject will be populated with the principal and the TGT.
- * If the key is not available or valid then authentication will fail.
- * <ul>
- * <p><code>useTicketCache</code> = true
- * <code>ticketCache</code>=<file name>
- *</ul>
- * <p> The TGT will be obtained from the cache specified.
+ * If the key is not available or valid then authentication will fail.</dd>
+ *
+ * <dd><pre>{@code
+ * useTicketCache = true ticketCache = <filename>}</pre>
+ * The TGT will be obtained from the cache specified.
* The Kerberos principal name used will be the principal name in
* the Ticket cache. If the TGT is not available in the
* ticket cache the user will be prompted for the principal name
* and the password. The TGT will be obtained using the authentication
* exchange with the KDC.
- * The Subject will be populated with the TGT.
- *<ul>
- * <p> <code>useKeyTab</code> = true
- * <code>keyTab</code>=<keytab filename>
- * <code>principal</code>= <principal name>
- * <code>storeKey</code>=true;
- *</ul>
- * <p> The key for the principal will be retrieved from the keytab.
+ * The Subject will be populated with the TGT.</dd>
+ *
+ * <dd><pre>{@code
+ * useKeyTab = true keyTab=<keytab filename> principal = <principal name> storeKey = true}</pre>
+ * The key for the principal will be retrieved from the keytab.
* If the key is not available in the keytab the user will be prompted
* for the principal's password. The Subject will be populated
* with the principal's key either from the keytab or derived from the
- * password entered.
- * <ul>
- * <p> <code>useKeyTab</code> = true
- * <code>keyTab</code>=<keytabname>
- * <code>storeKey</code>=true
- * <code>doNotPrompt</code>=false;
- *</ul>
- * <p>The user will be prompted for the service principal name.
+ * password entered.</dd>
+ *
+ * <dd><pre>{@code
+ * useKeyTab = true keyTab = <keytabname> storeKey = true doNotPrompt = false}</pre>
+ * The user will be prompted for the service principal name.
* If the principal's
* longterm key is available in the keytab , it will be added to the
* Subject's private credentials. An authentication exchange will be
* attempted with the principal name and the key from the Keytab.
* If successful the TGT will be added to the
- * Subject's private credentials set. Otherwise the authentication will
- * fail.
- * <ul>
- * <p> <code>isInitiator</code> = false <code>useKeyTab</code> = true
- * <code>keyTab</code>=<keytabname>
- * <code>storeKey</code>=true
- * <code>principal</code>=*;
- *</ul>
- * <p>The acceptor will be an unbound acceptor and it can act as any principal
- * as long that principal has keys in the keytab.
- *<ul>
- * <p>
- * <code>useTicketCache</code>=true
- * <code>ticketCache</code>=<file name>;
- * <code>useKeyTab</code> = true
- * <code>keyTab</code>=<file name> <code>storeKey</code>=true
- * <code>principal</code>= <principal name>
- *</ul>
- * <p>
+ * Subject's private credentials set. Otherwise the authentication will fail.</dd>
+ *
+ * <dd><pre>{@code
+ * isInitiator = false useKeyTab = true keyTab = <keytabname> storeKey = true principal = *}</pre>
+ * The acceptor will be an unbound acceptor and it can act as any principal
+ * as long that principal has keys in the keytab.</dd>
+ *
+ * <dd><pre>{@code
+ * useTicketCache = true
+ * ticketCache = <file name>
+ * useKeyTab = true
+ * keyTab = <file name>
+ * storeKey = true
+ * principal = <principal name>}</pre>
* The client's TGT will be retrieved from the ticket cache and added to the
- * <code>Subject</code>'s private credentials. If the TGT is not available
+ * {@code Subject}'s private credentials. If the TGT is not available
* in the ticket cache, or the TGT's client name does not match the principal
* name, Java will use a secret key to obtain the TGT using the authentication
* exchange and added to the Subject's private credentials.
* This secret key will be first retrieved from the keytab. If the key
* is not available, the user will be prompted for the password. In either
* case, the key derived from the password will be added to the
- * Subject's private credentials set.
- * <ul>
- * <p><code>isInitiator</code> = false
- *</ul>
- * <p>Configured to act as acceptor only, credentials are not acquired
+ * Subject's private credentials set.</dd>
+ *
+ * <dd><pre>{@code
+ * isInitiator = false}</pre>
+ * Configured to act as acceptor only, credentials are not acquired
* via AS exchange. For acceptors only, set this value to false.
- * For initiators, do not set this value to false.
- * <ul>
- * <p><code>isInitiator</code> = true
- *</ul>
- * <p>Configured to act as initiator, credentials are acquired
+ * For initiators, do not set this value to false.</dd>
+ *
+ * <dd><pre>{@code
+ * isInitiator = true}</pre>
+ * Configured to act as initiator, credentials are acquired
* via AS exchange. For initiators, set this value to true, or leave this
- * option unset, in which case default value (true) will be used.
+ * option unset, in which case default value (true) will be used.</dd>
+ *
+ * </dl></blockquote>
*
* @author Ram Marti
*/
@@ -445,20 +429,19 @@
);
/**
- * Initialize this <code>LoginModule</code>.
+ * Initialize this {@code LoginModule}.
*
- * <p>
- * @param subject the <code>Subject</code> to be authenticated. <p>
+ * @param subject the {@code Subject} to be authenticated.
*
- * @param callbackHandler a <code>CallbackHandler</code> for
+ * @param callbackHandler a {@code CallbackHandler} for
* communication with the end user (prompting for
- * usernames and passwords, for example). <p>
+ * usernames and passwords, for example).
*
- * @param sharedState shared <code>LoginModule</code> state. <p>
+ * @param sharedState shared {@code LoginModule} state.
*
* @param options options specified in the login
- * <code>Configuration</code> for this particular
- * <code>LoginModule</code>.
+ * {@code Configuration} for this particular
+ * {@code LoginModule}.
*/
// Unchecked warning from (Map<String, Object>)sharedState is safe
// since javax.security.auth.login.LoginContext passes a raw HashMap.
@@ -536,14 +519,12 @@
/**
* Authenticate the user
*
- * <p>
- *
- * @return true in all cases since this <code>LoginModule</code>
+ * @return true in all cases since this {@code LoginModule}
* should not be ignored.
*
- * @exception FailedLoginException if the authentication fails. <p>
+ * @exception FailedLoginException if the authentication fails.
*
- * @exception LoginException if this <code>LoginModule</code>
+ * @exception LoginException if this {@code LoginModule}
* is unable to perform the authentication.
*/
public boolean login() throws LoginException {
@@ -1019,23 +1000,21 @@
}
/**
- * <p> This method is called if the LoginContext's
+ * This method is called if the LoginContext's
* overall authentication succeeded
* (the relevant REQUIRED, REQUISITE, SUFFICIENT and OPTIONAL
* LoginModules succeeded).
*
* <p> If this LoginModule's own authentication attempt
* succeeded (checked by retrieving the private state saved by the
- * <code>login</code> method), then this method associates a
- * <code>Krb5Principal</code>
- * with the <code>Subject</code> located in the
- * <code>LoginModule</code>. It adds Kerberos Credentials to the
+ * {@code login} method), then this method associates a
+ * {@code Krb5Principal}
+ * with the {@code Subject} located in the
+ * {@code LoginModule}. It adds Kerberos Credentials to the
* the Subject's private credentials set. If this LoginModule's own
* authentication attempted failed, then this method removes
* any state that was originally saved.
*
- * <p>
- *
* @exception LoginException if the commit fails.
*
* @return true if this LoginModule's own login and commit
@@ -1147,18 +1126,16 @@
}
/**
- * <p> This method is called if the LoginContext's
+ * This method is called if the LoginContext's
* overall authentication failed.
* (the relevant REQUIRED, REQUISITE, SUFFICIENT and OPTIONAL
* LoginModules did not succeed).
*
* <p> If this LoginModule's own authentication attempt
* succeeded (checked by retrieving the private state saved by the
- * <code>login</code> and <code>commit</code> methods),
+ * {@code login} and {@code commit} methods),
* then this method cleans up any state that was originally saved.
*
- * <p>
- *
* @exception LoginException if the abort fails.
*
* @return false if this LoginModule's own login and/or commit attempts
@@ -1183,14 +1160,12 @@
/**
* Logout the user.
*
- * <p> This method removes the <code>Krb5Principal</code>
- * that was added by the <code>commit</code> method.
- *
- * <p>
+ * <p> This method removes the {@code Krb5Principal}
+ * that was added by the {@code commit} method.
*
* @exception LoginException if the logout fails.
*
- * @return true in all cases since this <code>LoginModule</code>
+ * @return true in all cases since this {@code LoginModule}
* should not be ignored.
*/
public boolean logout() throws LoginException {
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/LdapLoginModule.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/LdapLoginModule.java Tue May 05 13:29:12 2015 -0700
@@ -70,8 +70,8 @@
* conjunction with a specified search filter.
* If successful then authentication is attempted using the user's
* distinguished name and the supplied password.
- * To enable this mode, set the <code>userFilter</code> option and omit the
- * <code>authIdentity</code> option.
+ * To enable this mode, set the {@code userFilter} option and omit the
+ * {@code authIdentity} option.
* Use search-first mode when the user's distinguished name is not
* known in advance.
*
@@ -79,22 +79,22 @@
* supplied username and password and then the LDAP directory is searched.
* If authentication is successful then a search is performed using the
* supplied username in conjunction with a specified search filter.
- * To enable this mode, set the <code>authIdentity</code> and the
- * <code>userFilter</code> options.
+ * To enable this mode, set the {@code authIdentity} and the
+ * {@code userFilter} options.
* Use authentication-first mode when accessing an LDAP directory
* that has been configured to disallow anonymous searches.
*
* <p> In authentication-only mode, authentication is attempted using the
* supplied username and password. The LDAP directory is not searched because
* the user's distinguished name is already known.
- * To enable this mode, set the <code>authIdentity</code> option to a valid
- * distinguished name and omit the <code>userFilter</code> option.
+ * To enable this mode, set the {@code authIdentity} option to a valid
+ * distinguished name and omit the {@code userFilter} option.
* Use authentication-only mode when the user's distinguished name is
* known in advance.
*
* <p> The following option is mandatory and must be specified in this
* module's login {@link Configuration}:
- * <dl><dt></dt><dd>
+ * <dl><dd>
* <dl>
* <dt> <code>userProvider=<b>ldap_urls</b></code>
* </dt>
@@ -106,7 +106,7 @@
* When several LDAP URLs are specified then each is attempted,
* in turn, until the first successful connection is established.
* Spaces in the distinguished name component of the URL must be escaped
- * using the standard mechanism of percent character ('<code>%</code>')
+ * using the standard mechanism of percent character ('{@code %}')
* followed by two hexadecimal digits (see {@link java.net.URI}).
* Query components must also be omitted from the URL.
*
@@ -120,33 +120,33 @@
*
* <p> This module also recognizes the following optional {@link Configuration}
* options:
- * <dl><dt></dt><dd>
+ * <dl><dd>
* <dl>
* <dt> <code>userFilter=<b>ldap_filter</b></code> </dt>
* <dd> This option specifies the search filter to use to locate a user's
* entry in the LDAP directory. It is used to determine a user's
* distinguished name.
- * <code><b>ldap_filter</b></code> is an LDAP filter string
+ * <b>{@code ldap_filter}</b> is an LDAP filter string
* (<a href="http://www.ietf.org/rfc/rfc2254.txt">RFC 2254</a>).
- * If it contains the special token "<code><b>{USERNAME}</b></code>"
+ * If it contains the special token "<b>{@code {USERNAME}}</b>"
* then that token will be replaced with the supplied username value
* before the filter is used to search the directory. </dd>
*
* <dt> <code>authIdentity=<b>auth_id</b></code> </dt>
* <dd> This option specifies the identity to use when authenticating a user
* to the LDAP directory.
- * <code><b>auth_id</b></code> may be an LDAP distinguished name string
+ * <b>{@code auth_id}</b> may be an LDAP distinguished name string
* (<a href="http://www.ietf.org/rfc/rfc2253.txt">RFC 2253</a>) or some
* other string name.
- * It must contain the special token "<code><b>{USERNAME}</b></code>"
+ * It must contain the special token "<b>{@code {USERNAME}}</b>"
* which will be replaced with the supplied username value before the
* name is used for authentication.
* Note that if this option does not contain a distinguished name then
- * the <code>userFilter</code> option must also be specified. </dd>
+ * the {@code userFilter} option must also be specified. </dd>
*
* <dt> <code>authzIdentity=<b>authz_id</b></code> </dt>
* <dd> This option specifies an authorization identity for the user.
- * <code><b>authz_id</b></code> is any string name.
+ * <b>{@code authz_id}</b> is any string name.
* If it comprises a single special token with curly braces then
* that token is treated as a attribute name and will be replaced with a
* single value of that attribute from the user's LDAP entry.
@@ -156,23 +156,23 @@
* is created using the authorization identity and it is associated with
* the current {@link Subject}. </dd>
*
- * <dt> <code>useSSL</code> </dt>
- * <dd> if <code>false</code>, this module does not establish an SSL connection
+ * <dt> {@code useSSL} </dt>
+ * <dd> if {@code false}, this module does not establish an SSL connection
* to the LDAP server before attempting authentication. SSL is used to
* protect the privacy of the user's password because it is transmitted
* in the clear over LDAP.
* By default, this module uses SSL. </dd>
*
- * <dt> <code>useFirstPass</code> </dt>
- * <dd> if <code>true</code>, this module retrieves the username and password
+ * <dt> {@code useFirstPass} </dt>
+ * <dd> if {@code true}, this module retrieves the username and password
* from the module's shared state, using "javax.security.auth.login.name"
* and "javax.security.auth.login.password" as the respective keys. The
* retrieved values are used for authentication. If authentication fails,
* no attempt for a retry is made, and the failure is reported back to
* the calling application.</dd>
*
- * <dt> <code>tryFirstPass</code> </dt>
- * <dd> if <code>true</code>, this module retrieves the username and password
+ * <dt> {@code tryFirstPass} </dt>
+ * <dd> if {@code true}, this module retrieves the username and password
* from the module's shared state, using "javax.security.auth.login.name"
* and "javax.security.auth.login.password" as the respective keys. The
* retrieved values are used for authentication. If authentication fails,
@@ -181,8 +181,8 @@
* authentication fails, the failure is reported back to the calling
* application.</dd>
*
- * <dt> <code>storePass</code> </dt>
- * <dd> if <code>true</code>, this module stores the username and password
+ * <dt> {@code storePass} </dt>
+ * <dd> if {@code true}, this module stores the username and password
* obtained from the {@link CallbackHandler} in the module's shared state,
* using
* "javax.security.auth.login.name" and
@@ -190,13 +190,13 @@
* not performed if existing values already exist for the username and
* password in the shared state, or if authentication fails.</dd>
*
- * <dt> <code>clearPass</code> </dt>
- * <dd> if <code>true</code>, this module clears the username and password
+ * <dt> {@code clearPass} </dt>
+ * <dd> if {@code true}, this module clears the username and password
* stored in the module's shared state after both phases of authentication
* (login and commit) have completed.</dd>
*
- * <dt> <code>debug</code> </dt>
- * <dd> if <code>true</code>, debug messages are displayed on the standard
+ * <dt> {@code debug} </dt>
+ * <dd> if {@code true}, debug messages are displayed on the standard
* output stream.
* </dl>
* </dl>
@@ -209,36 +209,36 @@
* Note that the following four JNDI properties are set by this module directly
* and are ignored if also present in the configuration:
* <ul>
- * <li> <code>java.naming.provider.url</code>
- * <li> <code>java.naming.security.principal</code>
- * <li> <code>java.naming.security.credentials</code>
- * <li> <code>java.naming.security.protocol</code>
+ * <li> {@code java.naming.provider.url}
+ * <li> {@code java.naming.security.principal}
+ * <li> {@code java.naming.security.credentials}
+ * <li> {@code java.naming.security.protocol}
* </ul>
*
* <p>
* Three sample {@link Configuration}s are shown below.
* The first one activates search-first mode. It identifies the LDAP server
- * and specifies that users' entries be located by their <code>uid</code> and
- * <code>objectClass</code> attributes. It also specifies that an identity
- * based on the user's <code>employeeNumber</code> attribute should be created.
+ * and specifies that users' entries be located by their {@code uid} and
+ * {@code objectClass} attributes. It also specifies that an identity
+ * based on the user's {@code employeeNumber} attribute should be created.
* The second one activates authentication-first mode. It requests that the
* LDAP server be located dynamically, that authentication be performed using
* the supplied username directly but without the protection of SSL and that
* users' entries be located by one of three naming attributes and their
- * <code>objectClass</code> attribute.
+ * {@code objectClass} attribute.
* The third one activates authentication-only mode. It identifies alternative
* LDAP servers, it specifies the distinguished name to use for
* authentication and a fixed identity to use for authorization. No directory
* search is performed.
*
- * <pre>
+ * <pre>{@literal
*
* ExampleApplication {
* com.sun.security.auth.module.LdapLoginModule REQUIRED
- * userProvider="ldap://ldap-svr/ou=people,dc=example,dc=com"
- * userFilter="(&(uid={USERNAME})(objectClass=inetOrgPerson))"
- * authzIdentity="{EMPLOYEENUMBER}"
- * debug=true;
+ * userProvider="ldap://ldap-svr/ou=people,dc=example,dc=com"
+ * userFilter="(&(uid={USERNAME})(objectClass=inetOrgPerson))"
+ * authzIdentity="{EMPLOYEENUMBER}"
+ * debug=true;
* };
*
* ExampleApplication {
@@ -258,7 +258,7 @@
* debug=true;
* };
*
- * </pre>
+ * }</pre>
*
* <dl>
* <dt><b>Note:</b> </dt>
@@ -282,7 +282,6 @@
* <em>caller-specified</em> {@link Configuration} then the application
* must be granted the permissions required by the {@link LoginModule}.
* <em>This</em> module requires the following two permissions:
- * <p>
* <ul>
* <li> The {@link SocketPermission} to connect to an LDAP server.
* <li> The {@link AuthPermission} to modify the set of {@link Principal}s
@@ -373,15 +372,15 @@
private SearchControls constraints = null;
/**
- * Initialize this <code>LoginModule</code>.
+ * Initialize this {@code LoginModule}.
*
- * @param subject the <code>Subject</code> to be authenticated.
- * @param callbackHandler a <code>CallbackHandler</code> to acquire the
+ * @param subject the {@code Subject} to be authenticated.
+ * @param callbackHandler a {@code CallbackHandler} to acquire the
* username and password.
- * @param sharedState shared <code>LoginModule</code> state.
+ * @param sharedState shared {@code LoginModule} state.
* @param options options specified in the login
- * <code>Configuration</code> for this particular
- * <code>LoginModule</code>.
+ * {@code Configuration} for this particular
+ * {@code LoginModule}.
*/
// Unchecked warning from (Map<String, Object>)sharedState is safe
// since javax.security.auth.login.LoginContext passes a raw HashMap.
@@ -492,10 +491,10 @@
* <p> Acquire the user's credentials and verify them against the
* specified LDAP directory.
*
- * @return true always, since this <code>LoginModule</code>
+ * @return true always, since this {@code LoginModule}
* should not be ignored.
* @exception FailedLoginException if the authentication fails.
- * @exception LoginException if this <code>LoginModule</code>
+ * @exception LoginException if this {@code LoginModule}
* is unable to perform the authentication.
*/
public boolean login() throws LoginException {
@@ -593,10 +592,10 @@
*
* <p> If this LoginModule's own authentication attempt
* succeeded (checked by retrieving the private state saved by the
- * <code>login</code> method), then this method associates an
- * <code>LdapPrincipal</code> and one or more <code>UserPrincipal</code>s
- * with the <code>Subject</code> located in the
- * <code>LoginModule</code>. If this LoginModule's own
+ * {@code login} method), then this method associates an
+ * {@code LdapPrincipal} and one or more {@code UserPrincipal}s
+ * with the {@code Subject} located in the
+ * {@code LoginModule}. If this LoginModule's own
* authentication attempted failed, then this method removes
* any state that was originally saved.
*
@@ -662,7 +661,7 @@
*
* <p> If this LoginModule's own authentication attempt
* succeeded (checked by retrieving the private state saved by the
- * <code>login</code> and <code>commit</code> methods),
+ * {@code login} and {@code commit} methods),
* then this method cleans up any state that was originally saved.
*
* @exception LoginException if the abort fails.
@@ -697,10 +696,10 @@
* Logout a user.
*
* <p> This method removes the Principals
- * that were added by the <code>commit</code> method.
+ * that were added by the {@code commit} method.
*
* @exception LoginException if the logout fails.
- * @return true in all cases since this <code>LoginModule</code>
+ * @return true in all cases since this {@code LoginModule}
* should not be ignored.
*/
public boolean logout() throws LoginException {
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/NTLoginModule.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/NTLoginModule.java Tue May 05 13:29:12 2015 -0700
@@ -41,10 +41,10 @@
import com.sun.security.auth.NTNumericCredential;
/**
- * <p> This <code>LoginModule</code>
+ * This {@code LoginModule}
* renders a user's NT security information as some number of
- * <code>Principal</code>s
- * and associates them with a <code>Subject</code>.
+ * {@code Principal}s
+ * and associates them with a {@code Subject}.
*
* <p> This LoginModule recognizes the debug option.
* If set to true in the login Configuration,
@@ -85,23 +85,21 @@
private NTNumericCredential iToken; // impersonation token
/**
- * Initialize this <code>LoginModule</code>.
- *
- * <p>
+ * Initialize this {@code LoginModule}.
*
- * @param subject the <code>Subject</code> to be authenticated. <p>
+ * @param subject the {@code Subject} to be authenticated.
*
- * @param callbackHandler a <code>CallbackHandler</code> for communicating
+ * @param callbackHandler a {@code CallbackHandler} for communicating
* with the end user (prompting for usernames and
* passwords, for example). This particular LoginModule only
* extracts the underlying NT system information, so this
- * parameter is ignored.<p>
+ * parameter is ignored.
*
- * @param sharedState shared <code>LoginModule</code> state. <p>
+ * @param sharedState shared {@code LoginModule} state.
*
* @param options options specified in the login
- * <code>Configuration</code> for this particular
- * <code>LoginModule</code>.
+ * {@code Configuration} for this particular
+ * {@code LoginModule}.
*/
public void initialize(Subject subject, CallbackHandler callbackHandler,
Map<String,?> sharedState,
@@ -125,14 +123,12 @@
/**
* Import underlying NT system identity information.
*
- * <p>
- *
- * @return true in all cases since this <code>LoginModule</code>
+ * @return true in all cases since this {@code LoginModule}
* should not be ignored.
*
- * @exception FailedLoginException if the authentication fails. <p>
+ * @exception FailedLoginException if the authentication fails.
*
- * @exception LoginException if this <code>LoginModule</code>
+ * @exception LoginException if this {@code LoginModule}
* is unable to perform the authentication.
*/
public boolean login() throws LoginException {
@@ -221,22 +217,20 @@
}
/**
- * <p> This method is called if the LoginContext's
+ * This method is called if the LoginContext's
* overall authentication succeeded
* (the relevant REQUIRED, REQUISITE, SUFFICIENT and OPTIONAL LoginModules
* succeeded).
*
* <p> If this LoginModule's own authentication attempt
* succeeded (checked by retrieving the private state saved by the
- * <code>login</code> method), then this method associates some
- * number of various <code>Principal</code>s
- * with the <code>Subject</code> located in the
- * <code>LoginModuleContext</code>. If this LoginModule's own
+ * {@code login} method), then this method associates some
+ * number of various {@code Principal}s
+ * with the {@code Subject} located in the
+ * {@code LoginModuleContext}. If this LoginModule's own
* authentication attempted failed, then this method removes
* any state that was originally saved.
*
- * <p>
- *
* @exception LoginException if the commit fails.
*
* @return true if this LoginModule's own login and commit
@@ -290,18 +284,16 @@
/**
- * <p> This method is called if the LoginContext's
+ * This method is called if the LoginContext's
* overall authentication failed.
* (the relevant REQUIRED, REQUISITE, SUFFICIENT and OPTIONAL LoginModules
* did not succeed).
*
* <p> If this LoginModule's own authentication attempt
* succeeded (checked by retrieving the private state saved by the
- * <code>login</code> and <code>commit</code> methods),
+ * {@code login} and {@code commit} methods),
* then this method cleans up any state that was originally saved.
*
- * <p>
- *
* @exception LoginException if the abort fails.
*
* @return false if this LoginModule's own login and/or commit attempts
@@ -336,17 +328,15 @@
/**
* Logout the user.
*
- * <p> This method removes the <code>NTUserPrincipal</code>,
- * <code>NTDomainPrincipal</code>, <code>NTSidUserPrincipal</code>,
- * <code>NTSidDomainPrincipal</code>, <code>NTSidGroupPrincipal</code>s,
- * and <code>NTSidPrimaryGroupPrincipal</code>
- * that may have been added by the <code>commit</code> method.
- *
- * <p>
+ * <p> This method removes the {@code NTUserPrincipal},
+ * {@code NTDomainPrincipal}, {@code NTSidUserPrincipal},
+ * {@code NTSidDomainPrincipal}, {@code NTSidGroupPrincipal}s,
+ * and {@code NTSidPrimaryGroupPrincipal}
+ * that may have been added by the {@code commit} method.
*
* @exception LoginException if the logout fails.
*
- * @return true in all cases since this <code>LoginModule</code>
+ * @return true in all cases since this {@code LoginModule}
* should not be ignored.
*/
public boolean logout() throws LoginException {
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/NTSystem.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/NTSystem.java Tue May 05 13:29:12 2015 -0700
@@ -26,7 +26,7 @@
package com.sun.security.auth.module;
/**
- * <p> This class implementation retrieves and makes available NT
+ * This class implementation retrieves and makes available NT
* security information for the current user.
*
*/
@@ -45,7 +45,7 @@
private long impersonationToken;
/**
- * Instantiate an <code>NTSystem</code> and load
+ * Instantiate an {@code NTSystem} and load
* the native library to access the underlying system information.
*/
public NTSystem() {
@@ -53,7 +53,7 @@
}
/**
- * Instantiate an <code>NTSystem</code> and load
+ * Instantiate an {@code NTSystem} and load
* the native library to access the underlying system information.
*/
NTSystem(boolean debug) {
@@ -64,8 +64,6 @@
/**
* Get the username for the current NT user.
*
- * <p>
- *
* @return the username for the current NT user.
*/
public String getName() {
@@ -75,8 +73,6 @@
/**
* Get the domain for the current NT user.
*
- * <p>
- *
* @return the domain for the current NT user.
*/
public String getDomain() {
@@ -86,8 +82,6 @@
/**
* Get a printable SID for the current NT user's domain.
*
- * <p>
- *
* @return a printable SID for the current NT user's domain.
*/
public String getDomainSID() {
@@ -97,8 +91,6 @@
/**
* Get a printable SID for the current NT user.
*
- * <p>
- *
* @return a printable SID for the current NT user.
*/
public String getUserSID() {
@@ -108,8 +100,6 @@
/**
* Get a printable primary group SID for the current NT user.
*
- * <p>
- *
* @return the primary group SID for the current NT user.
*/
public String getPrimaryGroupID() {
@@ -119,8 +109,6 @@
/**
* Get the printable group SIDs for the current NT user.
*
- * <p>
- *
* @return the group SIDs for the current NT user.
*/
public String[] getGroupIDs() {
@@ -130,8 +118,6 @@
/**
* Get an impersonation token for the current NT user.
*
- * <p>
- *
* @return an impersonation token for the current NT user.
*/
public synchronized long getImpersonationToken() {
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/SolarisLoginModule.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/SolarisLoginModule.java Tue May 05 13:29:12 2015 -0700
@@ -36,17 +36,17 @@
import com.sun.security.auth.SolarisNumericGroupPrincipal;
/**
- * <p> This <code>LoginModule</code> imports a user's Solaris
- * <code>Principal</code> information (<code>SolarisPrincipal</code>,
- * <code>SolarisNumericUserPrincipal</code>,
- * and <code>SolarisNumericGroupPrincipal</code>)
- * and associates them with the current <code>Subject</code>.
+ * This {@code LoginModule} imports a user's Solaris
+ * {@code Principal} information ({@code SolarisPrincipal},
+ * {@code SolarisNumericUserPrincipal},
+ * and {@code SolarisNumericGroupPrincipal})
+ * and associates them with the current {@code Subject}.
*
* <p> This LoginModule recognizes the debug option.
* If set to true in the login Configuration,
* debug messages will be output to the output stream, System.out.
* @deprecated As of JDK1.4, replaced by
- * <code>com.sun.security.auth.module.UnixLoginModule</code>.
+ * {@code com.sun.security.auth.module.UnixLoginModule}.
* This LoginModule is entirely deprecated and
* is here to allow for a smooth transition to the new
* UnixLoginModule.
@@ -80,21 +80,19 @@
new LinkedList<>();
/**
- * Initialize this <code>LoginModule</code>.
+ * Initialize this {@code LoginModule}.
*
- * <p>
- *
- * @param subject the <code>Subject</code> to be authenticated. <p>
+ * @param subject the {@code Subject} to be authenticated.
*
- * @param callbackHandler a <code>CallbackHandler</code> for communicating
+ * @param callbackHandler a {@code CallbackHandler} for communicating
* with the end user (prompting for usernames and
- * passwords, for example). <p>
+ * passwords, for example).
*
- * @param sharedState shared <code>LoginModule</code> state. <p>
+ * @param sharedState shared {@code LoginModule} state.
*
* @param options options specified in the login
- * <code>Configuration</code> for this particular
- * <code>LoginModule</code>.
+ * {@code Configuration} for this particular
+ * {@code LoginModule}.
*/
public void initialize(Subject subject, CallbackHandler callbackHandler,
Map<String,?> sharedState,
@@ -114,15 +112,13 @@
* Authenticate the user (first phase).
*
* <p> The implementation of this method attempts to retrieve the user's
- * Solaris <code>Subject</code> information by making a native Solaris
+ * Solaris {@code Subject} information by making a native Solaris
* system call.
*
- * <p>
- *
* @exception FailedLoginException if attempts to retrieve the underlying
* system information fail.
*
- * @return true in all cases (this <code>LoginModule</code>
+ * @return true in all cases (this {@code LoginModule}
* should not be ignored).
*/
public boolean login() throws LoginException {
@@ -175,13 +171,11 @@
* <p> If this LoginModule's own authentication attempt
* succeeded (the importing of the Solaris authentication information
* succeeded), then this method associates the Solaris Principals
- * with the <code>Subject</code> currently tied to the
- * <code>LoginModule</code>. If this LoginModule's
+ * with the {@code Subject} currently tied to the
+ * {@code LoginModule}. If this LoginModule's
* authentication attempted failed, then this method removes
* any state that was originally saved.
*
- * <p>
- *
* @exception LoginException if the commit fails
*
* @return true if this LoginModule's own login and commit attempts
@@ -232,10 +226,8 @@
* did not succeed).
*
* <p> This method cleans up any state that was originally saved
- * as part of the authentication attempt from the <code>login</code>
- * and <code>commit</code> methods.
- *
- * <p>
+ * as part of the authentication attempt from the {@code login}
+ * and {@code commit} methods.
*
* @exception LoginException if the abort fails
*
@@ -272,13 +264,11 @@
* Logout the user
*
* <p> This method removes the Principals associated
- * with the <code>Subject</code>.
- *
- * <p>
+ * with the {@code Subject}.
*
* @exception LoginException if the logout fails
*
- * @return true in all cases (this <code>LoginModule</code>
+ * @return true in all cases (this {@code LoginModule}
* should not be ignored).
*/
public boolean logout() throws LoginException {
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/SolarisSystem.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/SolarisSystem.java Tue May 05 13:29:12 2015 -0700
@@ -26,7 +26,7 @@
package com.sun.security.auth.module;
/**
- * <p> This class implementation retrieves and makes available Solaris
+ * This class implementation retrieves and makes available Solaris
* UID/GID/groups information for the current user.
*
* @deprecated replaced by {@link UnixSystem}.
@@ -43,7 +43,7 @@
protected long[] groups;
/**
- * Instantiate a <code>SolarisSystem</code> and load
+ * Instantiate a {@code SolarisSystem} and load
* the native library to access the underlying system information.
*/
public SolarisSystem() {
@@ -54,8 +54,6 @@
/**
* Get the username for the current Solaris user.
*
- * <p>
- *
* @return the username for the current Solaris user.
*/
public String getUsername() {
@@ -65,8 +63,6 @@
/**
* Get the UID for the current Solaris user.
*
- * <p>
- *
* @return the UID for the current Solaris user.
*/
public long getUid() {
@@ -76,8 +72,6 @@
/**
* Get the GID for the current Solaris user.
*
- * <p>
- *
* @return the GID for the current Solaris user.
*/
public long getGid() {
@@ -87,8 +81,6 @@
/**
* Get the supplementary groups for the current Solaris user.
*
- * <p>
- *
* @return the supplementary groups for the current Solaris user.
*/
public long[] getGroups() {
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/UnixLoginModule.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/UnixLoginModule.java Tue May 05 13:29:12 2015 -0700
@@ -36,11 +36,11 @@
import com.sun.security.auth.UnixNumericGroupPrincipal;
/**
- * <p> This <code>LoginModule</code> imports a user's Unix
- * <code>Principal</code> information (<code>UnixPrincipal</code>,
- * <code>UnixNumericUserPrincipal</code>,
- * and <code>UnixNumericGroupPrincipal</code>)
- * and associates them with the current <code>Subject</code>.
+ * This {@code LoginModule} imports a user's Unix
+ * {@code Principal} information ({@code UnixPrincipal},
+ * {@code UnixNumericUserPrincipal},
+ * and {@code UnixNumericGroupPrincipal})
+ * and associates them with the current {@code Subject}.
*
* <p> This LoginModule recognizes the debug option.
* If set to true in the login Configuration,
@@ -74,21 +74,19 @@
new LinkedList<>();
/**
- * Initialize this <code>LoginModule</code>.
+ * Initialize this {@code LoginModule}.
*
- * <p>
- *
- * @param subject the <code>Subject</code> to be authenticated. <p>
+ * @param subject the {@code Subject} to be authenticated.
*
- * @param callbackHandler a <code>CallbackHandler</code> for communicating
+ * @param callbackHandler a {@code CallbackHandler} for communicating
* with the end user (prompting for usernames and
- * passwords, for example). <p>
+ * passwords, for example).
*
- * @param sharedState shared <code>LoginModule</code> state. <p>
+ * @param sharedState shared {@code LoginModule} state.
*
* @param options options specified in the login
- * <code>Configuration</code> for this particular
- * <code>LoginModule</code>.
+ * {@code Configuration} for this particular
+ * {@code LoginModule}.
*/
public void initialize(Subject subject, CallbackHandler callbackHandler,
Map<String,?> sharedState,
@@ -107,15 +105,13 @@
* Authenticate the user (first phase).
*
* <p> The implementation of this method attempts to retrieve the user's
- * Unix <code>Subject</code> information by making a native Unix
+ * Unix {@code Subject} information by making a native Unix
* system call.
*
- * <p>
- *
* @exception FailedLoginException if attempts to retrieve the underlying
* system information fail.
*
- * @return true in all cases (this <code>LoginModule</code>
+ * @return true in all cases (this {@code LoginModule}
* should not be ignored).
*/
public boolean login() throws LoginException {
@@ -169,13 +165,11 @@
* <p> If this LoginModule's own authentication attempt
* succeeded (the importing of the Unix authentication information
* succeeded), then this method associates the Unix Principals
- * with the <code>Subject</code> currently tied to the
- * <code>LoginModule</code>. If this LoginModule's
+ * with the {@code Subject} currently tied to the
+ * {@code LoginModule}. If this LoginModule's
* authentication attempted failed, then this method removes
* any state that was originally saved.
*
- * <p>
- *
* @exception LoginException if the commit fails
*
* @return true if this LoginModule's own login and commit attempts
@@ -228,10 +222,8 @@
* did not succeed).
*
* <p> This method cleans up any state that was originally saved
- * as part of the authentication attempt from the <code>login</code>
- * and <code>commit</code> methods.
- *
- * <p>
+ * as part of the authentication attempt from the {@code login}
+ * and {@code commit} methods.
*
* @exception LoginException if the abort fails
*
@@ -267,13 +259,11 @@
* Logout the user
*
* <p> This method removes the Principals associated
- * with the <code>Subject</code>.
- *
- * <p>
+ * with the {@code Subject}.
*
* @exception LoginException if the logout fails
*
- * @return true in all cases (this <code>LoginModule</code>
+ * @return true in all cases (this {@code LoginModule}
* should not be ignored).
*/
public boolean logout() throws LoginException {
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/UnixSystem.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/UnixSystem.java Tue May 05 13:29:12 2015 -0700
@@ -26,9 +26,8 @@
package com.sun.security.auth.module;
/**
- * <p> This class implementation retrieves and makes available Unix
+ * This class implementation retrieves and makes available Unix
* UID/GID/groups information for the current user.
- *
*/
@jdk.Exported
public class UnixSystem {
@@ -41,7 +40,7 @@
protected long[] groups;
/**
- * Instantiate a <code>UnixSystem</code> and load
+ * Instantiate a {@code UnixSystem} and load
* the native library to access the underlying system information.
*/
public UnixSystem() {
@@ -52,8 +51,6 @@
/**
* Get the username for the current Unix user.
*
- * <p>
- *
* @return the username for the current Unix user.
*/
public String getUsername() {
@@ -63,8 +60,6 @@
/**
* Get the UID for the current Unix user.
*
- * <p>
- *
* @return the UID for the current Unix user.
*/
public long getUid() {
@@ -74,8 +69,6 @@
/**
* Get the GID for the current Unix user.
*
- * <p>
- *
* @return the GID for the current Unix user.
*/
public long getGid() {
@@ -85,8 +78,6 @@
/**
* Get the supplementary groups for the current Unix user.
*
- * <p>
- *
* @return the supplementary groups for the current Unix user.
*/
public long[] getGroups() {
--- a/jdk/test/TEST.ROOT Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/TEST.ROOT Tue May 05 13:29:12 2015 -0700
@@ -1,8 +1,15 @@
# This file identifies the root of the test-suite hierarchy.
# It also contains test-suite configuration information.
-# The list of keywords supported in the entire test suite
-keys=2d dnd i18n intermittent
+# The list of keywords supported in the entire test suite. The
+# "intermittent" keyword marks tests known to fail intermittently.
+# The "randomness" keyword marks tests using randomness with test
+# cases differing from run to run. (A test using a fixed random seed
+# would not count as "randomness" by this definition.) Extra care
+# should be taken to handle test failures of intermittent or
+# randomness tests.
+
+keys=2d dnd i18n intermittent randomness
# Tests that must run in othervm mode
othervm.dirs=java/awt java/beans javax/accessibility javax/imageio javax/sound javax/print javax/management com/sun/awt sun/awt sun/java2d sun/pisces javax/xml/jaxp/testng/validation
--- a/jdk/test/com/oracle/security/ucrypto/CipherSignNotSupported.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/com/oracle/security/ucrypto/CipherSignNotSupported.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @summary Make sure signing via encrypt and verifying via decrypt are not
* supported by OracleUcrypto provider.
* @author Anthony Scarpino
+ * @key randomness
*/
import java.util.Random;
--- a/jdk/test/com/oracle/security/ucrypto/TestAES.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/com/oracle/security/ucrypto/TestAES.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @test
* @bug 7088989 8014374
* @summary Ensure the AES ciphers of OracleUcrypto provider works correctly
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/com/oracle/security/ucrypto/TestCICOWithGCM.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/com/oracle/security/ucrypto/TestCICOWithGCM.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @bug 8014374
* @summary Test basic CipherInputStream/OutputStream func w/ GCM mode.
* @author Valerie Peng
+ * @key randomness
*/
import java.security.*;
--- a/jdk/test/com/oracle/security/ucrypto/TestCICOWithGCMAndAAD.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/com/oracle/security/ucrypto/TestCICOWithGCMAndAAD.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @bug 8014374
* @summary Test CipherInputStream/OutputStream func w/ GCM mode and AAD.
* @author Valerie Peng
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/com/oracle/security/ucrypto/TestDigest.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/com/oracle/security/ucrypto/TestDigest.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @test
* @bug 7088989
* @summary Ensure the various message digests works correctly
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/com/oracle/security/ucrypto/TestGCMKeyWrap.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/com/oracle/security/ucrypto/TestGCMKeyWrap.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @test
* @bug 8014374
* @summary Ensure key wrap/unwrap works using AES/GCM/NoPadding
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/com/sun/crypto/provider/Cipher/AES/CICO.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/com/sun/crypto/provider/Cipher/AES/CICO.java Tue May 05 13:29:12 2015 -0700
@@ -44,6 +44,7 @@
* @summary Test AES ciphers with different modes and padding schemes (ECB mode
* doesn't use IV). The test tries 3 different read methods of
* CipherInputStream.
+ * @key randomness
*/
public class CICO {
private static final String ALGORITHM = "aEs";
--- a/jdk/test/com/sun/crypto/provider/Cipher/AES/CTR.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/com/sun/crypto/provider/Cipher/AES/CTR.java Tue May 05 13:29:12 2015 -0700
@@ -43,6 +43,7 @@
* @bug 8043836
* @summary Test AES ciphers with 4 different modes with NoPadding. Check if
* data before encryption and after decryption is the same.
+ * @key randomness
*/
public class CTR {
--- a/jdk/test/com/sun/crypto/provider/Cipher/AES/Padding.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/com/sun/crypto/provider/Cipher/AES/Padding.java Tue May 05 13:29:12 2015 -0700
@@ -42,6 +42,7 @@
* @summary Test AES ciphers with different modes and padding schemes (ECB mode
* doesn't use IV). The test tries 3 different read methods of
* CipherInputStream.
+ * @key randomness
*/
public class Padding {
--- a/jdk/test/com/sun/crypto/provider/Cipher/AES/Test4513830.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/com/sun/crypto/provider/Cipher/AES/Test4513830.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @summary Verify the output size returned by AES cipher.getOutputSize
* method in DECRYPT mode does not add extra bytes for padding
* @author Valerie Peng
+ * @key randomness
*/
import java.io.PrintStream;
import java.security.*;
--- a/jdk/test/com/sun/crypto/provider/Cipher/AES/Test4517355.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/com/sun/crypto/provider/Cipher/AES/Test4517355.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @summary Verify that AES cipher.doFinal method does NOT need more
* than necessary bytes in decrypt mode
* @author Valerie Peng
+ * @key randomness
*/
import java.io.PrintStream;
import java.security.*;
--- a/jdk/test/com/sun/crypto/provider/Cipher/AES/TestAESCipher.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/com/sun/crypto/provider/Cipher/AES/TestAESCipher.java Tue May 05 13:29:12 2015 -0700
@@ -43,6 +43,7 @@
* doesn't use IV).
* @author Liwen Wang
* @author Parag Salvi
+ * @key randomness
*/
public class TestAESCipher {
--- a/jdk/test/com/sun/crypto/provider/Cipher/AES/TestCICOWithGCM.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/com/sun/crypto/provider/Cipher/AES/TestCICOWithGCM.java Tue May 05 13:29:12 2015 -0700
@@ -29,6 +29,7 @@
* @run main TestCICOWithGCM
* @summary Test CipherInputStream/OutputStream with AES GCM mode.
* @author Valerie Peng
+ * @key randomness
*/
import java.security.*;
--- a/jdk/test/com/sun/crypto/provider/Cipher/AES/TestCICOWithGCMAndAAD.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/com/sun/crypto/provider/Cipher/AES/TestCICOWithGCMAndAAD.java Tue May 05 13:29:12 2015 -0700
@@ -29,6 +29,7 @@
* @run main TestCICOWithGCMAndAAD
* @summary Test CipherInputStream/OutputStream with AES GCM mode with AAD.
* @author Valerie Peng
+ * @key randomness
*/
import java.io.*;
import java.security.*;
--- a/jdk/test/com/sun/crypto/provider/Cipher/AES/TestISO10126Padding.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/com/sun/crypto/provider/Cipher/AES/TestISO10126Padding.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @bug 4921443
* @summary Ensure ISO10126Padding works correctly.
* @author Valerie Peng
+ * @key randomness
*/
import java.util.Arrays;
import java.security.*;
--- a/jdk/test/com/sun/crypto/provider/Cipher/AES/TestNonexpanding.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/com/sun/crypto/provider/Cipher/AES/TestNonexpanding.java Tue May 05 13:29:12 2015 -0700
@@ -40,6 +40,7 @@
* @bug 8043836
* @summary Test AES encryption with no padding. Expect the original data length
* is the same as the encrypted data.
+ * @key randomness
*/
public class TestNonexpanding {
--- a/jdk/test/com/sun/crypto/provider/Cipher/AES/TestSameBuffer.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/com/sun/crypto/provider/Cipher/AES/TestSameBuffer.java Tue May 05 13:29:12 2015 -0700
@@ -42,6 +42,7 @@
* @summary Test AES ciphers with different modes and padding schemes (ECB mode
* doesn't use IV). The test tries 3 different read methods of
* CipherInputStream.
+ * @key randomness
*/
public class TestSameBuffer {
--- a/jdk/test/com/sun/crypto/provider/Cipher/DES/FlushBug.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/com/sun/crypto/provider/Cipher/DES/FlushBug.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @bug 0000000
* @summary FlushBug
* @author Jan Luehe
+ * @key randomness
*/
import java.io.*;
import java.security.*;
--- a/jdk/test/com/sun/crypto/provider/Cipher/PBE/PBESealedObject.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/com/sun/crypto/provider/Cipher/PBE/PBESealedObject.java Tue May 05 13:29:12 2015 -0700
@@ -45,6 +45,7 @@
* @author Bill Situ
* @author Alexander Fomin
* @run main PBESealedObject
+ * @key randomness
*/
public class PBESealedObject {
--- a/jdk/test/com/sun/crypto/provider/Cipher/PBE/PBKDF2Translate.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/com/sun/crypto/provider/Cipher/PBE/PBKDF2Translate.java Tue May 05 13:29:12 2015 -0700
@@ -37,6 +37,7 @@
* @summary Verify if the SecretKeyFactory.translateKey() method works
* @author Alexander Fomin
* @run main PBKDF2Translate
+ * @key randomness
*/
public class PBKDF2Translate {
--- a/jdk/test/com/sun/crypto/provider/Cipher/PBE/PKCS12Cipher.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/com/sun/crypto/provider/Cipher/PBE/PKCS12Cipher.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @summary basic test for PBEWithSHA1AndDESede, PBEWithSHA1AndRC2_40/128
* and PBEWithSHA1AndRC4_40/128
* @author Valerie Peng
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/com/sun/crypto/provider/Cipher/PBE/TestCipherKeyWrapperPBEKey.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/com/sun/crypto/provider/Cipher/PBE/TestCipherKeyWrapperPBEKey.java Tue May 05 13:29:12 2015 -0700
@@ -45,6 +45,7 @@
* @author Bill Situ
* @author Yun Ke
* @run main TestCipherKeyWrapperPBEKey
+ * @key randomness
*/
public class TestCipherKeyWrapperPBEKey {
--- a/jdk/test/com/sun/crypto/provider/Cipher/RSA/TestOAEP.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/com/sun/crypto/provider/Cipher/RSA/TestOAEP.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @bug 4894151
* @summary encryption/decryption test for OAEP
* @author Andreas Sterbenz
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/com/sun/crypto/provider/Cipher/RSA/TestRSA.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/com/sun/crypto/provider/Cipher/RSA/TestRSA.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @bug 4853306
* @summary Test RSA Cipher implementation
* @author Andreas Sterbenz
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/com/sun/crypto/provider/Mac/HmacSaltLengths.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/com/sun/crypto/provider/Mac/HmacSaltLengths.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @summary ensures various salt lengths can be used for
* HmacPBESHA1.
* @author Valerie Peng
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/com/sun/crypto/provider/Mac/MacSameTest.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/com/sun/crypto/provider/Mac/MacSameTest.java Tue May 05 13:29:12 2015 -0700
@@ -35,6 +35,7 @@
* @author Yu-Ching Valerie Peng, Bill Situ, Alexander Fomin
* @build Utils
* @run main MacSameTest
+ * @key randomness
*/
public class MacSameTest implements MacTest {
--- a/jdk/test/com/sun/management/ThreadMXBean/ThreadCpuTimeArray.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/com/sun/management/ThreadMXBean/ThreadCpuTimeArray.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @summary Basic test of ThreadMXBean.getThreadCpuTime(long[]) and
* getThreadUserTime(long[]).
* @author Paul Hohensee
+ * @key randomness
*/
import java.lang.management.*;
--- a/jdk/test/java/io/DataInputStream/ReadUTF.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/io/DataInputStream/ReadUTF.java Tue May 05 13:29:12 2015 -0700
@@ -24,6 +24,7 @@
/* @test
* @bug 4806007
* @summary Checks for vague exceptions from writeUTF/readUTF
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/io/File/GetXSpace.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/io/File/GetXSpace.java Tue May 05 13:29:12 2015 -0700
@@ -28,6 +28,7 @@
* @run build GetXSpace
* @run shell GetXSpace.sh
* @summary Basic functionality of File.get-X-Space methods.
+ * @key randomness
*/
import java.io.BufferedReader;
--- a/jdk/test/java/io/InputStream/TransferTo.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/io/InputStream/TransferTo.java Tue May 05 13:29:12 2015 -0700
@@ -37,6 +37,7 @@
* @bug 8066867
* @summary tests whether java.io.InputStream.transferTo conforms to its
* contract defined in the javadoc
+ * @key randomness
*/
public class TransferTo {
--- a/jdk/test/java/io/PrintStream/OversynchronizedTest.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/io/PrintStream/OversynchronizedTest.java Tue May 05 13:29:12 2015 -0700
@@ -24,6 +24,7 @@
/* @test
@bug 4905777
@summary PrintStream.println(Object) oversynchronized, can deadlock
+ @key randomness
*/
import java.io.PrintStream;
--- a/jdk/test/java/io/Serializable/corruptedUTFConsumption/CorruptedUTFConsumption.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/io/Serializable/corruptedUTFConsumption/CorruptedUTFConsumption.java Tue May 05 13:29:12 2015 -0700
@@ -28,6 +28,7 @@
* ObjectInputStream consumes at most the expected number of utf
* bytes, even if the last byte(s) of the utf string indicate that the
* string overflows its expected length.
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/io/Serializable/longString/LongString.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/io/Serializable/longString/LongString.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @bug 4217676
* @summary Ensure that object streams support serialization of long strings
* (strings whose UTF representation > 64k in length)
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/io/Serializable/proxy/Basic.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/io/Serializable/proxy/Basic.java Tue May 05 13:29:12 2015 -0700
@@ -23,6 +23,7 @@
/* @test
* @summary Verifies basic correct functioning of proxy serialization.
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/io/Serializable/sanityCheck/SanityCheck.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/io/Serializable/sanityCheck/SanityCheck.java Tue May 05 13:29:12 2015 -0700
@@ -24,6 +24,7 @@
/* @test
* @summary Basic sanity check to test if default (de)serialization is
* transmitting values properly.
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/lang/Boolean/MakeBooleanComparable.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/lang/Boolean/MakeBooleanComparable.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @bug 4329937
* @summary Basic test for making Boolean implement Comparable
* @author Josh Bloch
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/java/lang/ClassLoader/Assert.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/lang/ClassLoader/Assert.java Tue May 05 13:29:12 2015 -0700
@@ -28,6 +28,7 @@
* @run main/othervm Assert
* @summary Test the assertion facility
* @author Mike McCloskey
+ * @key randomness
*/
import package1.*;
--- a/jdk/test/java/lang/Compare.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/lang/Compare.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @test
* @bug 6582946
* @summary Test the primitive wrappers compare and compareTo methods
+ * @key randomness
*/
import java.util.Random;
--- a/jdk/test/java/lang/Double/ParseHexFloatingPoint.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/lang/Double/ParseHexFloatingPoint.java Tue May 05 13:29:12 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -23,14 +23,15 @@
/*
* @test
- * @bug 4826774
- * @summary Numerical tests for hexadecimal inputs to parseDouble, parseFloat
+ * @library /lib/testlibrary/
+ * @build jdk.testlibrary.*
+ * @run main ParseHexFloatingPoint
+ * @bug 4826774 8078672
+ * @summary Numerical tests for hexadecimal inputs to parse{Double, Float} (use -Dseed=X to set PRNG seed)
* @author Joseph D. Darcy
+ * @key randomness
*/
-
-import java.util.regex.*;
-
public class ParseHexFloatingPoint {
private ParseHexFloatingPoint(){}
@@ -255,7 +256,7 @@
failures += significandAlignmentTests();
{
- java.util.Random rand = new java.util.Random();
+ java.util.Random rand = RandomFactory.getRandom();
// Consistency check; double => hexadecimal => double
// preserves the original value.
for(int i = 0; i < 1000; i++) {
--- a/jdk/test/java/lang/Enum/ValueOf.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/lang/Enum/ValueOf.java Tue May 05 13:29:12 2015 -0700
@@ -29,6 +29,7 @@
*
* @compile ValueOf.java
* @run main ValueOf
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/java/lang/HashCode.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/lang/HashCode.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @test
* @bug 4245470 7088913
* @summary Test the primitive wrappers hashCode()
+ * @key randomness
*/
import java.util.Objects;
--- a/jdk/test/java/lang/Integer/BitTwiddle.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/lang/Integer/BitTwiddle.java Tue May 05 13:29:12 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -23,9 +23,13 @@
/*
* @test
- * @bug 4495754
- * @summary Basic test for int bit twiddling
+ * @library /lib/testlibrary/
+ * @build jdk.testlibrary.*
+ * @run main BitTwiddle
+ * @bug 4495754 8078672
+ * @summary Basic test for int bit twiddling (use -Dseed=X to set PRNG seed)
* @author Josh Bloch
+ * @key randomness
*/
import java.util.Random;
@@ -35,7 +39,7 @@
private static final int N = 1000; // # of repetitions per test
public static void main(String args[]) {
- Random rnd = new Random();
+ Random rnd = RandomFactory.getRandom();
if (highestOneBit(0) != 0)
throw new RuntimeException("a");
--- a/jdk/test/java/lang/Long/BitTwiddle.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/lang/Long/BitTwiddle.java Tue May 05 13:29:12 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -23,9 +23,13 @@
/*
* @test
- * @bug 4495754
- * @summary Basic test for long bit twiddling
+ * @library /lib/testlibrary/
+ * @build jdk.testlibrary.*
+ * @run main BitTwiddle
+ * @bug 4495754 8078672
+ * @summary Basic test for long bit twiddling (use -Dseed=X to set PRNG seed)
* @author Josh Bloch
+ * @key randomness
*/
import java.util.Random;
@@ -35,7 +39,7 @@
private static final int N = 1000; // # of repetitions per test
public static void main(String args[]) {
- Random rnd = new Random();
+ Random rnd = RandomFactory.getRandom();
if (highestOneBit(0) != 0)
throw new RuntimeException("a");
--- a/jdk/test/java/lang/Math/CubeRootTests.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/lang/Math/CubeRootTests.java Tue May 05 13:29:12 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -23,9 +23,13 @@
/*
* @test
- * @bug 4347132 4939441
- * @summary Tests for {Math, StrictMath}.cbrt
+ * @library /lib/testlibrary/
+ * @build jdk.testlibrary.*
+ * @run main CubeRootTests
+ * @bug 4347132 4939441 8078672
+ * @summary Tests for {Math, StrictMath}.cbrt (use -Dseed=X to set PRNG seed)
* @author Joseph D. Darcy
+ * @key randomness
*/
public class CubeRootTests {
@@ -35,7 +39,7 @@
static final double NaNd = Double.NaN;
// Initialize shared random number generator
- static java.util.Random rand = new java.util.Random();
+ static java.util.Random rand = RandomFactory.getRandom();
static int testCubeRootCase(double input, double expected) {
int failures=0;
--- a/jdk/test/java/lang/Math/HypotTests.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/lang/Math/HypotTests.java Tue May 05 13:29:12 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -23,9 +23,13 @@
/*
* @test
- * @bug 4851638 4939441
- * @summary Tests for {Math, StrictMath}.hypot
+ * @library /lib/testlibrary/
+ * @build jdk.testlibrary.*
+ * @run main HypotTests
+ * @bug 4851638 4939441 8078672
+ * @summary Tests for {Math, StrictMath}.hypot (use -Dseed=X to set PRNG seed)
* @author Joseph D. Darcy
+ * @key randomness
*/
public class HypotTests {
@@ -119,7 +123,7 @@
* exponent). While the exponent of r is less than or equal
* to (MAX_EXPONENT - 3), the computation should not overflow.
*/
- java.util.Random rand = new java.util.Random();
+ java.util.Random rand = RandomFactory.getRandom();
for(int i = 0; i < 1000; i++) {
double d = rand.nextDouble();
// Scale d to have an exponent equal to MAX_EXPONENT -15
--- a/jdk/test/java/lang/Math/IeeeRecommendedTests.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/lang/Math/IeeeRecommendedTests.java Tue May 05 13:29:12 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -23,9 +23,13 @@
/*
* @test
- * @bug 4860891 4826732 4780454 4939441 4826652
- * @summary Tests for IEEE 754[R] recommended functions and similar methods
+ * @library /lib/testlibrary/
+ * @build jdk.testlibrary.*
+ * @run main IeeeRecommendedTests
+ * @bug 4860891 4826732 4780454 4939441 4826652 8078672
+ * @summary Tests for IEEE 754[R] recommended functions and similar methods (use -Dseed=X to set PRNG seed)
* @author Joseph D. Darcy
+ * @key randomness
*/
public class IeeeRecommendedTests {
@@ -45,7 +49,7 @@
static final double Double_MAX_SUBNORMALmm = 0x0.ffffffffffffeP-1022;
// Initialize shared random number generator
- static java.util.Random rand = new java.util.Random();
+ static java.util.Random rand = RandomFactory.getRandom();
/**
* Returns a floating-point power of two in the normal range.
--- a/jdk/test/java/lang/Math/Log1pTests.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/lang/Math/Log1pTests.java Tue May 05 13:29:12 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -23,9 +23,13 @@
/*
* @test
- * @bug 4851638 4939441
- * @summary Tests for {Math, StrictMath}.log1p
+ * @library /lib/testlibrary/
+ * @build jdk.testlibrary.*
+ * @run main Log1pTests
+ * @bug 4851638 4939441 8078672
+ * @summary Tests for {Math, StrictMath}.log1p (use -Dseed=X to set PRNG seed)
* @author Joseph D. Darcy
+ * @key randomness
*/
public class Log1pTests {
@@ -98,7 +102,7 @@
// Construct random values with exponents ranging from -53 to
// 52 and compare against HP-15C formula.
- java.util.Random rand = new java.util.Random();
+ java.util.Random rand = RandomFactory.getRandom();
for(int i = 0; i < 1000; i++) {
double d = rand.nextDouble();
--- a/jdk/test/java/lang/Runtime/exec/LotsOfOutput.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/lang/Runtime/exec/LotsOfOutput.java Tue May 05 13:29:12 2015 -0700
@@ -41,7 +41,12 @@
long initMemory = Runtime.getRuntime().totalMemory();
for (int i=1; i< 10; i++) {
Thread.sleep(100);
- if (Runtime.getRuntime().totalMemory() > initMemory + 1000000)
+ long totalMemory = Runtime.getRuntime().totalMemory();
+ if (totalMemory != initMemory) {
+ System.out.printf("consuming memory: i: %d, initial: %d, total: %d, delta: %d%n",
+ i, initMemory, totalMemory, totalMemory - initMemory);
+ }
+ if (totalMemory > initMemory + 1000000)
throw new Exception("Process consumes memory.");
}
--- a/jdk/test/java/lang/Runtime/exec/WinCommand.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/lang/Runtime/exec/WinCommand.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @bug 5006520
* @summary Check many different ways to run Windows programs
* @author Martin Buchholz
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/lang/String/ContentEquals.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/lang/String/ContentEquals.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @test
* @bug 4242309 4982981
* @summary Test equals and contentEquals in String
+ * @key randomness
*/
import java.util.Random;
import java.nio.CharBuffer;
--- a/jdk/test/java/lang/String/ICCBasher.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/lang/String/ICCBasher.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @test
* @bug 4152868
* @summary test Case Insensitive Comparator in String
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/java/lang/String/SBConstructor.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/lang/String/SBConstructor.java Tue May 05 13:29:12 2015 -0700
@@ -25,7 +25,7 @@
* @test
* @bug 4915187
* @summary Test java.lang.String constructor that takes StringBuilder
- *
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/java/lang/String/Split.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/lang/String/Split.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @test
* @bug 6840246 6559590
* @summary test String.split()
+ * @key randomness
*/
import java.util.Arrays;
import java.util.Random;
--- a/jdk/test/java/lang/StringBuffer/AppendCharSequence.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/lang/StringBuffer/AppendCharSequence.java Tue May 05 13:29:12 2015 -0700
@@ -24,6 +24,7 @@
/* @test
* @bug 4812591 4705328 5019111
* @summary Test append and insert methods with CharSequence params
+ * @key randomness
*/
import java.util.Random;
--- a/jdk/test/java/lang/StringBuffer/AppendSB.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/lang/StringBuffer/AppendSB.java Tue May 05 13:29:12 2015 -0700
@@ -24,6 +24,7 @@
/* @test
* @bug 4144267
* @summary Test StringBuffer.append(StringBuffer);
+ * @key randomness
*/
import java.util.Random;
--- a/jdk/test/java/lang/StringBuffer/AppendStringBuilder.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/lang/StringBuffer/AppendStringBuilder.java Tue May 05 13:29:12 2015 -0700
@@ -23,6 +23,7 @@
/* @test
* @bug 6206780
* @summary Test StringBuffer.append(StringBuilder);
+ * @key randomness
*/
import java.util.Random;
--- a/jdk/test/java/lang/StringBuffer/Capacity.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/lang/StringBuffer/Capacity.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @test
* @bug 6952330
* @summary Test StringBuffer/StringBuilder capacity handling.
+ * @key randomness
*/
import java.util.Random;
--- a/jdk/test/java/lang/StringBuffer/IndexOf.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/lang/StringBuffer/IndexOf.java Tue May 05 13:29:12 2015 -0700
@@ -24,6 +24,7 @@
/* @test
* @bug 4162796 4162796
* @summary Test indexOf and lastIndexOf
+ * @key randomness
*/
import java.util.Random;
--- a/jdk/test/java/lang/StringBuffer/SBBasher.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/lang/StringBuffer/SBBasher.java Tue May 05 13:29:12 2015 -0700
@@ -25,7 +25,7 @@
* @test
* @bug 4120694
* @summary Test new methods in StringBuffer
- *
+ * @key randomness
*/
import java.lang.*;
--- a/jdk/test/java/lang/StringBuffer/Trim.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/lang/StringBuffer/Trim.java Tue May 05 13:29:12 2015 -0700
@@ -24,6 +24,7 @@
/* @test
* @bug 4546734 5007612
* @summary Test StringBuffer.trimToSize
+ * @key randomness
*/
import java.util.Random;
--- a/jdk/test/java/lang/StringBuilder/AppendStringBuffer.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/lang/StringBuilder/AppendStringBuffer.java Tue May 05 13:29:12 2015 -0700
@@ -24,6 +24,7 @@
/* @test
* @bug 6206780
* @summary Test StringBuilder.append(StringBuffer);
+ * @key randomness
*/
import java.util.Random;
--- a/jdk/test/java/lang/ToString.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/lang/ToString.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @test
* @bug 4031762
* @summary Test the primitive wrappers static toString()
+ * @key randomness
*/
import java.util.Random;
--- a/jdk/test/java/lang/instrument/SingleTransformerTest.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/lang/instrument/SingleTransformerTest.java Tue May 05 13:29:12 2015 -0700
@@ -30,6 +30,7 @@
* @run build SingleTransformerTest
* @run shell MakeJAR.sh redefineAgent
* @run main/othervm -javaagent:redefineAgent.jar SingleTransformerTest SingleTransformerTest
+ * @key randomness
*/
public class
SingleTransformerTest
--- a/jdk/test/java/lang/instrument/TransformMethodTest.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/lang/instrument/TransformMethodTest.java Tue May 05 13:29:12 2015 -0700
@@ -30,6 +30,7 @@
* @run build TransformMethodTest
* @run shell MakeJAR.sh redefineAgent
* @run main/othervm -javaagent:redefineAgent.jar TransformMethodTest TransformMethodTest
+ * @key randomness
*/
import java.lang.instrument.*;
--- a/jdk/test/java/lang/invoke/MethodHandles/CatchExceptionTest.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/lang/invoke/MethodHandles/CatchExceptionTest.java Tue May 05 13:29:12 2015 -0700
@@ -41,7 +41,7 @@
* @library /lib/testlibrary/jsr292 /lib/testlibrary/
* @compile CatchExceptionTest.java
* @run main/othervm -esa test.java.lang.invoke.MethodHandles.CatchExceptionTest
- * @key intermittent
+ * @key intermittent randomness
*/
public class CatchExceptionTest {
private static final List<Class<?>> ARGS_CLASSES;
--- a/jdk/test/java/lang/management/BufferPoolMXBean/Basic.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/lang/management/BufferPoolMXBean/Basic.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @bug 6606598 7024172
* @summary Unit test for java.lang.management.BufferPoolMXBean
* @run main/othervm Basic
+ * @key randomness
*/
import java.nio.ByteBuffer;
--- a/jdk/test/java/math/BigDecimal/StringConstructor.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/math/BigDecimal/StringConstructor.java Tue May 05 13:29:12 2015 -0700
@@ -23,20 +23,20 @@
/*
* @test
- * @library ..
- * @bug 4103117 4331084 4488017 4490929 6255285 6268365 8074460
+ * @library /lib/testlibrary/
+ * @build jdk.testlibrary.*
+ * @run main StringConstructor
+ * @bug 4103117 4331084 4488017 4490929 6255285 6268365 8074460 8078672
* @summary Tests the BigDecimal string constructor (use -Dseed=X to set PRNG seed).
+ * @key randomness
*/
import java.math.*;
+import java.util.Random;
public class StringConstructor {
- private static RandomSeed rndSeed = new RandomSeed(false);
-
public static void main(String[] args) throws Exception {
- System.out.println("Random number generator seed = " + rndSeed.getSeed());
-
constructWithError("");
constructWithError("+");
constructWithError("-");
@@ -71,13 +71,14 @@
nonAsciiZeroTest();
// Roundtrip tests
+ Random random = RandomFactory.getRandom();
for (int i=0; i<100; i++) {
- int size = rndSeed.getRandom().nextInt(100) + 1;
- BigInteger bi = new BigInteger(size, rndSeed.getRandom());
- if (rndSeed.getRandom().nextBoolean())
+ int size = random.nextInt(100) + 1;
+ BigInteger bi = new BigInteger(size, random);
+ if (random.nextBoolean())
bi = bi.negate();
int decimalLength = bi.toString().length();
- int scale = rndSeed.getRandom().nextInt(decimalLength);
+ int scale = random.nextInt(decimalLength);
BigDecimal bd = new BigDecimal(bi, scale);
String bdString = bd.toString();
// System.err.println("bi" + bi.toString() + "\tscale " + scale);
--- a/jdk/test/java/math/BigInteger/BigIntegerTest.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/math/BigInteger/BigIntegerTest.java Tue May 05 13:29:12 2015 -0700
@@ -23,11 +23,14 @@
/*
* @test
- * @library ..
- * @bug 4181191 4161971 4227146 4194389 4823171 4624738 4812225 4837946 4026465 8074460
+ * @library /lib/testlibrary/
+ * @build jdk.testlibrary.*
+ * @run main BigIntegerTest
+ * @bug 4181191 4161971 4227146 4194389 4823171 4624738 4812225 4837946 4026465 8074460 8078672
* @summary tests methods in BigInteger (use -Dseed=X to set PRNG seed)
* @run main/timeout=400 BigIntegerTest
* @author madbot
+ * @key randomness
*/
import java.io.File;
@@ -36,6 +39,7 @@
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.math.BigInteger;
+import java.util.Random;
/**
* This is a simple test class created to ensure that the results
@@ -86,7 +90,7 @@
static final int SIZE = 1000; // numbers per batch
- private static RandomSeed rndSeed = new RandomSeed(false);
+ private static Random random = RandomFactory.getRandom();
static boolean failure = false;
@@ -98,7 +102,7 @@
int arrayLength = 23;
int halfLength = arrayLength/2;
byte[] array = new byte[arrayLength];
- rndSeed.getRandom().nextBytes(array);
+ random.nextBytes(array);
int[][] offLen = new int[][] { // offset, length, num exceptions
{-1, arrayLength, 1}, // negative offset
@@ -162,7 +166,7 @@
}
byte[] magNonZeroLength = new byte[42];
- rndSeed.getRandom().nextBytes(magNonZeroLength);
+ random.nextBytes(magNonZeroLength);
for (int signum = -1; signum <= 1; signum++) {
BigInteger bi = new BigInteger(signum, magNonZeroLength, 0, 0);
if (bi.compareTo(BigInteger.ZERO) != 0) {
@@ -175,13 +179,13 @@
for (int i = 0; i < SIZE; i++) {
// create reference value via a different code path from those tested
- BigInteger reference = new BigInteger(2 + rndSeed.getRandom().nextInt(336), 4, rndSeed.getRandom());
+ BigInteger reference = new BigInteger(2 + random.nextInt(336), 4, random);
byte[] refArray = reference.toByteArray();
int refLen = refArray.length;
- int factor = rndSeed.getRandom().nextInt(5);
- int objLen = refArray.length + factor*rndSeed.getRandom().nextInt(refArray.length) + 1;
- int offset = rndSeed.getRandom().nextInt(objLen - refLen);
+ int factor = random.nextInt(5);
+ int objLen = refArray.length + factor*random.nextInt(refArray.length) + 1;
+ int offset = random.nextInt(objLen - refLen);
byte[] objArray = new byte[objLen];
System.arraycopy(refArray, 0, objArray, offset, refLen);
@@ -192,7 +196,7 @@
failCount++;
}
- boolean isNegative = rndSeed.getRandom().nextBoolean();
+ boolean isNegative = random.nextBoolean();
BigInteger signMag = new BigInteger(isNegative ? -1 : 1, objArray, offset, refLen);
if (signMag.compareTo(isNegative ? reference.negate() : reference) != 0) {
System.err.println("Sign-magnitude BigInteger not equal for offset " +
@@ -209,7 +213,7 @@
for (int i=0; i<SIZE; i++) {
// Test identity x^power == x*x*x ... *x
- int power = rndSeed.getRandom().nextInt(6) + 2;
+ int power = random.nextInt(6) + 2;
BigInteger x = fetchNumber(order);
BigInteger y = x.pow(power);
BigInteger z = x;
@@ -310,12 +314,12 @@
for (int i=0; i<SIZE; i++) {
BigInteger x = fetchNumber(BITS_KARATSUBA - 32 - 1);
BigInteger u = base.add(x);
- int a = 1 + rndSeed.getRandom().nextInt(31);
+ int a = 1 + random.nextInt(31);
BigInteger w = u.shiftLeft(a);
BigInteger y = fetchNumber(BITS_KARATSUBA - 32 - 1);
BigInteger v = base.add(y);
- int b = 1 + rndSeed.getRandom().nextInt(32);
+ int b = 1 + random.nextInt(32);
BigInteger z = v.shiftLeft(b);
BigInteger multiplyResult = u.multiply(v).shiftLeft(a + b);
@@ -364,7 +368,7 @@
for (int i=0; i<SIZE; i++) {
BigInteger x = fetchNumber(BITS_KARATSUBA_SQUARE - 32 - 1);
BigInteger u = base.add(x);
- int a = 1 + rndSeed.getRandom().nextInt(31);
+ int a = 1 + random.nextInt(31);
BigInteger w = u.shiftLeft(a);
BigInteger squareResult = u.multiply(u).shiftLeft(2*a);
@@ -382,7 +386,7 @@
for (int i=0; i<SIZE; i++) {
BigInteger x = fetchNumber(BITS_TOOM_COOK_SQUARE - 32 - 1);
BigInteger u = base.add(x);
- int a = 1 + rndSeed.getRandom().nextInt(31);
+ int a = 1 + random.nextInt(31);
BigInteger w = u.shiftLeft(a);
BigInteger squareResult = u.multiply(u).shiftLeft(2*a);
@@ -416,20 +420,20 @@
BigInteger base = BigInteger.ONE.shiftLeft(BITS_BURNIKEL_ZIEGLER + BITS_BURNIKEL_ZIEGLER_OFFSET - 33);
for (int i=0; i<SIZE; i++) {
- BigInteger addend = new BigInteger(BITS_BURNIKEL_ZIEGLER + BITS_BURNIKEL_ZIEGLER_OFFSET - 34, rndSeed.getRandom());
+ BigInteger addend = new BigInteger(BITS_BURNIKEL_ZIEGLER + BITS_BURNIKEL_ZIEGLER_OFFSET - 34, random);
BigInteger v = base.add(addend);
- BigInteger u = v.multiply(BigInteger.valueOf(2 + rndSeed.getRandom().nextInt(Short.MAX_VALUE - 1)));
+ BigInteger u = v.multiply(BigInteger.valueOf(2 + random.nextInt(Short.MAX_VALUE - 1)));
- if(rndSeed.getRandom().nextBoolean()) {
+ if(random.nextBoolean()) {
u = u.negate();
}
- if(rndSeed.getRandom().nextBoolean()) {
+ if(random.nextBoolean()) {
v = v.negate();
}
- int a = BITS_BURNIKEL_ZIEGLER_OFFSET + rndSeed.getRandom().nextInt(16);
- int b = 1 + rndSeed.getRandom().nextInt(16);
+ int a = BITS_BURNIKEL_ZIEGLER_OFFSET + random.nextInt(16);
+ int b = 1 + random.nextInt(16);
BigInteger w = u.multiply(BigInteger.ONE.shiftLeft(a));
BigInteger z = v.multiply(BigInteger.ONE.shiftLeft(b));
@@ -451,7 +455,7 @@
int failCount = 0;
for (int i=0; i<SIZE*10; i++) {
- int x = rndSeed.getRandom().nextInt();
+ int x = random.nextInt();
BigInteger bigX = BigInteger.valueOf((long)x);
int bit = (x < 0 ? 0 : 1);
int tmp = x, bitCount = 0;
@@ -472,7 +476,7 @@
int failCount = 0;
for (int i=0; i<SIZE*10; i++) {
- int x = rndSeed.getRandom().nextInt();
+ int x = random.nextInt();
BigInteger bigX = BigInteger.valueOf((long)x);
int signBit = (x < 0 ? 0x80000000 : 0);
int tmp = x, bitLength, j;
@@ -576,7 +580,7 @@
for (int i=0; i<100; i++) {
BigInteger x = fetchNumber(order);
- int n = Math.abs(rndSeed.getRandom().nextInt()%200);
+ int n = Math.abs(random.nextInt()%200);
if (!x.shiftLeft(n).equals
(x.multiply(BigInteger.valueOf(2L).pow(n))))
@@ -643,8 +647,8 @@
// Generic string conversion.
for (int i=0; i<100; i++) {
- byte xBytes[] = new byte[Math.abs(rndSeed.getRandom().nextInt())%100+1];
- rndSeed.getRandom().nextBytes(xBytes);
+ byte xBytes[] = new byte[Math.abs(random.nextInt())%100+1];
+ random.nextBytes(xBytes);
BigInteger x = new BigInteger(xBytes);
for (int radix=Character.MIN_RADIX; radix < Character.MAX_RADIX; radix++) {
@@ -668,7 +672,7 @@
for (int bits = upper; bits >= lower; bits--) {
for (int i = 0; i < 50; i++) {
- BigInteger x = BigInteger.ONE.shiftLeft(bits - 1).or(new BigInteger(bits - 2, rndSeed.getRandom()));
+ BigInteger x = BigInteger.ONE.shiftLeft(bits - 1).or(new BigInteger(bits - 2, random));
for (int radix = Character.MIN_RADIX; radix < Character.MAX_RADIX; radix++) {
String result = x.toString(radix);
@@ -765,9 +769,9 @@
int failCount = 0;
for (int i=0; i<10; i++) {
- BigInteger m = new BigInteger(100, 5, rndSeed.getRandom());
+ BigInteger m = new BigInteger(100, 5, random);
while(m.compareTo(BigInteger.ONE) != 1)
- m = new BigInteger(100, 5, rndSeed.getRandom());
+ m = new BigInteger(100, 5, random);
BigInteger exp = m.subtract(BigInteger.ONE);
BigInteger base = fetchNumber(order).abs();
while(base.compareTo(m) != -1)
@@ -827,7 +831,7 @@
// Test consistency
for(int i=0; i<10; i++) {
- p1 = BigInteger.probablePrime(100, rndSeed.getRandom());
+ p1 = BigInteger.probablePrime(100, random);
if (!p1.isProbablePrime(100)) {
System.err.println("Consistency "+p1.toString(16));
failCount++;
@@ -868,7 +872,7 @@
// Numbers of the form (6k+1)(12k+1)(18k+1) are Carmichael numbers if
// each of the factors is prime
int found = 0;
- BigInteger f1 = new BigInteger(40, 100, rndSeed.getRandom());
+ BigInteger f1 = new BigInteger(40, 100, random);
while (found < NUM_CARMICHAELS_TO_TEST) {
BigInteger k = null;
BigInteger f2, f3;
@@ -895,8 +899,8 @@
// Test some composites that are products of 2 primes
for (int i=0; i<50; i++) {
- p1 = BigInteger.probablePrime(100, rndSeed.getRandom());
- p2 = BigInteger.probablePrime(100, rndSeed.getRandom());
+ p1 = BigInteger.probablePrime(100, random);
+ p2 = BigInteger.probablePrime(100, random);
c1 = p1.multiply(p2);
if (c1.isProbablePrime(100)) {
System.err.println("Composite failed "+c1.toString(16));
@@ -905,8 +909,8 @@
}
for (int i=0; i<4; i++) {
- p1 = BigInteger.probablePrime(600, rndSeed.getRandom());
- p2 = BigInteger.probablePrime(600, rndSeed.getRandom());
+ p1 = BigInteger.probablePrime(600, random);
+ p2 = BigInteger.probablePrime(600, random);
c1 = p1.multiply(p2);
if (c1.isProbablePrime(100)) {
System.err.println("Composite failed "+c1.toString(16));
@@ -961,7 +965,7 @@
// Next, pick some large primes, use nextProbablePrime to find the
// next one, and make sure there are no primes in between
for (int i=0; i<100; i+=10) {
- p1 = BigInteger.probablePrime(50 + i, rndSeed.getRandom());
+ p1 = BigInteger.probablePrime(50 + i, random);
p2 = p1.add(ONE);
p3 = p1.nextProbablePrime();
while(p2.compareTo(p3) < 0) {
@@ -1026,7 +1030,7 @@
}
for(int i=0; i<10; i++) {
- BigInteger b1 = fetchNumber(rndSeed.getRandom().nextInt(100));
+ BigInteger b1 = fetchNumber(random.nextInt(100));
BigInteger b2 = null;
File f = new File("serialtest");
try (FileOutputStream fos = new FileOutputStream(f)) {
@@ -1060,8 +1064,6 @@
*
*/
public static void main(String[] args) throws Exception {
- System.out.println("Random number generator seed = " + rndSeed.getSeed());
-
// Some variables for sizing test numbers in bits
int order1 = ORDER_MEDIUM;
int order2 = ORDER_SMALL;
@@ -1133,8 +1135,8 @@
* If order is less than 2, order is changed to 2.
*/
private static BigInteger fetchNumber(int order) {
- boolean negative = rndSeed.getRandom().nextBoolean();
- int numType = rndSeed.getRandom().nextInt(7);
+ boolean negative = random.nextBoolean();
+ int numType = random.nextInt(7);
BigInteger result = null;
if (order < 2) order = 2;
@@ -1158,14 +1160,14 @@
break;
case 3: // One bit in number
- result = BigInteger.ONE.shiftLeft(rndSeed.getRandom().nextInt(order));
+ result = BigInteger.ONE.shiftLeft(random.nextInt(order));
break;
case 4: // Random bit density
byte[] val = new byte[(order+7)/8];
- int iterations = rndSeed.getRandom().nextInt(order);
+ int iterations = random.nextInt(order);
for (int i=0; i<iterations; i++) {
- int bitIdx = rndSeed.getRandom().nextInt(order);
+ int bitIdx = random.nextInt(order);
val[bitIdx/8] |= 1 << (bitIdx%8);
}
result = new BigInteger(1, val);
@@ -1173,9 +1175,9 @@
case 5: // Runs of consecutive ones and zeros
result = ZERO;
int remaining = order;
- int bit = rndSeed.getRandom().nextInt(2);
+ int bit = random.nextInt(2);
while (remaining > 0) {
- int runLength = Math.min(remaining, rndSeed.getRandom().nextInt(order));
+ int runLength = Math.min(remaining, random.nextInt(order));
result = result.shiftLeft(runLength);
if (bit > 0)
result = result.add(ONE.shiftLeft(runLength).subtract(ONE));
@@ -1185,7 +1187,7 @@
break;
default: // random bits
- result = new BigInteger(order, rndSeed.getRandom());
+ result = new BigInteger(order, random);
}
if (negative)
--- a/jdk/test/java/math/BigInteger/ModPow65537.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/math/BigInteger/ModPow65537.java Tue May 05 13:29:12 2015 -0700
@@ -23,16 +23,20 @@
/*
* @test
- * @library ..
- * @bug 4891312 8074460
+ * @library /lib/testlibrary/
+ * @build jdk.testlibrary.*
+ * @run main ModPow65537
+ * @bug 4891312 8074460 8078672
* @summary verify that modPow() not broken by the special case for 65537 (use -Dseed=X to set PRNG seed)
* @author Andreas Sterbenz
+ * @key randomness
*/
import java.math.BigInteger;
import java.security.*;
import java.security.spec.*;
+import java.util.Random;
public class ModPow65537 {
@@ -78,9 +82,8 @@
private static void testSigning(KeyPair kp) throws Exception {
System.out.println(kp.getPublic());
byte[] data = new byte[1024];
- RandomSeed rndSeed = new RandomSeed(false);
- System.out.println("Random number generator seed = " + rndSeed.getSeed());
- rndSeed.getRandom().nextBytes(data);
+ Random random = RandomFactory.getRandom();
+ random.nextBytes(data);
Signature sig = Signature.getInstance("SHA1withRSA", "SunRsaSign");
sig.initSign(kp.getPrivate());
--- a/jdk/test/java/math/BigInteger/PrimeTest.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/math/BigInteger/PrimeTest.java Tue May 05 13:29:12 2015 -0700
@@ -25,10 +25,13 @@
/*
* @test
- * @library ..
- * @bug 8026236 8074460
+ * @library /lib/testlibrary/
+ * @build jdk.testlibrary.*
+ * @run main PrimeTest
+ * @bug 8026236 8074460 8078672
* @summary test primality verification methods in BigInteger (use -Dseed=X to set PRNG seed)
* @author bpb
+ * @key randomness
*/
import java.math.BigInteger;
import java.util.BitSet;
@@ -178,9 +181,8 @@
}
// Create a list of non-prime BigIntegers.
- RandomSeed rndSeed = new RandomSeed(true);
- System.out.println("Random number generator seed = " + rndSeed.getSeed());
- List<BigInteger> nonPrimeBigInts = (rndSeed.getSplittableRandom())
+ SplittableRandom splitRandom = RandomFactory.getSplittableRandom();
+ List<BigInteger> nonPrimeBigInts = (splitRandom)
.ints(NUM_NON_PRIMES, 2, maxPrime).mapToObj(BigInteger::valueOf)
.filter(b -> !b.isProbablePrime(certainty)).collect(toList());
--- a/jdk/test/java/math/BigInteger/SymmetricRangeTests.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/math/BigInteger/SymmetricRangeTests.java Tue May 05 13:29:12 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 1025, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -24,11 +24,13 @@
/*
* @test
* @ignore This test has huge memory requirements
- * @library ..
+ * @library /lib/testlibrary/
+ * @build jdk.testlibrary.*
* @run main/timeout=180/othervm -Xmx8g SymmetricRangeTests
- * @bug 6910473 8021204 8021203 9005933 8074460
+ * @bug 6910473 8021204 8021203 9005933 8074460 8078672
* @summary Test range of BigInteger values (use -Dseed=X to set PRNG seed)
* @author Dmitry Nadezhin
+ * @key randomness
*/
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -37,6 +39,7 @@
import java.io.ObjectOutputStream;
import java.util.Arrays;
import java.math.BigInteger;
+import java.util.Random;
public class SymmetricRangeTests {
@@ -114,9 +117,8 @@
System.out.println("Testing overflow in BitSieve.sieveSingle");
int bitLength = (5 << 27) - 1;
try {
- RandomSeed rndSeed = new RandomSeed(false);
- System.out.println("Random number generator seed = " + rndSeed.getSeed());
- BigInteger actual = new BigInteger(bitLength, 0, rndSeed.getRandom());
+ Random random = RandomFactory.getRandom();
+ BigInteger actual = new BigInteger(bitLength, 0, random);
throw new RuntimeException("new BigInteger(bitLength, 0, null).bitLength()=" + actual.bitLength());
} catch (ArithmeticException e) {
// expected
--- a/jdk/test/java/math/RandomSeed.java Mon Apr 27 09:17:48 2015 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +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.Random;
-import java.util.SplittableRandom;
-
-public class RandomSeed {
- private long seed = 0L;
- private Random rnd = null;
- private SplittableRandom srnd = null;
-
- public RandomSeed(boolean isSplittableRandom) {
- init(isSplittableRandom);
- }
-
- private void init(boolean isSplittableRandom) {
- // obtain seed from environment if supplied
- boolean isSeedProvided = false;
- try {
- // note that Long.valueOf(null) also throws a NumberFormatException
- // so if the property is undefined this will still work correctly
- seed = Long.valueOf(System.getProperty("seed"));
- isSeedProvided = true;
- } catch (NumberFormatException e) {
- // do nothing: isSeedProvided is already false
- }
-
- // if no seed from environment, create a fresh one
- Random tmpRnd = null;
- if (!isSeedProvided) {
- tmpRnd = new Random();
- seed = tmpRnd.nextLong();
- }
-
- // create the PRNG
- if (isSplittableRandom) {
- srnd = new SplittableRandom(seed);
- } else {
- rnd = tmpRnd != null ? tmpRnd : new Random();
- rnd.setSeed(seed);
- }
- }
-
- public Random getRandom() {
- if (rnd == null) {
- throw new IllegalStateException("Variable of type Random not initialized");
- }
- return rnd;
- }
-
- public SplittableRandom getSplittableRandom() {
- if (srnd == null) {
- throw new IllegalStateException("Variable of type SplittableRandom not initialized");
- }
- return srnd;
- }
-
- public long getSeed() {
- return seed;
- }
-}
--- a/jdk/test/java/net/InetAddress/HashSpread.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/net/InetAddress/HashSpread.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @bug 4687909
* @summary Check Inet6Address.hashCode returns a reasonable spread of hash
* codes.
+ * @key randomness
*/
import java.net.InetAddress;
import java.net.UnknownHostException;
--- a/jdk/test/java/nio/Buffer/Chars.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/Buffer/Chars.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @bug 8014854
* @summary Exercises CharBuffer#chars on each of the CharBuffer types
* @run testng Chars
+ * @key randomness
*/
import java.nio.ByteBuffer;
--- a/jdk/test/java/nio/MappedByteBuffer/Force.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/MappedByteBuffer/Force.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @bug 4625907
* @summary Testing force()
* @run main/othervm Force
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/nio/MappedByteBuffer/ZeroMap.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/MappedByteBuffer/ZeroMap.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @bug 4802340
* @summary Testing force(), load() isLoaded() of zero len MBB
* @run main/othervm ZeroMap
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/nio/channels/AsynchronousChannelGroup/Basic.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/channels/AsynchronousChannelGroup/Basic.java Tue May 05 13:29:12 2015 -0700
@@ -24,6 +24,7 @@
/* @test
* @bug 4607272
* @summary Unit test for AsynchronousChannelGroup
+ * @key randomness
*/
import java.nio.ByteBuffer;
--- a/jdk/test/java/nio/channels/AsynchronousChannelGroup/Identity.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/channels/AsynchronousChannelGroup/Identity.java Tue May 05 13:29:12 2015 -0700
@@ -24,6 +24,7 @@
/* @test
* @bug 4607272 6842687
* @summary Unit test for AsynchronousChannelGroup
+ * @key randomness
*/
import java.nio.ByteBuffer;
--- a/jdk/test/java/nio/channels/AsynchronousChannelGroup/Restart.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/channels/AsynchronousChannelGroup/Restart.java Tue May 05 13:29:12 2015 -0700
@@ -24,6 +24,7 @@
/* @test
* @bug 4607272 6842687
* @summary Unit test for AsynchronousChannelGroup
+ * @key randomness
*/
import java.nio.channels.*;
--- a/jdk/test/java/nio/channels/AsynchronousFileChannel/Basic.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/channels/AsynchronousFileChannel/Basic.java Tue May 05 13:29:12 2015 -0700
@@ -24,6 +24,7 @@
/* @test
* @bug 4607272 6822643 6830721 6842687
* @summary Unit test for AsynchronousFileChannel
+ * @key randomness
*/
import java.nio.file.*;
--- a/jdk/test/java/nio/channels/AsynchronousFileChannel/Lock.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/channels/AsynchronousFileChannel/Lock.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
/* @test
* @bug 4607272 6814948 6842687
* @summary Unit test for AsynchronousFileChannel#lock method
+ * @key randomness
*/
import java.net.*;
--- a/jdk/test/java/nio/channels/AsynchronousFileChannel/LotsOfWrites.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/channels/AsynchronousFileChannel/LotsOfWrites.java Tue May 05 13:29:12 2015 -0700
@@ -24,6 +24,7 @@
/* @test
* @bug 6913877
* @summary Stress AsynchronousFileChannel.write
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/nio/channels/AsynchronousSocketChannel/Basic.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/channels/AsynchronousSocketChannel/Basic.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @bug 4607272 6842687 6878369 6944810 7023403
* @summary Unit test for AsynchronousSocketChannel
* @run main Basic -skipSlowConnectTest
+ * @key randomness
*/
import java.nio.ByteBuffer;
--- a/jdk/test/java/nio/channels/AsynchronousSocketChannel/StressLoopback.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/channels/AsynchronousSocketChannel/StressLoopback.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @summary Stress test connections through the loopback interface
* @run main StressLoopback
* @run main/othervm -Djdk.net.useFastTcpLoopback StressLoopback
+ * @key randomness
*/
import java.nio.ByteBuffer;
--- a/jdk/test/java/nio/channels/Channels/Basic2.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/channels/Channels/Basic2.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @bug 4607272
* @summary Test Channels methods for interoperability between streams and
* asynchronous byte channels
+ * @key randomness
*/
import java.net.*;
--- a/jdk/test/java/nio/channels/Channels/ShortWrite.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/channels/Channels/ShortWrite.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @bug 6448457
* @summary Test Channels.newOutputStream returns OutputStream that handles
* short writes from the underlying channel
+ * @key randomness
*/
import java.io.OutputStream;
--- a/jdk/test/java/nio/channels/DatagramChannel/AdaptDatagramSocket.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/channels/DatagramChannel/AdaptDatagramSocket.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @bug 4313882 4981129
* @summary Unit test for datagram-socket-channel adaptors
* @library ..
+ * @key randomness
*/
import java.net.*;
--- a/jdk/test/java/nio/channels/DatagramChannel/MulticastSendReceiveTests.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/channels/DatagramChannel/MulticastSendReceiveTests.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @build MulticastSendReceiveTests NetworkConfiguration
* @run main MulticastSendReceiveTests
* @run main/othervm -Djava.net.preferIPv4Stack=true MulticastSendReceiveTests
+ * @key randomness
*/
import java.nio.ByteBuffer;
--- a/jdk/test/java/nio/channels/DatagramChannel/Promiscuous.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/channels/DatagramChannel/Promiscuous.java Tue May 05 13:29:12 2015 -0700
@@ -28,6 +28,7 @@
* @build Promiscuous NetworkConfiguration
* @run main Promiscuous
* @run main/othervm -Djava.net.preferIPv4Stack=true Promiscuous
+ * @key randomness
*/
import java.nio.ByteBuffer;
--- a/jdk/test/java/nio/channels/FileChannel/AtomicAppend.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/channels/FileChannel/AtomicAppend.java Tue May 05 13:29:12 2015 -0700
@@ -24,6 +24,7 @@
/*
* @test
* @summary Check that appends are atomic
+ * @key randomness
*/
import java.io.File;
--- a/jdk/test/java/nio/channels/FileChannel/ClosedByInterrupt.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/channels/FileChannel/ClosedByInterrupt.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @bug 6979009
* @summary Ensure ClosedByInterruptException is thrown when I/O operation
* interrupted by Thread.interrupt
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/nio/channels/FileChannel/MapTest.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/channels/FileChannel/MapTest.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @bug 4429043 8002180
* @summary Test file mapping with FileChannel
* @run main/othervm MapTest
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/nio/channels/FileChannel/Position.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/channels/FileChannel/Position.java Tue May 05 13:29:12 2015 -0700
@@ -24,6 +24,7 @@
/* @test
* @bug 4429043 6526860
* @summary Test position method of FileChannel
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/nio/channels/FileChannel/Pread.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/channels/FileChannel/Pread.java Tue May 05 13:29:12 2015 -0700
@@ -24,6 +24,7 @@
/* @test
* @bug 4862382 4862408
* @summary Test positional read method of FileChannel
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/nio/channels/FileChannel/Pwrite.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/channels/FileChannel/Pwrite.java Tue May 05 13:29:12 2015 -0700
@@ -24,6 +24,7 @@
/* @test
* @bug 4862411
* @summary Test positional write method of FileChannel
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/nio/channels/FileChannel/Size.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/channels/FileChannel/Size.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @bug 4563125
* @summary Test size method of FileChannel
* @run main/othervm Size
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/nio/channels/FileChannel/Transfer.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/channels/FileChannel/Transfer.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* 6984545
* @summary Test FileChannel.transferFrom and transferTo
* @library ..
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/nio/channels/FileChannel/Truncate.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/channels/FileChannel/Truncate.java Tue May 05 13:29:12 2015 -0700
@@ -24,6 +24,7 @@
/* @test
* @bug 6191269 6709457 8000330
* @summary Test truncate method of FileChannel
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/nio/channels/Pipe/PipeChannel.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/channels/Pipe/PipeChannel.java Tue May 05 13:29:12 2015 -0700
@@ -23,6 +23,7 @@
/* @test
* @summary Test reading and writing from Pipes
+ * @key randomness
*/
import java.io.*;
@@ -37,7 +38,7 @@
*/
public class PipeChannel {
- private static Random generator = new Random();
+ private static Random generator = new Random();
public static void main(String[] args) throws Exception {
for (int x=0; x<100; x++) {
--- a/jdk/test/java/nio/channels/Pipe/ScatteringRead.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/channels/Pipe/ScatteringRead.java Tue May 05 13:29:12 2015 -0700
@@ -22,8 +22,9 @@
*/
/* @test
- @bug 4526754
+ * @bug 4526754
* @summary Test Pipe scattering reads
+ * @key randomness
*/
import java.nio.channels.*;
--- a/jdk/test/java/nio/channels/Pipe/SelectPipe.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/channels/Pipe/SelectPipe.java Tue May 05 13:29:12 2015 -0700
@@ -23,6 +23,7 @@
/* @test
* @summary Test selection of ready pipe
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/nio/channels/Selector/SelectorTest.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/channels/Selector/SelectorTest.java Tue May 05 13:29:12 2015 -0700
@@ -24,6 +24,7 @@
/* @test
* @summary Test selectors and socketchannels
* @library ..
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/nio/channels/ServerSocketChannel/NonBlockingAccept.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/channels/ServerSocketChannel/NonBlockingAccept.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @library ..
* @build TestUtil
* @run main NonBlockingAccept
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/nio/channels/SocketChannel/CloseDuringWrite.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/channels/SocketChannel/CloseDuringWrite.java Tue May 05 13:29:12 2015 -0700
@@ -23,6 +23,7 @@
/* @test
* @summary Test asynchronous close during a blocking write
+ * @key randomness
*/
import java.io.Closeable;
--- a/jdk/test/java/nio/channels/SocketChannel/OutOfBand.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/channels/SocketChannel/OutOfBand.java Tue May 05 13:29:12 2015 -0700
@@ -24,6 +24,7 @@
/* @test
* @summary Test socket adapter sendUrgentData method
* @bug 6963907
+ * @key randomness
*/
import java.net.*;
--- a/jdk/test/java/nio/channels/SocketChannel/ShortWrite.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/channels/SocketChannel/ShortWrite.java Tue May 05 13:29:12 2015 -0700
@@ -24,6 +24,7 @@
/* @test
* @bug 7176630 7074436
* @summary Check for short writes on SocketChannels configured in blocking mode
+ * @key randomness
*/
import java.net.*;
--- a/jdk/test/java/nio/channels/SocketChannel/VectorIO.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/channels/SocketChannel/VectorIO.java Tue May 05 13:29:12 2015 -0700
@@ -24,6 +24,7 @@
/* @test
* @summary Test socketchannel vector IO
* @library ..
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/nio/channels/etc/AdaptorCloseAndInterrupt.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/channels/etc/AdaptorCloseAndInterrupt.java Tue May 05 13:29:12 2015 -0700
@@ -24,6 +24,7 @@
/* @test
* @bug 7184932
* @summary Test asynchronous close and interrupt of timed socket adapter methods
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/nio/charset/coders/BashCache.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/charset/coders/BashCache.java Tue May 05 13:29:12 2015 -0700
@@ -24,6 +24,7 @@
/* @test
* @bug 4517279
* @summary Stochastic test of thread-local coder caches
+ * @key randomness
*/
import java.nio.*;
--- a/jdk/test/java/nio/charset/coders/BashStreams.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/charset/coders/BashStreams.java Tue May 05 13:29:12 2015 -0700
@@ -23,6 +23,7 @@
/* @test
* @summary Stochastic test of charset-based streams
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/nio/file/Files/BytesAndLines.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/file/Files/BytesAndLines.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @run testng BytesAndLines
* @summary Unit test for methods for Files readAllBytes, readAllLines and
* and write methods.
+ * @key randomness
*/
import java.nio.ByteBuffer;
--- a/jdk/test/java/nio/file/Files/CopyAndMove.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/file/Files/CopyAndMove.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @library ..
* @build CopyAndMove PassThroughFileSystem
* @run main/othervm CopyAndMove
+ * @key randomness
*/
import java.nio.ByteBuffer;
--- a/jdk/test/java/nio/file/Files/walkFileTree/SkipSiblings.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/file/Files/walkFileTree/SkipSiblings.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @library ../..
* @compile SkipSiblings.java CreateFileTree.java
* @run main SkipSiblings
+ * @key randomness
*/
import java.nio.file.*;
--- a/jdk/test/java/nio/file/Files/walkFileTree/SkipSubtree.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/file/Files/walkFileTree/SkipSubtree.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @library ../..
* @compile SkipSubtree.java CreateFileTree.java
* @run main SkipSubtree
+ * @key randomness
*/
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
--- a/jdk/test/java/nio/file/Files/walkFileTree/TerminateWalk.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/file/Files/walkFileTree/TerminateWalk.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @library ../..
* @compile TerminateWalk.java CreateFileTree.java
* @run main TerminateWalk
+ * @key randomness
*/
import java.nio.file.*;
--- a/jdk/test/java/nio/file/WatchService/LotsOfEvents.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/file/WatchService/LotsOfEvents.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @summary Tests WatchService behavior when lots of events are pending
* @library ..
* @run main/timeout=180 LotsOfEvents
+ * @key randomness
*/
import java.nio.file.*;
--- a/jdk/test/java/nio/file/WatchService/MayFlies.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/file/WatchService/MayFlies.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* short lived files
* @library ..
* @run main MayFlies
+ * @key randomness
*/
import java.nio.file.*;
--- a/jdk/test/java/nio/file/WatchService/SensitivityModifier.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/file/WatchService/SensitivityModifier.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @summary Sanity test for Sun-specific sensitivity level watch event modifier
* @library ..
* @run main/timeout=240 SensitivityModifier
+ * @key randomness
*/
import java.nio.file.*;
--- a/jdk/test/java/nio/file/attribute/AclFileAttributeView/Basic.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/file/attribute/AclFileAttributeView/Basic.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @bug 4313887 6838333 6891404
* @summary Unit test for java.nio.file.attribute.AclFileAttribueView
* @library ../..
+ * @key randomness
*/
import java.nio.file.*;
--- a/jdk/test/java/nio/file/attribute/FileTime/Basic.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/file/attribute/FileTime/Basic.java Tue May 05 13:29:12 2015 -0700
@@ -24,6 +24,7 @@
/* @test
* @bug 6844313 8011647
* @summary Unit test for java.nio.file.FileTime
+ * @key randomness
*/
--- a/jdk/test/java/nio/file/attribute/UserDefinedFileAttributeView/Basic.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/nio/file/attribute/UserDefinedFileAttributeView/Basic.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @bug 4313887 6838333
* @summary Unit test for java.nio.file.attribute.UserDefinedFileAttributeView
* @library ../..
+ * @key randomness
*/
import java.nio.ByteBuffer;
--- a/jdk/test/java/security/MessageDigest/ByteBuffers.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/security/MessageDigest/ByteBuffers.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @bug 4844847
* @summary Test the MessageDigest.update(ByteBuffer) method
* @author Andreas Sterbenz
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/java/security/MessageDigest/TestDigestIOStream.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/security/MessageDigest/TestDigestIOStream.java Tue May 05 13:29:12 2015 -0700
@@ -36,6 +36,7 @@
* @bug 8050370
* @summary MessageDigest tests with DigestIOStream
* @author Kevin Liu
+ * @key randomness
*/
enum ReadModel {
--- a/jdk/test/java/security/MessageDigest/TestSameLength.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/security/MessageDigest/TestSameLength.java Tue May 05 13:29:12 2015 -0700
@@ -33,6 +33,7 @@
* @summary Check md.getDigestLength() equal digest output length with various
* algorithm/dataLen/(update,digest methods).
* @author Kevin Liu
+ * @key randomness
*/
public class TestSameLength {
--- a/jdk/test/java/security/MessageDigest/TestSameValue.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/security/MessageDigest/TestSameValue.java Tue May 05 13:29:12 2015 -0700
@@ -34,6 +34,7 @@
* @summary Check md.digest(data) value whether same with digest output value
* with various update/digest methods.
* @author Kevin Liu
+ * @key randomness
*/
public class TestSameValue {
--- a/jdk/test/java/security/Signature/ByteBuffers.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/security/Signature/ByteBuffers.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @bug 4844847
* @summary Test the Signature.update(ByteBuffer) method
* @author Andreas Sterbenz
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/java/security/Signature/NONEwithRSA.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/security/Signature/NONEwithRSA.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @bug 4955844
* @summary ensure that the NONEwithRSA adapter works correctly
* @author Andreas Sterbenz
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/java/security/spec/EllipticCurveMatch.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/security/spec/EllipticCurveMatch.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @bug 6738532
* @summary Check EllipticCurve.equals() does not compare seed value of curve.
* @author Mike StJohns
+ * @key randomness
*/
import java.security.spec.*;
--- a/jdk/test/java/sql/JavatimeTest.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/sql/JavatimeTest.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
*@test
*@bug 8007520
*@summary Test those bridge methods to/from java.time date/time classes
+ * @key randomness
*/
import java.util.Random;
--- a/jdk/test/java/text/Format/MessageFormat/Bug7003643.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/text/Format/MessageFormat/Bug7003643.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @test
* @bug 7003643
* @summary Make sure MessageFormat.toPattern produces correct quoting. (SPI part is tested in PluggableLocale tests.)
+ * @key randomness
*/
import java.text.*;
--- a/jdk/test/java/time/tck/java/time/TCKLocalDateTime.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/time/tck/java/time/TCKLocalDateTime.java Tue May 05 13:29:12 2015 -0700
@@ -107,8 +107,6 @@
import static org.testng.Assert.assertTrue;
import static org.testng.Assert.fail;
-import java.io.ByteArrayOutputStream;
-import java.io.DataOutputStream;
import java.time.Clock;
import java.time.DateTimeException;
import java.time.DayOfWeek;
@@ -260,16 +258,17 @@
//-----------------------------------------------------------------------
@Test(timeOut=30000) // TODO: remove when time zone loading is faster
public void now() {
+ final long DELTA = 20_000_000_000L; // 20 seconds of nanos leeway
LocalDateTime expected = LocalDateTime.now(Clock.systemDefaultZone());
LocalDateTime test = LocalDateTime.now();
long diff = Math.abs(test.toLocalTime().toNanoOfDay() - expected.toLocalTime().toNanoOfDay());
- if (diff >= 100000000) {
+ if (diff >= DELTA) {
// may be date change
expected = LocalDateTime.now(Clock.systemDefaultZone());
test = LocalDateTime.now();
diff = Math.abs(test.toLocalTime().toNanoOfDay() - expected.toLocalTime().toNanoOfDay());
}
- assertTrue(diff < 100000000); // less than 0.1 secs
+ assertTrue(diff < DELTA);
}
//-----------------------------------------------------------------------
--- a/jdk/test/java/time/tck/java/time/TCKOffsetDateTime.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/time/tck/java/time/TCKOffsetDateTime.java Tue May 05 13:29:12 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -104,8 +104,6 @@
import static org.testng.Assert.assertTrue;
import static org.testng.Assert.fail;
-import java.io.ByteArrayOutputStream;
-import java.io.DataOutputStream;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.time.Clock;
@@ -235,16 +233,17 @@
//-----------------------------------------------------------------------
@Test
public void now() {
+ final long DELTA = 20_000_000_000L; // 20 seconds of nanos leeway
OffsetDateTime expected = OffsetDateTime.now(Clock.systemDefaultZone());
OffsetDateTime test = OffsetDateTime.now();
long diff = Math.abs(test.toLocalTime().toNanoOfDay() - expected.toLocalTime().toNanoOfDay());
- if (diff >= 100000000) {
+ if (diff >= DELTA) {
// may be date change
expected = OffsetDateTime.now(Clock.systemDefaultZone());
test = OffsetDateTime.now();
diff = Math.abs(test.toLocalTime().toNanoOfDay() - expected.toLocalTime().toNanoOfDay());
}
- assertTrue(diff < 100000000); // less than 0.1 secs
+ assertTrue(diff < DELTA);
}
//-----------------------------------------------------------------------
--- a/jdk/test/java/time/tck/java/time/TCKOffsetTime.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/time/tck/java/time/TCKOffsetTime.java Tue May 05 13:29:12 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -89,8 +89,6 @@
import static org.testng.Assert.assertTrue;
import static org.testng.Assert.fail;
-import java.io.ByteArrayOutputStream;
-import java.io.DataOutputStream;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.time.Clock;
@@ -202,12 +200,19 @@
//-----------------------------------------------------------------------
@Test
public void now() {
+ final long DELTA = 20_000_000_000L; // 20 seconds of nanos leeway
ZonedDateTime nowDT = ZonedDateTime.now();
OffsetTime expected = OffsetTime.now(Clock.systemDefaultZone());
OffsetTime test = OffsetTime.now();
long diff = Math.abs(test.toLocalTime().toNanoOfDay() - expected.toLocalTime().toNanoOfDay());
- assertTrue(diff < 100000000); // less than 0.1 secs
+ if (diff >= DELTA) {
+ // may be date change
+ expected = OffsetTime.now(Clock.systemDefaultZone());
+ test = OffsetTime.now();
+ diff = Math.abs(test.toLocalTime().toNanoOfDay() - expected.toLocalTime().toNanoOfDay());
+ }
+ assertTrue(diff < DELTA);
assertEquals(test.getOffset(), nowDT.getOffset());
}
--- a/jdk/test/java/util/Arrays/ArrayObjectMethods.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/Arrays/ArrayObjectMethods.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @bug 4906359 6239296
* @summary Basic test for content-based array object methods
* @author Josh Bloch, Martin Buchholz
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/java/util/Arrays/CopyMethods.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/Arrays/CopyMethods.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @bug 4655503
* @summary Test for array cloning and slicing methods.
* @author John Rose
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/java/util/Arrays/Correct.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/Arrays/Correct.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @bug 4726380 8037097
* @summary Check that different sorts give equivalent results.
* @run testng Correct
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/java/util/Base64/TestBase64.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/Base64/TestBase64.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @test 4235519 8004212 8005394 8007298 8006295 8006315 8006530 8007379 8008925
* 8014217 8025003 8026330 8028397
* @summary tests java.util.Base64
+ * @key randomness
*/
import java.io.ByteArrayInputStream;
--- a/jdk/test/java/util/BitSet/BSMethods.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/BitSet/BSMethods.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @summary Test the operation of the methods of BitSet class
* @author Mike McCloskey, Martin Buchholz
* @run main/othervm BSMethods
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/java/util/BitSet/ImportExport.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/BitSet/ImportExport.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @bug 5037068
* @summary Test import/export constructors and methods
* @author Martin Buchholz
+ * @key randomness
*/
import java.nio.*;
--- a/jdk/test/java/util/BitSet/PreviousBits.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/BitSet/PreviousBits.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @test
* @bug 6410729 6586631
* @summary Test previousClearBit, previousSetBit
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/java/util/Calendar/JavatimeTest.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/Calendar/JavatimeTest.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
*@test
*@bug 8007520 8008254
*@summary Test those bridge methods to/from java.time date/time classes
+ * @key randomness
*/
import java.util.Calendar;
--- a/jdk/test/java/util/Collection/MOAT.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/Collection/MOAT.java Tue May 05 13:29:12 2015 -0700
@@ -30,6 +30,7 @@
* @summary Run many tests on many Collection and Map implementations
* @author Martin Buchholz
* @run main MOAT
+ * @key randomness
*/
/* Mother Of All (Collection) Tests
--- a/jdk/test/java/util/Collections/AddAll.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/Collections/AddAll.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @bug 4822887
* @summary Basic test for Collections.addAll
* @author Josh Bloch
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/java/util/Collections/CheckedListBash.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/Collections/CheckedListBash.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @bug 4904067
* @summary Unit test for Collections.checkedList
* @author Josh Bloch
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/java/util/Collections/CheckedMapBash.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/Collections/CheckedMapBash.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @summary Unit test for Collections.checkedMap
* @author Josh Bloch
* @run testng CheckedMapBash
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/java/util/Collections/CheckedSetBash.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/Collections/CheckedSetBash.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @summary Unit test for Collections.checkedSet
* @author Josh Bloch
* @run testng CheckedSetBash
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/java/util/Collections/Disjoint.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/Collections/Disjoint.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @bug 4339792
* @summary Basic test for Collections.disjoint
* @author Josh Bloch
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/java/util/Collections/Rotate.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/Collections/Rotate.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @test
* @bug 4323074
* @summary Basic test for new rotate algorithm
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/java/util/EnumSet/EnumSetBash.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/EnumSet/EnumSetBash.java Tue May 05 13:29:12 2015 -0700
@@ -28,6 +28,7 @@
* @author Josh Bloch
* @author Neal Gafter
* @author Yo Ma Ma
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/java/util/HashSet/Serialization.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/HashSet/Serialization.java Tue May 05 13:29:12 2015 -0700
@@ -34,6 +34,7 @@
* @test
* @bug 8016252
* @summary Verify that a serialized HashSet may successfully be deserialized.
+ * @key randomness
*/
public class Serialization {
--- a/jdk/test/java/util/IdentityHashMap/Capacity.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/IdentityHashMap/Capacity.java Tue May 05 13:29:12 2015 -0700
@@ -39,6 +39,7 @@
* @summary IdentityHashMap reallocates storage when inserting expected
* number of elements
* @run testng Capacity
+ * @key randomness
*/
@Test
--- a/jdk/test/java/util/List/LockStep.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/List/LockStep.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @bug 6359979
* @summary Compare List implementations for identical behavior
* @author Martin Buchholz
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/util/Map/LockStep.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/Map/LockStep.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @test
* @bug 6612102
* @summary Test Map implementations for mutual compatibility
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/java/util/NavigableMap/LockStep.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/NavigableMap/LockStep.java Tue May 05 13:29:12 2015 -0700
@@ -29,6 +29,7 @@
* @run main/othervm -XX:+AggressiveOpts LockStep
* @run main/othervm -XX:+AggressiveOpts -Dthorough=true LockStep
* @author Martin Buchholz
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/util/PluggableLocale/ExecTest.sh Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/PluggableLocale/ExecTest.sh Tue May 05 13:29:12 2015 -0700
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2007, 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
@@ -33,7 +33,7 @@
# Parameters:
# providersToTest: [foo|bar|foobar]
# java class name: <class name>
-# providersInExtDir: [true|false]
+# java security policy file: (Optional. Installs security manager if exists)
if [ "${TESTSRC}" = "" ]
then
@@ -113,8 +113,14 @@
exit $result
fi
+# security options
+if [ "$3" != "" ]
+then
+ SECURITYOPTS="-Djava.security.manager -Djava.security.policy=${TESTSRC}${FS}$3"
+fi
+
# run
-RUNCMD="${TESTJAVA}${FS}bin${FS}java ${TESTVMOPTS} -classpath ${CLASSPATHARG} $2 "
+RUNCMD="${TESTJAVA}${FS}bin${FS}java ${TESTVMOPTS} ${SECURITYOPTS} -classpath ${CLASSPATHARG} $2 "
echo ${RUNCMD}
${RUNCMD}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/util/PluggableLocale/PermissionTest.java Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,46 @@
+/*
+ * 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.
+ */
+/*
+ *
+ */
+public class PermissionTest{
+
+ // Make sure provider impls can be instantiated under a security manager.ZZ
+ com.foo.BreakIteratorProviderImpl breakIP = new com.foo.BreakIteratorProviderImpl();
+ com.foo.CollatorProviderImpl collatorP = new com.foo.CollatorProviderImpl();
+ com.foo.DateFormatProviderImpl dateFP = new com.foo.DateFormatProviderImpl();
+ com.foo.DateFormatSymbolsProviderImpl dateFSP = new com.foo.DateFormatSymbolsProviderImpl();
+ com.foo.DecimalFormatSymbolsProviderImpl decimalFSP = new com.foo.DecimalFormatSymbolsProviderImpl();
+ com.foo.NumberFormatProviderImpl numberFP = new com.foo.NumberFormatProviderImpl();
+ com.bar.CurrencyNameProviderImpl currencyNP = new com.bar.CurrencyNameProviderImpl();
+ com.bar.CurrencyNameProviderImpl2 currencyNP2 = new com.bar.CurrencyNameProviderImpl2();
+ com.bar.LocaleNameProviderImpl localeNP = new com.bar.LocaleNameProviderImpl();
+ com.bar.TimeZoneNameProviderImpl tzNP = new com.bar.TimeZoneNameProviderImpl();
+ com.bar.GenericTimeZoneNameProviderImpl tzGenNP = new com.bar.GenericTimeZoneNameProviderImpl();
+ com.bar.CalendarDataProviderImpl calDataP = new com.bar.CalendarDataProviderImpl();
+ com.bar.CalendarNameProviderImpl calNameP = new com.bar.CalendarNameProviderImpl();
+
+ public static void main(String[] s) {
+ new PermissionTest();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/util/PluggableLocale/PermissionTest.sh Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# 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.
+#
+#
+# @test
+# @bug 8075545
+# @summary Check whether RuntimePermission("localeServiceProvider") is
+# handled correctly
+# @run shell ExecTest.sh foobar PermissionTest
+# @run shell/fail ExecTest.sh foobar PermissionTest dummy
+# @run shell ExecTest.sh foobar PermissionTest localeServiceProvider.policy
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/util/PluggableLocale/localeServiceProvider.policy Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,3 @@
+grant {
+ permission java.lang.RuntimePermission "localeServiceProvider";
+};
--- a/jdk/test/java/util/Properties/ConcurrentLoadAndStoreXML.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/Properties/ConcurrentLoadAndStoreXML.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @bug 8005281
* @summary Test that the Properties storeToXML and loadFromXML methods are
* thread safe
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/util/Random/DistinctSeeds.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/Random/DistinctSeeds.java Tue May 05 13:29:12 2015 -0700
@@ -35,6 +35,7 @@
* @test
* @bug 4949279 6937857
* @summary Independent instantiations of Random() have distinct seeds.
+ * @key randomness
*/
import java.util.ArrayList;
--- a/jdk/test/java/util/Random/RandomStreamTest.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/Random/RandomStreamTest.java Tue May 05 13:29:12 2015 -0700
@@ -47,6 +47,7 @@
* @run testng RandomStreamTest
* @summary test stream methods on Random
* @author Brian Goetz
+ * @key randomness
*/
public class RandomStreamTest {
--- a/jdk/test/java/util/Random/RandomTest.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/Random/RandomTest.java Tue May 05 13:29:12 2015 -0700
@@ -35,6 +35,7 @@
* @test
* @run testng RandomTest
* @summary test methods on Random
+ * @key randomness
*/
@Test
public class RandomTest {
--- a/jdk/test/java/util/ResourceBundle/Control/StressTest.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/ResourceBundle/Control/StressTest.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @bug 5102289
* @summary Stress test for ResourceBundle.getBundle with ResourceBundle.Control.
* @run main/othervm -esa StressTest 2 15
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/java/util/SplittableRandom/SplittableRandomTest.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/SplittableRandom/SplittableRandomTest.java Tue May 05 13:29:12 2015 -0700
@@ -39,6 +39,7 @@
* @run testng SplittableRandomTest
* @run testng/othervm -Djava.util.secureRandomSeed=true SplittableRandomTest
* @summary test methods on SplittableRandom
+ * @key randomness
*/
@Test
public class SplittableRandomTest {
--- a/jdk/test/java/util/Timer/DelayOverflow.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/Timer/DelayOverflow.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @summary java.util.Timer schedule delay Long.MAX_VALUE causes task to execute multiple times
* @author Chris Hegarty
* @author Martin Buchholz
+ * @key randomness
*/
import java.util.Date;
--- a/jdk/test/java/util/Timer/Purge.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/Timer/Purge.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @test
* @bug 4481072
* @summary Basic test for purge method
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/java/util/UUID/Serial.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/UUID/Serial.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @test
* @bug 5014447
* @summary Test deserialization of UUID
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/util/UUID/UUIDTest.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/UUID/UUIDTest.java Tue May 05 13:29:12 2015 -0700
@@ -24,6 +24,7 @@
/* @test
* @bug 4173528 5068772
* @summary Unit tests for java.util.UUID
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/java/util/WeakHashMap/GCDuringIteration.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/WeakHashMap/GCDuringIteration.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @ignore until 6842353 is resolved
* @summary Check that iterators work properly in the presence of
* concurrent finalization and removal of elements.
+ * @key randomness
*/
import java.util.*;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/util/concurrent/forkjoin/SubmissionTest.java Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,49 @@
+/*
+ * 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.concurrent.ForkJoinPool;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+/*
+ * @test
+ * @bug 8078490
+ * @summary Test submission and execution of task without joining
+ */
+public class SubmissionTest {
+ public static void main(String[] args) throws Throwable {
+ final ForkJoinPool e = new ForkJoinPool(1);
+ final AtomicBoolean b = new AtomicBoolean();
+ final Runnable setFalse = () -> b.set(false);
+ for (int i = 0; i < 100000; i++) {
+ b.set(true);
+ e.execute(setFalse);
+ long st = System.nanoTime();
+ while (b.get()) {
+ if (System.nanoTime() - st >= TimeUnit.SECONDS.toNanos(10)) {
+ throw new RuntimeException("Submitted task failed to execute");
+ }
+ }
+ }
+ }
+}
--- a/jdk/test/java/util/logging/CheckZombieLockTest.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/logging/CheckZombieLockTest.java Tue May 05 13:29:12 2015 -0700
@@ -37,6 +37,7 @@
* @run main/othervm CheckZombieLockTest CLEANUP
* @run main/othervm CheckZombieLockTest REUSE
* @run main/othervm CheckZombieLockTest CLEANUP
+ * @key randomness
*/
import java.io.File;
import java.io.IOException;
--- a/jdk/test/java/util/logging/DrainFindDeadlockTest.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/logging/DrainFindDeadlockTest.java Tue May 05 13:29:12 2015 -0700
@@ -36,6 +36,7 @@
* @author jim.gish@oracle.com
* @build DrainFindDeadlockTest
* @run main/othervm/timeout=10 DrainFindDeadlockTest
+ * @key randomness
*/
/**
--- a/jdk/test/java/util/logging/FileHandlerLongLimit.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/logging/FileHandlerLongLimit.java Tue May 05 13:29:12 2015 -0700
@@ -55,6 +55,7 @@
* @run main/othervm FileHandlerLongLimit UNSECURE
* @run main/othervm FileHandlerLongLimit SECURE
* @author danielfuchs
+ * @key randomness
*/
public class FileHandlerLongLimit {
--- a/jdk/test/java/util/logging/FileHandlerPath.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/logging/FileHandlerPath.java Tue May 05 13:29:12 2015 -0700
@@ -56,6 +56,7 @@
* @run main/othervm FileHandlerPath UNSECURE
* @run main/othervm FileHandlerPath SECURE
* @author danielfuchs
+ * @key randomness
*/
public class FileHandlerPath {
--- a/jdk/test/java/util/logging/FileHandlerPatternExceptions.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/logging/FileHandlerPatternExceptions.java Tue May 05 13:29:12 2015 -0700
@@ -49,6 +49,7 @@
* @run main/othervm FileHandlerPatternExceptions UNSECURE
* @run main/othervm FileHandlerPatternExceptions SECURE
* @author danielfuchs
+ * @key randomness
*/
public class FileHandlerPatternExceptions {
--- a/jdk/test/java/util/logging/LogManager/Configuration/ParentLoggerWithHandlerGC.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/logging/LogManager/Configuration/ParentLoggerWithHandlerGC.java Tue May 05 13:29:12 2015 -0700
@@ -59,6 +59,7 @@
* @run main/othervm ParentLoggerWithHandlerGC UNSECURE
* @run main/othervm ParentLoggerWithHandlerGC SECURE
* @author danielfuchs
+ * @key randomness
*/
public class ParentLoggerWithHandlerGC {
--- a/jdk/test/java/util/logging/LoggingDeadlock.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/logging/LoggingDeadlock.java Tue May 05 13:29:12 2015 -0700
@@ -30,6 +30,10 @@
*
* @build LoggingDeadlock
* @run main/timeout=15 LoggingDeadlock
+ * @key randomness
+ */
+
+/*
*
* There can be a deadlock between two class initializations.
* It happens if the LogManager.<clinit> and the Logger.<clinit>
--- a/jdk/test/java/util/logging/LoggingDeadlock2.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/logging/LoggingDeadlock2.java Tue May 05 13:29:12 2015 -0700
@@ -29,6 +29,10 @@
*
* @build LoggingDeadlock2
* @run main LoggingDeadlock2
+ * @key randomness
+ */
+
+/*
*
* There is a clear deadlock between LogManager.<clinit> and
* Cleaner.run() methods.
--- a/jdk/test/java/util/logging/TestLogConfigurationDeadLockWithConf.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/logging/TestLogConfigurationDeadLockWithConf.java Tue May 05 13:29:12 2015 -0700
@@ -46,6 +46,7 @@
* caused by synchronization issues in Logger and LogManager.
* @run main/othervm TestLogConfigurationDeadLockWithConf
* @author danielfuchs
+ * @key randomness
*/
// This test is a best effort to try & detect issues. The test itself will run
// for 8secs. This is usually sufficient to detect issues.
--- a/jdk/test/java/util/prefs/CodePointZeroPrefsTest.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/prefs/CodePointZeroPrefsTest.java Tue May 05 13:29:12 2015 -0700
@@ -26,9 +26,8 @@
/*
* @test
- * @bug 8068373
- * @requires os.family == "linux" | os.family == "solaris"
- * @summary Ensure writing a code point U+0000 null control character is detected.
+ * @bug 8068373 8075110 8075156
+ * @summary Ensure a code point U+0000 null control character is detected.
*/
public class CodePointZeroPrefsTest
{
@@ -36,52 +35,70 @@
{
int failures = 0;
- // Deliberately reflect so you can reproduce it on any platform.
- Constructor<? extends PreferencesFactory> constructor =
- Class.forName("java.util.prefs.FileSystemPreferencesFactory").asSubclass(PreferencesFactory.class).getDeclaredConstructor();
- constructor.setAccessible(true);
- PreferencesFactory factory = constructor.newInstance();
+ Preferences node = Preferences.userRoot().node("com/acme/testing");
- Preferences node = factory.userRoot().node("com/acme/testing");
+ // --- put() ---
// legal key and value
try {
node.put("a", "1");
} catch (IllegalArgumentException iae) {
- System.err.println("Unexpected IllegalArgumentException for legal key");
+ System.err.println("Unexpected IllegalArgumentException for legal put() key");
failures++;
}
// illegal key only
- int numIAEs = 0;
try {
node.put("a\u0000b", "1");
- System.err.println("IllegalArgumentException not thrown for illegal key");
+ System.err.println("IllegalArgumentException not thrown for illegal put() key");
failures++;
} catch (IllegalArgumentException iae) {
// do nothing
}
// illegal value only
- numIAEs = 0;
try {
node.put("ab", "2\u00003");
- System.err.println("IllegalArgumentException not thrown for illegal value");
+ System.err.println("IllegalArgumentException not thrown for illegal put() value");
failures++;
} catch (IllegalArgumentException iae) {
// do nothing
}
// illegal key and value
- numIAEs = 0;
try {
node.put("a\u0000b", "2\u00003");
- System.err.println("IllegalArgumentException not thrown for illegal entry");
+ System.err.println("IllegalArgumentException not thrown for illegal put() entry");
failures++;
} catch (IllegalArgumentException iae) {
// do nothing
}
+ // --- get ---
+
+ // illegal key only
+ try {
+ String theDefault = "default";
+ String value = node.get("a\u0000b", theDefault);
+ System.err.println("IllegalArgumentException not thrown for illegal get() key");
+ failures++;
+ } catch (IllegalArgumentException iae) {
+ // do nothing
+ }
+
+ // --- remove ---
+
+ // illegal key only
+ try {
+ node.remove("a\u0000b");
+ System.err.println("IllegalArgumentException not thrown for illegal remove() key");
+ failures++;
+ } catch (IllegalArgumentException iae) {
+ // do nothing
+ }
+
+ node.removeNode();
+
if (failures != 0) {
throw new RuntimeException("CodePointZeroPrefsTest failed with "
+ failures + " errors!");
--- a/jdk/test/java/util/regex/RegExTest.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/regex/RegExTest.java Tue May 05 13:29:12 2015 -0700
@@ -33,6 +33,7 @@
* 6350801 6676425 6878475 6919132 6931676 6948903 6990617 7014645 7039066
* 7067045 7014640 7189363 8007395 8013252 8013254 8012646 8023647 6559590
* 8027645 8035076 8039124 8035975 8074678
+ * @key randomness
*/
import java.util.function.Function;
--- a/jdk/test/java/util/zip/3GBZipFiles.sh Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/zip/3GBZipFiles.sh Tue May 05 13:29:12 2015 -0700
@@ -29,6 +29,7 @@
# @run shell 3GBZipFiles.sh 9986
# @ignore runs for hours and eats up 7 Gigabytes of disk space
# @run shell/timeout=604800 3GBZipFiles.sh 3141592653
+# @key randomness
# Command-line usage:
# javac FileBuilder.java && sh 3GBZipFiles.sh /path/to/jdk filesize
--- a/jdk/test/java/util/zip/DeInflate.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/zip/DeInflate.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @test
* @bug 7110149
* @summary Test basic deflater & inflater functionality
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/util/zip/DeflateIn_InflateOut.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/zip/DeflateIn_InflateOut.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @test
* @bug 4679743
* @summary Test basic functionality of DeflaterInputStream and InflaterOutputStream
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/util/zip/FlaterTest.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/zip/FlaterTest.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @bug 6348045
* @summary GZipOutputStream/InputStream goes critical(calls JNI_Get*Critical)
* and causes slowness. This test uses Deflater and Inflater directly.
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/util/zip/GZIP/Accordion.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/zip/GZIP/Accordion.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @bug 5092263
* @summary GZIPInputStream o GZIPOutputStream === the identity stream
* @author Martin Buchholz
+ * @key randomness
*/
// To manually test for uncompressed streams larger than 2GB, do
--- a/jdk/test/java/util/zip/GZIP/GZIPInputStreamRead.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/zip/GZIP/GZIPInputStreamRead.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @bug 4691425
* @summary Test the read and write of GZIPInput/OutputStream, including
* concatenated .gz inputstream
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/util/zip/InflateIn_DeflateOut.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/zip/InflateIn_DeflateOut.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @test
* @bug 4206909 4813885
* @summary Test basic functionality of DeflaterOutputStream/InflaterInputStream and GZIPOutputStream/GZIPInputStream, including flush
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/util/zip/InflaterBufferSize.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/zip/InflaterBufferSize.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @bug 6571338
* @summary Inflater should not require a buffer to the inflate() methods
* larger than 1 byte.
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/util/zip/TimeChecksum.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/zip/TimeChecksum.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
/* @test
* @bug 7109837
* @summary Test Adler32/CRC32.update(ByteBuffer)
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/java/util/zip/TotalInOut.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/zip/TotalInOut.java Tue May 05 13:29:12 2015 -0700
@@ -24,6 +24,7 @@
/* @test
* @bug 7188852
* @summary Test De/Inflater.getBytesRead/Written()
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/util/zip/ZipFile/Assortment.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/zip/ZipFile/Assortment.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @bug 4770745 6234507 6303183 8048990
* @summary test a variety of zip file entries
* @author Martin Buchholz
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/java/util/zip/ZipFile/ClearStaleZipFileInputStreams.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/zip/ZipFile/ClearStaleZipFileInputStreams.java Tue May 05 13:29:12 2015 -0700
@@ -30,6 +30,7 @@
* @bug 7031076
* @summary Allow stale InputStreams from ZipFiles to be GC'd
* @author Neil Richards <neil.richards@ngmr.net>, <neil_richards@uk.ibm.com>
+ * @key randomness
*/
import java.lang.ref.ReferenceQueue;
import java.lang.ref.WeakReference;
--- a/jdk/test/java/util/zip/ZipFile/FinalizeZipFile.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/zip/ZipFile/FinalizeZipFile.java Tue May 05 13:29:12 2015 -0700
@@ -24,6 +24,7 @@
/* @test
* @bug 7007609 7009618
* @summary Check that ZipFile objects are always collected
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/java/util/zip/ZipFile/MultiThreadedReadTest.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/zip/ZipFile/MultiThreadedReadTest.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @library /lib/testlibrary
* @build jdk.testlibrary.FileUtils
* @run main MultiThreadedReadTest
+ * @key randomness
*/
import java.io.File;
--- a/jdk/test/java/util/zip/ZipFile/ReadZip.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/java/util/zip/ZipFile/ReadZip.java Tue May 05 13:29:12 2015 -0700
@@ -24,6 +24,7 @@
/* @test
@bug 4241361 4842702 4985614 6646605 5032358 6923692
@summary Make sure we can read a zip file.
+ @key randomness
*/
import java.io.*;
--- a/jdk/test/javax/crypto/Cipher/ByteBuffers.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/javax/crypto/Cipher/ByteBuffers.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @bug 4844847
* @summary Test the Cipher.update/doFinal(ByteBuffer, ByteBuffer) methods
* @author Andreas Sterbenz
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/javax/crypto/CipherSpi/DirectBBRemaining.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/javax/crypto/CipherSpi/DirectBBRemaining.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @bug 7142509
* @summary Cipher.doFinal(ByteBuffer,ByteBuffer) fails to
* process when in.remaining() == 0
+ * @key randomness
*/
import java.nio.ByteBuffer;
--- a/jdk/test/javax/crypto/CryptoPermission/AllPermCheck.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/javax/crypto/CryptoPermission/AllPermCheck.java Tue May 05 13:29:12 2015 -0700
@@ -28,6 +28,7 @@
* InvalidKeyException is thrown instead of SecurityException when
* crypto permssion checks failed.
* @author Valerie Peng
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/javax/crypto/CryptoPermission/RC2PermCheck.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/javax/crypto/CryptoPermission/RC2PermCheck.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @summary Ensure the crypto permission check on cipher algorithms
* with restricted parameter values are correctly enforced.
* @author Valerie Peng
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/javax/crypto/JceSecurity/SunJCE_BC_LoadOrdering.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/javax/crypto/JceSecurity/SunJCE_BC_LoadOrdering.java Tue May 05 13:29:12 2015 -0700
@@ -28,6 +28,7 @@
* @summary SunJCE depends on sun.security.provider.SignatureImpl
* behaviour, BC can't load into 1st slot.
* @author Brad R. Wetmore
+ * @key randomness
*/
import java.security.*;
--- a/jdk/test/javax/crypto/KeyGenerator/TestKGParity.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/javax/crypto/KeyGenerator/TestKGParity.java Tue May 05 13:29:12 2015 -0700
@@ -35,6 +35,7 @@
* @bug 8048607
* @compile ../../../com/sun/crypto/provider/Cipher/DES/TestUtility.java
* @summary Test key generation of DES and DESEDE
+ * @key randomness
*/
public class TestKGParity {
--- a/jdk/test/javax/crypto/Mac/ByteBuffers.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/javax/crypto/Mac/ByteBuffers.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @bug 4844847
* @summary Test the Mac.update(ByteBuffer) method
* @author Andreas Sterbenz
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/javax/crypto/NullCipher/TestNPE.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/javax/crypto/NullCipher/TestNPE.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @bug 4937853
* @summary Make sure normal calls of NullCipher does not throw NPE.
* @author Valerie Peng
+ * @key randomness
*/
import java.util.Arrays;
import java.security.AlgorithmParameters;
--- a/jdk/test/javax/management/monitor/MultiMonitorTest.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/javax/management/monitor/MultiMonitorTest.java Tue May 05 13:29:12 2015 -0700
@@ -29,6 +29,7 @@
* @run clean MultiMonitorTest
* @run build MultiMonitorTest
* @run main MultiMonitorTest
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/javax/management/mxbean/ThreadMXBeanTest.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/javax/management/mxbean/ThreadMXBeanTest.java Tue May 05 13:29:12 2015 -0700
@@ -29,6 +29,7 @@
* @run clean ThreadMXBeanTest
* @run build ThreadMXBeanTest
* @run main ThreadMXBeanTest
+ * @key randomness
*/
import java.lang.management.*;
--- a/jdk/test/javax/management/remote/mandatory/loading/MissingClassTest.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/javax/management/remote/mandatory/loading/MissingClassTest.java Tue May 05 13:29:12 2015 -0700
@@ -29,6 +29,7 @@
* @run clean MissingClassTest SingleClassLoader
* @run build MissingClassTest SingleClassLoader
* @run main MissingClassTest
+ * @key randomness
*/
/*
--- a/jdk/test/javax/management/timer/MissingNotificationTest.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/javax/management/timer/MissingNotificationTest.java Tue May 05 13:29:12 2015 -0700
@@ -29,6 +29,7 @@
* @run clean MissingNotificationTest
* @run build MissingNotificationTest
* @run main MissingNotificationTest
+ * @key randomness
*/
import java.util.Date;
--- a/jdk/test/javax/net/ssl/SSLEngine/LargeBufs.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/javax/net/ssl/SSLEngine/LargeBufs.java Tue May 05 13:29:12 2015 -0700
@@ -33,6 +33,7 @@
* @run main/othervm -Djsse.enableCBCProtection=false LargeBufs
*
* @author Brad R. Wetmore
+ * @key randomness
*/
import javax.net.ssl.*;
--- a/jdk/test/javax/smartcardio/TestCommandAPDU.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/javax/smartcardio/TestCommandAPDU.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @bug 6293767
* @summary Test for the CommandAPDU class
* @author Andreas Sterbenz
+ * @key randomness
*/
import java.util.*;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/lib/testlibrary/jdk/testlibrary/RandomFactory.java Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,101 @@
+/*
+ * 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.Random;
+import java.util.SplittableRandom;
+
+/**
+ * Factory class which generates and prints to STDOUT a long-valued seed
+ * for use in initializing a PRNG. An instance of {@code Random} or
+ * {@code SplittableRandom} may likewise be obtained.
+ */
+public class RandomFactory {
+ /**
+ * Attempt to obtain the seed from the value of the "seed" property.
+ * @return The seed or {@code null} if the "seed" property was not set or
+ * could not be parsed.
+ */
+ private static Long getSystemSeed() {
+ Long seed = null;
+ try {
+ // note that Long.valueOf(null) also throws a
+ // NumberFormatException so if the property is undefined this
+ // will still work correctly
+ seed = Long.valueOf(System.getProperty("seed"));
+ } catch (NumberFormatException e) {
+ // do nothing: seed is still null
+ }
+
+ return seed;
+ }
+
+ /**
+ * Obtain a seed from an independent PRNG.
+ *
+ * @return A random seed.
+ */
+ private static long getRandomSeed() {
+ return new Random().nextLong();
+ }
+
+ /**
+ * Obtain and print to STDOUT a seed appropriate for initializing a PRNG.
+ * If the system property "seed" is set and has value which may be correctly
+ * parsed it is used, otherwise a seed is generated using an independent
+ * PRNG.
+ *
+ * @return The seed.
+ */
+ public static long getSeed() {
+ Long seed = getSystemSeed();
+ if (seed == null) {
+ seed = getRandomSeed();
+ }
+ System.out.println("Seed from RandomFactory = "+seed+"L");
+ return seed;
+ }
+
+ /**
+ * Obtain and print to STDOUT a seed and use it to initialize a new
+ * {@code Random} instance which is returned. If the system
+ * property "seed" is set and has value which may be correctly parsed it
+ * is used, otherwise a seed is generated using an independent PRNG.
+ *
+ * @return The {@code Random} instance.
+ */
+ public static Random getRandom() {
+ return new Random(getSeed());
+ }
+
+ /**
+ * Obtain and print to STDOUT a seed and use it to initialize a new
+ * {@code SplittableRandom} instance which is returned. If the system
+ * property "seed" is set and has value which may be correctly parsed it
+ * is used, otherwise a seed is generated using an independent PRNG.
+ *
+ * @return The {@code SplittableRandom} instance.
+ */
+ public static SplittableRandom getSplittableRandom() {
+ return new SplittableRandom(getSeed());
+ }
+}
--- a/jdk/test/sun/management/jmxremote/startstop/JMXStartStopTest.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/management/jmxremote/startstop/JMXStartStopTest.java Tue May 05 13:29:12 2015 -0700
@@ -60,6 +60,7 @@
* @run main/othervm/timeout=600 -XX:+UsePerfData JMXStartStopTest
* @summary Makes sure that enabling/disabling the management agent through JCMD
* achieves the desired results
+ * @key randomness
*/
public class JMXStartStopTest {
--- a/jdk/test/sun/misc/CopyMemory.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/misc/CopyMemory.java Tue May 05 13:29:12 2015 -0700
@@ -24,6 +24,7 @@
/* @test
* @bug 6565543
* @summary Minimal test for unsafe.copyMemory() and unsafe.setMemory()
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/sun/misc/FloatingDecimal/TestFloatingDecimal.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/misc/FloatingDecimal/TestFloatingDecimal.java Tue May 05 13:29:12 2015 -0700
@@ -62,6 +62,7 @@
* @build DoubleConsts FloatConsts
* @run main TestFloatingDecimal
* @author Brian Burkhalter
+ * @key randomness
*/
public class TestFloatingDecimal {
private static enum ResultType {
--- a/jdk/test/sun/net/www/ParseUtil_4922813.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/net/www/ParseUtil_4922813.java Tue May 05 13:29:12 2015 -0700
@@ -24,6 +24,7 @@
/* @test
@bug 4922813
@summary Check the new impl of encodePath will not cause regression
+ @key randomness
*/
import java.util.BitSet;
--- a/jdk/test/sun/nio/cs/FindDecoderBugs.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/nio/cs/FindDecoderBugs.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @summary Decode many byte sequences in many ways
* @run main/timeout=1800 FindDecoderBugs
* @author Martin Buchholz
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/sun/nio/cs/FindEncoderBugs.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/nio/cs/FindEncoderBugs.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @summary Encode many char sequences in many ways
* @run main/timeout=1200 FindEncoderBugs
* @author Martin Buchholz
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/sun/nio/cs/TestStringCoding.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/nio/cs/TestStringCoding.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
@bug 6636323 6636319 7040220 7096080 7183053
@summary Test if StringCoding and NIO result have the same de/encoding result
* @run main/othervm/timeout=2000 TestStringCoding
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/sun/nio/cs/TestStringCodingUTF8.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/nio/cs/TestStringCodingUTF8.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
@bug 7040220
@summary Test if StringCoding and NIO result have the same de/encoding result for UTF-8
* @run main/othervm/timeout=2000 TestStringCodingUTF8
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/sun/security/krb5/auto/KDC.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/krb5/auto/KDC.java Tue May 05 13:29:12 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -149,6 +149,9 @@
private List<String> conf = new ArrayList<>();
private Thread thread1, thread2, thread3;
+ private volatile boolean udpConsumerReady = false;
+ private volatile boolean tcpConsumerReady = false;
+ private volatile boolean dispatcherReady = false;
DatagramSocket u1 = null;
ServerSocket t1 = null;
@@ -1228,6 +1231,7 @@
// The UDP consumer
thread1 = new Thread() {
public void run() {
+ udpConsumerReady = true;
while (true) {
try {
byte[] inbuf = new byte[8192];
@@ -1248,6 +1252,7 @@
// The TCP consumer
thread2 = new Thread() {
public void run() {
+ tcpConsumerReady = true;
while (true) {
try {
Socket socket = tcp.accept();
@@ -1270,6 +1275,7 @@
// The dispatcher
thread3 = new Thread() {
public void run() {
+ dispatcherReady = true;
while (true) {
try {
q.take().send();
@@ -1280,6 +1286,19 @@
};
thread3.setDaemon(true);
thread3.start();
+
+ // wait for the KDC is ready
+ try {
+ while (!isReady()) {
+ Thread.sleep(100);
+ }
+ } catch(InterruptedException e) {
+ throw new IOException(e);
+ }
+ }
+
+ boolean isReady() {
+ return udpConsumerReady && tcpConsumerReady && dispatcherReady;
}
public void terminate() {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/krb5/auto/UnboundSSL.java Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,134 @@
+/*
+ * 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.io.IOException;
+import java.security.NoSuchAlgorithmException;
+import java.security.PrivilegedActionException;
+import java.util.HashMap;
+import java.util.Map;
+import javax.security.auth.login.LoginException;
+
+/*
+ * @test
+ * @bug 8025123
+ * @summary Checks if an unbound server can handle connections
+ * only for allowed service principals
+ * @run main/othervm/policy=unbound.ssl.policy UnboundSSL
+ * unbound.ssl.jaas.conf server_star
+ * @run main/othervm/policy=unbound.ssl.policy UnboundSSL
+ * unbound.ssl.jaas.conf server_multiple_principals
+ */
+public class UnboundSSL {
+
+ public static void main(String[] args) throws IOException,
+ NoSuchAlgorithmException,LoginException, PrivilegedActionException,
+ InterruptedException {
+ UnboundSSL test = new UnboundSSL();
+ test.start(args[0], args[1]);
+ }
+
+ private void start(String jaacConfigFile, String serverJaasConfig)
+ throws IOException, NoSuchAlgorithmException,LoginException,
+ PrivilegedActionException, InterruptedException {
+
+ // define principals
+ String service1host = "service1." + UnboundSSLUtils.HOST;
+ String service2host = "service2." + UnboundSSLUtils.HOST;
+ String service3host = "service3." + UnboundSSLUtils.HOST;
+ String service1Principal = "host/" + service1host + "@"
+ + UnboundSSLUtils.REALM;
+ String service2Principal = "host/" + service2host + "@"
+ + UnboundSSLUtils.REALM;
+ String service3Principal = "host/" + service3host + "@"
+ + UnboundSSLUtils.REALM;
+
+ Map<String, String> principals = new HashMap<>();
+ principals.put(UnboundSSLUtils.USER_PRINCIPAL,
+ UnboundSSLUtils.USER_PASSWORD);
+ principals.put(UnboundSSLUtils.KRBTGT_PRINCIPAL, null);
+ principals.put(service1Principal, null);
+ principals.put(service2Principal, null);
+ principals.put(service3Principal, null);
+
+ System.setProperty("java.security.krb5.conf",
+ UnboundSSLUtils.KRB5_CONF_FILENAME);
+
+ // start a local KDC instance
+ UnboundSSLUtils.startKDC(UnboundSSLUtils.REALM, principals,
+ UnboundSSLUtils.KTAB_FILENAME, UnboundSSLUtils.KtabMode.APPEND);
+
+ System.setProperty("java.security.auth.login.config",
+ UnboundSSLUtils.TEST_SRC + UnboundSSLUtils.FS + jaacConfigFile);
+ System.setProperty("javax.security.auth.useSubjectCredsOnly", "false");
+
+ try (final SSLEchoServer server = SSLEchoServer.init(
+ UnboundSSLUtils.TLS_KRB5_FILTER, UnboundSSLUtils.SNI_PATTERN)) {
+
+ // start a server instance
+ UnboundSSLUtils.startServerWithJaas(server, serverJaasConfig);
+
+ // wait for the server is ready
+ while (!server.isReady()) {
+ Thread.sleep(UnboundSSLUtils.DELAY);
+ }
+
+ int port = server.getPort();
+
+ // run clients
+
+ // the server should have a permission to handle a request
+ // with this service principal (there should be an appropriate
+ // javax.security.auth.kerberos.ServicePermission in policy file)
+ System.out.println("Connect: SNI hostname = " + service1host
+ + ", successful connection is expected");
+ SSLClient.init(UnboundSSLUtils.HOST, port,
+ UnboundSSLUtils.TLS_KRB5_FILTER, service1host).connect();
+
+ // the server should NOT have a permission to handle a request
+ // with this service principal (there should be an appropriate
+ // javax.security.auth.kerberos.ServicePermission in policy file)
+ // handshake failures is expected
+ System.out.println("Connect: SNI hostname = " + service2host
+ + ", connection failure is expected");
+ try {
+ SSLClient.init(UnboundSSLUtils.HOST, port,
+ UnboundSSLUtils.TLS_KRB5_FILTER, service2host)
+ .connect();
+ throw new RuntimeException("Test failed: "
+ + "expected IOException not thrown");
+ } catch (IOException e) {
+ System.out.println("Expected exception: " + e);
+ }
+
+ // the server should have a permission to handle a request
+ // with this service principal (there should be an appropriate
+ // javax.security.auth.kerberos.ServicePermission in policy file)
+ System.out.println("Connect: SNI hostname = " + service3host
+ + ", successful connection is expected");
+ SSLClient.init(UnboundSSLUtils.HOST, port,
+ UnboundSSLUtils.TLS_KRB5_FILTER, service3host).connect();
+ }
+
+ System.out.println("Test passed");
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/krb5/auto/UnboundSSLMultipleKeys.java Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,111 @@
+/*
+ * 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.io.IOException;
+import java.security.NoSuchAlgorithmException;
+import java.security.PrivilegedActionException;
+import java.util.HashMap;
+import java.util.Map;
+import javax.security.auth.login.LoginException;
+
+/*
+ * @test
+ * @bug 8025123
+ * @summary Checks if an unbound server pick up a correct key from keytab
+ * @run main/othervm UnboundSSLMultipleKeys
+ * unbound.ssl.jaas.conf server_star
+ * @run main/othervm UnboundSSLMultipleKeys
+ * unbound.ssl.jaas.conf server_multiple_principals
+ */
+public class UnboundSSLMultipleKeys {
+
+ public static void main(String[] args)
+ throws IOException, NoSuchAlgorithmException, LoginException,
+ PrivilegedActionException, InterruptedException {
+ UnboundSSLMultipleKeys test = new UnboundSSLMultipleKeys();
+ test.start(args[0], args[1]);
+ }
+
+ private void start(String jaacConfigFile, String serverJaasConfig)
+ throws IOException, NoSuchAlgorithmException, LoginException,
+ PrivilegedActionException, InterruptedException {
+
+ // define service principals
+ String service1host = "service1." + UnboundSSLUtils.HOST;
+ String service2host = "service2." + UnboundSSLUtils.HOST;
+ String service3host = "service3." + UnboundSSLUtils.HOST;
+ String service1Principal = "host/" + service1host + "@"
+ + UnboundSSLUtils.REALM;
+ String service2Principal = "host/" + service2host + "@"
+ + UnboundSSLUtils.REALM;
+ String service3Principal = "host/" + service3host + "@"
+ + UnboundSSLUtils.REALM;
+
+ Map<String, String> principals = new HashMap<>();
+ principals.put(UnboundSSLUtils.USER_PRINCIPAL,
+ UnboundSSLUtils.USER_PASSWORD);
+ principals.put(UnboundSSLUtils.KRBTGT_PRINCIPAL, "pass");
+ principals.put(service1Principal, "pass0");
+ principals.put(service1Principal, "pass1");
+ principals.put(service1Principal, "pass2");
+ principals.put(service2Principal, "pass");
+ principals.put(service3Principal, "pass");
+
+ System.setProperty("java.security.krb5.conf",
+ UnboundSSLUtils.KRB5_CONF_FILENAME);
+
+ /*
+ * Start a local KDC instance
+ *
+ * Keytab file contains 3 keys (with different KVNO) for service1
+ * principal, but password for only one key is the same with the record
+ * for service1 principal in KDC.
+ */
+ UnboundSSLUtils.startKDC(UnboundSSLUtils.REALM, principals,
+ UnboundSSLUtils.KTAB_FILENAME, UnboundSSLUtils.KtabMode.APPEND);
+
+ System.setProperty("java.security.auth.login.config",
+ UnboundSSLUtils.TEST_SRC + UnboundSSLUtils.FS + jaacConfigFile);
+ System.setProperty("javax.security.auth.useSubjectCredsOnly", "false");
+
+ // start an SSL server instance
+ try (SSLEchoServer server = SSLEchoServer.init(
+ UnboundSSLUtils.TLS_KRB5_FILTER, UnboundSSLUtils.SNI_PATTERN)) {
+
+ UnboundSSLUtils.startServerWithJaas(server, serverJaasConfig);
+
+ // wait for the server is ready
+ while (!server.isReady()) {
+ Thread.sleep(UnboundSSLUtils.DELAY);
+ }
+
+ // run a client
+ System.out.println("Successful connection is expected");
+ SSLClient.init(UnboundSSLUtils.HOST, server.getPort(),
+ UnboundSSLUtils.TLS_KRB5_FILTER, service1host).connect();
+ }
+
+ System.out.println("Test passed");
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/krb5/auto/UnboundSSLPrincipalProperty.java Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,119 @@
+/*
+ * 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.io.IOException;
+import java.security.NoSuchAlgorithmException;
+import java.security.PrivilegedActionException;
+import java.util.HashMap;
+import java.util.Map;
+import javax.security.auth.login.LoginException;
+
+/*
+ * @test
+ * @bug 8025123
+ * @summary Checks if an unbound server uses a service principal
+ * from sun.security.krb5.principal system property if specified
+ * @run main/othervm UnboundSSLPrincipalProperty
+ * unbound.ssl.jaas.conf server_star
+ * @run main/othervm UnboundSSLPrincipalProperty
+ * unbound.ssl.jaas.conf server_multiple_principals
+ */
+public class UnboundSSLPrincipalProperty {
+
+ public static void main(String[] args) throws IOException,
+ NoSuchAlgorithmException,LoginException, PrivilegedActionException,
+ InterruptedException {
+ UnboundSSLPrincipalProperty test = new UnboundSSLPrincipalProperty();
+ test.start(args[0], args[1]);
+ }
+
+ public void start(String jaacConfigFile, String serverJaasConfig)
+ throws IOException, NoSuchAlgorithmException,LoginException,
+ PrivilegedActionException, InterruptedException {
+
+ // define principals
+ String service1host = "service1." + UnboundSSLUtils.HOST;
+ String service3host = "service3." + UnboundSSLUtils.HOST;
+ String service1Principal = "host/" + service1host + "@"
+ + UnboundSSLUtils.REALM;
+ String service3Principal = "host/" + service3host
+ + "@" + UnboundSSLUtils.REALM;
+
+ Map<String, String> principals = new HashMap<>();
+ principals.put(UnboundSSLUtils.USER_PRINCIPAL,
+ UnboundSSLUtils.USER_PASSWORD);
+ principals.put(UnboundSSLUtils.KRBTGT_PRINCIPAL, null);
+ principals.put(service1Principal, null);
+ principals.put(service3Principal, null);
+
+ System.setProperty("java.security.krb5.conf",
+ UnboundSSLUtils.KRB5_CONF_FILENAME);
+
+ // start a local KDC instance
+ UnboundSSLUtils.startKDC(UnboundSSLUtils.REALM, principals,
+ UnboundSSLUtils.KTAB_FILENAME, UnboundSSLUtils.KtabMode.APPEND);
+
+ System.setProperty("java.security.auth.login.config",
+ UnboundSSLUtils.TEST_SRC + UnboundSSLUtils.FS + jaacConfigFile);
+ System.setProperty("javax.security.auth.useSubjectCredsOnly", "false");
+
+ // start an SSL server instance
+ try (final SSLEchoServer server = SSLEchoServer.init(
+ UnboundSSLUtils.TLS_KRB5_FILTER, UnboundSSLUtils.SNI_PATTERN)) {
+
+ // specify a service principal for the server
+ System.setProperty("sun.security.krb5.principal",
+ service3Principal);
+
+ UnboundSSLUtils.startServerWithJaas(server, serverJaasConfig);
+
+ // wait for the server is ready
+ while (!server.isReady()) {
+ Thread.sleep(UnboundSSLUtils.DELAY);
+ }
+
+ int port = server.getPort();
+
+ // connetion failure is expected
+ // since service3 principal was specified to use by the server
+ System.out.println("Connect: SNI hostname = " + service1host
+ + ", connection failure is expected");
+ try {
+ SSLClient.init(UnboundSSLUtils.HOST, port,
+ UnboundSSLUtils.TLS_KRB5_FILTER, service1host)
+ .connect();
+ throw new RuntimeException("Test failed: "
+ + "expected IOException not thrown");
+ } catch (IOException e) {
+ System.out.println("Expected exception: " + e);
+ }
+
+ System.out.println("Connect: SNI hostname = " + service3host
+ + ", successful connection is expected");
+ SSLClient.init(UnboundSSLUtils.HOST, port,
+ UnboundSSLUtils.TLS_KRB5_FILTER, service3host).connect();
+ }
+
+ System.out.println("Test passed");
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/krb5/auto/UnboundSSLUtils.java Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,353 @@
+/*
+ * 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.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.security.NoSuchAlgorithmException;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import javax.net.ssl.SNIHostName;
+import javax.net.ssl.SNIMatcher;
+import javax.net.ssl.SNIServerName;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLParameters;
+import javax.net.ssl.SSLServerSocket;
+import javax.net.ssl.SSLServerSocketFactory;
+import javax.net.ssl.SSLSocket;
+import javax.net.ssl.SSLSocketFactory;
+import javax.security.auth.Subject;
+import javax.security.auth.login.LoginContext;
+import javax.security.auth.login.LoginException;
+
+/*
+ * Helper class for unbound krb5 tests.
+ */
+class UnboundSSLUtils {
+
+ static enum KtabMode { APPEND, EXISTING };
+
+ static final String KTAB_FILENAME = "krb5.keytab.data";
+ static final String HOST = "localhost";
+ static final String REALM = "TEST.REALM";
+ static final String KRBTGT_PRINCIPAL = "krbtgt/" + REALM;
+ static final String TEST_SRC = System.getProperty("test.src", ".");
+ static final String TLS_KRB5_FILTER = "TLS_KRB5";
+ static final String USER = "USER";
+ static final String USER_PASSWORD = "password";
+ static final String FS = System.getProperty("file.separator");
+ static final String SNI_PATTERN = ".*";
+ static final String USER_PRINCIPAL = USER + "@" + REALM;
+ static final String KRB5_CONF_FILENAME = "krb5.conf";
+ static final int DELAY = 1000;
+
+ static String[] filterStringArray(String[] src, String filter) {
+ return Arrays.stream(src).filter((item) -> item.startsWith(filter))
+ .toArray(size -> new String[size]);
+ }
+
+ /*
+ * The method does JAAS login,
+ * and runs an SSL server in the JAAS context.
+ */
+ static void startServerWithJaas(final SSLEchoServer server,
+ String config) throws LoginException, PrivilegedActionException {
+ LoginContext context = new LoginContext(config);
+ context.login();
+ System.out.println("Server: successful authentication");
+ Subject.doAs(context.getSubject(),
+ (PrivilegedExceptionAction<Object>) () -> {
+ SSLEchoServer.startServer(server);
+ return null;
+ });
+ }
+
+ /*
+ * Start a KDC server:
+ * - create a KDC instance
+ * - create Kerberos principals
+ * - save Kerberos configuration
+ * - save keys to keytab file
+ * - no pre-auth required
+ */
+ static void startKDC(String realm, Map<String, String> principals,
+ String ktab, KtabMode mode) {
+ try {
+ KDC kdc = KDC.create(realm, HOST, 0, true);
+ kdc.setOption(KDC.Option.PREAUTH_REQUIRED, Boolean.FALSE);
+ if (principals != null) {
+ for (Map.Entry<String, String> entry : principals.entrySet()) {
+ String name = entry.getKey();
+ String password = entry.getValue();
+ if (password == null || password.isEmpty()) {
+ System.out.println("KDC: add a principal '" + name +
+ "' with a random password");
+ kdc.addPrincipalRandKey(name);
+ } else {
+ System.out.println("KDC: add a principal '" + name +
+ "' with '" + password + "' password");
+ kdc.addPrincipal(name, password.toCharArray());
+ }
+ }
+ }
+
+ KDC.saveConfig(KRB5_CONF_FILENAME, kdc);
+
+ if (ktab != null) {
+ File ktabFile = new File(ktab);
+ if (mode == KtabMode.APPEND) {
+ if (ktabFile.exists()) {
+ System.out.println("KDC: append keys to an exising " +
+ "keytab file " + ktab);
+ kdc.appendKtab(ktab);
+ } else {
+ System.out.println("KDC: create a new keytab file " +
+ ktab);
+ kdc.writeKtab(ktab);
+ }
+ } else if (mode == KtabMode.EXISTING) {
+ System.out.println("KDC: use an existing keytab file "
+ + ktab);
+ } else {
+ throw new RuntimeException("KDC: unsupported keytab mode: "
+ + mode);
+ }
+ }
+
+ System.out.println("KDC: started on " + HOST + ":" + kdc.getPort()
+ + " with '" + realm + "' realm");
+ } catch (Exception e) {
+ throw new RuntimeException("KDC: unexpected exception", e);
+ }
+ }
+
+}
+
+class SSLClient {
+
+ private final static byte[][] arrays = {
+ new byte[] {-1, 0, 2},
+ new byte[] {}
+ };
+
+ private final SSLSocket socket;
+
+ private SSLClient(SSLSocket socket) {
+ this.socket = socket;
+ }
+
+ void connect() throws IOException {
+ System.out.println("Client: connect to server");
+ try (BufferedInputStream bis = new BufferedInputStream(
+ socket.getInputStream());
+ BufferedOutputStream bos = new BufferedOutputStream(
+ socket.getOutputStream())) {
+
+ for (byte[] bytes : arrays) {
+ System.out.println("Client: send byte array: "
+ + Arrays.toString(bytes));
+
+ bos.write(bytes);
+ bos.flush();
+
+ byte[] recieved = new byte[bytes.length];
+ int read = bis.read(recieved, 0, bytes.length);
+ if (read < 0) {
+ throw new IOException("Client: couldn't read a response");
+ }
+
+ System.out.println("Client: recieved byte array: "
+ + Arrays.toString(recieved));
+
+ if (!Arrays.equals(bytes, recieved)) {
+ throw new IOException("Client: sent byte array "
+ + "is not equal with recieved byte array");
+ }
+ }
+ socket.getSession().invalidate();
+ } finally {
+ if (!socket.isClosed()) {
+ socket.close();
+ }
+ }
+ }
+
+ static SSLClient init(String host, int port, String cipherSuiteFilter,
+ String sniHostName) throws NoSuchAlgorithmException, IOException {
+ SSLContext sslContext = SSLContext.getDefault();
+ SSLSocketFactory ssf = (SSLSocketFactory) sslContext.getSocketFactory();
+ SSLSocket socket = (SSLSocket) ssf.createSocket(host, port);
+ SSLParameters params = new SSLParameters();
+
+ if (cipherSuiteFilter != null) {
+ String[] cipherSuites = UnboundSSLUtils.filterStringArray(
+ ssf.getSupportedCipherSuites(), cipherSuiteFilter);
+ System.out.println("Client: enabled cipher suites: "
+ + Arrays.toString(cipherSuites));
+ params.setCipherSuites(cipherSuites);
+ }
+
+ if (sniHostName != null) {
+ System.out.println("Client: set SNI hostname: " + sniHostName);
+ SNIHostName serverName = new SNIHostName(sniHostName);
+ List<SNIServerName> serverNames = new ArrayList<>();
+ serverNames.add(serverName);
+ params.setServerNames(serverNames);
+ }
+
+ socket.setSSLParameters(params);
+
+ return new SSLClient(socket);
+ }
+
+}
+
+class SSLEchoServer implements Runnable, AutoCloseable {
+
+ private final SSLServerSocket ssocket;
+ private volatile boolean stopped = false;
+ private volatile boolean ready = false;
+
+ /*
+ * Starts the server in a separate thread.
+ */
+ static void startServer(SSLEchoServer server) {
+ Thread serverThread = new Thread(server, "SSL echo server thread");
+ serverThread.setDaemon(true);
+ serverThread.start();
+ }
+
+ private SSLEchoServer(SSLServerSocket ssocket) {
+ this.ssocket = ssocket;
+ }
+
+ /*
+ * Main server loop.
+ */
+ @Override
+ public void run() {
+ System.out.println("Server: started");
+ while (!stopped) {
+ ready = true;
+ try (SSLSocket socket = (SSLSocket) ssocket.accept()) {
+ System.out.println("Server: client connection accepted");
+ try (
+ BufferedInputStream bis = new BufferedInputStream(
+ socket.getInputStream());
+ BufferedOutputStream bos = new BufferedOutputStream(
+ socket.getOutputStream())
+ ) {
+ byte[] buffer = new byte[1024];
+ int read;
+ while ((read = bis.read(buffer)) > 0) {
+ bos.write(buffer, 0, read);
+ System.out.println("Server: recieved " + read
+ + " bytes: "
+ + Arrays.toString(Arrays.copyOf(buffer, read)));
+ bos.flush();
+ }
+ }
+ } catch (IOException e) {
+ if (stopped) {
+ // stopped == true means that stop() method was called,
+ // so just ignore the exception, and finish the loop
+ break;
+ }
+ System.out.println("Server: couldn't accept client connection: "
+ + e);
+ }
+ }
+ System.out.println("Server: finished");
+ }
+
+ boolean isReady() {
+ return ready;
+ }
+
+ void stop() {
+ stopped = true;
+ ready = false;
+
+ // close the server socket to interupt accept() method
+ try {
+ if (!ssocket.isClosed()) {
+ ssocket.close();
+ }
+ } catch (IOException e) {
+ throw new RuntimeException("Unexpected exception: " + e);
+ }
+ }
+
+ @Override
+ public void close() {
+ stop();
+ }
+
+ int getPort() {
+ return ssocket.getLocalPort();
+ }
+
+ /*
+ * Creates server instance.
+ *
+ * @param cipherSuiteFilter Filter for enabled cipher suites
+ * @param sniMatcherPattern Pattern for SNI server hame
+ */
+ static SSLEchoServer init(String cipherSuiteFilter,
+ String sniPattern) throws NoSuchAlgorithmException, IOException {
+ SSLContext context = SSLContext.getDefault();
+ SSLServerSocketFactory ssf =
+ (SSLServerSocketFactory) context.getServerSocketFactory();
+ SSLServerSocket ssocket =
+ (SSLServerSocket) ssf.createServerSocket(0);
+
+ // specify enabled cipher suites
+ if (cipherSuiteFilter != null) {
+ String[] ciphersuites = UnboundSSLUtils.filterStringArray(
+ ssf.getSupportedCipherSuites(), cipherSuiteFilter);
+ System.out.println("Server: enabled cipher suites: "
+ + Arrays.toString(ciphersuites));
+ ssocket.setEnabledCipherSuites(ciphersuites);
+ }
+
+ // specify SNI matcher pattern
+ if (sniPattern != null) {
+ System.out.println("Server: set SNI matcher: " + sniPattern);
+ SNIMatcher matcher = SNIHostName.createSNIMatcher(sniPattern);
+ List<SNIMatcher> matchers = new ArrayList<>();
+ matchers.add(matcher);
+ SSLParameters params = ssocket.getSSLParameters();
+ params.setSNIMatchers(matchers);
+ ssocket.setSSLParameters(params);
+ }
+
+ return new SSLEchoServer(ssocket);
+ }
+
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/krb5/auto/unbound.ssl.jaas.conf Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,40 @@
+com.sun.net.ssl.client {
+ com.sun.security.auth.module.Krb5LoginModule required
+ principal="USER@TEST.REALM"
+ doNotPrompt=true
+ useKeyTab=true
+ keyTab="krb5.keytab.data";
+};
+
+server_star {
+ com.sun.security.auth.module.Krb5LoginModule required
+ principal="*"
+ isInitiator=false
+ useKeyTab=true
+ keyTab="krb5.keytab.data"
+ storeKey=true;
+};
+
+server_multiple_principals {
+ com.sun.security.auth.module.Krb5LoginModule required
+ principal="host/service1.localhost@TEST.REALM"
+ isInitiator=false
+ useKeyTab=true
+ keyTab="krb5.keytab.data"
+ storeKey=true;
+
+ com.sun.security.auth.module.Krb5LoginModule required
+ principal="host/service2.localhost@TEST.REALM"
+ isInitiator=false
+ useKeyTab=true
+ keyTab="krb5.keytab.data"
+ storeKey=true;
+
+ com.sun.security.auth.module.Krb5LoginModule required
+ principal="host/service3.localhost@TEST.REALM"
+ isInitiator=false
+ useKeyTab=true
+ keyTab="krb5.keytab.data"
+ storeKey=true;
+};
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/krb5/auto/unbound.ssl.policy Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,26 @@
+grant {
+ permission java.util.PropertyPermission "*", "read,write";
+ permission java.net.SocketPermission "*:*", "listen,resolve,accept,connect";
+ permission java.io.FilePermission "*", "read,write,delete";
+ permission java.lang.RuntimePermission "accessDeclaredMembers";
+ permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
+ permission java.lang.RuntimePermission "accessClassInPackage.*";
+ permission javax.security.auth.AuthPermission "doAs";
+ permission javax.security.auth.AuthPermission "getSubject";
+ permission javax.security.auth.AuthPermission
+ "createLoginContext.server_star";
+ permission javax.security.auth.AuthPermission
+ "createLoginContext.server_multiple_principals";
+ permission javax.security.auth.AuthPermission "modifyPrincipals";
+ permission javax.security.auth.PrivateCredentialPermission "javax.security.auth.kerberos.KeyTab java.security.Principal \"krb5.keytab.data\"", "read";
+
+ // clients have a permission to use all service principals
+ permission javax.security.auth.kerberos.ServicePermission "*", "initiate";
+
+ // server has a service permission
+ // to accept only service1 and service3 principals
+ permission javax.security.auth.kerberos.ServicePermission
+ "host/service1.localhost@TEST.REALM", "accept";
+ permission javax.security.auth.kerberos.ServicePermission
+ "host/service3.localhost@TEST.REALM", "accept";
+};
--- a/jdk/test/sun/security/mscapi/PrngSlow.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/mscapi/PrngSlow.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,7 @@
* @test
* @bug 6449335
* @summary MSCAPI's PRNG is too slow
+ * @key randomness
*/
import java.security.SecureRandom;
--- a/jdk/test/sun/security/mscapi/SignUsingSHA2withRSA.sh Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/mscapi/SignUsingSHA2withRSA.sh Tue May 05 13:29:12 2015 -0700
@@ -28,6 +28,7 @@
# @bug 6753664
# @run shell SignUsingSHA2withRSA.sh
# @summary Support SHA256 (and higher) in SunMSCAPI
+# @key intermittent
# set a few environment variables so that the shell-script can run stand-alone
# in the source directory
--- a/jdk/test/sun/security/pkcs11/Cipher/ReinitCipher.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/pkcs11/Cipher/ReinitCipher.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @summary
* @author Andreas Sterbenz
* @library ..
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/sun/security/pkcs11/Cipher/TestRSACipher.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/pkcs11/Cipher/TestRSACipher.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @summary basic test for RSA cipher
* @author Andreas Sterbenz
* @library ..
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/sun/security/pkcs11/Cipher/TestRawRSACipher.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/pkcs11/Cipher/TestRawRSACipher.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @summary basic test for RSA/ECB/NoPadding cipher
* @author Valerie Peng
* @library ..
+ * @key randomness
*/
import javax.crypto.*;
--- a/jdk/test/sun/security/pkcs11/Cipher/TestSymmCiphers.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/pkcs11/Cipher/TestSymmCiphers.java Tue May 05 13:29:12 2015 -0700
@@ -22,11 +22,12 @@
*/
/**
- * @test %I% %E%
+ * @test
* @bug 4898461 6604496
* @summary basic test for symmetric ciphers with padding
* @author Valerie Peng
* @library ..
+ * @key randomness
*/
import java.io.*;
import java.nio.*;
--- a/jdk/test/sun/security/pkcs11/Cipher/TestSymmCiphersNoPad.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/pkcs11/Cipher/TestSymmCiphersNoPad.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @summary basic test for symmetric ciphers with no padding
* @author Valerie Peng
* @library ..
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/sun/security/pkcs11/KeyGenerator/DESParity.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/pkcs11/KeyGenerator/DESParity.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @summary Verify that the parity bits are set correctly
* @author Andreas Sterbenz
* @library ..
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/sun/security/pkcs11/Mac/MacSameTest.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/pkcs11/Mac/MacSameTest.java Tue May 05 13:29:12 2015 -0700
@@ -37,6 +37,7 @@
* @author Yu-Ching Valerie Peng, Bill Situ, Alexander Fomin
* @library ..
* @run main MacSameTest
+ * @key randomness
*/
public class MacSameTest extends PKCS11Test {
--- a/jdk/test/sun/security/pkcs11/Mac/ReinitMac.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/pkcs11/Mac/ReinitMac.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @summary
* @author Andreas Sterbenz
* @library ..
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/sun/security/pkcs11/MessageDigest/ByteBuffers.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/pkcs11/MessageDigest/ByteBuffers.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @summary Test the MessageDigest.update(ByteBuffer) method
* @author Andreas Sterbenz
* @library ..
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/sun/security/pkcs11/MessageDigest/ReinitDigest.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/pkcs11/MessageDigest/ReinitDigest.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @summary
* @author Andreas Sterbenz
* @library ..
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/sun/security/pkcs11/MessageDigest/TestCloning.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/pkcs11/MessageDigest/TestCloning.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @summary Ensure the cloning functionality works.
* @author Valerie Peng
* @library ..
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/sun/security/pkcs11/Secmod/AddPrivateKey.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/pkcs11/Secmod/AddPrivateKey.java Tue May 05 13:29:12 2015 -0700
@@ -28,6 +28,7 @@
* @author Andreas Sterbenz
* @library ..
* @run main/othervm AddPrivateKey
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/sun/security/pkcs11/Secmod/Crypto.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/pkcs11/Secmod/Crypto.java Tue May 05 13:29:12 2015 -0700
@@ -28,6 +28,7 @@
* @author Andreas Sterbenz
* @library ..
* @run main/othervm Crypto
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/sun/security/pkcs11/Secmod/GetPrivateKey.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/pkcs11/Secmod/GetPrivateKey.java Tue May 05 13:29:12 2015 -0700
@@ -28,6 +28,7 @@
* @author Andreas Sterbenz
* @library ..
* @run main/othervm GetPrivateKey
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/sun/security/pkcs11/SecureRandom/Basic.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/pkcs11/SecureRandom/Basic.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @summary basic test for PKCS#11 SecureRandom
* @author Andreas Sterbenz
* @library ..
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/sun/security/pkcs11/Signature/ByteBuffers.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/pkcs11/Signature/ByteBuffers.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @summary Test the Signature.update(ByteBuffer) method
* @author Andreas Sterbenz
* @library ..
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/sun/security/pkcs11/Signature/ReinitSignature.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/pkcs11/Signature/ReinitSignature.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @summary test that reinitializing Signatures works correctly
* @author Andreas Sterbenz
* @library ..
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/sun/security/pkcs11/Signature/TestDSA.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/pkcs11/Signature/TestDSA.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @summary basic test of SHA1withDSA and RawDSA signing/verifying
* @author Andreas Sterbenz
* @library ..
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/sun/security/pkcs11/Signature/TestDSAKeyLength.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/pkcs11/Signature/TestDSAKeyLength.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @summary verify that P11Signature impl will error out when initialized
* with unsupported key sizes
* @library ..
+ * @key randomness
*/
--- a/jdk/test/sun/security/pkcs11/ec/ReadPKCS12.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/pkcs11/ec/ReadPKCS12.java Tue May 05 13:29:12 2015 -0700
@@ -28,6 +28,7 @@
* @author Andreas Sterbenz
* @library ..
* @library ../../../../java/security/testlibrary
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/sun/security/pkcs11/ec/TestCurves.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/pkcs11/ec/TestCurves.java Tue May 05 13:29:12 2015 -0700
@@ -29,6 +29,7 @@
* @library ..
* @compile -XDignore.symbol.file TestCurves.java
* @run main TestCurves
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/sun/security/pkcs11/ec/TestECDSA.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/pkcs11/ec/TestECDSA.java Tue May 05 13:29:12 2015 -0700
@@ -28,6 +28,7 @@
* @author Andreas Sterbenz
* @library ..
* @library ../../../../java/security/testlibrary
+ * @key randomness
*/
import java.util.*;
--- a/jdk/test/sun/security/pkcs11/rsa/KeyWrap.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/pkcs11/rsa/KeyWrap.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @summary Verify key wrapping (of extractable keys) works for RSA/PKCS1
* @author Andreas Sterbenz
* @library ..
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/sun/security/pkcs11/rsa/TestKeyPairGenerator.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/pkcs11/rsa/TestKeyPairGenerator.java Tue May 05 13:29:12 2015 -0700
@@ -24,10 +24,13 @@
/**
* @test
* @bug 4856966
- * @summary Verify that the RSA KeyPairGenerator works
+ * @summary Verify that the RSA KeyPairGenerator works (use -Dseed=X to set PRNG seed)
* @author Andreas Sterbenz
* @library ..
+ * @library /lib/testlibrary
+ * @build jdk.testlibrary.*
* @run main/othervm TestKeyPairGenerator
+ * @key intermittent randomness
*/
import java.io.*;
@@ -105,7 +108,7 @@
int[] keyLengths = {512, 512, 1024};
BigInteger[] pubExps = {null, BigInteger.valueOf(3), null};
KeyPair[] keyPairs = new KeyPair[3];
- new Random().nextBytes(data);
+ RandomFactory.getRandom().nextBytes(data);
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA", provider);
for (int i = 0; i < keyLengths.length; i++) {
int len = keyLengths[i];
--- a/jdk/test/sun/security/pkcs11/rsa/TestSignatures.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/pkcs11/rsa/TestSignatures.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @summary Test signing/verifying using all the signature algorithms
* @author Andreas Sterbenz
* @library ..
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/sun/security/provider/DSA/TestDSA.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/provider/DSA/TestDSA.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @bug 4815057 4839277
* @summary basic test of SHA1withDSA and RawDSA signing/verifying
* @author Andreas Sterbenz
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/sun/security/provider/DSA/TestDSA2.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/provider/DSA/TestDSA2.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @run main/othervm/timeout=250 TestDSA2
* @summary verify that DSA signature works using SHA and SHA-224 and
* SHA-256 digests.
+ * @key randomness
*/
--- a/jdk/test/sun/security/provider/SeedGenerator/Priority_Inversion.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/provider/SeedGenerator/Priority_Inversion.java Tue May 05 13:29:12 2015 -0700
@@ -29,6 +29,7 @@
*
* if the test returns, then it passed.
* if the test never returns (hangs forever), then it failed.
+ * @key randomness
*/
import java.security.SecureRandom;
--- a/jdk/test/sun/security/rsa/TestKeyPairGenerator.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/rsa/TestKeyPairGenerator.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @bug 4853305 4865198 4888410 4963723
* @summary Verify that the RSA KeyPairGenerator works
* @author Andreas Sterbenz
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/sun/security/rsa/TestSignatures.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/rsa/TestSignatures.java Tue May 05 13:29:12 2015 -0700
@@ -26,6 +26,7 @@
* @bug 4853305 4963723
* @summary Test signing/verifying using all the signature algorithms
* @author Andreas Sterbenz
+ * @key randomness
*/
import java.io.*;
--- a/jdk/test/sun/security/ssl/ClientHandshaker/LengthCheckTest.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/ssl/ClientHandshaker/LengthCheckTest.java Tue May 05 13:29:12 2015 -0700
@@ -27,6 +27,7 @@
* @summary Vectors and fixed length fields should be verified
* for allowed sizes.
* @run main/othervm LengthCheckTest
+ * @key randomness
*/
/**
--- a/jdk/test/sun/security/ssl/GenSSLConfigs/main.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/sun/security/ssl/GenSSLConfigs/main.java Tue May 05 13:29:12 2015 -0700
@@ -3,6 +3,7 @@
* @build TestThread Traffic Handler ServerHandler ServerThread ClientThread
* @run main/othervm/timeout=140 -Djsse.enableCBCProtection=false main
* @summary Make sure that different configurations of SSL sockets work
+ * @key randomness
*/
/*
--- a/jdk/test/tools/launcher/ExecutionEnvironment.java Mon Apr 27 09:17:48 2015 -0700
+++ b/jdk/test/tools/launcher/ExecutionEnvironment.java Tue May 05 13:29:12 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
@@ -184,15 +184,7 @@
Map<String, String> env = new HashMap<>();
- if (TestHelper.isLinux || TestHelper.isMacOSX || TestHelper.isAIX) {
- for (String x : LD_PATH_STRINGS) {
- String pairs[] = x.split("=");
- env.put(pairs[0], pairs[1]);
- }
-
- tr = doExec(env, javaCmd, "-jar", testJarFile.getAbsolutePath());
- verifyJavaLibraryPathGeneric(tr);
- } else { // Solaris
+ if (TestHelper.isSolaris) {
// no override
env.clear();
env.put(LD_LIBRARY_PATH, LD_LIBRARY_PATH_VALUE);
@@ -208,6 +200,14 @@
// verify the override occurs for 64-bit system
tr = doExec(env, javaCmd, "-jar", testJarFile.getAbsolutePath());
verifyJavaLibraryPathOverride(tr, false);
+ } else {
+ for (String x : LD_PATH_STRINGS) {
+ String pairs[] = x.split("=");
+ env.put(pairs[0], pairs[1]);
+ }
+
+ tr = doExec(env, javaCmd, "-jar", testJarFile.getAbsolutePath());
+ verifyJavaLibraryPathGeneric(tr);
}
}
--- a/langtools/.hgtags Mon Apr 27 09:17:48 2015 -0700
+++ b/langtools/.hgtags Tue May 05 13:29:12 2015 -0700
@@ -304,3 +304,4 @@
a598534d277e170a0bbf177bd54d9d179245532b jdk9-b59
81bdc4545337c404bb87373838c983584a49afd6 jdk9-b60
0eb91327db5a840779cc5c35b9b858d6ef7959d1 jdk9-b61
+40058141a4ec04a3d4cacdb693ad188a5ddf48ed jdk9-b62
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/ClassFinder.java Mon Apr 27 09:17:48 2015 -0700
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/ClassFinder.java Tue May 05 13:29:12 2015 -0700
@@ -128,7 +128,7 @@
* the completer to be used for ".java" files. If this remains unassigned
* ".java" files will not be loaded.
*/
- public Completer sourceCompleter = null;
+ public Completer sourceCompleter = Completer.NULL_COMPLETER;
/** The path name of the class file currently being read.
*/
@@ -341,7 +341,7 @@
reader.readClassFile(c);
c.flags_field |= getSupplementaryFlags(c);
} else {
- if (sourceCompleter != null) {
+ if (!sourceCompleter.isTerminal()) {
sourceCompleter.complete(c);
} else {
throw new IllegalStateException("Source completer required to read "
@@ -392,7 +392,7 @@
public ClassSymbol loadClass(Name flatname) throws CompletionFailure {
boolean absent = syms.classes.get(flatname) == null;
ClassSymbol c = syms.enterClass(flatname);
- if (c.members_field == null && c.completer != null) {
+ if (c.members_field == null) {
try {
c.complete();
} catch (CompletionFailure ex) {
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symbol.java Mon Apr 27 09:17:48 2015 -0700
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symbol.java Tue May 05 13:29:12 2015 -0700
@@ -96,6 +96,7 @@
public Symbol owner;
/** The completer of this symbol.
+ * This should never equal null (NULL_COMPLETER should be used instead).
*/
public Completer completer;
@@ -193,6 +194,10 @@
return (metadata != null && !metadata.isTypesEmpty());
}
+ public boolean isCompleted() {
+ return completer.isTerminal();
+ }
+
public void prependAttributes(List<Attribute.Compound> l) {
if (l.nonEmpty()) {
initedMetadata().prepend(l);
@@ -243,7 +248,7 @@
this.flags_field = flags;
this.type = type;
this.owner = owner;
- this.completer = null;
+ this.completer = Completer.NULL_COMPLETER;
this.erasure_field = null;
this.name = name;
}
@@ -568,9 +573,9 @@
/** Complete the elaboration of this symbol's definition.
*/
public void complete() throws CompletionFailure {
- if (completer != null) {
+ if (completer != Completer.NULL_COMPLETER) {
Completer c = completer;
- completer = null;
+ completer = Completer.NULL_COMPLETER;
c.complete(this);
}
}
@@ -872,19 +877,19 @@
}
public WriteableScope members() {
- if (completer != null) complete();
+ complete();
return members_field;
}
public long flags() {
- if (completer != null) complete();
+ complete();
return flags_field;
}
@Override
public List<Attribute.Compound> getRawAttributes() {
- if (completer != null) complete();
- if (package_info != null && package_info.completer != null) {
+ complete();
+ if (package_info != null) {
package_info.complete();
mergeAttributes();
}
@@ -1000,24 +1005,24 @@
}
public long flags() {
- if (completer != null) complete();
+ complete();
return flags_field;
}
public WriteableScope members() {
- if (completer != null) complete();
+ complete();
return members_field;
}
@Override
public List<Attribute.Compound> getRawAttributes() {
- if (completer != null) complete();
+ complete();
return super.getRawAttributes();
}
@Override
public List<Attribute.TypeCompound> getRawTypeAttributes() {
- if (completer != null) complete();
+ complete();
return super.getRawTypeAttributes();
}
@@ -1782,7 +1787,29 @@
/** Symbol completer interface.
*/
public static interface Completer {
+
+ /** Dummy completer to be used when the symbol has been completed or
+ * does not need completion.
+ */
+ public final static Completer NULL_COMPLETER = new Completer() {
+ public void complete(Symbol sym) { }
+ public boolean isTerminal() { return true; }
+ };
+
void complete(Symbol sym) throws CompletionFailure;
+
+ /** Returns true if this completer is <em>terminal</em>. A terminal
+ * completer is used as a place holder when the symbol is completed.
+ * Calling complete on a terminal completer will not affect the symbol.
+ *
+ * The dummy NULL_COMPLETER and the GraphDependencies completer are
+ * examples of terminal completers.
+ *
+ * @return true iff this completer is terminal
+ */
+ default boolean isTerminal() {
+ return false;
+ }
}
public static class CompletionFailure extends RuntimeException {
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symtab.java Mon Apr 27 09:17:48 2015 -0700
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symtab.java Tue May 05 13:29:12 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -259,49 +259,54 @@
public void synthesizeEmptyInterfaceIfMissing(final Type type) {
final Completer completer = type.tsym.completer;
- if (completer != null) {
- type.tsym.completer = new Completer() {
- public void complete(Symbol sym) throws CompletionFailure {
- try {
- completer.complete(sym);
- } catch (CompletionFailure e) {
- sym.flags_field |= (PUBLIC | INTERFACE);
- ((ClassType) sym.type).supertype_field = objectType;
- }
+ type.tsym.completer = new Completer() {
+ public void complete(Symbol sym) throws CompletionFailure {
+ try {
+ completer.complete(sym);
+ } catch (CompletionFailure e) {
+ sym.flags_field |= (PUBLIC | INTERFACE);
+ ((ClassType) sym.type).supertype_field = objectType;
}
- };
- }
+ }
+
+ @Override
+ public boolean isTerminal() {
+ return completer.isTerminal();
+ }
+ };
}
public void synthesizeBoxTypeIfMissing(final Type type) {
ClassSymbol sym = enterClass(boxedName[type.getTag().ordinal()]);
final Completer completer = sym.completer;
- if (completer != null) {
- sym.completer = new Completer() {
- public void complete(Symbol sym) throws CompletionFailure {
- try {
- completer.complete(sym);
- } catch (CompletionFailure e) {
- sym.flags_field |= PUBLIC;
- ((ClassType) sym.type).supertype_field = objectType;
- MethodSymbol boxMethod =
- new MethodSymbol(PUBLIC | STATIC, names.valueOf,
- new MethodType(List.of(type), sym.type,
- List.<Type>nil(), methodClass),
- sym);
- sym.members().enter(boxMethod);
- MethodSymbol unboxMethod =
- new MethodSymbol(PUBLIC,
- type.tsym.name.append(names.Value), // x.intValue()
- new MethodType(List.<Type>nil(), type,
- List.<Type>nil(), methodClass),
- sym);
- sym.members().enter(unboxMethod);
- }
+ sym.completer = new Completer() {
+ public void complete(Symbol sym) throws CompletionFailure {
+ try {
+ completer.complete(sym);
+ } catch (CompletionFailure e) {
+ sym.flags_field |= PUBLIC;
+ ((ClassType) sym.type).supertype_field = objectType;
+ MethodSymbol boxMethod =
+ new MethodSymbol(PUBLIC | STATIC, names.valueOf,
+ new MethodType(List.of(type), sym.type,
+ List.<Type>nil(), methodClass),
+ sym);
+ sym.members().enter(boxMethod);
+ MethodSymbol unboxMethod =
+ new MethodSymbol(PUBLIC,
+ type.tsym.name.append(names.Value), // x.intValue()
+ new MethodType(List.<Type>nil(), type,
+ List.<Type>nil(), methodClass),
+ sym);
+ sym.members().enter(unboxMethod);
}
- };
- }
+ }
+ @Override
+ public boolean isTerminal() {
+ return completer.isTerminal();
+ }
+ };
}
// Enter a synthetic class that is used to mark classes in ct.sym.
@@ -309,7 +314,7 @@
private Type enterSyntheticAnnotation(String name) {
ClassType type = (ClassType)enterClass(name);
ClassSymbol sym = (ClassSymbol)type.tsym;
- sym.completer = null;
+ sym.completer = Completer.NULL_COMPLETER;
sym.flags_field = PUBLIC|ACYCLIC|ANNOTATION|INTERFACE;
sym.erasure_field = type;
sym.members_field = WriteableScope.create(sym);
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Type.java Mon Apr 27 09:17:48 2015 -0700
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Type.java Tue May 05 13:29:12 2015 -0700
@@ -580,12 +580,10 @@
}
public boolean isCompound() {
- return tsym.completer == null
- // Compound types can't have a completer. Calling
- // flags() will complete the symbol causing the
- // compiler to load classes unnecessarily. This led
- // to regression 6180021.
- && (tsym.flags() & COMPOUND) != 0;
+ // Compound types can't have a (non-terminal) completer. Calling
+ // flags() will complete the symbol causing the compiler to load
+ // classes unnecessarily. This led to regression 6180021.
+ return tsym.isCompleted() && (tsym.flags() & COMPOUND) != 0;
}
public boolean isIntersection() {
@@ -1124,7 +1122,7 @@
}
public void complete() {
- if (tsym.completer != null) tsym.complete();
+ tsym.complete();
}
@DefinedBy(Api.LANGUAGE_MODEL)
@@ -1212,7 +1210,7 @@
Assert.check((csym.flags() & COMPOUND) != 0);
supertype_field = bounds.head;
interfaces_field = bounds.tail;
- Assert.check(supertype_field.tsym.completer != null ||
+ Assert.check(!supertype_field.tsym.isCompleted() ||
!supertype_field.isInterface(), supertype_field);
}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/TypeAnnotations.java Mon Apr 27 09:17:48 2015 -0700
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/TypeAnnotations.java Tue May 05 13:29:12 2015 -0700
@@ -28,11 +28,11 @@
import javax.lang.model.element.Element;
import javax.lang.model.element.ElementKind;
import javax.lang.model.type.TypeKind;
-
import javax.tools.JavaFileObject;
import com.sun.tools.javac.code.Attribute.Array;
import com.sun.tools.javac.code.Attribute.TypeCompound;
+import com.sun.tools.javac.code.Symbol.TypeSymbol;
import com.sun.tools.javac.code.Type.ArrayType;
import com.sun.tools.javac.code.Type.CapturedType;
import com.sun.tools.javac.code.Type.ClassType;
@@ -153,8 +153,8 @@
public enum AnnotationType { DECLARATION, TYPE, NONE, BOTH }
- public List<Attribute> annotationTargets(Attribute.Compound anno) {
- Attribute.Compound atTarget = anno.type.tsym.getAnnotationTypeMetadata().getTarget();
+ public List<Attribute> annotationTargets(TypeSymbol tsym) {
+ Attribute.Compound atTarget = tsym.getAnnotationTypeMetadata().getTarget();
if (atTarget == null) {
return null;
}
@@ -177,7 +177,7 @@
* a type annotation, or both.
*/
public AnnotationType annotationTargetType(Attribute.Compound a, Symbol s) {
- List<Attribute> targets = annotationTargets(a);
+ List<Attribute> targets = annotationTargets(a.type.tsym);
return (targets == null) ?
AnnotationType.DECLARATION :
targets.stream()
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Types.java Mon Apr 27 09:17:48 2015 -0700
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Types.java Tue May 05 13:29:12 2015 -0700
@@ -645,7 +645,7 @@
Symbol descSym = findDescriptorSymbol(targets.head.tsym);
Type descType = findDescriptorType(targets.head);
ClassSymbol csym = new ClassSymbol(cflags, name, env.enclClass.sym.outermostClass());
- csym.completer = null;
+ csym.completer = Completer.NULL_COMPLETER;
csym.members_field = WriteableScope.create(csym);
MethodSymbol instDescSym = new MethodSymbol(descSym.flags(), descSym.name, descType, csym);
csym.members_field.enter(instDescSym);
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Annotate.java Mon Apr 27 09:17:48 2015 -0700
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Annotate.java Tue May 05 13:29:12 2015 -0700
@@ -243,7 +243,10 @@
log.error(annotations.head.pos, "already.annotated", Kinds.kindName(s), s);
Assert.checkNonNull(s, "Symbol argument to actualEnterAnnotations is null");
- annotateNow(s, annotations, localEnv, false);
+
+ // false is passed as fifth parameter since annotateLater is
+ // never called for a type parameter
+ annotateNow(s, annotations, localEnv, false, false);
} finally {
if (prevLint != null)
chk.setLint(prevLint);
@@ -327,7 +330,8 @@
* then continue on with repeating annotations processing.
*/
private <T extends Attribute.Compound> void annotateNow(Symbol toAnnotate,
- List<JCAnnotation> withAnnotations, Env<AttrContext> env, boolean typeAnnotations)
+ List<JCAnnotation> withAnnotations, Env<AttrContext> env, boolean typeAnnotations,
+ boolean isTypeParam)
{
Map<TypeSymbol, ListBuffer<T>> annotated = new LinkedHashMap<>();
Map<T, DiagnosticPosition> pos = new HashMap<>();
@@ -377,7 +381,7 @@
buf = buf.prepend(lb.first());
} else {
AnnotationContext<T> ctx = new AnnotationContext<>(env, annotated, pos, typeAnnotations);
- T res = makeContainerAnnotation(lb.toList(), ctx, toAnnotate);
+ T res = makeContainerAnnotation(lb.toList(), ctx, toAnnotate, isTypeParam);
if (res != null)
buf = buf.prepend(res);
}
@@ -698,7 +702,7 @@
* annotation are invalid. This method reports errors/warnings.
*/
private <T extends Attribute.Compound> T processRepeatedAnnotations(List<T> annotations,
- AnnotationContext<T> ctx, Symbol on)
+ AnnotationContext<T> ctx, Symbol on, boolean isTypeParam)
{
T firstOccurrence = annotations.head;
List<Attribute> repeated = List.nil();
@@ -752,7 +756,8 @@
if (!repeated.isEmpty()) {
repeated = repeated.reverse();
- TreeMaker m = make.at(ctx.pos.get(firstOccurrence));
+ DiagnosticPosition pos = ctx.pos.get(firstOccurrence);
+ TreeMaker m = make.at(pos);
Pair<MethodSymbol, Attribute> p =
new Pair<MethodSymbol, Attribute>(containerValueSymbol,
new Attribute.Array(arrayOfOrigAnnoType, repeated));
@@ -768,7 +773,14 @@
Attribute.TypeCompound at = new Attribute.TypeCompound(targetContainerType, List.of(p),
((Attribute.TypeCompound)annotations.head).position);
- // TODO: annotation applicability checks from below?
+ JCAnnotation annoTree = m.TypeAnnotation(at);
+ if (!chk.validateAnnotationDeferErrors(annoTree))
+ log.error(annoTree.pos(), Errors.DuplicateAnnotationInvalidRepeated(origAnnoType));
+
+ if (!chk.isTypeAnnotation(annoTree, isTypeParam)) {
+ log.error(pos, isTypeParam ? Errors.InvalidRepeatableAnnotationNotApplicable(targetContainerType, on)
+ : Errors.InvalidRepeatableAnnotationNotApplicableInContext(targetContainerType));
+ }
at.setSynthesized(true);
@@ -925,11 +937,11 @@
}
private <T extends Attribute.Compound> T makeContainerAnnotation(List<T> toBeReplaced,
- AnnotationContext<T> ctx, Symbol sym)
+ AnnotationContext<T> ctx, Symbol sym, boolean isTypeParam)
{
// Process repeated annotations
T validRepeated =
- processRepeatedAnnotations(toBeReplaced, ctx, sym);
+ processRepeatedAnnotations(toBeReplaced, ctx, sym, isTypeParam);
if (validRepeated != null) {
// Check that the container isn't manually
@@ -955,7 +967,7 @@
* Attribute the list of annotations and enter them onto s.
*/
public void enterTypeAnnotations(List<JCAnnotation> annotations, Env<AttrContext> env,
- Symbol s, DiagnosticPosition deferPos)
+ Symbol s, DiagnosticPosition deferPos, boolean isTypeParam)
{
Assert.checkNonNull(s, "Symbol argument to actualEnterTypeAnnotations is nul/");
JavaFileObject prev = log.useSource(env.toplevel.sourcefile);
@@ -965,7 +977,7 @@
prevLintPos = deferredLintHandler.setPos(deferPos);
}
try {
- annotateNow(s, annotations, env, true);
+ annotateNow(s, annotations, env, true, isTypeParam);
} finally {
if (prevLintPos != null)
deferredLintHandler.setPos(prevLintPos);
@@ -1048,21 +1060,21 @@
@Override
public void visitAnnotatedType(JCAnnotatedType tree) {
- enterTypeAnnotations(tree.annotations, env, sym, deferPos);
+ enterTypeAnnotations(tree.annotations, env, sym, deferPos, false);
scan(tree.underlyingType);
}
@Override
public void visitTypeParameter(JCTypeParameter tree) {
- enterTypeAnnotations(tree.annotations, env, sym, deferPos);
+ enterTypeAnnotations(tree.annotations, env, sym, deferPos, true);
scan(tree.bounds);
}
@Override
public void visitNewArray(JCNewArray tree) {
- enterTypeAnnotations(tree.annotations, env, sym, deferPos);
+ enterTypeAnnotations(tree.annotations, env, sym, deferPos, false);
for (List<JCAnnotation> dimAnnos : tree.dimAnnotations)
- enterTypeAnnotations(dimAnnos, env, sym, deferPos);
+ enterTypeAnnotations(dimAnnos, env, sym, deferPos, false);
scan(tree.elemtype);
scan(tree.elems);
}
@@ -1241,7 +1253,7 @@
private void init() {
// Make sure metaDataFor is member entered
- while (metaDataFor.completer != null)
+ while (!metaDataFor.isCompleted())
metaDataFor.complete();
if (annotationTypeCompleter != null) {
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java Mon Apr 27 09:17:48 2015 -0700
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java Tue May 05 13:29:12 2015 -0700
@@ -2425,6 +2425,11 @@
resultInfo.checkContext.report(that, cause);
result = that.type = types.createErrorType(pt());
return;
+ } catch (Throwable t) {
+ //when an unexpected exception happens, avoid attempts to attribute the same tree again
+ //as that would likely cause the same exception again.
+ needsRecovery = false;
+ throw t;
} finally {
localEnv.info.scope.leave();
if (needsRecovery) {
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java Mon Apr 27 09:17:48 2015 -0700
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java Tue May 05 13:29:12 2015 -0700
@@ -2268,7 +2268,7 @@
}
}
if (complete)
- complete = ((c.flags_field & UNATTRIBUTED) == 0) && c.completer == null;
+ complete = ((c.flags_field & UNATTRIBUTED) == 0) && c.isCompleted();
if (complete) c.flags_field |= ACYCLIC;
return complete;
}
@@ -2999,7 +2999,7 @@
/** Is the annotation applicable to types? */
protected boolean isTypeAnnotation(JCAnnotation a, boolean isTypeParameter) {
- List<Attribute> targets = typeAnnotations.annotationTargets(a.attribute);
+ List<Attribute> targets = typeAnnotations.annotationTargets(a.annotationType.type.tsym);
return (targets == null) ?
false :
targets.stream()
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Enter.java Mon Apr 27 09:17:48 2015 -0700
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Enter.java Tue May 05 13:29:12 2015 -0700
@@ -320,7 +320,7 @@
ClassSymbol c = syms.enterClass(name, tree.packge);
c.flatname = names.fromString(tree.packge + "." + name);
c.sourcefile = tree.sourcefile;
- c.completer = null;
+ c.completer = Completer.NULL_COMPLETER;
c.members_field = WriteableScope.create(c);
tree.packge.package_info = c;
}
@@ -386,7 +386,7 @@
typeEnvs.put(c, localEnv);
// Fill out class fields.
- c.completer = null; // do not allow the initial completer linger on.
+ c.completer = Completer.NULL_COMPLETER; // do not allow the initial completer linger on.
c.flags_field = chk.checkFlags(tree.pos(), tree.mods.flags, c, tree);
c.sourcefile = env.toplevel.sourcefile;
c.members_field = WriteableScope.create(c);
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java Mon Apr 27 09:17:48 2015 -0700
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java Tue May 05 13:29:12 2015 -0700
@@ -641,7 +641,7 @@
c.flatname = chk.localClassName(c);
}
c.sourcefile = owner.sourcefile;
- c.completer = null;
+ c.completer = Completer.NULL_COMPLETER;
c.members_field = WriteableScope.create(c);
c.flags_field = flags;
ClassType ctype = (ClassType) c.type;
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/MemberEnter.java Mon Apr 27 09:17:48 2015 -0700
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/MemberEnter.java Tue May 05 13:29:12 2015 -0700
@@ -25,6 +25,9 @@
package com.sun.tools.javac.comp;
+import java.util.EnumSet;
+import java.util.Set;
+
import com.sun.tools.javac.code.*;
import com.sun.tools.javac.code.Scope.WriteableScope;
import com.sun.tools.javac.tree.*;
@@ -335,43 +338,49 @@
return initTreeVisitor.result;
}
- /** Visitor class for expressions which might be constant expressions.
+ /** Visitor class for expressions which might be constant expressions,
+ * as per JLS 15.28 (Constant Expressions).
*/
static class InitTreeVisitor extends JCTree.Visitor {
+ private static final Set<Tag> ALLOWED_OPERATORS =
+ EnumSet.of(Tag.POS, Tag.NEG, Tag.NOT, Tag.COMPL, Tag.PLUS, Tag.MINUS,
+ Tag.MUL, Tag.DIV, Tag.MOD, Tag.SL, Tag.SR, Tag.USR,
+ Tag.LT, Tag.LE, Tag.GT, Tag.GE, Tag.EQ, Tag.NE,
+ Tag.BITAND, Tag.BITXOR, Tag.BITOR, Tag.AND, Tag.OR);
+
private boolean result = true;
@Override
- public void visitTree(JCTree tree) {}
-
- @Override
- public void visitNewClass(JCNewClass that) {
+ public void visitTree(JCTree tree) {
result = false;
}
@Override
- public void visitNewArray(JCNewArray that) {
- result = false;
- }
+ public void visitLiteral(JCLiteral that) {}
@Override
- public void visitLambda(JCLambda that) {
- result = false;
+ public void visitTypeCast(JCTypeCast tree) {
+ tree.expr.accept(this);
}
@Override
- public void visitReference(JCMemberReference that) {
- result = false;
+ public void visitUnary(JCUnary that) {
+ if (!ALLOWED_OPERATORS.contains(that.getTag())) {
+ result = false;
+ return ;
+ }
+ that.arg.accept(this);
}
@Override
- public void visitApply(JCMethodInvocation that) {
- result = false;
- }
-
- @Override
- public void visitSelect(JCFieldAccess tree) {
- tree.selected.accept(this);
+ public void visitBinary(JCBinary that) {
+ if (!ALLOWED_OPERATORS.contains(that.getTag())) {
+ result = false;
+ return ;
+ }
+ that.lhs.accept(this);
+ that.rhs.accept(this);
}
@Override
@@ -387,8 +396,11 @@
}
@Override
- public void visitTypeCast(JCTypeCast tree) {
- tree.expr.accept(this);
+ public void visitIdent(JCIdent that) {}
+
+ @Override
+ public void visitSelect(JCFieldAccess tree) {
+ tree.selected.accept(this);
}
}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java Mon Apr 27 09:17:48 2015 -0700
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java Tue May 05 13:29:12 2015 -0700
@@ -903,7 +903,7 @@
memberEnter.memberEnter(tree.defs, env);
if (tree.sym.isAnnotationType()) {
- Assert.checkNull(tree.sym.completer);
+ Assert.check(tree.sym.isCompleted());
tree.sym.setAnnotationTypeMetadata(new AnnotationTypeMetadata(tree.sym, annotate.annotationTypeSourceCompleter()));
}
}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java Mon Apr 27 09:17:48 2015 -0700
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java Tue May 05 13:29:12 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -1092,7 +1092,7 @@
if (cs.classfile != null || cs.kind == ERR) {
cs.reset();
cs.type = new ClassType(cs.type.getEnclosingType(), null, cs);
- if (cs.completer == null) {
+ if (cs.isCompleted()) {
cs.completer = initialCompleter;
}
}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties Mon Apr 27 09:17:48 2015 -0700
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties Tue May 05 13:29:12 2015 -0700
@@ -414,6 +414,10 @@
compiler.err.invalid.repeatable.annotation.not.applicable=\
container {0} is not applicable to element {1}
+# 0: type
+compiler.err.invalid.repeatable.annotation.not.applicable.in.context=\
+ container {0} is not applicable in this type context
+
# 0: name
compiler.err.duplicate.class=\
duplicate class: {0}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/util/Dependencies.java Mon Apr 27 09:17:48 2015 -0700
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/util/Dependencies.java Tue May 05 13:29:12 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 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
@@ -468,6 +468,11 @@
sym.completer = this;
}
+ @Override
+ public boolean isTerminal() {
+ return true;
+ }
+
/**
* This visitor is used to generate the special side-effect dependencies
* given a graph containing only standard dependencies.
--- a/langtools/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/ClassDocImpl.java Mon Apr 27 09:17:48 2015 -0700
+++ b/langtools/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/ClassDocImpl.java Tue May 05 13:29:12 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -796,9 +796,7 @@
}
// make sure that this symbol has been completed
- if (tsym.completer != null) {
- tsym.complete();
- }
+ tsym.complete();
// search imports
--- a/langtools/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/JavadocTool.java Mon Apr 27 09:17:48 2015 -0700
+++ b/langtools/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/JavadocTool.java Tue May 05 13:29:12 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -40,6 +40,7 @@
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.CompletionFailure;
import com.sun.tools.javac.comp.Enter;
import com.sun.tools.javac.tree.JCTree;
@@ -141,7 +142,7 @@
docenv.docClasses = docClasses;
docenv.legacyDoclet = legacyDoclet;
- javadocFinder.sourceCompleter = docClasses ? null : sourceCompleter;
+ javadocFinder.sourceCompleter = docClasses ? Completer.NULL_COMPLETER : sourceCompleter;
ListBuffer<String> names = new ListBuffer<>();
ListBuffer<JCCompilationUnit> classTrees = new ListBuffer<>();
--- a/langtools/test/tools/javac/Paths/Diagnostics.sh Mon Apr 27 09:17:48 2015 -0700
+++ b/langtools/test/tools/javac/Paths/Diagnostics.sh Tue May 05 13:29:12 2015 -0700
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
+# 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
@@ -186,7 +186,7 @@
# Class-Path attribute followed in extdirs or endorseddirs
#----------------------------------------------------------------
Sys mkdir jars
-Sys cp -p classesRefRef.jar jars/.
+Sys cp classesRefRef.jar jars/.
Warning "$javac" ${TESTTOOLVMOPTS} -Xlint -extdirs jars Main.java
Warning "$javac" ${TESTTOOLVMOPTS} -Xlint -endorseddirs jars Main.java
--- a/langtools/test/tools/javac/Paths/MineField.sh Mon Apr 27 09:17:48 2015 -0700
+++ b/langtools/test/tools/javac/Paths/MineField.sh Tue May 05 13:29:12 2015 -0700
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
+# 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
@@ -323,7 +323,7 @@
In GooClass Failure "$java" ${TESTVMOPTS} -cp ".." Main
# Unspecified classpath defaults to "."
-Sys mkdir OneDir; Sys cp -p Main.java GooClass/Lib.class OneDir/.
+Sys mkdir OneDir; Sys cp Main.java GooClass/Lib.class OneDir/.
In OneDir Success "$javac" ${TESTTOOLVMOPTS} Main.java
In OneDir Success "$java" ${TESTVMOPTS} Main
--- a/langtools/test/tools/javac/Paths/wcMineField.sh Mon Apr 27 09:17:48 2015 -0700
+++ b/langtools/test/tools/javac/Paths/wcMineField.sh Tue May 05 13:29:12 2015 -0700
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+# 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
@@ -49,9 +49,9 @@
#----------------------------------------------------------------
Cleanup() {
Sys rm -rf GooSrc GooJar GooZip GooClass
- Sys rm -rf SpeSrc SpeJar SpeZip SpeClass
+ Sys rm -rf SpeSrc SpeJar SpeZip SpeClass
Sys rm -rf BadSrc BadJar BadZip BadClass
- Sys rm -rf JarNClass StarJar MixJar StarDir
+ Sys rm -rf JarNClass StarJar MixJar StarDir
Sys rm -rf OneDir *.class Main*.java MANIFEST.MF
}
@@ -127,11 +127,9 @@
printf "Running tests with directory named \"*\"\n"
Sys rm -rf ./StarDir
Sys mkdir -p StarDir/"*"
- Sys cp -p "GooClass/Lib3.class" "GooClass/Lib.class" ./
Sys cp "GooClass/Lib2.class" "StarDir/*/Lib2.class"
- Sys "$jar" cf "StarDir/Lib3.jar" "Lib3.class"
- Sys "$jar" cf "StarDir/*/Lib.jar" "Lib.class"
- Sys rm -f "./Lib.class" "./Lib3.class"
+ Sys "$jar" cf "StarDir/Lib3.jar" -C GooClass "Lib3.class"
+ Sys "$jar" cf "StarDir/*/Lib.jar" -C GooClass "Lib.class"
CheckFiles "StarDir/*/Lib.jar" "StarDir/*/Lib2.class" "StarDir/Lib3.jar"
Sys cp Main6.java ./StarDir/.
Sys cp Main.java ./StarDir/"*"/.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/annotations/repeatingAnnotations/InvalidClsTypeParamTarget.java Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,21 @@
+/**
+ * @test /nodynamiccopyright/
+ * @bug 8044196
+ * @summary Ensure that containers with target FIELD can't be applied to type parameters.
+ * @compile/fail/ref=InvalidClsTypeParamTarget.out -XDrawDiagnostics InvalidClsTypeParamTarget.java
+ */
+
+import java.lang.annotation.*;
+
+class InvalidClsTypeParamTarget {
+
+ @Target({ElementType.TYPE_PARAMETER, ElementType.TYPE_USE, ElementType.FIELD})
+ @Repeatable(TC.class)
+ @interface T { int value(); }
+
+ @Target(ElementType.FIELD)
+ @interface TC { T[] value(); }
+
+ class Test<@T(1) @T(2) N> {
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/annotations/repeatingAnnotations/InvalidClsTypeParamTarget.out Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,2 @@
+InvalidClsTypeParamTarget.java:19:16: compiler.err.invalid.repeatable.annotation.not.applicable: InvalidClsTypeParamTarget.TC, InvalidClsTypeParamTarget.Test
+1 error
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/annotations/repeatingAnnotations/InvalidMethodTypeParamTarget.java Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,20 @@
+/**
+ * @test /nodynamiccopyright/
+ * @bug 8044196
+ * @summary Ensure that containers with target METHOD can't be applied to type parameters.
+ * @compile/fail/ref=InvalidMethodTypeParamTarget.out -XDrawDiagnostics InvalidMethodTypeParamTarget.java
+ */
+
+import java.lang.annotation.*;
+
+class InvalidMethodTypeParamTarget {
+
+ @Target({ElementType.TYPE_PARAMETER, ElementType.METHOD})
+ @Repeatable(TC.class)
+ @interface T { int value(); }
+
+ @Target(ElementType.METHOD)
+ @interface TC { T[] value(); }
+
+ public <@T(1) @T(2) N> void method() { }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/annotations/repeatingAnnotations/InvalidMethodTypeParamTarget.out Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,2 @@
+InvalidMethodTypeParamTarget.java:19:13: compiler.err.invalid.repeatable.annotation.not.applicable: InvalidMethodTypeParamTarget.TC, <N>method()
+1 error
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/annotations/repeatingAnnotations/InvalidMethodTypeUse.java Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,24 @@
+/**
+ * @test /nodynamiccopyright/
+ * @bug 8044196
+ * @summary Make sure repeatable annotations can't be erroneously applied to type arguments.
+ * @compile/fail/ref=InvalidMethodTypeUse.out -XDrawDiagnostics InvalidMethodTypeUse.java
+ */
+
+import java.lang.annotation.*;
+
+class InvalidMethodTypeUse {
+
+ @Target({ElementType.TYPE_USE, ElementType.METHOD, ElementType.TYPE_PARAMETER})
+ @Repeatable(TC.class)
+ @interface T { int value(); }
+
+ @Target({ElementType.METHOD, ElementType.TYPE_PARAMETER})
+ @interface TC { T[] value(); }
+
+ void method() {
+ this.<@T(1) @T(2) String>method2();
+ }
+
+ <@T(3) S> void method2() { }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/annotations/repeatingAnnotations/InvalidMethodTypeUse.out Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,2 @@
+InvalidMethodTypeUse.java:20:15: compiler.err.invalid.repeatable.annotation.not.applicable.in.context: InvalidMethodTypeUse.TC
+1 error
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/annotations/repeatingAnnotations/InvalidRepAnnoOnCast.java Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,20 @@
+/**
+ * @test /nodynamiccopyright/
+ * @bug 8044196
+ * @summary Make sure repeatable annotations can't be erroneously applied to a cast type
+ * @compile/fail/ref=InvalidRepAnnoOnCast.out -XDrawDiagnostics InvalidRepAnnoOnCast.java
+ */
+
+import java.lang.annotation.*;
+
+class InvalidRepAnnoOnCast {
+
+ @Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER})
+ @Repeatable(TC.class)
+ @interface T { int value(); }
+
+ @Target(ElementType.TYPE_PARAMETER)
+ @interface TC { T[] value(); }
+
+ String s = (@T(1) @T(2) String) new Object();
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/annotations/repeatingAnnotations/InvalidRepAnnoOnCast.out Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,2 @@
+InvalidRepAnnoOnCast.java:19:17: compiler.err.invalid.repeatable.annotation.not.applicable.in.context: InvalidRepAnnoOnCast.TC
+1 error
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/annotations/repeatingAnnotations/brokenTypeAnnoContainer/BrokenTypeAnnoContainer.java Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,14 @@
+/**
+ * @test /nodynamiccopyright/
+ * @bug 8044196
+ * @summary Ensure that a broken type annotation container generates a correct error message.
+ * @compile T.java TC.java
+ * @compile TCBroken.java
+ * @compile/fail/ref=BrokenTypeAnnoContainer.out -XDrawDiagnostics BrokenTypeAnnoContainer.java
+ */
+
+class BrokenTypeAnnoContainer {
+ void method() {
+ int ll2 = (@T(1) @T(2) int) 0;
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/annotations/repeatingAnnotations/brokenTypeAnnoContainer/BrokenTypeAnnoContainer.out Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,2 @@
+BrokenTypeAnnoContainer.java:12:20: compiler.err.duplicate.annotation.invalid.repeated: T
+1 error
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/annotations/repeatingAnnotations/brokenTypeAnnoContainer/T.java Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,28 @@
+/*
+ * 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.lang.annotation.*;
+
+@Target(ElementType.TYPE_USE)
+@Repeatable(TC.class)
+@interface T { int value(); }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/annotations/repeatingAnnotations/brokenTypeAnnoContainer/TC.java Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,30 @@
+/*
+ * 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.lang.annotation.*;
+
+@Target(ElementType.TYPE_USE)
+@interface TC {
+ T[] value();
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/annotations/repeatingAnnotations/brokenTypeAnnoContainer/TCBroken.java Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,30 @@
+/*
+ * 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.lang.annotation.*;
+
+@Target(ElementType.TYPE_USE)
+@interface TC {
+ T[] value();
+ int foo();
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/classfiles/attributes/Synthetic/AccessToPrivateInnerClassMembersTest.java Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,92 @@
+/*
+ * 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.
+ */
+
+/*
+ * @test
+ * @bug 8044537
+ * @summary Checking ACC_SYNTHETIC flag is generated for access method
+* generated to access to private methods and fields.
+ * @library /tools/lib /tools/javac/lib ../lib
+ * @build TestBase TestResult InMemoryFileManager ToolBox
+ * @build AccessToPrivateInnerClassMembersTest SyntheticTestDriver ExpectedClass ExpectedClasses
+ * @run main SyntheticTestDriver AccessToPrivateInnerClassMembersTest 1
+ */
+
+/**
+ * Access from top level class to inner classes.
+ * Synthetic members:
+ * 1. inner classes for Inner*.
+ * 2. getter/setter for private field var.
+ * 3. access method for private method function().
+ * 4. getter/setter for private field staticVar.
+ * 5. access method for private method staticFunction().
+ * 6. field this in Inner1.
+ * 7. constructor for Inner*.
+ */
+@ExpectedClass(className = "AccessToPrivateInnerClassMembersTest",
+ expectedMethods = {"<init>()", "<clinit>()"})
+@ExpectedClass(className = "AccessToPrivateInnerClassMembersTest$Inner1",
+ expectedMethods = {"<init>(AccessToPrivateInnerClassMembersTest)", "function()"},
+ expectedFields = "var",
+ expectedNumberOfSyntheticMethods = 4,
+ expectedNumberOfSyntheticFields = 1)
+@ExpectedClass(className = "AccessToPrivateInnerClassMembersTest$Inner2",
+ expectedMethods = {"function()", "staticFunction()", "<init>()"},
+ expectedFields = {"staticVar", "var"},
+ expectedNumberOfSyntheticMethods = 7)
+public class AccessToPrivateInnerClassMembersTest {
+
+ private class Inner1 {
+ private Inner1() {}
+ private int var;
+ private void function() {}
+ }
+
+ {
+ Inner1 inner = new Inner1();
+ inner.var = 0;
+ int i = inner.var;
+ inner.function();
+ }
+
+ private static class Inner2 {
+ private Inner2() {}
+ private int var;
+ private static int staticVar;
+ private void function() {}
+ private static void staticFunction() {}
+ }
+
+ {
+ Inner2 inner = new Inner2();
+ inner.var = 0;
+ int i = inner.var;
+ inner.function();
+ }
+
+ static {
+ Inner2.staticFunction();
+ Inner2.staticVar = 0;
+ int i = Inner2.staticVar;
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/classfiles/attributes/Synthetic/AccessToPrivateSiblingsTest.java Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,109 @@
+/*
+ * 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.
+ */
+
+/*
+ * @test
+ * @bug 8044537
+ * @summary Checking ACC_SYNTHETIC flag is generated for access method
+ * generated to access to private methods and fields.
+ * @library /tools/lib /tools/javac/lib ../lib
+ * @build TestBase TestResult InMemoryFileManager ToolBox
+ * @build AccessToPrivateSiblingsTest SyntheticTestDriver ExpectedClass ExpectedClasses
+ * @run main SyntheticTestDriver AccessToPrivateSiblingsTest 1
+ */
+
+/**
+ * Access from sibling classes to sibling classes.
+ * Synthetic members:
+ * 1. inner classes for Inner*.
+ * 2. getter/setter for private field var.
+ * 3. access method for private method function().
+ * 4. getter/setter for private field staticVar.
+ * 5. access method for private method staticFunction().
+ * 6. field this in Inner1.
+ * 7. constructor for Inner*.
+ */
+@ExpectedClass(className = "AccessToPrivateSiblingsTest", expectedMethods = "<init>()")
+@ExpectedClass(className = "AccessToPrivateSiblingsTest$Inner1",
+ expectedMethods = {"function()", "<init>(AccessToPrivateSiblingsTest)"},
+ expectedFields = "var",
+ expectedNumberOfSyntheticMethods = 4,
+ expectedNumberOfSyntheticFields = 1)
+@ExpectedClass(className = "AccessToPrivateSiblingsTest$Inner2",
+ expectedMethods = "<init>(AccessToPrivateSiblingsTest)",
+ expectedNumberOfSyntheticFields = 1)
+@ExpectedClass(className = "AccessToPrivateSiblingsTest$Inner3",
+ expectedMethods = {"<init>()", "function()", "staticFunction()", "<clinit>()"},
+ expectedFields = {"var", "staticVar"},
+ expectedNumberOfSyntheticMethods = 4)
+@ExpectedClass(className = "AccessToPrivateSiblingsTest$Inner4",
+ expectedMethods = {"<init>()", "function()", "staticFunction()"},
+ expectedFields = {"var", "staticVar"},
+ expectedNumberOfSyntheticMethods = 4)
+public class AccessToPrivateSiblingsTest {
+
+ private class Inner1 {
+ private Inner1() {}
+ private int var;
+ private void function() {}
+
+ {
+ Inner3 inner = new Inner3();
+ inner.var = 0;
+ int i = inner.var;
+ inner.function();
+ }
+ }
+
+ private class Inner2 {
+ {
+ Inner1 inner = new Inner1();
+ inner.var = 0;
+ int i = inner.var;
+ inner.function();
+ }
+ }
+
+ private static class Inner3 {
+ private Inner3() {}
+ private int var;
+ private static int staticVar;
+ private void function() {}
+ private static void staticFunction() {}
+
+ static {
+ Inner4 inner = new Inner4();
+ inner.var = 0;
+ int i = inner.var;
+ inner.function();
+ }
+ }
+
+ private static class Inner4 {
+ private Inner4() {}
+ private int var;
+ private static int staticVar;
+ private void function() {}
+ private static void staticFunction() {}
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/classfiles/attributes/Synthetic/AssertFieldTest.java Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,45 @@
+/*
+ * 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.
+ */
+
+/*
+ * @test
+ * @bug 8044537
+ * @summary Checking ACC_SYNTHETIC flag is generated for assert statement.
+ * @library /tools/lib /tools/javac/lib ../lib
+ * @build TestBase TestResult InMemoryFileManager ToolBox
+ * @build AssertFieldTest SyntheticTestDriver ExpectedClass ExpectedClasses
+ * @run main SyntheticTestDriver AssertFieldTest
+ */
+
+/**
+ * Synthetic field for assert.
+ */
+@ExpectedClass(className = "AssertFieldTest",
+ expectedMethods = {"<init>()", "function(boolean)", "<clinit>()"},
+ expectedNumberOfSyntheticFields = 1)
+public class AssertFieldTest {
+
+ public void function(boolean flag) {
+ assert flag;
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/classfiles/attributes/Synthetic/BridgeMethodForGenericMethodTest.java Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,48 @@
+/*
+ * 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.
+ */
+
+/*
+ * @test
+ * @bug 8044537
+ * @summary Checking ACC_SYNTHETIC flag is generated for bridge method generated for generic method.
+ * @library /tools/lib /tools/javac/lib ../lib
+ * @build TestBase TestResult InMemoryFileManager ToolBox
+ * @build BridgeMethodForGenericMethodTest SyntheticTestDriver ExpectedClass ExpectedClasses
+ * @run main SyntheticTestDriver BridgeMethodForGenericMethodTest
+ */
+
+import java.util.ArrayList;
+
+/**
+ * Synthetic method add(Object i) for method add(Integer)
+ */
+@ExpectedClass(className = "BridgeMethodForGenericMethodTest",
+ expectedMethods = {"<init>()", "add(java.lang.Integer)"},
+ expectedNumberOfSyntheticMethods = 1)
+public class BridgeMethodForGenericMethodTest extends ArrayList<Integer> {
+
+ @Override
+ public boolean add(Integer i) {
+ return true;
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/classfiles/attributes/Synthetic/BridgeMethodsForLambdaTest.java Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,122 @@
+/*
+ * 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.
+ */
+
+/*
+ * @test
+ * @bug 8044537
+ * @summary Checking ACC_SYNTHETIC flag is generated for bridge method
+ * generated for lambda expressions and method references.
+ * @library /tools/lib /tools/javac/lib ../lib
+ * @build TestBase TestResult InMemoryFileManager ToolBox
+ * @build BridgeMethodsForLambdaTest SyntheticTestDriver ExpectedClass ExpectedClasses
+ * @run main SyntheticTestDriver BridgeMethodsForLambdaTest 1
+ */
+
+import java.util.Comparator;
+import java.util.stream.IntStream;
+
+/**
+ * Synthetic members:
+ * 1. inner class for Inner1.
+ * 2. method for () -> {} in Inner1
+ * 3. method for () -> {} in Inner2
+ * 4. method references to private methods.
+ * 5. method for super::function()
+ * 6. method references to private static methods.
+ * 7. access method for private method function().
+ * 8. access method for private static method staticFunction().
+ * 9. method reference to vararg method.
+ * 10. method reference to array's method.
+ * 11. constructors for Inner1 and Inner2.
+ */
+@ExpectedClass(className = "BridgeMethodsForLambdaTest",
+ expectedMethods = {"<init>()", "<clinit>()", "function(java.lang.Integer[])"},
+ expectedNumberOfSyntheticMethods = 6)
+@ExpectedClass(className = "BridgeMethodsForLambdaTest$Inner1",
+ expectedMethods = {"<init>(BridgeMethodsForLambdaTest)", "function()", "run()"},
+ expectedFields = "lambda1",
+ expectedNumberOfSyntheticMethods = 4,
+ expectedNumberOfSyntheticFields = 1)
+@ExpectedClass(className = "BridgeMethodsForLambdaTest$Inner2",
+ expectedMethods = {"<init>()", "staticFunction()"},
+ expectedFields = "lambda1",
+ expectedNumberOfSyntheticMethods = 3)
+@ExpectedClass(className = "BridgeMethodsForLambdaTest$Inner3",
+ expectedMethods = {"<init>(BridgeMethodsForLambdaTest)", "function()"},
+ expectedNumberOfSyntheticMethods = 1,
+ expectedNumberOfSyntheticFields = 1)
+@ExpectedClass(className = "BridgeMethodsForLambdaTest$Inner4",
+ expectedMethods = {"<init>(BridgeMethodsForLambdaTest)", "function()"},
+ expectedNumberOfSyntheticMethods = 1,
+ expectedNumberOfSyntheticFields = 1)
+public class BridgeMethodsForLambdaTest {
+
+ private class Inner1 implements Runnable {
+ private Inner1() {
+ }
+ private Runnable lambda1 = () -> {
+ };
+ private void function() {
+ }
+ @Override
+ public void run() {
+ }
+ }
+
+ private static class Inner2 {
+ private Runnable lambda1 = () -> {
+ };
+ private static void staticFunction() {
+ }
+ }
+
+ private class Inner3 {
+ public void function() {
+ }
+ }
+
+ private class Inner4 extends Inner3 {
+ @Override
+ public void function() {
+ Runnable r = super::function;
+ }
+ }
+
+ private static int function(Integer...vararg) {
+ return 0;
+ }
+
+ {
+ Inner1 inner = new Inner1();
+ Runnable l1 = inner::function;
+ Runnable l2 = Inner1::new;
+ inner.lambda1 = inner::function;
+ Comparator<Integer> c = BridgeMethodsForLambdaTest::function;
+ IntStream.of(2).mapToObj(int[]::new);
+ }
+
+ static {
+ Inner2 inner = new Inner2();
+ Runnable l1 = Inner2::staticFunction;
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/classfiles/attributes/Synthetic/EnumTest.java Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,44 @@
+/*
+ * 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.
+ */
+
+/*
+ * @test
+ * @bug 8044537
+ * @summary Checking ACC_SYNTHETIC flag is generated for enum members.
+ * @library /tools/lib /tools/javac/lib ../lib
+ * @build TestBase TestResult InMemoryFileManager ToolBox
+ * @build EnumTest SyntheticTestDriver ExpectedClass ExpectedClasses
+ * @run main SyntheticTestDriver EnumTest
+ */
+
+/**
+ * Synthetic members:
+ * 1. field $VALUES.
+ */
+@ExpectedClass(className = "EnumTest",
+ expectedMethods = {"values()", "valueOf(java.lang.String)", "<clinit>()", "<init>(java.lang.String, int)"},
+ expectedFields = {"A", "B"},
+ expectedNumberOfSyntheticFields = 1)
+public enum EnumTest {
+ A, B
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/classfiles/attributes/Synthetic/ExpectedClass.java Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,36 @@
+/*
+ * 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.lang.annotation.Repeatable;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Repeatable(ExpectedClasses.class)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ExpectedClass {
+ String className();
+ String[] expectedMethods() default {};
+ String[] expectedFields() default {};
+ int expectedNumberOfSyntheticMethods() default 0;
+ int expectedNumberOfSyntheticFields() default 0;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/classfiles/attributes/Synthetic/ExpectedClasses.java Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,30 @@
+/*
+ * 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.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ExpectedClasses {
+ ExpectedClass[] value();
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/classfiles/attributes/Synthetic/PackageInfoTest.java Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,36 @@
+/*
+ * 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.
+ */
+
+/*
+ * @test
+ * @bug 8044537
+ * @summary Checking ACC_SYNTHETIC flag is generated for package-info.
+ * @library /tools/lib /tools/javac/lib ../lib
+ * @build TestBase TestResult InMemoryFileManager ToolBox
+ * @build SyntheticTestDriver ExpectedClass ExpectedClasses
+ * @compile -Xpkginfo:always package_info_test/package-info.java
+ * @run main SyntheticTestDriver package_info_test.package-info 1
+ */
+
+public class PackageInfoTest {
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/classfiles/attributes/Synthetic/SyntheticTestDriver.java Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,212 @@
+/*
+ * 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.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.*;
+import java.util.function.Function;
+import java.util.function.Supplier;
+import java.util.regex.*;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import com.sun.tools.classfile.*;
+
+/**
+ * The tests work as follows. Firstly, it looks through the test cases
+ * and extracts the appropriate compiled classes. Each test case contains
+ * a set of expected classes, methods and fields. Those class members must not have
+ * the Synthetic attribute, while other found classes, methods and fields must have
+ * the Synthetic attribute if they are not in the set of expected class members.
+ *
+ * Each test executes SyntheticTestDriver specifying the name of test cases and
+ * the number of expected synthetic classes. Each test class is annotated by
+ * annotations which contains non-synthetic class members.
+ *
+ * See the appropriate class for more information about a test case.
+ */
+public class SyntheticTestDriver extends TestResult {
+
+ private static final String ACC_SYNTHETIC = "ACC_SYNTHETIC";
+
+ private final String testCaseName;
+ private final Map<String, ClassFile> classes;
+ private final Map<String, ExpectedClass> expectedClasses;
+
+ public static void main(String[] args)
+ throws TestFailedException, ConstantPoolException, IOException, ClassNotFoundException {
+ if (args.length != 1 && args.length != 2) {
+ throw new IllegalArgumentException("Usage: SyntheticTestDriver <class-name> [<number-of-synthetic-classes>]");
+ }
+ int numberOfSyntheticClasses = args.length == 1 ? 0 : Integer.parseInt(args[1]);
+ new SyntheticTestDriver(args[0]).test(numberOfSyntheticClasses);
+ }
+
+ public SyntheticTestDriver(String testCaseName) throws IOException, ConstantPoolException, ClassNotFoundException {
+ Class<?> clazz = Class.forName(testCaseName);
+ this.testCaseName = testCaseName;
+ this.expectedClasses = Stream.of(clazz.getAnnotationsByType(ExpectedClass.class))
+ .collect(Collectors.toMap(ExpectedClass::className, Function.identity()));
+ this.classes = new HashMap<>();
+ Path classDir = getClassDir().toPath();
+ Pattern filePattern = Pattern.compile(Pattern.quote(testCaseName.replace('.', File.separatorChar)) + ".*\\.class");
+ List<Path> paths = Files.walk(classDir)
+ .map(p -> classDir.relativize(p.toAbsolutePath()))
+ .filter(p -> filePattern.matcher(p.toString()).matches())
+ .collect(Collectors.toList());
+ for (Path path : paths) {
+ String className = path.toString().replace(".class", "").replace(File.separatorChar, '.');
+ classes.put(className, readClassFile(classDir.resolve(path).toFile()));
+ }
+ if (classes.isEmpty()) {
+ throw new RuntimeException("Classes have not been found.");
+ }
+ boolean success = classes.entrySet().stream()
+ .allMatch(e -> e.getKey().startsWith(testCaseName));
+ if (!success) {
+ classes.forEach((className, $) -> printf("Found class: %s\n", className));
+ throw new RuntimeException("Found classes are not from the test case : " + testCaseName);
+ }
+ }
+
+ private String getMethodName(ClassFile classFile, Method method)
+ throws ConstantPoolException, Descriptor.InvalidDescriptor {
+ String methodName = method.getName(classFile.constant_pool);
+ String parameters = method.descriptor.getParameterTypes(classFile.constant_pool);
+ return methodName + parameters;
+ }
+
+ public void test(int expectedNumberOfSyntheticClasses) throws TestFailedException {
+ try {
+ addTestCase(testCaseName);
+ Set<String> foundClasses = new HashSet<>();
+
+ int numberOfSyntheticClasses = 0;
+ for (Map.Entry<String, ClassFile> entry : classes.entrySet()) {
+ String className = entry.getKey();
+ ClassFile classFile = entry.getValue();
+ foundClasses.add(className);
+ if (testAttribute(
+ classFile,
+ () -> (Synthetic_attribute) classFile.getAttribute(Attribute.Synthetic),
+ classFile.access_flags::getClassFlags,
+ expectedClasses.keySet(),
+ className,
+ "Testing class " + className)) {
+ ++numberOfSyntheticClasses;
+ }
+ ExpectedClass expectedClass = expectedClasses.get(className);
+ Set<String> expectedMethods = expectedClass != null
+ ? toSet(expectedClass.expectedMethods())
+ : new HashSet<>();
+ int numberOfSyntheticMethods = 0;
+ Set<String> foundMethods = new HashSet<>();
+ for (Method method : classFile.methods) {
+ String methodName = getMethodName(classFile, method);
+ foundMethods.add(methodName);
+ if (testAttribute(
+ classFile,
+ () -> (Synthetic_attribute) method.attributes.get(Attribute.Synthetic),
+ method.access_flags::getMethodFlags,
+ expectedMethods,
+ methodName,
+ "Testing method " + methodName + " in class "
+ + className)) {
+ ++numberOfSyntheticMethods;
+ }
+ }
+ checkContains(foundMethods, expectedMethods,
+ "Checking that all methods of class " + className
+ + " without Synthetic attribute have been found");
+ checkEquals(numberOfSyntheticMethods,
+ expectedClass == null ? 0 : expectedClass.expectedNumberOfSyntheticMethods(),
+ "Checking number of synthetic methods in class: " + className);
+
+ Set<String> expectedFields = expectedClass != null
+ ? toSet(expectedClass.expectedFields())
+ : new HashSet<>();
+ int numberOfSyntheticFields = 0;
+ Set<String> foundFields = new HashSet<>();
+ for (Field field : classFile.fields) {
+ String fieldName = field.getName(classFile.constant_pool);
+ foundFields.add(fieldName);
+ if (testAttribute(
+ classFile,
+ () -> (Synthetic_attribute) field.attributes.get(Attribute.Synthetic),
+ field.access_flags::getFieldFlags,
+ expectedFields,
+ fieldName,
+ "Testing field " + fieldName + " in class "
+ + className)) {
+ ++numberOfSyntheticFields;
+ }
+ }
+ checkContains(foundFields, expectedFields,
+ "Checking that all fields of class " + className
+ + " without Synthetic attribute have been found");
+ checkEquals(numberOfSyntheticFields,
+ expectedClass == null ? 0 : expectedClass.expectedNumberOfSyntheticFields(),
+ "Checking number of synthetic fields in class: " + className);
+ }
+ checkContains(foundClasses, expectedClasses.keySet(),
+ "Checking that all classes have been found");
+ checkEquals(numberOfSyntheticClasses, expectedNumberOfSyntheticClasses,
+ "Checking number of synthetic classes");
+ } catch (Exception e) {
+ addFailure(e);
+ } finally {
+ checkStatus();
+ }
+ }
+
+ private boolean testAttribute(ClassFile classFile,
+ Supplier<Synthetic_attribute> getSyntheticAttribute,
+ Supplier<Set<String>> getAccessFlags,
+ Set<String> expectedMembers, String memberName,
+ String info) throws ConstantPoolException {
+ echo(info);
+ String className = classFile.getName();
+ Synthetic_attribute attr = getSyntheticAttribute.get();
+ Set<String> flags = getAccessFlags.get();
+ if (expectedMembers.contains(memberName)) {
+ checkNull(attr, "Member must not have synthetic attribute : "
+ + memberName);
+ checkFalse(flags.contains(ACC_SYNTHETIC),
+ "Member must not have synthetic flag : " + memberName
+ + " in class : " + className);
+ return false;
+ } else {
+ return checkNull(attr, "Synthetic attribute should not be generated")
+ && checkTrue(flags.contains(ACC_SYNTHETIC), "Member must have synthetic flag : "
+ + memberName + " in class : " + className);
+ }
+ }
+
+ private Set<String> toSet(String[] strings) {
+ HashSet<String> set = new HashSet<>();
+ Collections.addAll(set, strings);
+ return set;
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/classfiles/attributes/Synthetic/ThisFieldTest.java Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,54 @@
+/*
+ * 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.
+ */
+
+/*
+ * @test
+ * @bug 8044537
+ * @summary Checking ACC_SYNTHETIC flag is generated for "this$0" field.
+ * @library /tools/lib /tools/javac/lib ../lib
+ * @build TestBase TestResult InMemoryFileManager ToolBox
+ * @build ThisFieldTest SyntheticTestDriver ExpectedClass ExpectedClasses
+ * @run main SyntheticTestDriver ThisFieldTest
+ */
+
+/**
+ * Synthetic members:
+ * 1. fields this$0 for local and anonymous classes.
+ */
+@ExpectedClass(className = "ThisFieldTest",
+ expectedMethods = "<init>()")
+@ExpectedClass(className = "ThisFieldTest$1Local",
+ expectedMethods = "<init>(ThisFieldTest)",
+ expectedNumberOfSyntheticFields = 1)
+@ExpectedClass(className = "ThisFieldTest$1",
+ expectedMethods = "<init>(ThisFieldTest)",
+ expectedNumberOfSyntheticFields = 1)
+public class ThisFieldTest {
+ {
+ class Local {
+ }
+
+ new Local() {
+ };
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/classfiles/attributes/Synthetic/package_info_test/package-info.java Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,24 @@
+/*
+ * 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.
+ */
+
+package package_info_test;
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/completionDeps/DepsAndAnno.java Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,49 @@
+/*
+ * 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.
+ */
+
+/**
+ * @test
+ * @bug 8078600
+ * @summary Make sure -XDcompletionDeps does not cause an infinite loop.
+ * @library /tools/lib
+ * @build ToolBox
+ * @run main/othervm/timeout=10 DepsAndAnno
+ */
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+public class DepsAndAnno {
+
+ @Target(ElementType.METHOD)
+ @interface Test { }
+
+ public static void main(String[] args) {
+ ToolBox toolBox = new ToolBox();
+ toolBox.new JavacTask(ToolBox.Mode.CMDLINE)
+ .options("-XDcompletionDeps")
+ .outdir(".")
+ .files(ToolBox.testSrc + "/DepsAndAnno.java")
+ .run();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/diags/examples/InvalidTypeContextRepeatableAnnotation.java Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,43 @@
+/*
+ * 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.
+ */
+
+// key: compiler.err.invalid.repeatable.annotation.not.applicable.in.context
+
+
+import java.lang.annotation.*;
+
+@Target({ElementType.TYPE_USE, ElementType.METHOD, ElementType.TYPE_PARAMETER})
+@Repeatable(TC.class)
+@interface T { int value(); }
+
+@Target({ElementType.METHOD, ElementType.TYPE_PARAMETER})
+@interface TC { T[] value(); }
+
+public class InvalidTypeContextRepeatableAnnotation {
+ void method() {
+ this.<@T(1) @T(2) String>method2();
+ }
+
+ <@T(3) S> void method2() {
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/lambda/AvoidInfiniteReattribution.java Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,107 @@
+/*
+ * 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.
+ */
+
+/*
+ * @test
+ * @bug 8077605
+ * @summary Check that when an exception occurs during Attr.visitLambda, an attempt to attribute
+ the lambda again is avoided rather than falling into an infinite recursion.
+ */
+
+import java.io.IOException;
+import java.net.URI;
+import java.util.Arrays;
+import java.util.List;
+import javax.tools.JavaFileObject;
+import javax.tools.SimpleJavaFileObject;
+
+import com.sun.tools.javac.api.JavacTaskImpl;
+import com.sun.tools.javac.api.JavacTool;
+import com.sun.tools.javac.comp.Attr;
+import com.sun.tools.javac.tree.JCTree.JCVariableDecl;
+import com.sun.tools.javac.util.Context;
+import com.sun.tools.javac.util.Context.Factory;
+
+public class AvoidInfiniteReattribution {
+
+ public static void main(String... args) throws Exception {
+ new AvoidInfiniteReattribution().run();
+ }
+
+ void run() throws IOException {
+ JavacTool tool = JavacTool.create();
+ JavaSource source = new JavaSource("class Test {" +
+ " I i = STOP -> {};" +
+ " interface I {" +
+ " public void test(int i) {}" +
+ " }" +
+ "}");
+ Context context = new Context();
+ CrashingAttr.preRegister(context);
+ List<JavaSource> inputs = Arrays.asList(source);
+ JavacTaskImpl task =
+ (JavacTaskImpl) tool.getTask(null, null, null, null, null, inputs, context);
+ try {
+ task.analyze(null);
+ throw new AssertionError("Expected exception not seen.");
+ } catch (StopException ex) {
+ //ok
+ }
+ }
+
+ static class CrashingAttr extends Attr {
+
+ static void preRegister(Context context) {
+ context.put(attrKey, (Factory<Attr>) c -> new CrashingAttr(c));
+ }
+
+ CrashingAttr(Context context) {
+ super(context);
+ }
+
+ @Override public void visitVarDef(JCVariableDecl tree) {
+ if (tree.name.contentEquals("STOP"))
+ throw new StopException();
+ super.visitVarDef(tree);
+ }
+ }
+
+ static class StopException extends NullPointerException {}
+
+ class JavaSource extends SimpleJavaFileObject {
+
+ String source;
+
+ JavaSource(String source) {
+ super(URI.create("myfo:/Test.java"), JavaFileObject.Kind.SOURCE);
+ this.source = source;
+ }
+
+ @Override
+ public CharSequence getCharContent(boolean ignoreEncodingErrors) {
+ return source;
+ }
+
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/lambda/T8077605.java Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,43 @@
+/*
+ * 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.
+ */
+
+/**
+ * @test
+ * @bug 8077605
+ * @summary Lambda with parameters in field initializer should not break compilation
+ * (MemberEnter.needsLazyConstValue should detect the initializer cannot be a constant)
+ * @compile T8077605.java
+ */
+
+public class T8077605 {
+ static final String C = "" + m(str -> str);
+
+ private static String m(I function) {
+ return null;
+ }
+
+ interface I {
+ public String run(String str);
+ }
+}
+
--- a/make/Images.gmk Mon Apr 27 09:17:48 2015 -0700
+++ b/make/Images.gmk Tue May 05 13:29:12 2015 -0700
@@ -70,7 +70,7 @@
# compact3 builds have additional modules
JDK_COMPACT3_MODULES := java.compact3 java.smartcardio jdk.httpserver jdk.naming.dns \
- jdk.naming.rmi jdk.sctp jdk.security.auth
+ jdk.naming.rmi jdk.sctp jdk.security.auth jdk.management
# Replacing double-comma with a single comma is to workaround the issue
# with some version of make on windows that doesn't substitute spaces
--- a/make/jprt.properties Mon Apr 27 09:17:48 2015 -0700
+++ b/make/jprt.properties Tue May 05 13:29:12 2015 -0700
@@ -28,8 +28,8 @@
# Global settings
#
-# Regression tests depend on test bundle
-jprt.use.reg.test.bundle=true
+# Install test bundle for targets in jprt.test.bundle.targets set
+jprt.selective.test.bundle.installation=true
# The current release name
jprt.tools.default.release=jdk9
@@ -48,6 +48,9 @@
# Use configure when building
jprt.build.use.configure=true
+# Set up the run flavors (jvm variants)
+jprt.run.flavors=c1,c2,default,${my.additional.run.flavors}
+
# Set make target to use for different build flavors
jprt.build.flavor.debugOpen.target=jprt_bundle
jprt.build.flavor.fastdebug.target=jprt_bundle
@@ -73,6 +76,7 @@
# Select test targets - jprt default for jprt.test.set is "default"
jprt.test.targets=${my.test.targets.${jprt.test.set}}
jprt.make.rule.test.targets=${my.make.rule.test.targets.${jprt.test.set}}
+jprt.test.bundle.targets=${my.jprt.test.bundle.targets.${jprt.test.set}}
# 7155453: Work-around to prevent popups on OSX from blocking test completion
# but the work-around is added to all platforms to be consistent
@@ -415,19 +419,15 @@
# Make file based test targets
-my.make.rule.test.targets.hotspot.clienttests= \
- linux_i586_2.6-*-c1-hotspot_clienttest, \
- windows_i586_6.2-*-c1-hotspot_clienttest
-
-my.make.rule.test.targets.hotspot.servertests= \
- solaris_sparcv9_5.11-*-c2-hotspot_servertest, \
- solaris_x64_5.11-*-c2-hotspot_servertest, \
- linux_i586_2.6-*-c2-hotspot_servertest, \
- linux_x64_2.6-*-c2-hotspot_servertest, \
- macosx_x64_10.9-*-c2-hotspot_servertest, \
- windows_i586_6.2-*-c2-hotspot_servertest, \
- windows_x64_6.2-*-c2-hotspot_servertest
-
+my.make.rule.test.targets.hotspot.basicvmtests= \
+ linux_i586_2.6-*-default-hotspot_basicvmtest, \
+ linux_x64_2.6-*-default-hotspot_basicvmtest, \
+ macosx_x64_10.9-*-default-hotspot_basicvmtest, \
+ solaris_sparcv9_5.11-*-default-hotspot_basicvmtest, \
+ solaris_x64_5.11-*-default-hotspot_basicvmtest, \
+ windows_i586_6.2-*-default-hotspot_basicvmtest, \
+ windows_x64_6.2-*-default-hotspot_basicvmtest
+
my.make.rule.test.targets.hotspot.internalvmtests= \
solaris_sparcv9_5.11-fastdebug-c2-hotspot_internalvmtests, \
solaris_x64_5.11-fastdebug-c2-hotspot_internalvmtests, \
@@ -448,10 +448,8 @@
linux_i586_2.6-fastdebug-c1-GROUP, \
windows_i586_6.2-fastdebug-c1-GROUP
-my.make.rule.test.targets.hotspot= \
- ${my.make.rule.test.targets.hotspot.clienttests}, \
- ${my.make.rule.test.targets.hotspot.servertests}, \
- ${my.make.rule.test.targets.hotspot.internalvmtests}, \
+# Hotspot jtreg tests
+my.make.rule.test.targets.hotspot.reg= \
${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_wbapitest}, \
${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_compiler_1}, \
${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_compiler_2}, \
@@ -461,12 +459,29 @@
${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_gc_closed}, \
${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_gc_gcold}, \
${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_runtime}, \
- ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_runtime_closed}, \
${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_serviceability}, \
${my.make.rule.test.targets.hotspot.reg.group:GROUP=jdk_svc_sanity}, \
- ${my.additional.make.rule.test.targets.hotspot}
+ ${my.additional.make.rule.test.targets.hotspot.reg}
+
+# Other Makefile based Hotspot tests
+my.make.rule.test.targets.hotspot.other= \
+ ${my.make.rule.test.targets.hotspot.basicvmtests}, \
+ ${my.make.rule.test.targets.hotspot.internalvmtests}, \
+ ${my.additional.make.rule.test.targets.hotspot.other}
+
+# All the makefile based tests to run
+my.make.rule.test.targets.hotspot= \
+ ${my.make.rule.test.targets.hotspot.reg} \
+ ${my.make.rule.test.targets.hotspot.other}
+
+# Install the test bundle for the testset hotspot jtreg tests
+# (but not for the other Makefile based tests)
+my.jprt.test.bundle.targets.hotspot=${my.make.rule.test.targets.hotspot.reg}
# Native jdk and hotspot test targets (testset=nativesanity)
my.make.rule.test.targets.nativesanity= \
${my.test.target.set:TESTNAME=jdk_native_sanity}, \
${my.test.target.set:TESTNAME=hotspot_native_sanity}
+
+# Install the test bundle for the nativesanity jtreg tests
+my.jprt.test.bundle.targets.nativesanity=${my.make.rule.test.targets.nativesanity}
--- a/modules.xml Mon Apr 27 09:17:48 2015 -0700
+++ b/modules.xml Tue May 05 13:29:12 2015 -0700
@@ -222,11 +222,13 @@
<name>jdk.internal.org.objectweb.asm</name>
<to>jdk.jfr</to>
<to>jdk.scripting.nashorn</to>
+ <to>java.instrument</to>
</export>
<export>
<name>jdk.internal.org.objectweb.asm.commons</name>
<to>jdk.jfr</to>
<to>jdk.scripting.nashorn</to>
+ <to>java.instrument</to>
</export>
<export>
<name>jdk.internal.org.objectweb.asm.signature</name>
@@ -235,11 +237,13 @@
<export>
<name>jdk.internal.org.objectweb.asm.tree</name>
<to>jdk.jfr</to>
+ <to>java.instrument</to>
</export>
<export>
<name>jdk.internal.org.objectweb.asm.util</name>
<to>jdk.jfr</to>
<to>jdk.scripting.nashorn</to>
+ <to>java.instrument</to>
</export>
<export>
<name>sun.misc</name>
@@ -266,6 +270,7 @@
<to>jdk.security.auth</to>
<to>jdk.security.jgss</to>
<to>jdk.snmp</to>
+ <to>java.instrument</to>
</export>
<export>
<name>sun.net.dns</name>
@@ -310,6 +315,7 @@
<to>java.sql</to>
<to>java.sql.rowset</to>
<to>jdk.scripting.nashorn</to>
+ <to>java.instrument</to>
</export>
<export>
<name>sun.reflect.annotation</name>
@@ -765,6 +771,10 @@
<export>
<name>java.lang.instrument</name>
</export>
+ <export>
+ <name>jdk.internal.instrumentation</name>
+ <to>jdk.jfr</to>
+ </export>
</module>
<module>
<name>java.logging</name>
@@ -780,9 +790,6 @@
<depend>java.naming</depend>
<depend re-exports="true">java.rmi</depend>
<export>
- <name>com.sun.management</name>
- </export>
- <export>
<name>java.lang.management</name>
</export>
<export>
@@ -815,9 +822,11 @@
<export>
<name>sun.management</name>
<to>jdk.jconsole</to>
+ <to>jdk.management</to>
</export>
<export>
<name>sun.management.spi</name>
+ <to>jdk.management</to>
<to>jdk.management.cmm</to>
</export>
</module>
@@ -1659,6 +1668,7 @@
<depend>java.rmi</depend>
<depend>jdk.attach</depend>
<depend>jdk.jvmstat</depend>
+ <depend>jdk.management</depend>
<export>
<name>com.sun.tools.jconsole</name>
</export>
@@ -1711,6 +1721,14 @@
<depend>java.base</depend>
</module>
<module>
+ <name>jdk.management</name>
+ <depend>java.base</depend>
+ <depend re-exports="true">java.management</depend>
+ <export>
+ <name>com.sun.management</name>
+ </export>
+ </module>
+ <module>
<name>jdk.naming.dns</name>
<depend>java.base</depend>
<depend>java.naming</depend>
--- a/nashorn/.hgtags Mon Apr 27 09:17:48 2015 -0700
+++ b/nashorn/.hgtags Tue May 05 13:29:12 2015 -0700
@@ -295,3 +295,4 @@
ea4e794c3927df4e03f53202e15a3248375b7902 jdk9-b59
c55ce3738888b6c7596780b7b2ad1aa0f9ebccd7 jdk9-b60
89937bee80bd28826de8cf60aa63a21edab63f79 jdk9-b61
+1b5604bc81a6161b1c3c9dd654cd1399474ae9ee jdk9-b62
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/CodeGenerator.java Mon Apr 27 09:17:48 2015 -0700
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/CodeGenerator.java Tue May 05 13:29:12 2015 -0700
@@ -4526,7 +4526,7 @@
}
if (addInitializer && !compiler.isOnDemandCompilation()) {
- compiler.addFunctionInitializer(data, functionNode);
+ functionNode.getCompileUnit().addFunctionInitializer(data, functionNode);
}
// We don't emit a ScriptFunction on stack for the outermost compiled function (as there's no code being
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/CompilationPhase.java Mon Apr 27 09:17:48 2015 -0700
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/CompilationPhase.java Tue May 05 13:29:12 2015 -0700
@@ -57,7 +57,6 @@
import jdk.nashorn.internal.ir.debug.PrintVisitor;
import jdk.nashorn.internal.ir.visitor.NodeVisitor;
import jdk.nashorn.internal.runtime.CodeInstaller;
-import jdk.nashorn.internal.runtime.FunctionInitializer;
import jdk.nashorn.internal.runtime.RecompilableScriptFunctionData;
import jdk.nashorn.internal.runtime.ScriptEnvironment;
import jdk.nashorn.internal.runtime.logging.DebugLogger;
@@ -581,18 +580,7 @@
continue;
}
unit.setCode(installedClasses.get(unit.getUnitClassName()));
- }
-
- if (!compiler.isOnDemandCompilation()) {
- // Initialize functions
- final Map<Integer, FunctionInitializer> initializers = compiler.getFunctionInitializers();
- if (initializers != null) {
- for (final Entry<Integer, FunctionInitializer> entry : initializers.entrySet()) {
- final FunctionInitializer initializer = entry.getValue();
- initializer.setCode(installedClasses.get(initializer.getClassName()));
- compiler.getScriptFunctionData(entry.getKey()).initializeCode(initializer);
- }
- }
+ unit.initializeFunctionsCode();
}
if (log.isEnabled()) {
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/CompileUnit.java Mon Apr 27 09:17:48 2015 -0700
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/CompileUnit.java Tue May 05 13:29:12 2015 -0700
@@ -26,10 +26,16 @@
package jdk.nashorn.internal.codegen;
import java.io.Serializable;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.IdentityHashMap;
+import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.TreeSet;
import jdk.nashorn.internal.ir.CompileUnitHolder;
+import jdk.nashorn.internal.ir.FunctionNode;
+import jdk.nashorn.internal.runtime.RecompilableScriptFunctionData;
/**
* Used to track split class compilation. Note that instances of the class are serializable, but all fields are
@@ -50,6 +56,8 @@
private transient Class<?> clazz;
+ private transient Map<FunctionNode, RecompilableScriptFunctionData> functions = new IdentityHashMap<>();
+
private transient boolean isUsed;
private static int emittedUnitCount;
@@ -121,6 +129,32 @@
this.classEmitter = null;
}
+ void addFunctionInitializer(final RecompilableScriptFunctionData data, final FunctionNode functionNode) {
+ functions.put(functionNode, data);
+ }
+
+ /**
+ * Returns true if this compile unit is responsible for initializing the specified function data with specified
+ * function node.
+ * @param data the function data to check
+ * @param functionNode the function node to check
+ * @return true if this unit is responsible for initializing the function data with the function node, otherwise
+ * false
+ */
+ public boolean isInitializing(final RecompilableScriptFunctionData data, final FunctionNode functionNode) {
+ return functions.get(functionNode) == data;
+ }
+
+ void initializeFunctionsCode() {
+ for(final Map.Entry<FunctionNode, RecompilableScriptFunctionData> entry : functions.entrySet()) {
+ entry.getValue().initializeCode(entry.getKey());
+ }
+ }
+
+ Collection<FunctionNode> getFunctionNodes() {
+ return Collections.unmodifiableCollection(functions.keySet());
+ }
+
/**
* Add weight to this compile unit
* @param w weight to add
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/Compiler.java Mon Apr 27 09:17:48 2015 -0700
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/Compiler.java Tue May 05 13:29:12 2015 -0700
@@ -565,7 +565,7 @@
* @return a copy of this compiler's current mapping of invalidated optimistic program points to their types.
*/
public Map<Integer, Type> getInvalidatedProgramPoints() {
- return invalidatedProgramPoints == null ? null : new TreeMap<>(invalidatedProgramPoints);
+ return invalidatedProgramPoints.isEmpty() ? null : new TreeMap<>(invalidatedProgramPoints);
}
TypeMap getTypeMap() {
@@ -704,21 +704,6 @@
return sb.toString();
}
- Map<Integer, FunctionInitializer> functionInitializers;
-
- void addFunctionInitializer(final RecompilableScriptFunctionData functionData, final FunctionNode functionNode) {
- if (functionInitializers == null) {
- functionInitializers = new HashMap<>();
- }
- if (!functionInitializers.containsKey(functionData)) {
- functionInitializers.put(functionData.getFunctionNodeId(), new FunctionInitializer(functionNode));
- }
- }
-
- Map<Integer, FunctionInitializer> getFunctionInitializers() {
- return functionInitializers;
- }
-
/**
* Persist current compilation with the given {@code cacheKey}.
* @param cacheKey cache key
@@ -726,15 +711,17 @@
*/
public void persistClassInfo(final String cacheKey, final FunctionNode functionNode) {
if (cacheKey != null && env._persistent_cache) {
- Map<Integer, FunctionInitializer> initializers;
// If this is an on-demand compilation create a function initializer for the function being compiled.
// Otherwise use function initializer map generated by codegen.
- if (functionInitializers == null) {
- initializers = new HashMap<>();
- final FunctionInitializer initializer = new FunctionInitializer(functionNode, getInvalidatedProgramPoints());
- initializers.put(functionNode.getId(), initializer);
+ Map<Integer, FunctionInitializer> initializers = new HashMap<>();
+ if (isOnDemandCompilation()) {
+ initializers.put(functionNode.getId(), new FunctionInitializer(functionNode, getInvalidatedProgramPoints()));
} else {
- initializers = functionInitializers;
+ for (final CompileUnit compileUnit : getCompileUnits()) {
+ for (final FunctionNode fn : compileUnit.getFunctionNodes()) {
+ initializers.put(fn.getId(), new FunctionInitializer(fn));
+ }
+ }
}
final String mainClassName = getFirstCompileUnit().getUnitClassName();
installer.storeScript(cacheKey, source, mainClassName, bytecode, initializers, constantData.toArray(), compilationId);
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/TypeEvaluator.java Mon Apr 27 09:17:48 2015 -0700
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/TypeEvaluator.java Tue May 05 13:29:12 2015 -0700
@@ -227,7 +227,8 @@
// gradually introduce them as needed. An easy one would be to do the same for .call(this) idiom.
final CallNode callExpr = (CallNode)expr;
final Expression fnExpr = callExpr.getFunction();
- if (fnExpr instanceof FunctionNode) {
+ // Skip evaluation if running with eager compilation as we may violate constraints in RecompilableScriptFunctionData
+ if (fnExpr instanceof FunctionNode && compiler.getContext().getEnv()._lazy_compilation) {
final FunctionNode fn = (FunctionNode)fnExpr;
if (callExpr.getArgs().isEmpty()) {
final RecompilableScriptFunctionData data = compiler.getScriptFunctionData(fn.getId());
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/Context.java Mon Apr 27 09:17:48 2015 -0700
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/Context.java Tue May 05 13:29:12 2015 -0700
@@ -1281,7 +1281,7 @@
compiler.persistClassInfo(cacheKey, compiledFunction);
} else {
Compiler.updateCompilationId(storedScript.getCompilationId());
- script = install(storedScript, source, installer);
+ script = storedScript.installScript(source, installer);
}
cacheClass(source, script);
@@ -1303,51 +1303,6 @@
}
/**
- * Install a previously compiled class from the code cache.
- *
- * @param storedScript cached script containing class bytes and constants
- * @return main script class
- */
- private static Class<?> install(final StoredScript storedScript, final Source source, final CodeInstaller<ScriptEnvironment> installer) {
-
- final Map<String, Class<?>> installedClasses = new HashMap<>();
- final Map<String, byte[]> classBytes = storedScript.getClassBytes();
- final Object[] constants = storedScript.getConstants();
- final String mainClassName = storedScript.getMainClassName();
- final byte[] mainClassBytes = classBytes.get(mainClassName);
- final Class<?> mainClass = installer.install(mainClassName, mainClassBytes);
- final Map<Integer, FunctionInitializer> initializers = storedScript.getInitializers();
-
- installedClasses.put(mainClassName, mainClass);
-
- for (final Map.Entry<String, byte[]> entry : classBytes.entrySet()) {
- final String className = entry.getKey();
- if (className.equals(mainClassName)) {
- continue;
- }
- final byte[] code = entry.getValue();
-
- installedClasses.put(className, installer.install(className, code));
- }
-
- installer.initialize(installedClasses.values(), source, constants);
-
- for (final Object constant : constants) {
- if (constant instanceof RecompilableScriptFunctionData) {
- final RecompilableScriptFunctionData data = (RecompilableScriptFunctionData) constant;
- data.initTransients(source, installer);
- final FunctionInitializer initializer = initializers.get(data.getFunctionNodeId());
- if (initializer != null) {
- initializer.setCode(installedClasses.get(initializer.getClassName()));
- data.initializeCode(initializer);
- }
- }
- }
-
- return mainClass;
- }
-
- /**
* Cache for compiled script classes.
*/
@SuppressWarnings("serial")
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/FunctionInitializer.java Mon Apr 27 09:17:48 2015 -0700
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/FunctionInitializer.java Tue May 05 13:29:12 2015 -0700
@@ -60,17 +60,6 @@
}
/**
- * Copy constructor.
- *
- * @param init original initializer
- */
- FunctionInitializer(final FunctionInitializer init) {
- this.className = init.getClassName();
- this.methodType = init.getMethodType();
- this.flags = init.getFlags();
- }
-
- /**
* Constructor.
*
* @param functionNode the function node
@@ -130,7 +119,7 @@
* Set the class implementing the function
* @param code the class
*/
- public void setCode(final Class<?> code) {
+ void setCode(final Class<?> code) {
// Make sure code has not been set and has expected class name
if (this.code != null) {
throw new IllegalStateException("code already set");
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/RecompilableScriptFunctionData.java Mon Apr 27 09:17:48 2015 -0700
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/RecompilableScriptFunctionData.java Tue May 05 13:29:12 2015 -0700
@@ -32,7 +32,6 @@
import java.lang.invoke.MethodType;
import java.util.Collection;
import java.util.Collections;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
@@ -503,7 +502,7 @@
if (script != null) {
Compiler.updateCompilationId(script.getCompilationId());
- return installStoredScript(script, newInstaller);
+ return script.installFunction(this, newInstaller);
}
}
@@ -518,56 +517,6 @@
return new FunctionInitializer(compiledFn, compiler.getInvalidatedProgramPoints());
}
- private static Map<String, Class<?>> installStoredScriptClasses(final StoredScript script, final CodeInstaller<ScriptEnvironment> installer) {
- final Map<String, Class<?>> installedClasses = new HashMap<>();
- final Map<String, byte[]> classBytes = script.getClassBytes();
- final String mainClassName = script.getMainClassName();
- final byte[] mainClassBytes = classBytes.get(mainClassName);
-
- final Class<?> mainClass = installer.install(mainClassName, mainClassBytes);
-
- installedClasses.put(mainClassName, mainClass);
-
- for (final Map.Entry<String, byte[]> entry : classBytes.entrySet()) {
- final String className = entry.getKey();
- final byte[] bytecode = entry.getValue();
-
- if (className.equals(mainClassName)) {
- continue;
- }
-
- installedClasses.put(className, installer.install(className, bytecode));
- }
- return installedClasses;
- }
-
- /**
- * Install this script using the given {@code installer}.
- *
- * @param script the compiled script
- * @return the function initializer
- */
- private FunctionInitializer installStoredScript(final StoredScript script, final CodeInstaller<ScriptEnvironment> newInstaller) {
- final Map<String, Class<?>> installedClasses = installStoredScriptClasses(script, newInstaller);
-
- final Map<Integer, FunctionInitializer> initializers = script.getInitializers();
- assert initializers != null;
- assert initializers.size() == 1;
- final FunctionInitializer initializer = initializers.values().iterator().next();
-
- final Object[] constants = script.getConstants();
- for (int i = 0; i < constants.length; i++) {
- if (constants[i] instanceof RecompilableScriptFunctionData) {
- // replace deserialized function data with the ones we already have
- constants[i] = getScriptFunctionData(((RecompilableScriptFunctionData) constants[i]).getFunctionNodeId());
- }
- }
-
- newInstaller.initialize(installedClasses.values(), source, constants);
- initializer.setCode(installedClasses.get(initializer.getClassName()));
- return initializer;
- }
-
boolean usePersistentCodeCache() {
final ScriptEnvironment env = installer.getOwner();
return env._persistent_cache && env._optimistic_types;
@@ -645,13 +594,21 @@
* by the compiler internals in Nashorn and is public for implementation reasons only. Attempting to invoke it
* externally will result in an exception.
*
- * @param initializer FunctionInitializer for this data
+ * @param functionNode FunctionNode for this data
*/
- public void initializeCode(final FunctionInitializer initializer) {
+ public void initializeCode(final FunctionNode functionNode) {
// Since the method is public, we double-check that we aren't invoked with an inappropriate compile unit.
- if(!code.isEmpty()) {
+ if (!code.isEmpty() || functionNode.getId() != functionNodeId || !functionNode.getCompileUnit().isInitializing(this, functionNode)) {
throw new IllegalStateException(name);
}
+ addCode(lookup(functionNode), null, null, functionNode.getFlags());
+ }
+
+ /**
+ * Initializes this function with the given function code initializer.
+ * @param initializer function code initializer
+ */
+ void initializeCode(final FunctionInitializer initializer) {
addCode(lookup(initializer, true), null, null, initializer.getFlags());
}
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/StoredScript.java Mon Apr 27 09:17:48 2015 -0700
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/StoredScript.java Tue May 05 13:29:12 2015 -0700
@@ -27,7 +27,7 @@
import java.io.Serializable;
import java.util.Arrays;
-import java.util.LinkedHashMap;
+import java.util.HashMap;
import java.util.Map;
/**
@@ -77,44 +77,70 @@
return compilationId;
}
- /**
- * Returns the main class name.
- * @return the main class name
- */
- public String getMainClassName() {
- return mainClassName;
+ private Map<String, Class<?>> installClasses(final Source source, final CodeInstaller<ScriptEnvironment> installer) {
+ final Map<String, Class<?>> installedClasses = new HashMap<>();
+ final byte[] mainClassBytes = classBytes.get(mainClassName);
+ final Class<?> mainClass = installer.install(mainClassName, mainClassBytes);
+
+ installedClasses.put(mainClassName, mainClass);
+
+ for (final Map.Entry<String, byte[]> entry : classBytes.entrySet()) {
+ final String className = entry.getKey();
+
+ if (!className.equals(mainClassName)) {
+ installedClasses.put(className, installer.install(className, entry.getValue()));
+ }
+ }
+
+ installer.initialize(installedClasses.values(), source, constants);
+ return installedClasses;
+ }
+
+ FunctionInitializer installFunction(final RecompilableScriptFunctionData data, final CodeInstaller<ScriptEnvironment> installer) {
+ final Map<String, Class<?>> installedClasses = installClasses(data.getSource(), installer);
+
+ assert initializers != null;
+ assert initializers.size() == 1;
+ final FunctionInitializer initializer = initializers.values().iterator().next();
+
+ for (int i = 0; i < constants.length; i++) {
+ if (constants[i] instanceof RecompilableScriptFunctionData) {
+ // replace deserialized function data with the ones we already have
+ final RecompilableScriptFunctionData newData = data.getScriptFunctionData(((RecompilableScriptFunctionData) constants[i]).getFunctionNodeId());
+ assert newData != null;
+ newData.initTransients(data.getSource(), installer);
+ constants[i] = newData;
+ }
+ }
+
+ initializer.setCode(installedClasses.get(initializer.getClassName()));
+ return initializer;
}
/**
- * Returns a map of class names to class bytes.
- * @return map of class bytes
- */
- public Map<String, byte[]> getClassBytes() {
- final Map<String, byte[]> clonedMap = new LinkedHashMap<>();
- for (final Map.Entry<String, byte[]> entry : classBytes.entrySet()) {
- clonedMap.put(entry.getKey(), entry.getValue().clone());
- }
- return clonedMap;
- }
-
- /**
- * Returns the constants array.
- * @return constants array
+ * Install as script.
+ *
+ * @param source the source
+ * @param installer the installer
+ * @return main script class
*/
- public Object[] getConstants() {
- return constants.clone();
- }
+ Class<?> installScript(final Source source, final CodeInstaller<ScriptEnvironment> installer) {
+
+ final Map<String, Class<?>> installedClasses = installClasses(source, installer);
- /**
- * Returns the function initializers map.
- * @return The initializers map.
- */
- public Map<Integer, FunctionInitializer> getInitializers() {
- final Map<Integer, FunctionInitializer> clonedMap = new LinkedHashMap<>();
- for (final Map.Entry<Integer, FunctionInitializer> entry : initializers.entrySet()) {
- clonedMap.put(entry.getKey(), new FunctionInitializer(entry.getValue()));
+ for (final Object constant : constants) {
+ if (constant instanceof RecompilableScriptFunctionData) {
+ final RecompilableScriptFunctionData data = (RecompilableScriptFunctionData) constant;
+ data.initTransients(source, installer);
+ final FunctionInitializer initializer = initializers.get(data.getFunctionNodeId());
+ if (initializer != null) {
+ initializer.setCode(installedClasses.get(initializer.getClassName()));
+ data.initializeCode(initializer);
+ }
+ }
}
- return clonedMap;
+
+ return installedClasses.get(mainClassName);
}
@Override
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/regexp/RegExpFactory.java Mon Apr 27 09:17:48 2015 -0700
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/regexp/RegExpFactory.java Tue May 05 13:29:12 2015 -0700
@@ -26,7 +26,7 @@
package jdk.nashorn.internal.runtime.regexp;
import java.util.Collections;
-import java.util.Set;
+import java.util.Map;
import java.util.WeakHashMap;
import jdk.nashorn.internal.runtime.ParserException;
import jdk.nashorn.internal.runtime.options.Options;
@@ -45,11 +45,10 @@
/** Weak cache of already validated regexps - when reparsing, we don't, for example
* need to recompile (reverify) all regexps that have previously been parsed by this
* RegExpFactory in a previous compilation. This saves significant time in e.g. avatar
- * startup */
- private static final Set<String> VALID_CACHE_SET =
- Collections.newSetFromMap(
- Collections.synchronizedMap(
- new WeakHashMap<String, Boolean>()));
+ * startup
+ */
+ private static final Map<String, RegExp> REGEXP_CACHE =
+ Collections.synchronizedMap(new WeakHashMap<String, RegExp>());
static {
final String impl = Options.getStringProperty("nashorn.regexp.impl", JONI);
@@ -87,7 +86,13 @@
* @throws ParserException if invalid source or flags
*/
public static RegExp create(final String pattern, final String flags) {
- return instance.compile(pattern, flags);
+ final String key = pattern + "/" + flags;
+ RegExp regexp = REGEXP_CACHE.get(key);
+ if (regexp == null) {
+ regexp = instance.compile(pattern, flags);
+ REGEXP_CACHE.put(key, regexp);
+ }
+ return regexp;
}
/**
@@ -98,11 +103,8 @@
*
* @throws ParserException if invalid source or flags
*/
- // @SuppressWarnings({"unused"})
public static void validate(final String pattern, final String flags) throws ParserException {
- if (VALID_CACHE_SET.add(pattern + flags)) {
- instance.compile(pattern, flags);
- }
+ create(pattern, flags);
}
/**
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/basic/JDK-8053905.js Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,38 @@
+/*
+ * 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.
+ */
+
+/**
+ * JDK-8053905: Eager code generation fails for earley boyer with split threshold set to 1000
+ *
+ * @test
+ * @runif external.octane
+ * @fork
+ * @option -Dnashorn.compiler.splitter.threshold=1000
+ * @option -scripting
+ * @option --lazy-compilation=false
+ */
+
+var fn = __DIR__ + 'compile-octane.js';
+arguments.push("earley-boyer"); // run only earley-boyer
+var url = new java.io.File(fn).toURL();
+load(url);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/basic/JDK-8053905.js.EXPECTED Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,2 @@
+Compiling 'earley-boyer'...
+Done.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/basic/JDK-8066407.js Tue May 05 13:29:12 2015 -0700
@@ -0,0 +1,48 @@
+/*
+ * 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.
+ */
+
+/**
+ * JDK-8066407: Function with same body not reparsed after SyntaxError
+ *
+ * @test
+ * @run
+ */
+
+function testFunction(body) {
+ try {
+ Function(body);
+ Assert.fail("Should have thrown");
+ } catch (e) {
+ Assert.assertEquals(e.name, "SyntaxError");
+ count++;
+ }
+
+}
+
+var count = 0;
+
+testFunction("/a/r");
+testFunction("/a/r");
+testFunction("/a/r");
+
+Assert.assertTrue(count === 3);
--- a/nashorn/test/script/basic/compile-octane-splitter.js Mon Apr 27 09:17:48 2015 -0700
+++ b/nashorn/test/script/basic/compile-octane-splitter.js Tue May 05 13:29:12 2015 -0700
@@ -29,11 +29,10 @@
* forever, so make this test future safe, we specify them explicitly
*
* @test
- * @fork
- * @option -Dnashorn.compiler.splitter.threshold=1000
+ * @runif external.octane
* @fork
- * @runif external.octane
* @option -scripting
+ * @option -Dnashorn.compiler.splitter.threshold=1000
* @option -Dnashorn.typeInfo.disabled=true
* @option --class-cache-size=0
* @option --persistent-code-cache=false
--- a/test/lib/sun/hotspot/WhiteBox.java Mon Apr 27 09:17:48 2015 -0700
+++ b/test/lib/sun/hotspot/WhiteBox.java Tue May 05 13:29:12 2015 -0700
@@ -32,6 +32,7 @@
import java.util.function.Function;
import java.util.stream.Stream;
import java.security.BasicPermission;
+import java.util.Objects;
import sun.hotspot.parser.DiagnosticCommand;
@@ -74,11 +75,27 @@
public native void printHeapSizes();
// Memory
- public native long getObjectAddress(Object o);
+ private native long getObjectAddress0(Object o);
+ public long getObjectAddress(Object o) {
+ Objects.requireNonNull(o);
+ return getObjectAddress0(o);
+ }
+
public native int getHeapOopSize();
public native int getVMPageSize();
- public native boolean isObjectInOldGen(Object o);
- public native long getObjectSize(Object o);
+ public native long getVMLargePageSize();
+
+ private native boolean isObjectInOldGen0(Object o);
+ public boolean isObjectInOldGen(Object o) {
+ Objects.requireNonNull(o);
+ return isObjectInOldGen0(o);
+ }
+
+ private native long getObjectSize0(Object o);
+ public long getObjectSize(Object o) {
+ Objects.requireNonNull(o);
+ return getObjectSize0(o);
+ }
// Runtime
// Make sure class name is in the correct format
@@ -86,21 +103,45 @@
return isClassAlive0(name.replace('.', '/'));
}
private native boolean isClassAlive0(String name);
- public native boolean isMonitorInflated(Object obj);
+
+ private native boolean isMonitorInflated0(Object obj);
+ public boolean isMonitorInflated(Object obj) {
+ Objects.requireNonNull(obj);
+ return isMonitorInflated0(obj);
+ }
+
public native void forceSafepoint();
// JVMTI
- public native void addToBootstrapClassLoaderSearch(String segment);
- public native void addToSystemClassLoaderSearch(String segment);
+ private native void addToBootstrapClassLoaderSearch0(String segment);
+ public void addToBootstrapClassLoaderSearch(String segment){
+ Objects.requireNonNull(segment);
+ addToBootstrapClassLoaderSearch0(segment);
+ }
+
+ private native void addToSystemClassLoaderSearch0(String segment);
+ public void addToSystemClassLoaderSearch(String segment) {
+ Objects.requireNonNull(segment);
+ addToSystemClassLoaderSearch0(segment);
+ }
// G1
public native boolean g1InConcurrentMark();
- public native boolean g1IsHumongous(Object o);
+ private native boolean g1IsHumongous0(Object o);
+ public boolean g1IsHumongous(Object o) {
+ Objects.requireNonNull(o);
+ return g1IsHumongous0(o);
+ }
+
public native long g1NumMaxRegions();
public native long g1NumFreeRegions();
public native int g1RegionSize();
public native MemoryUsage g1AuxiliaryMemoryUsage();
- public native Object[] parseCommandLine(String commandline, char delim, DiagnosticCommand[] args);
+ private native Object[] parseCommandLine0(String commandline, char delim, DiagnosticCommand[] args);
+ public Object[] parseCommandLine(String commandline, char delim, DiagnosticCommand[] args) {
+ Objects.requireNonNull(args);
+ return parseCommandLine0(commandline, delim, args);
+ }
// NMT
public native long NMTMalloc(long size);
@@ -119,45 +160,93 @@
public boolean isMethodCompiled(Executable method) {
return isMethodCompiled(method, false /*not osr*/);
}
- public native boolean isMethodCompiled(Executable method, boolean isOsr);
+ private native boolean isMethodCompiled0(Executable method, boolean isOsr);
+ public boolean isMethodCompiled(Executable method, boolean isOsr){
+ Objects.requireNonNull(method);
+ return isMethodCompiled0(method, isOsr);
+ }
public boolean isMethodCompilable(Executable method) {
return isMethodCompilable(method, -1 /*any*/);
}
public boolean isMethodCompilable(Executable method, int compLevel) {
return isMethodCompilable(method, compLevel, false /*not osr*/);
}
- public native boolean isMethodCompilable(Executable method, int compLevel, boolean isOsr);
- public native boolean isMethodQueuedForCompilation(Executable method);
+ private native boolean isMethodCompilable0(Executable method, int compLevel, boolean isOsr);
+ public boolean isMethodCompilable(Executable method, int compLevel, boolean isOsr) {
+ Objects.requireNonNull(method);
+ return isMethodCompilable0(method, compLevel, isOsr);
+ }
+ private native boolean isMethodQueuedForCompilation0(Executable method);
+ public boolean isMethodQueuedForCompilation(Executable method) {
+ Objects.requireNonNull(method);
+ return isMethodQueuedForCompilation0(method);
+ }
public int deoptimizeMethod(Executable method) {
return deoptimizeMethod(method, false /*not osr*/);
}
- public native int deoptimizeMethod(Executable method, boolean isOsr);
+ private native int deoptimizeMethod0(Executable method, boolean isOsr);
+ public int deoptimizeMethod(Executable method, boolean isOsr) {
+ Objects.requireNonNull(method);
+ return deoptimizeMethod0(method, isOsr);
+ }
public void makeMethodNotCompilable(Executable method) {
makeMethodNotCompilable(method, -1 /*any*/);
}
public void makeMethodNotCompilable(Executable method, int compLevel) {
makeMethodNotCompilable(method, compLevel, false /*not osr*/);
}
- public native void makeMethodNotCompilable(Executable method, int compLevel, boolean isOsr);
+ private native void makeMethodNotCompilable0(Executable method, int compLevel, boolean isOsr);
+ public void makeMethodNotCompilable(Executable method, int compLevel, boolean isOsr) {
+ Objects.requireNonNull(method);
+ makeMethodNotCompilable0(method, compLevel, isOsr);
+ }
public int getMethodCompilationLevel(Executable method) {
return getMethodCompilationLevel(method, false /*not ost*/);
}
- public native int getMethodCompilationLevel(Executable method, boolean isOsr);
- public native boolean testSetDontInlineMethod(Executable method, boolean value);
+ private native int getMethodCompilationLevel0(Executable method, boolean isOsr);
+ public int getMethodCompilationLevel(Executable method, boolean isOsr) {
+ Objects.requireNonNull(method);
+ return getMethodCompilationLevel0(method, isOsr);
+ }
+ private native boolean testSetDontInlineMethod0(Executable method, boolean value);
+ public boolean testSetDontInlineMethod(Executable method, boolean value) {
+ Objects.requireNonNull(method);
+ return testSetDontInlineMethod0(method, value);
+ }
public int getCompileQueuesSize() {
return getCompileQueueSize(-1 /*any*/);
}
public native int getCompileQueueSize(int compLevel);
- public native boolean testSetForceInlineMethod(Executable method, boolean value);
+ private native boolean testSetForceInlineMethod0(Executable method, boolean value);
+ public boolean testSetForceInlineMethod(Executable method, boolean value) {
+ Objects.requireNonNull(method);
+ return testSetForceInlineMethod0(method, value);
+ }
public boolean enqueueMethodForCompilation(Executable method, int compLevel) {
return enqueueMethodForCompilation(method, compLevel, -1 /*InvocationEntryBci*/);
}
- public native boolean enqueueMethodForCompilation(Executable method, int compLevel, int entry_bci);
- public native void clearMethodState(Executable method);
+ private native boolean enqueueMethodForCompilation0(Executable method, int compLevel, int entry_bci);
+ public boolean enqueueMethodForCompilation(Executable method, int compLevel, int entry_bci) {
+ Objects.requireNonNull(method);
+ return enqueueMethodForCompilation0(method, compLevel, entry_bci);
+ }
+ private native void clearMethodState0(Executable method);
+ public void clearMethodState(Executable method) {
+ Objects.requireNonNull(method);
+ clearMethodState0(method);
+ }
public native void lockCompilation();
public native void unlockCompilation();
- public native int getMethodEntryBci(Executable method);
- public native Object[] getNMethod(Executable method, boolean isOsr);
+ private native int getMethodEntryBci0(Executable method);
+ public int getMethodEntryBci(Executable method) {
+ Objects.requireNonNull(method);
+ return getMethodEntryBci0(method);
+ }
+ private native Object[] getNMethod0(Executable method, boolean isOsr);
+ public Object[] getNMethod(Executable method, boolean isOsr) {
+ Objects.requireNonNull(method);
+ return getNMethod0(method, isOsr);
+ }
public native long allocateCodeBlob(int size, int type);
public long allocateCodeBlob(long size, int type) {
int intSize = (int) size;
@@ -168,14 +257,7 @@
return allocateCodeBlob( intSize, type);
}
public native void freeCodeBlob(long addr);
- public void forceNMethodSweep() {
- try {
- forceNMethodSweep0().join();
- } catch (InterruptedException e) {
- Thread.currentThread().interrupt();
- }
- }
- public native Thread forceNMethodSweep0();
+ public native void forceNMethodSweep();
public native Object[] getCodeHeapEntries(int type);
public native int getCompilationActivityMode();
public native Object[] getCodeBlob(long addr);
@@ -213,7 +295,11 @@
// Native extensions
public native long getHeapUsageForContext(int context);
public native long getHeapRegionCountForContext(int context);
- public native int getContextForObject(Object obj);
+ private native int getContextForObject0(Object obj);
+ public int getContextForObject(Object obj) {
+ Objects.requireNonNull(obj);
+ return getContextForObject0(obj);
+ }
public native void printRegionInfo(int context);
// VM flags