Merge
This commit is contained in:
commit
b8b3bad42d
@ -435,3 +435,4 @@ d67a3f1f057f7e31e12f33ebe3667cb73d252268 jdk-10+13
|
||||
1fd5901544acc50bb30fde9388c8e53cb7c449e4 jdk-10+14
|
||||
84777531d994ef70163d35078ec9c4127f2eadb5 jdk-9+176
|
||||
a4371edb589c60db01142e45c317adb9ccbcb083 jdk-9+177
|
||||
a6c830ee8a6798b186730475e700027cdf4598aa jdk-10+15
|
||||
|
@ -996,14 +996,18 @@ AC_DEFUN([FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK_HELPER],
|
||||
$2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_DARWIN_C_SOURCE -D_XOPEN_SOURCE"
|
||||
$2JVM_CFLAGS="[$]$2JVM_CFLAGS -fno-rtti -fno-exceptions -fvisibility=hidden \
|
||||
-mno-omit-leaf-frame-pointer -mstack-alignment=16 -pipe -fno-strict-aliasing \
|
||||
-DMAC_OS_X_VERSION_MAX_ALLOWED=1070 -mmacosx-version-min=10.7.0 \
|
||||
-fno-omit-frame-pointer"
|
||||
elif test "x$OPENJDK_$1_OS" = xaix; then
|
||||
$2JVM_CFLAGS="[$]$2JVM_CFLAGS -DAIX"
|
||||
# We may need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows.
|
||||
$2JVM_CFLAGS="[$]$2JVM_CFLAGS -qtune=balanced \
|
||||
-qalias=noansi -qstrict -qtls=default -qlanglvl=c99vla \
|
||||
-qlanglvl=noredefmac -qnortti -qnoeh -qignerrno"
|
||||
# We need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows.
|
||||
# Hotspot now overflows its 64K TOC (currently only for slowdebug),
|
||||
# so for slowdebug we build with '-qpic=large -bbigtoc'.
|
||||
if test "x$DEBUG_LEVEL" = xslowdebug; then
|
||||
$2JVM_CFLAGS="[$]$2JVM_CFLAGS -qpic=large"
|
||||
fi
|
||||
elif test "x$OPENJDK_$1_OS" = xbsd; then
|
||||
$2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE"
|
||||
elif test "x$OPENJDK_$1_OS" = xwindows; then
|
||||
@ -1081,18 +1085,50 @@ AC_DEFUN([FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK_HELPER],
|
||||
|
||||
# Additional macosx handling
|
||||
if test "x$OPENJDK_$1_OS" = xmacosx; then
|
||||
# Setting these parameters makes it an error to link to macosx APIs that are
|
||||
# newer than the given OS version and makes the linked binaries compatible
|
||||
# even if built on a newer version of the OS.
|
||||
# The expected format is X.Y.Z
|
||||
# MACOSX_VERSION_MIN is the c++ and ld is -mmacosx-version-min argument. The expected
|
||||
# format is X.Y.Z. It's hard-coded to the minimum OSX version on which the
|
||||
# JDK can be built and makes the linked binaries compatible even if built on
|
||||
# a newer version of the OS.
|
||||
MACOSX_VERSION_MIN=10.7.0
|
||||
AC_SUBST(MACOSX_VERSION_MIN)
|
||||
|
||||
# The macro takes the version with no dots, ex: 1070
|
||||
# Setting --with-macosx-version-max=<version> makes it an error to build or
|
||||
# link to macosx APIs that are newer than the given OS version. The expected
|
||||
# format for <version> is either nn.n.n or nn.nn.nn. See /usr/include/AvailabilityMacros.h.
|
||||
AC_ARG_WITH([macosx-version-max], [AS_HELP_STRING([--with-macosx-version-max],
|
||||
[error on use of newer functionality. @<:@macosx@:>@])],
|
||||
[
|
||||
if echo "$with_macosx_version_max" | $GREP -q "^[[0-9]][[0-9]]\.[[0-9]]\.[[0-9]]\$"; then
|
||||
MACOSX_VERSION_MAX=$with_macosx_version_max
|
||||
elif echo "$with_macosx_version_max" | $GREP -q "^[[0-9]][[0-9]]\.[[0-9]][[0-9]]\.[[0-9]][[0-9]]\$"; then
|
||||
MACOSX_VERSION_MAX=$with_macosx_version_max
|
||||
elif test "x$with_macosx_version_max" = "xno"; then
|
||||
# Use build system default
|
||||
MACOSX_VERSION_MAX=
|
||||
else
|
||||
AC_MSG_ERROR([osx version format must be nn.n.n or nn.nn.nn])
|
||||
fi
|
||||
],
|
||||
[MACOSX_VERSION_MAX=]
|
||||
)
|
||||
AC_SUBST(MACOSX_VERSION_MAX)
|
||||
|
||||
# Let the flags variables get resolved in make for easier override on make
|
||||
# command line.
|
||||
$2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
|
||||
# command line. AvailabilityMacros.h versions have no dots, ex: 1070.
|
||||
$2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK \
|
||||
-DMAC_OS_X_VERSION_MIN_REQUIRED=\$(subst .,,\$(MACOSX_VERSION_MIN)) \
|
||||
-mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
|
||||
$2LDFLAGS_JDK="[$]$2LDFLAGS_JDK -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
|
||||
$2JVM_CFLAGS="[$]$2JVM_CFLAGS \
|
||||
-DMAC_OS_X_VERSION_MIN_REQUIRED=\$(subst .,,\$(MACOSX_VERSION_MIN)) \
|
||||
-mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
|
||||
|
||||
if test -n "$MACOSX_VERSION_MAX"; then
|
||||
$2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK \
|
||||
-DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MAX))"
|
||||
$2JVM_CFLAGS="[$]$2JVM_CFLAGS \
|
||||
-DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MAX))"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Setup some hard coded includes
|
||||
@ -1218,6 +1254,12 @@ AC_DEFUN([FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK_HELPER],
|
||||
LDFLAGS_XLC="-b64 -brtl -bnolibpath -bexpall -bernotok"
|
||||
$2LDFLAGS_JDK="${$2LDFLAGS_JDK} $LDFLAGS_XLC"
|
||||
$2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_XLC"
|
||||
# We need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows.
|
||||
# Hotspot now overflows its 64K TOC (currently only for slowdebug),
|
||||
# so for slowdebug we build with '-qpic=large -bbigtoc'.
|
||||
if test "x$DEBUG_LEVEL" = xslowdebug; then
|
||||
$2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -bbigtoc"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Customize LDFLAGS for executables
|
||||
|
@ -749,6 +749,7 @@ CXXFLAGS_JDKEXE
|
||||
CXXFLAGS_JDKLIB
|
||||
CFLAGS_JDKEXE
|
||||
CFLAGS_JDKLIB
|
||||
MACOSX_VERSION_MAX
|
||||
MACOSX_VERSION_MIN
|
||||
CXXSTD_CXXFLAG
|
||||
JDK_ARCH_ABI_PROP_NAME
|
||||
@ -1182,6 +1183,7 @@ with_toolchain_version
|
||||
with_build_devkit
|
||||
with_jtreg
|
||||
with_abi_profile
|
||||
with_macosx_version_max
|
||||
enable_warnings_as_errors
|
||||
with_native_debug_symbols
|
||||
enable_debug_symbols
|
||||
@ -2132,6 +2134,8 @@ Optional Packages:
|
||||
(arm-vfp-sflt,arm-vfp-hflt,arm-sflt,
|
||||
armv5-vfp-sflt,armv6-vfp-hflt,arm64,aarch64)
|
||||
[toolchain dependent]
|
||||
--with-macosx-version-max
|
||||
error on use of newer functionality. [macosx]
|
||||
--with-native-debug-symbols
|
||||
set the native debug symbol configuration (none,
|
||||
internal, external, zipped) [varying]
|
||||
@ -5010,7 +5014,7 @@ TOOLCHAIN_DESCRIPTION_xlc="IBM XL C/C++"
|
||||
|
||||
# Minimum supported versions, empty means unspecified
|
||||
TOOLCHAIN_MINIMUM_VERSION_clang="3.2"
|
||||
TOOLCHAIN_MINIMUM_VERSION_gcc="4.3"
|
||||
TOOLCHAIN_MINIMUM_VERSION_gcc="4.7"
|
||||
TOOLCHAIN_MINIMUM_VERSION_microsoft="16.00.30319.01" # VS2010
|
||||
TOOLCHAIN_MINIMUM_VERSION_solstudio="5.13"
|
||||
TOOLCHAIN_MINIMUM_VERSION_xlc=""
|
||||
@ -5189,7 +5193,7 @@ VS_SDK_PLATFORM_NAME_2013=
|
||||
#CUSTOM_AUTOCONF_INCLUDE
|
||||
|
||||
# Do not change or remove the following line, it is needed for consistency checks:
|
||||
DATE_WHEN_GENERATED=1496926402
|
||||
DATE_WHEN_GENERATED=1500423205
|
||||
|
||||
###############################################################################
|
||||
#
|
||||
@ -51461,14 +51465,18 @@ $as_echo "$as_me: GCC >= 6 detected; adding ${NO_DELETE_NULL_POINTER_CHECKS_CFLA
|
||||
JVM_CFLAGS="$JVM_CFLAGS -D_DARWIN_C_SOURCE -D_XOPEN_SOURCE"
|
||||
JVM_CFLAGS="$JVM_CFLAGS -fno-rtti -fno-exceptions -fvisibility=hidden \
|
||||
-mno-omit-leaf-frame-pointer -mstack-alignment=16 -pipe -fno-strict-aliasing \
|
||||
-DMAC_OS_X_VERSION_MAX_ALLOWED=1070 -mmacosx-version-min=10.7.0 \
|
||||
-fno-omit-frame-pointer"
|
||||
elif test "x$OPENJDK_TARGET_OS" = xaix; then
|
||||
JVM_CFLAGS="$JVM_CFLAGS -DAIX"
|
||||
# We may need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows.
|
||||
JVM_CFLAGS="$JVM_CFLAGS -qtune=balanced \
|
||||
-qalias=noansi -qstrict -qtls=default -qlanglvl=c99vla \
|
||||
-qlanglvl=noredefmac -qnortti -qnoeh -qignerrno"
|
||||
# We need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows.
|
||||
# Hotspot now overflows its 64K TOC (currently only for slowdebug),
|
||||
# so for slowdebug we build with '-qpic=large -bbigtoc'.
|
||||
if test "x$DEBUG_LEVEL" = xslowdebug; then
|
||||
JVM_CFLAGS="$JVM_CFLAGS -qpic=large"
|
||||
fi
|
||||
elif test "x$OPENJDK_TARGET_OS" = xbsd; then
|
||||
COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE"
|
||||
elif test "x$OPENJDK_TARGET_OS" = xwindows; then
|
||||
@ -51635,18 +51643,54 @@ $as_echo "$as_me: GCC >= 6 detected; adding ${NO_DELETE_NULL_POINTER_CHECKS_CFLA
|
||||
|
||||
# Additional macosx handling
|
||||
if test "x$OPENJDK_TARGET_OS" = xmacosx; then
|
||||
# Setting these parameters makes it an error to link to macosx APIs that are
|
||||
# newer than the given OS version and makes the linked binaries compatible
|
||||
# even if built on a newer version of the OS.
|
||||
# The expected format is X.Y.Z
|
||||
# MACOSX_VERSION_MIN is the c++ and ld is -mmacosx-version-min argument. The expected
|
||||
# format is X.Y.Z. It's hard-coded to the minimum OSX version on which the
|
||||
# JDK can be built and makes the linked binaries compatible even if built on
|
||||
# a newer version of the OS.
|
||||
MACOSX_VERSION_MIN=10.7.0
|
||||
|
||||
|
||||
# The macro takes the version with no dots, ex: 1070
|
||||
# Setting --with-macosx-version-max=<version> makes it an error to build or
|
||||
# link to macosx APIs that are newer than the given OS version. The expected
|
||||
# format for <version> is either nn.n.n or nn.nn.nn. See /usr/include/AvailabilityMacros.h.
|
||||
|
||||
# Check whether --with-macosx-version-max was given.
|
||||
if test "${with_macosx_version_max+set}" = set; then :
|
||||
withval=$with_macosx_version_max;
|
||||
if echo "$with_macosx_version_max" | $GREP -q "^[0-9][0-9]\.[0-9]\.[0-9]\$"; then
|
||||
MACOSX_VERSION_MAX=$with_macosx_version_max
|
||||
elif echo "$with_macosx_version_max" | $GREP -q "^[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]\$"; then
|
||||
MACOSX_VERSION_MAX=$with_macosx_version_max
|
||||
elif test "x$with_macosx_version_max" = "xno"; then
|
||||
# Use build system default
|
||||
MACOSX_VERSION_MAX=
|
||||
else
|
||||
as_fn_error $? "osx version format must be nn.n.n or nn.nn.nn" "$LINENO" 5
|
||||
fi
|
||||
|
||||
else
|
||||
MACOSX_VERSION_MAX=
|
||||
|
||||
fi
|
||||
|
||||
|
||||
|
||||
# Let the flags variables get resolved in make for easier override on make
|
||||
# command line.
|
||||
COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
|
||||
# command line. AvailabilityMacros.h versions have no dots, ex: 1070.
|
||||
COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK \
|
||||
-DMAC_OS_X_VERSION_MIN_REQUIRED=\$(subst .,,\$(MACOSX_VERSION_MIN)) \
|
||||
-mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
|
||||
LDFLAGS_JDK="$LDFLAGS_JDK -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
|
||||
JVM_CFLAGS="$JVM_CFLAGS \
|
||||
-DMAC_OS_X_VERSION_MIN_REQUIRED=\$(subst .,,\$(MACOSX_VERSION_MIN)) \
|
||||
-mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
|
||||
|
||||
if test -n "$MACOSX_VERSION_MAX"; then
|
||||
COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK \
|
||||
-DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MAX))"
|
||||
JVM_CFLAGS="$JVM_CFLAGS \
|
||||
-DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MAX))"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Setup some hard coded includes
|
||||
@ -51772,6 +51816,12 @@ $as_echo "$as_me: GCC >= 6 detected; adding ${NO_DELETE_NULL_POINTER_CHECKS_CFLA
|
||||
LDFLAGS_XLC="-b64 -brtl -bnolibpath -bexpall -bernotok"
|
||||
LDFLAGS_JDK="${LDFLAGS_JDK} $LDFLAGS_XLC"
|
||||
JVM_LDFLAGS="$JVM_LDFLAGS $LDFLAGS_XLC"
|
||||
# We need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows.
|
||||
# Hotspot now overflows its 64K TOC (currently only for slowdebug),
|
||||
# so for slowdebug we build with '-qpic=large -bbigtoc'.
|
||||
if test "x$DEBUG_LEVEL" = xslowdebug; then
|
||||
JVM_LDFLAGS="$JVM_LDFLAGS -bbigtoc"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Customize LDFLAGS for executables
|
||||
@ -52279,14 +52329,18 @@ $as_echo "$as_me: GCC >= 6 detected; adding ${NO_DELETE_NULL_POINTER_CHECKS_CFLA
|
||||
OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -D_DARWIN_C_SOURCE -D_XOPEN_SOURCE"
|
||||
OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -fno-rtti -fno-exceptions -fvisibility=hidden \
|
||||
-mno-omit-leaf-frame-pointer -mstack-alignment=16 -pipe -fno-strict-aliasing \
|
||||
-DMAC_OS_X_VERSION_MAX_ALLOWED=1070 -mmacosx-version-min=10.7.0 \
|
||||
-fno-omit-frame-pointer"
|
||||
elif test "x$OPENJDK_BUILD_OS" = xaix; then
|
||||
OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -DAIX"
|
||||
# We may need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows.
|
||||
OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -qtune=balanced \
|
||||
-qalias=noansi -qstrict -qtls=default -qlanglvl=c99vla \
|
||||
-qlanglvl=noredefmac -qnortti -qnoeh -qignerrno"
|
||||
# We need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows.
|
||||
# Hotspot now overflows its 64K TOC (currently only for slowdebug),
|
||||
# so for slowdebug we build with '-qpic=large -bbigtoc'.
|
||||
if test "x$DEBUG_LEVEL" = xslowdebug; then
|
||||
OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -qpic=large"
|
||||
fi
|
||||
elif test "x$OPENJDK_BUILD_OS" = xbsd; then
|
||||
OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE"
|
||||
elif test "x$OPENJDK_BUILD_OS" = xwindows; then
|
||||
@ -52453,18 +52507,54 @@ $as_echo "$as_me: GCC >= 6 detected; adding ${NO_DELETE_NULL_POINTER_CHECKS_CFLA
|
||||
|
||||
# Additional macosx handling
|
||||
if test "x$OPENJDK_BUILD_OS" = xmacosx; then
|
||||
# Setting these parameters makes it an error to link to macosx APIs that are
|
||||
# newer than the given OS version and makes the linked binaries compatible
|
||||
# even if built on a newer version of the OS.
|
||||
# The expected format is X.Y.Z
|
||||
# MACOSX_VERSION_MIN is the c++ and ld is -mmacosx-version-min argument. The expected
|
||||
# format is X.Y.Z. It's hard-coded to the minimum OSX version on which the
|
||||
# JDK can be built and makes the linked binaries compatible even if built on
|
||||
# a newer version of the OS.
|
||||
MACOSX_VERSION_MIN=10.7.0
|
||||
|
||||
|
||||
# The macro takes the version with no dots, ex: 1070
|
||||
# Setting --with-macosx-version-max=<version> makes it an error to build or
|
||||
# link to macosx APIs that are newer than the given OS version. The expected
|
||||
# format for <version> is either nn.n.n or nn.nn.nn. See /usr/include/AvailabilityMacros.h.
|
||||
|
||||
# Check whether --with-macosx-version-max was given.
|
||||
if test "${with_macosx_version_max+set}" = set; then :
|
||||
withval=$with_macosx_version_max;
|
||||
if echo "$with_macosx_version_max" | $GREP -q "^[0-9][0-9]\.[0-9]\.[0-9]\$"; then
|
||||
MACOSX_VERSION_MAX=$with_macosx_version_max
|
||||
elif echo "$with_macosx_version_max" | $GREP -q "^[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]\$"; then
|
||||
MACOSX_VERSION_MAX=$with_macosx_version_max
|
||||
elif test "x$with_macosx_version_max" = "xno"; then
|
||||
# Use build system default
|
||||
MACOSX_VERSION_MAX=
|
||||
else
|
||||
as_fn_error $? "osx version format must be nn.n.n or nn.nn.nn" "$LINENO" 5
|
||||
fi
|
||||
|
||||
else
|
||||
MACOSX_VERSION_MAX=
|
||||
|
||||
fi
|
||||
|
||||
|
||||
|
||||
# Let the flags variables get resolved in make for easier override on make
|
||||
# command line.
|
||||
OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
|
||||
# command line. AvailabilityMacros.h versions have no dots, ex: 1070.
|
||||
OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK \
|
||||
-DMAC_OS_X_VERSION_MIN_REQUIRED=\$(subst .,,\$(MACOSX_VERSION_MIN)) \
|
||||
-mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
|
||||
OPENJDK_BUILD_LDFLAGS_JDK="$OPENJDK_BUILD_LDFLAGS_JDK -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
|
||||
OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS \
|
||||
-DMAC_OS_X_VERSION_MIN_REQUIRED=\$(subst .,,\$(MACOSX_VERSION_MIN)) \
|
||||
-mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
|
||||
|
||||
if test -n "$MACOSX_VERSION_MAX"; then
|
||||
OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK \
|
||||
-DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MAX))"
|
||||
OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS \
|
||||
-DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MAX))"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Setup some hard coded includes
|
||||
@ -52590,6 +52680,12 @@ $as_echo "$as_me: GCC >= 6 detected; adding ${NO_DELETE_NULL_POINTER_CHECKS_CFLA
|
||||
LDFLAGS_XLC="-b64 -brtl -bnolibpath -bexpall -bernotok"
|
||||
OPENJDK_BUILD_LDFLAGS_JDK="${OPENJDK_BUILD_LDFLAGS_JDK} $LDFLAGS_XLC"
|
||||
OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS $LDFLAGS_XLC"
|
||||
# We need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows.
|
||||
# Hotspot now overflows its 64K TOC (currently only for slowdebug),
|
||||
# so for slowdebug we build with '-qpic=large -bbigtoc'.
|
||||
if test "x$DEBUG_LEVEL" = xslowdebug; then
|
||||
OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS -bbigtoc"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Customize LDFLAGS for executables
|
||||
|
@ -335,8 +335,10 @@ GCOV_ENABLED=@GCOV_ENABLED@
|
||||
X_CFLAGS:=@X_CFLAGS@
|
||||
X_LIBS:=@X_LIBS@
|
||||
|
||||
# The lowest required version of macosx to enforce compatiblity for
|
||||
# The lowest required version of macosx
|
||||
MACOSX_VERSION_MIN=@MACOSX_VERSION_MIN@
|
||||
# The highest allowed version of macosx
|
||||
MACOSX_VERSION_MAX=@MACOSX_VERSION_MAX@
|
||||
|
||||
# Toolchain type: gcc, clang, solstudio, lxc, microsoft...
|
||||
TOOLCHAIN_TYPE:=@TOOLCHAIN_TYPE@
|
||||
|
@ -52,7 +52,7 @@ TOOLCHAIN_DESCRIPTION_xlc="IBM XL C/C++"
|
||||
|
||||
# Minimum supported versions, empty means unspecified
|
||||
TOOLCHAIN_MINIMUM_VERSION_clang="3.2"
|
||||
TOOLCHAIN_MINIMUM_VERSION_gcc="4.3"
|
||||
TOOLCHAIN_MINIMUM_VERSION_gcc="4.7"
|
||||
TOOLCHAIN_MINIMUM_VERSION_microsoft="16.00.30319.01" # VS2010
|
||||
TOOLCHAIN_MINIMUM_VERSION_solstudio="5.13"
|
||||
TOOLCHAIN_MINIMUM_VERSION_xlc=""
|
||||
|
@ -436,7 +436,8 @@ var getJibProfilesProfiles = function (input, common, data) {
|
||||
target_os: "macosx",
|
||||
target_cpu: "x64",
|
||||
dependencies: ["devkit"],
|
||||
configure_args: concat(common.configure_args_64bit, "--with-zlib=system"),
|
||||
configure_args: concat(common.configure_args_64bit, "--with-zlib=system",
|
||||
"--with-macosx-version-max=10.7.0"),
|
||||
},
|
||||
|
||||
"solaris-x64": {
|
||||
|
@ -392,11 +392,8 @@ issues.
|
||||
|
||||
### gcc
|
||||
|
||||
The minimum accepted version of gcc is 4.3. Older versions will not be accepted
|
||||
by `configure`.
|
||||
|
||||
However, gcc 4.3 is quite old and OpenJDK is not regularly tested on this
|
||||
version, so it is recommended to use a more modern gcc.
|
||||
The minimum accepted version of gcc is 4.7. Older versions will generate a warning
|
||||
by `configure` and are unlikely to work.
|
||||
|
||||
OpenJDK 9 includes patches that should allow gcc 6 to compile, but this should
|
||||
be considered experimental.
|
||||
|
@ -3517,7 +3517,6 @@
|
||||
<Elem>COMPILER2</Elem>
|
||||
<Elem>DTRACE_ENABLED</Elem>
|
||||
<Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
|
||||
<Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
|
||||
<Elem>TARGET_ARCH_MODEL_x86_64</Elem>
|
||||
<Elem>TARGET_ARCH_x86</Elem>
|
||||
<Elem>TARGET_COMPILER_gcc</Elem>
|
||||
@ -10570,7 +10569,6 @@
|
||||
<Elem>COMPILER2</Elem>
|
||||
<Elem>DTRACE_ENABLED</Elem>
|
||||
<Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
|
||||
<Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
|
||||
<Elem>TARGET_ARCH_MODEL_x86_64</Elem>
|
||||
<Elem>TARGET_ARCH_x86</Elem>
|
||||
<Elem>TARGET_COMPILER_gcc</Elem>
|
||||
@ -18227,7 +18225,6 @@
|
||||
<Elem>COMPILER2</Elem>
|
||||
<Elem>DTRACE_ENABLED</Elem>
|
||||
<Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
|
||||
<Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
|
||||
<Elem>TARGET_ARCH_MODEL_x86_64</Elem>
|
||||
<Elem>TARGET_ARCH_x86</Elem>
|
||||
<Elem>TARGET_COMPILER_gcc</Elem>
|
||||
@ -20787,7 +20784,6 @@
|
||||
<Elem>COMPILER2</Elem>
|
||||
<Elem>DTRACE_ENABLED</Elem>
|
||||
<Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
|
||||
<Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
|
||||
<Elem>TARGET_ARCH_MODEL_x86_64</Elem>
|
||||
<Elem>TARGET_ARCH_x86</Elem>
|
||||
<Elem>TARGET_COMPILER_gcc</Elem>
|
||||
@ -21531,7 +21527,6 @@
|
||||
<Elem>ARCHPROPNAME="x86_64"</Elem>
|
||||
<Elem>DEBUG</Elem>
|
||||
<Elem>MACOSX</Elem>
|
||||
<Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
|
||||
<Elem>THIS_FILE="java_props_macosx.c"</Elem>
|
||||
<Elem>_ALLBSD_SOURCE</Elem>
|
||||
<Elem>_DARWIN_UNLIMITED_SELECT</Elem>
|
||||
@ -23025,7 +23020,6 @@
|
||||
<Elem>ARCHPROPNAME="x86_64"</Elem>
|
||||
<Elem>DEBUG</Elem>
|
||||
<Elem>MACOSX</Elem>
|
||||
<Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
|
||||
<Elem>THIS_FILE="java_props_md.c"</Elem>
|
||||
<Elem>_ALLBSD_SOURCE</Elem>
|
||||
<Elem>_DARWIN_UNLIMITED_SELECT</Elem>
|
||||
@ -23104,7 +23098,6 @@
|
||||
<Elem>ARCH="x86_64"</Elem>
|
||||
<Elem>DEBUG</Elem>
|
||||
<Elem>MACOSX</Elem>
|
||||
<Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
|
||||
<Elem>THIS_FILE="ExtendedOptionsImpl.c"</Elem>
|
||||
<Elem>_ALLBSD_SOURCE</Elem>
|
||||
<Elem>_DARWIN_UNLIMITED_SELECT</Elem>
|
||||
@ -23481,7 +23474,6 @@
|
||||
<Elem>ARCH="x86_64"</Elem>
|
||||
<Elem>DEBUG</Elem>
|
||||
<Elem>MACOSX</Elem>
|
||||
<Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
|
||||
<Elem>THIS_FILE="SocketDispatcher.c"</Elem>
|
||||
<Elem>_ALLBSD_SOURCE</Elem>
|
||||
<Elem>_DARWIN_UNLIMITED_SELECT</Elem>
|
||||
@ -29987,7 +29979,6 @@
|
||||
<Elem>COMPILER2</Elem>
|
||||
<Elem>DTRACE_ENABLED</Elem>
|
||||
<Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
|
||||
<Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
|
||||
<Elem>TARGET_ARCH_MODEL_x86_64</Elem>
|
||||
<Elem>TARGET_ARCH_x86</Elem>
|
||||
<Elem>TARGET_COMPILER_gcc</Elem>
|
||||
@ -30069,7 +30060,6 @@
|
||||
<Elem>COMPILER2</Elem>
|
||||
<Elem>DTRACE_ENABLED</Elem>
|
||||
<Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
|
||||
<Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
|
||||
<Elem>TARGET_ARCH_MODEL_x86_64</Elem>
|
||||
<Elem>TARGET_ARCH_x86</Elem>
|
||||
<Elem>TARGET_COMPILER_gcc</Elem>
|
||||
@ -30104,7 +30094,6 @@
|
||||
<Elem>ARCH="x86_64"</Elem>
|
||||
<Elem>DEBUG</Elem>
|
||||
<Elem>MACOSX</Elem>
|
||||
<Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
|
||||
<Elem>_ALLBSD_SOURCE</Elem>
|
||||
<Elem>_DARWIN_UNLIMITED_SELECT</Elem>
|
||||
<Elem>_GNU_SOURCE</Elem>
|
||||
@ -30147,7 +30136,6 @@
|
||||
<Elem>COMPILER2</Elem>
|
||||
<Elem>DTRACE_ENABLED</Elem>
|
||||
<Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
|
||||
<Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
|
||||
<Elem>TARGET_ARCH_MODEL_x86_64</Elem>
|
||||
<Elem>TARGET_ARCH_x86</Elem>
|
||||
<Elem>TARGET_COMPILER_gcc</Elem>
|
||||
@ -30211,7 +30199,6 @@
|
||||
<Elem>COMPILER2</Elem>
|
||||
<Elem>DTRACE_ENABLED</Elem>
|
||||
<Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
|
||||
<Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
|
||||
<Elem>TARGET_ARCH_MODEL_x86_64</Elem>
|
||||
<Elem>TARGET_ARCH_x86</Elem>
|
||||
<Elem>TARGET_COMPILER_gcc</Elem>
|
||||
@ -30274,7 +30261,6 @@
|
||||
<Elem>COMPILER2</Elem>
|
||||
<Elem>DTRACE_ENABLED</Elem>
|
||||
<Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
|
||||
<Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
|
||||
<Elem>TARGET_ARCH_MODEL_x86_64</Elem>
|
||||
<Elem>TARGET_ARCH_x86</Elem>
|
||||
<Elem>TARGET_COMPILER_gcc</Elem>
|
||||
@ -30341,7 +30327,6 @@
|
||||
<preprocessorList>
|
||||
<Elem>ARCH="x86_64"</Elem>
|
||||
<Elem>MACOSX</Elem>
|
||||
<Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
|
||||
<Elem>THIS_FILE="agent_util.c"</Elem>
|
||||
<Elem>_ALLBSD_SOURCE</Elem>
|
||||
<Elem>_DARWIN_UNLIMITED_SELECT</Elem>
|
||||
@ -30354,7 +30339,6 @@
|
||||
<preprocessorList>
|
||||
<Elem>ARCH="x86_64"</Elem>
|
||||
<Elem>MACOSX</Elem>
|
||||
<Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
|
||||
<Elem>THIS_FILE="Agent.cpp"</Elem>
|
||||
<Elem>_ALLBSD_SOURCE</Elem>
|
||||
<Elem>_DARWIN_UNLIMITED_SELECT</Elem>
|
||||
|
@ -435,3 +435,4 @@ dc78a3dd6b3a4f11cdae8a3e3d160e6a78bc7838 jdk-9+175
|
||||
25d991a67cba240eeaf15c19c5857b40fdd71561 jdk-10+14
|
||||
40fb9f229471ef357d493813d34b15afcce9f32b jdk-9+176
|
||||
c72e9d3823f04cb3ef3166646dfea9e4c2769133 jdk-9+177
|
||||
15f59cfc6fbe9387423fb173e962265c7b5d357e jdk-10+15
|
||||
|
@ -595,3 +595,4 @@ a9da03357f190807591177fe9846d6e68ad64fc0 jdk-10+13
|
||||
e920b4d008d914f3414bd4630b58837cf0b7f08d jdk-10+14
|
||||
2ab74e5dbdc2b6a962c865500cafd23cf387dc60 jdk-9+176
|
||||
1ca8f038fceb88c640badf9bd18905205bc63b43 jdk-9+177
|
||||
c1f3649a3a42f124b418a5a916dbad13d059b757 jdk-10+15
|
||||
|
@ -435,3 +435,4 @@ e6c4f6ef717d104dba880e2dae538690c993b46f jdk-9+175
|
||||
7a2bc0a80087b63c909df2af6ec7d9ef44e6d7f7 jdk-10+14
|
||||
9f27d513658d5375b0e26846857d92563f279073 jdk-9+176
|
||||
80acf577b7d0b886fb555c9916552844f6cc72af jdk-9+177
|
||||
e069834e2c518a7bc2ffadc8c7e3cd7ec69fa8a0 jdk-10+15
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@ -27,6 +27,7 @@
|
||||
|
||||
SUNWprivate_1.1 {
|
||||
global:
|
||||
Java_sun_security_ec_ECKeyPairGenerator_isCurveSupported;
|
||||
Java_sun_security_ec_ECKeyPairGenerator_generateECKeyPair;
|
||||
Java_sun_security_ec_ECDSASignature_signDigest;
|
||||
Java_sun_security_ec_ECDSASignature_verifySignedDigest;
|
||||
|
@ -45,16 +45,18 @@ public class ObjectStreamField
|
||||
|
||||
/** field name */
|
||||
private final String name;
|
||||
/** canonical JVM signature of field type */
|
||||
/** canonical JVM signature of field type, if given */
|
||||
private final String signature;
|
||||
/** field type (Object.class if unknown non-primitive type) */
|
||||
private final Class<?> type;
|
||||
/** lazily constructed signature for the type, if no explicit signature */
|
||||
private String typeSignature;
|
||||
/** whether or not to (de)serialize field values as unshared */
|
||||
private final boolean unshared;
|
||||
/** corresponding reflective field object, if any */
|
||||
private final Field field;
|
||||
/** offset of field value in enclosing field group */
|
||||
private int offset = 0;
|
||||
private int offset;
|
||||
|
||||
/**
|
||||
* Create a Serializable field with the specified type. This field should
|
||||
@ -91,8 +93,8 @@ public class ObjectStreamField
|
||||
this.name = name;
|
||||
this.type = type;
|
||||
this.unshared = unshared;
|
||||
signature = getClassSignature(type).intern();
|
||||
field = null;
|
||||
this.field = null;
|
||||
this.signature = null;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -106,7 +108,7 @@ public class ObjectStreamField
|
||||
this.name = name;
|
||||
this.signature = signature.intern();
|
||||
this.unshared = unshared;
|
||||
field = null;
|
||||
this.field = null;
|
||||
|
||||
switch (signature.charAt(0)) {
|
||||
case 'Z': type = Boolean.TYPE; break;
|
||||
@ -242,7 +244,7 @@ public class ObjectStreamField
|
||||
*/
|
||||
// REMIND: deprecate?
|
||||
public char getTypeCode() {
|
||||
return signature.charAt(0);
|
||||
return getSignature().charAt(0);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -252,7 +254,7 @@ public class ObjectStreamField
|
||||
*/
|
||||
// REMIND: deprecate?
|
||||
public String getTypeString() {
|
||||
return isPrimitive() ? null : signature;
|
||||
return isPrimitive() ? null : getSignature();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -284,7 +286,7 @@ public class ObjectStreamField
|
||||
*/
|
||||
// REMIND: deprecate?
|
||||
public boolean isPrimitive() {
|
||||
char tcode = signature.charAt(0);
|
||||
char tcode = getTypeCode();
|
||||
return ((tcode != 'L') && (tcode != '['));
|
||||
}
|
||||
|
||||
@ -320,7 +322,7 @@ public class ObjectStreamField
|
||||
* Return a string that describes this field.
|
||||
*/
|
||||
public String toString() {
|
||||
return signature + ' ' + name;
|
||||
return getSignature() + ' ' + name;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -336,6 +338,17 @@ public class ObjectStreamField
|
||||
* that signature strings are returned for primitive fields as well).
|
||||
*/
|
||||
String getSignature() {
|
||||
return signature;
|
||||
if (signature != null) {
|
||||
return signature;
|
||||
}
|
||||
|
||||
String sig = typeSignature;
|
||||
// This lazy calculation is safe since signature can be null iff one
|
||||
// of the public constructors are used, in which case type is always
|
||||
// initialized to the exact type we want the signature to represent.
|
||||
if (sig == null) {
|
||||
typeSignature = sig = getClassSignature(type).intern();
|
||||
}
|
||||
return sig;
|
||||
}
|
||||
}
|
||||
|
@ -139,21 +139,21 @@ public class RandomAccessFile implements DataOutput, DataInput, Closeable {
|
||||
* <table class="striped">
|
||||
* <caption style="display:none">Access mode permitted values and meanings</caption>
|
||||
* <thead>
|
||||
* <tr><th style="text-align:left">Value</th><th style="text-align:left">Meaning</th></tr>
|
||||
* <tr><th scope="col" style="text-align:left">Value</th><th scope="col" style="text-align:left">Meaning</th></tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr><td style="vertical-align:top">{@code "r"}</td>
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code "r"}</th>
|
||||
* <td> Open for reading only. Invoking any of the {@code write}
|
||||
* methods of the resulting object will cause an
|
||||
* {@link java.io.IOException} to be thrown.</td></tr>
|
||||
* <tr><td style="vertical-align:top">{@code "rw"}</td>
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code "rw"}</th>
|
||||
* <td> Open for reading and writing. If the file does not already
|
||||
* exist then an attempt will be made to create it.</td></tr>
|
||||
* <tr><td style="vertical-align:top">{@code "rws"}</td>
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code "rws"}</th>
|
||||
* <td> Open for reading and writing, as with {@code "rw"}, and also
|
||||
* require that every update to the file's content or metadata be
|
||||
* written synchronously to the underlying storage device.</td></tr>
|
||||
* <tr><td style="vertical-align:top">{@code "rwd"}</td>
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code "rwd"}</th>
|
||||
* <td> Open for reading and writing, as with {@code "rw"}, and also
|
||||
* require that every update to the file's content be written
|
||||
* synchronously to the underlying storage device.</td></tr>
|
||||
|
@ -48,15 +48,15 @@ import java.util.StringTokenizer;
|
||||
* <caption style="display:none">Permission target name, what the permission allows, and associated risks</caption>
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th>Permission Target Name</th>
|
||||
* <th>What the Permission Allows</th>
|
||||
* <th>Risks of Allowing this Permission</th>
|
||||
* <th scope="col">Permission Target Name</th>
|
||||
* <th scope="col">What the Permission Allows</th>
|
||||
* <th scope="col">Risks of Allowing this Permission</th>
|
||||
* </tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
*
|
||||
* <tr>
|
||||
* <td>enableSubclassImplementation</td>
|
||||
* <th scope="row">enableSubclassImplementation</th>
|
||||
* <td>Subclass implementation of ObjectOutputStream or ObjectInputStream
|
||||
* to override the default serialization or deserialization, respectively,
|
||||
* of objects</td>
|
||||
@ -69,7 +69,7 @@ import java.util.StringTokenizer;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>enableSubstitution</td>
|
||||
* <th scope="row">enableSubstitution</th>
|
||||
* <td>Substitution of one object for another during
|
||||
* serialization or deserialization</td>
|
||||
* <td>This is dangerous because malicious code
|
||||
@ -78,7 +78,7 @@ import java.util.StringTokenizer;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>serialFilter</td>
|
||||
* <th scope="row">serialFilter</th>
|
||||
* <td>Setting a filter for ObjectInputStreams.</td>
|
||||
* <td>Code could remove a configured filter and remove protections
|
||||
* already established.</td>
|
||||
|
@ -48,15 +48,15 @@ import java.lang.module.ModuleFinder;
|
||||
* what the target allows, and associated risks</caption>
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th>Permission Target Name</th>
|
||||
* <th>What the Permission Allows</th>
|
||||
* <th>Risks of Allowing this Permission</th>
|
||||
* <th scope="col">Permission Target Name</th>
|
||||
* <th scope="col">What the Permission Allows</th>
|
||||
* <th scope="col">Risks of Allowing this Permission</th>
|
||||
* </tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
*
|
||||
* <tr>
|
||||
* <td>createClassLoader</td>
|
||||
* <th scope="row">createClassLoader</th>
|
||||
* <td>Creation of a class loader</td>
|
||||
* <td>This is an extremely dangerous permission to grant.
|
||||
* Malicious applications that can instantiate their own class
|
||||
@ -67,7 +67,7 @@ import java.lang.module.ModuleFinder;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>getClassLoader</td>
|
||||
* <th scope="row">getClassLoader</th>
|
||||
* <td>Retrieval of a class loader (e.g., the class loader for the calling
|
||||
* class)</td>
|
||||
* <td>This would grant an attacker permission to get the
|
||||
@ -78,7 +78,7 @@ import java.lang.module.ModuleFinder;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>setContextClassLoader</td>
|
||||
* <th scope="row">setContextClassLoader</th>
|
||||
* <td>Setting of the context class loader used by a thread</td>
|
||||
* <td>The context class loader is used by system code and extensions
|
||||
* when they need to lookup resources that might not exist in the system
|
||||
@ -88,7 +88,7 @@ import java.lang.module.ModuleFinder;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>enableContextClassLoaderOverride</td>
|
||||
* <th scope="row">enableContextClassLoaderOverride</th>
|
||||
* <td>Subclass implementation of the thread context class loader methods</td>
|
||||
* <td>The context class loader is used by system code and extensions
|
||||
* when they need to lookup resources that might not exist in the system
|
||||
@ -98,14 +98,14 @@ import java.lang.module.ModuleFinder;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>closeClassLoader</td>
|
||||
* <th scope="row">closeClassLoader</th>
|
||||
* <td>Closing of a ClassLoader</td>
|
||||
* <td>Granting this permission allows code to close any URLClassLoader
|
||||
* that it has a reference to.</td>
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>setSecurityManager</td>
|
||||
* <th scope="row">setSecurityManager</th>
|
||||
* <td>Setting of the security manager (possibly replacing an existing one)
|
||||
* </td>
|
||||
* <td>The security manager is a class that allows
|
||||
@ -117,14 +117,14 @@ import java.lang.module.ModuleFinder;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>createSecurityManager</td>
|
||||
* <th scope="row">createSecurityManager</th>
|
||||
* <td>Creation of a new security manager</td>
|
||||
* <td>This gives code access to protected, sensitive methods that may
|
||||
* disclose information about other classes or the execution stack.</td>
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>getenv.{variable name}</td>
|
||||
* <th scope="row">getenv.{variable name}</th>
|
||||
* <td>Reading of the value of the specified environment variable</td>
|
||||
* <td>This would allow code to read the value, or determine the
|
||||
* existence, of a particular environment variable. This is
|
||||
@ -132,7 +132,7 @@ import java.lang.module.ModuleFinder;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>exitVM.{exit status}</td>
|
||||
* <th scope="row">exitVM.{exit status}</th>
|
||||
* <td>Halting of the Java Virtual Machine with the specified exit status</td>
|
||||
* <td>This allows an attacker to mount a denial-of-service attack
|
||||
* by automatically forcing the virtual machine to halt.
|
||||
@ -143,14 +143,14 @@ import java.lang.module.ModuleFinder;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>shutdownHooks</td>
|
||||
* <th scope="row">shutdownHooks</th>
|
||||
* <td>Registration and cancellation of virtual-machine shutdown hooks</td>
|
||||
* <td>This allows an attacker to register a malicious shutdown
|
||||
* hook that interferes with the clean shutdown of the virtual machine.</td>
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>setFactory</td>
|
||||
* <th scope="row">setFactory</th>
|
||||
* <td>Setting of the socket factory used by ServerSocket or Socket,
|
||||
* or of the stream handler factory used by URL</td>
|
||||
* <td>This allows code to set the actual implementation
|
||||
@ -160,7 +160,7 @@ import java.lang.module.ModuleFinder;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>setIO</td>
|
||||
* <th scope="row">setIO</th>
|
||||
* <td>Setting of System.out, System.in, and System.err</td>
|
||||
* <td>This allows changing the value of the standard system streams.
|
||||
* An attacker may change System.in to monitor and
|
||||
@ -169,7 +169,7 @@ import java.lang.module.ModuleFinder;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>modifyThread</td>
|
||||
* <th scope="row">modifyThread</th>
|
||||
* <td>Modification of threads, e.g., via calls to Thread
|
||||
* {@code interrupt, stop, suspend, resume, setDaemon, setPriority,
|
||||
* setName} and {@code setUncaughtExceptionHandler}
|
||||
@ -179,7 +179,7 @@ import java.lang.module.ModuleFinder;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>stopThread</td>
|
||||
* <th scope="row">stopThread</th>
|
||||
* <td>Stopping of threads via calls to the Thread <code>stop</code>
|
||||
* method</td>
|
||||
* <td>This allows code to stop any thread in the system provided that it is
|
||||
@ -189,7 +189,7 @@ import java.lang.module.ModuleFinder;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>modifyThreadGroup</td>
|
||||
* <th scope="row">modifyThreadGroup</th>
|
||||
* <td>modification of thread groups, e.g., via calls to ThreadGroup
|
||||
* <code>destroy</code>, <code>getParent</code>, <code>resume</code>,
|
||||
* <code>setDaemon</code>, <code>setMaxPriority</code>, <code>stop</code>,
|
||||
@ -199,7 +199,7 @@ import java.lang.module.ModuleFinder;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>getProtectionDomain</td>
|
||||
* <th scope="row">getProtectionDomain</th>
|
||||
* <td>Retrieval of the ProtectionDomain for a class</td>
|
||||
* <td>This allows code to obtain policy information
|
||||
* for a particular code source. While obtaining policy information
|
||||
@ -209,7 +209,7 @@ import java.lang.module.ModuleFinder;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>getFileSystemAttributes</td>
|
||||
* <th scope="row">getFileSystemAttributes</th>
|
||||
* <td>Retrieval of file system attributes</td>
|
||||
* <td>This allows code to obtain file system information such as disk usage
|
||||
* or disk space available to the caller. This is potentially dangerous
|
||||
@ -219,7 +219,7 @@ import java.lang.module.ModuleFinder;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>readFileDescriptor</td>
|
||||
* <th scope="row">readFileDescriptor</th>
|
||||
* <td>Reading of file descriptors</td>
|
||||
* <td>This would allow code to read the particular file associated
|
||||
* with the file descriptor read. This is dangerous if the file
|
||||
@ -227,7 +227,7 @@ import java.lang.module.ModuleFinder;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>writeFileDescriptor</td>
|
||||
* <th scope="row">writeFileDescriptor</th>
|
||||
* <td>Writing to file descriptors</td>
|
||||
* <td>This allows code to write to a particular file associated
|
||||
* with the descriptor. This is dangerous because it may allow
|
||||
@ -236,7 +236,7 @@ import java.lang.module.ModuleFinder;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>loadLibrary.{library name}</td>
|
||||
* <th scope="row">loadLibrary.{library name}</th>
|
||||
* <td>Dynamic linking of the specified library</td>
|
||||
* <td>It is dangerous to allow an applet permission to load native code
|
||||
* libraries, because the Java security architecture is not designed to and
|
||||
@ -244,7 +244,7 @@ import java.lang.module.ModuleFinder;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>accessClassInPackage.{package name}</td>
|
||||
* <th scope="row">accessClassInPackage.{package name}</th>
|
||||
* <td>Access to the specified package via a class loader's
|
||||
* <code>loadClass</code> method when that class loader calls
|
||||
* the SecurityManager <code>checkPackageAccess</code> method</td>
|
||||
@ -255,7 +255,7 @@ import java.lang.module.ModuleFinder;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>defineClassInPackage.{package name}</td>
|
||||
* <th scope="row">defineClassInPackage.{package name}</th>
|
||||
* <td>Definition of classes in the specified package, via a class
|
||||
* loader's <code>defineClass</code> method when that class loader calls
|
||||
* the SecurityManager <code>checkPackageDefinition</code> method.</td>
|
||||
@ -267,7 +267,7 @@ import java.lang.module.ModuleFinder;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>defineClass</td>
|
||||
* <th scope="row">defineClass</th>
|
||||
* <td>Define a class with
|
||||
* {@link java.lang.invoke.MethodHandles.Lookup#defineClass(byte[])
|
||||
* Lookup.defineClass}.</td>
|
||||
@ -277,7 +277,7 @@ import java.lang.module.ModuleFinder;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>accessDeclaredMembers</td>
|
||||
* <th scope="row">accessDeclaredMembers</th>
|
||||
* <td>Access to the declared members of a class</td>
|
||||
* <td>This grants code permission to query a class for its public,
|
||||
* protected, default (package) access, and private fields and/or
|
||||
@ -295,14 +295,14 @@ import java.lang.module.ModuleFinder;
|
||||
</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>queuePrintJob</td>
|
||||
* <th scope="row">queuePrintJob</th>
|
||||
* <td>Initiation of a print job request</td>
|
||||
* <td>This could print sensitive information to a printer,
|
||||
* or simply waste paper.</td>
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>getStackTrace</td>
|
||||
* <th scope="row">getStackTrace</th>
|
||||
* <td>Retrieval of the stack trace information of another thread.</td>
|
||||
* <td>This allows retrieval of the stack trace information of
|
||||
* another thread. This might allow malicious code to monitor the
|
||||
@ -310,7 +310,7 @@ import java.lang.module.ModuleFinder;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>getStackWalkerWithClassReference</td>
|
||||
* <th scope="row">getStackWalkerWithClassReference</th>
|
||||
* <td>Get a stack walker that can retrieve stack frames with class reference.</td>
|
||||
* <td>This allows retrieval of Class objects from stack walking.
|
||||
* This might allow malicious code to access Class objects on the stack
|
||||
@ -318,7 +318,7 @@ import java.lang.module.ModuleFinder;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>setDefaultUncaughtExceptionHandler</td>
|
||||
* <th scope="row">setDefaultUncaughtExceptionHandler</th>
|
||||
* <td>Setting the default handler to be used when a thread
|
||||
* terminates abruptly due to an uncaught exception</td>
|
||||
* <td>This allows an attacker to register a malicious
|
||||
@ -327,7 +327,7 @@ import java.lang.module.ModuleFinder;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>preferences</td>
|
||||
* <th scope="row">preferences</th>
|
||||
* <td>Represents the permission required to get access to the
|
||||
* java.util.prefs.Preferences implementations user or system root
|
||||
* which in turn allows retrieval or update operations within the
|
||||
@ -340,14 +340,14 @@ import java.lang.module.ModuleFinder;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>manageProcess</td>
|
||||
* <th scope="row">manageProcess</th>
|
||||
* <td>Native process termination and information about processes
|
||||
* {@link ProcessHandle}.</td>
|
||||
* <td>Allows code to identify and terminate processes that it did not create.</td>
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>localeServiceProvider</td>
|
||||
* <th scope="row">localeServiceProvider</th>
|
||||
* <td>This {@code RuntimePermission} is required to be granted to
|
||||
* classes which subclass and implement
|
||||
* {@code java.util.spi.LocaleServiceProvider}. The permission is
|
||||
@ -360,7 +360,7 @@ import java.lang.module.ModuleFinder;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>loggerFinder</td>
|
||||
* <th scope="row">loggerFinder</th>
|
||||
* <td>This {@code RuntimePermission} is required to be granted to
|
||||
* classes which subclass or call methods on
|
||||
* {@code java.lang.System.LoggerFinder}. The permission is
|
||||
@ -373,7 +373,7 @@ import java.lang.module.ModuleFinder;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>accessSystemModules</td>
|
||||
* <th scope="row">accessSystemModules</th>
|
||||
* <td>Access system modules in the runtime image.</td>
|
||||
* <td>This grants the permission to access resources in the
|
||||
* {@linkplain ModuleFinder#ofSystem system modules} in the runtime image.</td>
|
||||
|
@ -582,67 +582,67 @@ public final class System {
|
||||
* <table class="striped">
|
||||
* <caption style="display:none">Shows property keys and associated values</caption>
|
||||
* <thead>
|
||||
* <tr><th>Key</th>
|
||||
* <th>Description of Associated Value</th></tr>
|
||||
* <tr><th scope="col">Key</th>
|
||||
* <th scope="col">Description of Associated Value</th></tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr><td><code>java.version</code></td>
|
||||
* <tr><th scope="row"><code>java.version</code></th>
|
||||
* <td>Java Runtime Environment version which may be interpreted
|
||||
* as a {@link Runtime.Version}</td></tr>
|
||||
* <tr><td><code>java.vendor</code></td>
|
||||
* <tr><th scope="row"><code>java.vendor</code></th>
|
||||
* <td>Java Runtime Environment vendor</td></tr>
|
||||
* <tr><td><code>java.vendor.url</code></td>
|
||||
* <tr><th scope="row"><code>java.vendor.url</code></th>
|
||||
* <td>Java vendor URL</td></tr>
|
||||
* <tr><td><code>java.home</code></td>
|
||||
* <tr><th scope="row"><code>java.home</code></th>
|
||||
* <td>Java installation directory</td></tr>
|
||||
* <tr><td><code>java.vm.specification.version</code></td>
|
||||
* <tr><th scope="row"><code>java.vm.specification.version</code></th>
|
||||
* <td>Java Virtual Machine specification version which may be
|
||||
* interpreted as a {@link Runtime.Version}</td></tr>
|
||||
* <tr><td><code>java.vm.specification.vendor</code></td>
|
||||
* <tr><th scope="row"><code>java.vm.specification.vendor</code></th>
|
||||
* <td>Java Virtual Machine specification vendor</td></tr>
|
||||
* <tr><td><code>java.vm.specification.name</code></td>
|
||||
* <tr><th scope="row"><code>java.vm.specification.name</code></th>
|
||||
* <td>Java Virtual Machine specification name</td></tr>
|
||||
* <tr><td><code>java.vm.version</code></td>
|
||||
* <tr><th scope="row"><code>java.vm.version</code></th>
|
||||
* <td>Java Virtual Machine implementation version which may be
|
||||
* interpreted as a {@link Runtime.Version}</td></tr>
|
||||
* <tr><td><code>java.vm.vendor</code></td>
|
||||
* <tr><th scope="row"><code>java.vm.vendor</code></th>
|
||||
* <td>Java Virtual Machine implementation vendor</td></tr>
|
||||
* <tr><td><code>java.vm.name</code></td>
|
||||
* <tr><th scope="row"><code>java.vm.name</code></th>
|
||||
* <td>Java Virtual Machine implementation name</td></tr>
|
||||
* <tr><td><code>java.specification.version</code></td>
|
||||
* <tr><th scope="row"><code>java.specification.version</code></th>
|
||||
* <td>Java Runtime Environment specification version which may be
|
||||
* interpreted as a {@link Runtime.Version}</td></tr>
|
||||
* <tr><td><code>java.specification.vendor</code></td>
|
||||
* <tr><th scope="row"><code>java.specification.vendor</code></th>
|
||||
* <td>Java Runtime Environment specification vendor</td></tr>
|
||||
* <tr><td><code>java.specification.name</code></td>
|
||||
* <tr><th scope="row"><code>java.specification.name</code></th>
|
||||
* <td>Java Runtime Environment specification name</td></tr>
|
||||
* <tr><td><code>java.class.version</code></td>
|
||||
* <tr><th scope="row"><code>java.class.version</code></th>
|
||||
* <td>Java class format version number</td></tr>
|
||||
* <tr><td><code>java.class.path</code></td>
|
||||
* <tr><th scope="row"><code>java.class.path</code></th>
|
||||
* <td>Java class path</td></tr>
|
||||
* <tr><td><code>java.library.path</code></td>
|
||||
* <tr><th scope="row"><code>java.library.path</code></th>
|
||||
* <td>List of paths to search when loading libraries</td></tr>
|
||||
* <tr><td><code>java.io.tmpdir</code></td>
|
||||
* <tr><th scope="row"><code>java.io.tmpdir</code></th>
|
||||
* <td>Default temp file path</td></tr>
|
||||
* <tr><td><code>java.compiler</code></td>
|
||||
* <tr><th scope="row"><code>java.compiler</code></th>
|
||||
* <td>Name of JIT compiler to use</td></tr>
|
||||
* <tr><td><code>os.name</code></td>
|
||||
* <tr><th scope="row"><code>os.name</code></th>
|
||||
* <td>Operating system name</td></tr>
|
||||
* <tr><td><code>os.arch</code></td>
|
||||
* <tr><th scope="row"><code>os.arch</code></th>
|
||||
* <td>Operating system architecture</td></tr>
|
||||
* <tr><td><code>os.version</code></td>
|
||||
* <tr><th scope="row"><code>os.version</code></th>
|
||||
* <td>Operating system version</td></tr>
|
||||
* <tr><td><code>file.separator</code></td>
|
||||
* <tr><th scope="row"><code>file.separator</code></th>
|
||||
* <td>File separator ("/" on UNIX)</td></tr>
|
||||
* <tr><td><code>path.separator</code></td>
|
||||
* <tr><th scope="row"><code>path.separator</code></th>
|
||||
* <td>Path separator (":" on UNIX)</td></tr>
|
||||
* <tr><td><code>line.separator</code></td>
|
||||
* <tr><th scope="row"><code>line.separator</code></th>
|
||||
* <td>Line separator ("\n" on UNIX)</td></tr>
|
||||
* <tr><td><code>user.name</code></td>
|
||||
* <tr><th scope="row"><code>user.name</code></th>
|
||||
* <td>User's account name</td></tr>
|
||||
* <tr><td><code>user.home</code></td>
|
||||
* <tr><th scope="row"><code>user.home</code></th>
|
||||
* <td>User's home directory</td></tr>
|
||||
* <tr><td><code>user.dir</code></td>
|
||||
* <tr><th scope="row"><code>user.dir</code></th>
|
||||
* <td>User's current working directory</td></tr>
|
||||
* </tbody>
|
||||
* </table>
|
||||
@ -659,17 +659,17 @@ public final class System {
|
||||
* <table class="striped">
|
||||
* <caption style="display:none">Shows property keys and associated values</caption>
|
||||
* <thead>
|
||||
* <tr><th>Key</th>
|
||||
* <th>Description of Associated Value</th></tr>
|
||||
* <tr><th scope="col">Key</th>
|
||||
* <th scope="col">Description of Associated Value</th></tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr><td>{@code jdk.module.path}</td>
|
||||
* <tr><th scope="row">{@code jdk.module.path}</th>
|
||||
* <td>The application module path</td></tr>
|
||||
* <tr><td>{@code jdk.module.upgrade.path}</td>
|
||||
* <tr><th scope="row">{@code jdk.module.upgrade.path}</th>
|
||||
* <td>The upgrade module path</td></tr>
|
||||
* <tr><td>{@code jdk.module.main}</td>
|
||||
* <tr><th scope="row">{@code jdk.module.main}</th>
|
||||
* <td>The module name of the initial/main module</td></tr>
|
||||
* <tr><td>{@code jdk.module.main.class}</td>
|
||||
* <tr><th scope="row">{@code jdk.module.main.class}</th>
|
||||
* <td>The main class name of the initial module</td></tr>
|
||||
* </tbody>
|
||||
* </table>
|
||||
|
@ -84,43 +84,43 @@ import static java.lang.invoke.MethodHandleStatics.*;
|
||||
* <table class="striped">
|
||||
* <caption style="display:none">reference kinds</caption>
|
||||
* <thead>
|
||||
* <tr><th>reference kind</th><th>descriptive name</th><th>scope</th><th>member</th><th>behavior</th></tr>
|
||||
* <tr><th scope="col">reference kind</th><th scope="col">descriptive name</th><th scope="col">scope</th><th scope="col">member</th><th scope="col">behavior</th></tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td>{@code 1}</td><td>{@code REF_getField}</td><td>{@code class}</td>
|
||||
* <th scope="row">{@code 1}</th><td>{@code REF_getField}</td><td>{@code class}</td>
|
||||
* <td>{@code FT f;}</td><td>{@code (T) this.f;}</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>{@code 2}</td><td>{@code REF_getStatic}</td><td>{@code class} or {@code interface}</td>
|
||||
* <th scope="row">{@code 2}</th><td>{@code REF_getStatic}</td><td>{@code class} or {@code interface}</td>
|
||||
* <td>{@code static}<br>{@code FT f;}</td><td>{@code (T) C.f;}</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>{@code 3}</td><td>{@code REF_putField}</td><td>{@code class}</td>
|
||||
* <th scope="row">{@code 3}</th><td>{@code REF_putField}</td><td>{@code class}</td>
|
||||
* <td>{@code FT f;}</td><td>{@code this.f = x;}</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>{@code 4}</td><td>{@code REF_putStatic}</td><td>{@code class}</td>
|
||||
* <th scope="row">{@code 4}</th><td>{@code REF_putStatic}</td><td>{@code class}</td>
|
||||
* <td>{@code static}<br>{@code FT f;}</td><td>{@code C.f = arg;}</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>{@code 5}</td><td>{@code REF_invokeVirtual}</td><td>{@code class}</td>
|
||||
* <th scope="row">{@code 5}</th><td>{@code REF_invokeVirtual}</td><td>{@code class}</td>
|
||||
* <td>{@code T m(A*);}</td><td>{@code (T) this.m(arg*);}</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>{@code 6}</td><td>{@code REF_invokeStatic}</td><td>{@code class} or {@code interface}</td>
|
||||
* <th scope="row">{@code 6}</th><td>{@code REF_invokeStatic}</td><td>{@code class} or {@code interface}</td>
|
||||
* <td>{@code static}<br>{@code T m(A*);}</td><td>{@code (T) C.m(arg*);}</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>{@code 7}</td><td>{@code REF_invokeSpecial}</td><td>{@code class} or {@code interface}</td>
|
||||
* <th scope="row">{@code 7}</th><td>{@code REF_invokeSpecial}</td><td>{@code class} or {@code interface}</td>
|
||||
* <td>{@code T m(A*);}</td><td>{@code (T) super.m(arg*);}</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>{@code 8}</td><td>{@code REF_newInvokeSpecial}</td><td>{@code class}</td>
|
||||
* <th scope="row">{@code 8}</th><td>{@code REF_newInvokeSpecial}</td><td>{@code class}</td>
|
||||
* <td>{@code C(A*);}</td><td>{@code new C(arg*);}</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>{@code 9}</td><td>{@code REF_invokeInterface}</td><td>{@code interface}</td>
|
||||
* <th scope="row">{@code 9}</th><td>{@code REF_invokeInterface}</td><td>{@code interface}</td>
|
||||
* <td>{@code T m(A*);}</td><td>{@code (T) this.m(arg*);}</td>
|
||||
* </tr>
|
||||
* </tbody>
|
||||
|
@ -282,66 +282,66 @@ public class MethodHandles {
|
||||
* <caption style="display:none">lookup method behaviors</caption>
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th><a id="equiv"></a>lookup expression</th>
|
||||
* <th>member</th>
|
||||
* <th>bytecode behavior</th>
|
||||
* <th scope="col"><a id="equiv"></a>lookup expression</th>
|
||||
* <th scope="col">member</th>
|
||||
* <th scope="col">bytecode behavior</th>
|
||||
* </tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td>{@link java.lang.invoke.MethodHandles.Lookup#findGetter lookup.findGetter(C.class,"f",FT.class)}</td>
|
||||
* <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#findGetter lookup.findGetter(C.class,"f",FT.class)}</th>
|
||||
* <td>{@code FT f;}</td><td>{@code (T) this.f;}</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>{@link java.lang.invoke.MethodHandles.Lookup#findStaticGetter lookup.findStaticGetter(C.class,"f",FT.class)}</td>
|
||||
* <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#findStaticGetter lookup.findStaticGetter(C.class,"f",FT.class)}</th>
|
||||
* <td>{@code static}<br>{@code FT f;}</td><td>{@code (T) C.f;}</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>{@link java.lang.invoke.MethodHandles.Lookup#findSetter lookup.findSetter(C.class,"f",FT.class)}</td>
|
||||
* <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#findSetter lookup.findSetter(C.class,"f",FT.class)}</th>
|
||||
* <td>{@code FT f;}</td><td>{@code this.f = x;}</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>{@link java.lang.invoke.MethodHandles.Lookup#findStaticSetter lookup.findStaticSetter(C.class,"f",FT.class)}</td>
|
||||
* <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#findStaticSetter lookup.findStaticSetter(C.class,"f",FT.class)}</th>
|
||||
* <td>{@code static}<br>{@code FT f;}</td><td>{@code C.f = arg;}</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>{@link java.lang.invoke.MethodHandles.Lookup#findVirtual lookup.findVirtual(C.class,"m",MT)}</td>
|
||||
* <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#findVirtual lookup.findVirtual(C.class,"m",MT)}</th>
|
||||
* <td>{@code T m(A*);}</td><td>{@code (T) this.m(arg*);}</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>{@link java.lang.invoke.MethodHandles.Lookup#findStatic lookup.findStatic(C.class,"m",MT)}</td>
|
||||
* <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#findStatic lookup.findStatic(C.class,"m",MT)}</th>
|
||||
* <td>{@code static}<br>{@code T m(A*);}</td><td>{@code (T) C.m(arg*);}</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>{@link java.lang.invoke.MethodHandles.Lookup#findSpecial lookup.findSpecial(C.class,"m",MT,this.class)}</td>
|
||||
* <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#findSpecial lookup.findSpecial(C.class,"m",MT,this.class)}</th>
|
||||
* <td>{@code T m(A*);}</td><td>{@code (T) super.m(arg*);}</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>{@link java.lang.invoke.MethodHandles.Lookup#findConstructor lookup.findConstructor(C.class,MT)}</td>
|
||||
* <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#findConstructor lookup.findConstructor(C.class,MT)}</th>
|
||||
* <td>{@code C(A*);}</td><td>{@code new C(arg*);}</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>{@link java.lang.invoke.MethodHandles.Lookup#unreflectGetter lookup.unreflectGetter(aField)}</td>
|
||||
* <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#unreflectGetter lookup.unreflectGetter(aField)}</th>
|
||||
* <td>({@code static})?<br>{@code FT f;}</td><td>{@code (FT) aField.get(thisOrNull);}</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>{@link java.lang.invoke.MethodHandles.Lookup#unreflectSetter lookup.unreflectSetter(aField)}</td>
|
||||
* <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#unreflectSetter lookup.unreflectSetter(aField)}</th>
|
||||
* <td>({@code static})?<br>{@code FT f;}</td><td>{@code aField.set(thisOrNull, arg);}</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>{@link java.lang.invoke.MethodHandles.Lookup#unreflect lookup.unreflect(aMethod)}</td>
|
||||
* <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#unreflect lookup.unreflect(aMethod)}</th>
|
||||
* <td>({@code static})?<br>{@code T m(A*);}</td><td>{@code (T) aMethod.invoke(thisOrNull, arg*);}</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>{@link java.lang.invoke.MethodHandles.Lookup#unreflectConstructor lookup.unreflectConstructor(aConstructor)}</td>
|
||||
* <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#unreflectConstructor lookup.unreflectConstructor(aConstructor)}</th>
|
||||
* <td>{@code C(A*);}</td><td>{@code (C) aConstructor.newInstance(arg*);}</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>{@link java.lang.invoke.MethodHandles.Lookup#unreflect lookup.unreflect(aMethod)}</td>
|
||||
* <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#unreflect lookup.unreflect(aMethod)}</th>
|
||||
* <td>({@code static})?<br>{@code T m(A*);}</td><td>{@code (T) aMethod.invoke(thisOrNull, arg*);}</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>{@link java.lang.invoke.MethodHandles.Lookup#findClass lookup.findClass("C")}</td>
|
||||
* <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#findClass lookup.findClass("C")}</th>
|
||||
* <td>{@code class C { ... }}</td><td>{@code C.class;}</td>
|
||||
* </tr>
|
||||
* </tbody>
|
||||
|
@ -36,15 +36,15 @@ package java.lang.reflect;
|
||||
* <caption style="display:none">Table shows permission target name, what the permission allows, and associated risks</caption>
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th>Permission Target Name</th>
|
||||
* <th>What the Permission Allows</th>
|
||||
* <th>Risks of Allowing this Permission</th>
|
||||
* <th scope="col">Permission Target Name</th>
|
||||
* <th scope="col">What the Permission Allows</th>
|
||||
* <th scope="col">Risks of Allowing this Permission</th>
|
||||
* </tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
*
|
||||
* <tr>
|
||||
* <td>suppressAccessChecks</td>
|
||||
* <th scope="row">suppressAccessChecks</th>
|
||||
* <td>ability to suppress the standard Java language access checks
|
||||
* on fields and methods in a class; allow access not only public members
|
||||
* but also allow access to default (package) access, protected,
|
||||
@ -53,7 +53,7 @@ package java.lang.reflect;
|
||||
* methods normally unavailable would be accessible to malicious code.</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>newProxyInPackage.{package name}</td>
|
||||
* <th scope="row">newProxyInPackage.{package name}</th>
|
||||
* <td>ability to create a proxy instance in the specified package of which
|
||||
* the non-public interface that the proxy class implements.</td>
|
||||
* <td>This gives code access to classes in packages to which it normally
|
||||
|
@ -51,14 +51,14 @@ import java.util.StringTokenizer;
|
||||
* <caption style="display:none">Permission target name, what the permission allows, and associated risks</caption>
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th>Permission Target Name</th>
|
||||
* <th>What the Permission Allows</th>
|
||||
* <th>Risks of Allowing this Permission</th>
|
||||
* <th scope="col">Permission Target Name</th>
|
||||
* <th scope="col">What the Permission Allows</th>
|
||||
* <th scope="col">Risks of Allowing this Permission</th>
|
||||
* </tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td>allowHttpTrace</td>
|
||||
* <th scope="row">allowHttpTrace</th>
|
||||
* <td>The ability to use the HTTP TRACE method in HttpURLConnection.</td>
|
||||
* <td>Malicious code using HTTP TRACE could get access to security sensitive
|
||||
* information in the HTTP headers (such as cookies) that it might not
|
||||
@ -66,7 +66,7 @@ import java.util.StringTokenizer;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>getCookieHandler</td>
|
||||
* <th scope="row">getCookieHandler</th>
|
||||
* <td>The ability to get the cookie handler that processes highly
|
||||
* security sensitive cookie information for an Http session.</td>
|
||||
* <td>Malicious code can get a cookie handler to obtain access to
|
||||
@ -76,14 +76,14 @@ import java.util.StringTokenizer;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>getNetworkInformation</td>
|
||||
* <th scope="row">getNetworkInformation</th>
|
||||
* <td>The ability to retrieve all information about local network interfaces.</td>
|
||||
* <td>Malicious code can read information about network hardware such as
|
||||
* MAC addresses, which could be used to construct local IPv6 addresses.</td>
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>getProxySelector</td>
|
||||
* <th scope="row">getProxySelector</th>
|
||||
* <td>The ability to get the proxy selector used to make decisions
|
||||
* on which proxies to use when making network connections.</td>
|
||||
* <td>Malicious code can get a ProxySelector to discover proxy
|
||||
@ -92,7 +92,7 @@ import java.util.StringTokenizer;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>getResponseCache</td>
|
||||
* <th scope="row">getResponseCache</th>
|
||||
* <td>The ability to get the response cache that provides
|
||||
* access to a local response cache.</td>
|
||||
* <td>Malicious code getting access to the local response cache
|
||||
@ -100,7 +100,7 @@ import java.util.StringTokenizer;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>requestPasswordAuthentication</td>
|
||||
* <th scope="row">requestPasswordAuthentication</th>
|
||||
* <td>The ability
|
||||
* to ask the authenticator registered with the system for
|
||||
* a password</td>
|
||||
@ -108,7 +108,7 @@ import java.util.StringTokenizer;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>setCookieHandler</td>
|
||||
* <th scope="row">setCookieHandler</th>
|
||||
* <td>The ability to set the cookie handler that processes highly
|
||||
* security sensitive cookie information for an Http session.</td>
|
||||
* <td>Malicious code can set a cookie handler to obtain access to
|
||||
@ -118,7 +118,7 @@ import java.util.StringTokenizer;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>setDefaultAuthenticator</td>
|
||||
* <th scope="row">setDefaultAuthenticator</th>
|
||||
* <td>The ability to set the
|
||||
* way authentication information is retrieved when
|
||||
* a proxy or HTTP server asks for authentication</td>
|
||||
@ -128,7 +128,7 @@ import java.util.StringTokenizer;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>setProxySelector</td>
|
||||
* <th scope="row">setProxySelector</th>
|
||||
* <td>The ability to set the proxy selector used to make decisions
|
||||
* on which proxies to use when making network connections.</td>
|
||||
* <td>Malicious code can set a ProxySelector that directs network
|
||||
@ -136,7 +136,7 @@ import java.util.StringTokenizer;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>setResponseCache</td>
|
||||
* <th scope="row">setResponseCache</th>
|
||||
* <td>The ability to set the response cache that provides access to
|
||||
* a local response cache.</td>
|
||||
* <td>Malicious code getting access to the local response cache
|
||||
@ -145,7 +145,7 @@ import java.util.StringTokenizer;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>specifyStreamHandler</td>
|
||||
* <th scope="row">specifyStreamHandler</th>
|
||||
* <td>The ability
|
||||
* to specify a stream handler when constructing a URL</td>
|
||||
* <td>Malicious code may create a URL with resources that it would
|
||||
|
@ -64,13 +64,13 @@ import java.util.concurrent.TimeUnit;
|
||||
* <caption style="display:none:">System properties</caption>
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th>System property</th>
|
||||
* <th>Description</th>
|
||||
* <th scope="col">System property</th>
|
||||
* <th scope="col">Description</th>
|
||||
* </tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td> {@code java.nio.channels.DefaultThreadPool.threadFactory} </td>
|
||||
* <th scope="row"> {@code java.nio.channels.DefaultThreadPool.threadFactory} </th>
|
||||
* <td> The value of this property is taken to be the fully-qualified name
|
||||
* of a concrete {@link java.util.concurrent.ThreadFactory ThreadFactory}
|
||||
* class. The class is loaded using the system class loader and instantiated.
|
||||
@ -81,7 +81,7 @@ import java.util.concurrent.TimeUnit;
|
||||
* construction of the default group. </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@code java.nio.channels.DefaultThreadPool.initialSize} </td>
|
||||
* <th scope="row"> {@code java.nio.channels.DefaultThreadPool.initialSize} </th>
|
||||
* <td> The value of the {@code initialSize} parameter for the default
|
||||
* group (see {@link #withCachedThreadPool withCachedThreadPool}).
|
||||
* The value of the property is taken to be the {@code String}
|
||||
|
@ -136,17 +136,17 @@ public abstract class AsynchronousFileChannel
|
||||
* <table class="striped">
|
||||
* <caption style="display:none">additional options</caption>
|
||||
* <thead>
|
||||
* <tr> <th>Option</th> <th>Description</th> </tr>
|
||||
* <tr> <th scope="col">Option</th> <th scope="col">Description</th> </tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td> {@link StandardOpenOption#TRUNCATE_EXISTING TRUNCATE_EXISTING} </td>
|
||||
* <th scope="row"> {@link StandardOpenOption#TRUNCATE_EXISTING TRUNCATE_EXISTING} </th>
|
||||
* <td> When opening an existing file, the file is first truncated to a
|
||||
* size of 0 bytes. This option is ignored when the file is opened only
|
||||
* for reading.</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link StandardOpenOption#CREATE_NEW CREATE_NEW} </td>
|
||||
* <th scope="row"> {@link StandardOpenOption#CREATE_NEW CREATE_NEW} </th>
|
||||
* <td> If this option is present then a new file is created, failing if
|
||||
* the file already exists. When creating a file the check for the
|
||||
* existence of the file and the creation of the file if it does not exist
|
||||
@ -154,7 +154,7 @@ public abstract class AsynchronousFileChannel
|
||||
* ignored when the file is opened only for reading. </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td > {@link StandardOpenOption#CREATE CREATE} </td>
|
||||
* <th scope="row" > {@link StandardOpenOption#CREATE CREATE} </th>
|
||||
* <td> If this option is present then an existing file is opened if it
|
||||
* exists, otherwise a new file is created. When creating a file the check
|
||||
* for the existence of the file and the creation of the file if it does
|
||||
@ -163,7 +163,7 @@ public abstract class AsynchronousFileChannel
|
||||
* the file is opened only for reading. </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td > {@link StandardOpenOption#DELETE_ON_CLOSE DELETE_ON_CLOSE} </td>
|
||||
* <th scope="row" > {@link StandardOpenOption#DELETE_ON_CLOSE DELETE_ON_CLOSE} </th>
|
||||
* <td> When this option is present then the implementation makes a
|
||||
* <em>best effort</em> attempt to delete the file when closed by the
|
||||
* the {@link #close close} method. If the {@code close} method is not
|
||||
@ -171,20 +171,20 @@ public abstract class AsynchronousFileChannel
|
||||
* when the Java virtual machine terminates. </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>{@link StandardOpenOption#SPARSE SPARSE} </td>
|
||||
* <th scope="row">{@link StandardOpenOption#SPARSE SPARSE} </th>
|
||||
* <td> When creating a new file this option is a <em>hint</em> that the
|
||||
* new file will be sparse. This option is ignored when not creating
|
||||
* a new file. </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link StandardOpenOption#SYNC SYNC} </td>
|
||||
* <th scope="row"> {@link StandardOpenOption#SYNC SYNC} </th>
|
||||
* <td> Requires that every update to the file's content or metadata be
|
||||
* written synchronously to the underlying storage device. (see <a
|
||||
* href="../file/package-summary.html#integrity"> Synchronized I/O file
|
||||
* integrity</a>). </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link StandardOpenOption#DSYNC DSYNC} </td>
|
||||
* <th scope="row"> {@link StandardOpenOption#DSYNC DSYNC} </th>
|
||||
* <td> Requires that every update to the file's content be written
|
||||
* synchronously to the underlying storage device. (see <a
|
||||
* href="../file/package-summary.html#integrity"> Synchronized I/O file
|
||||
|
@ -56,17 +56,17 @@ import java.io.IOException;
|
||||
* <caption style="display:none">Socket options</caption>
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th>Option Name</th>
|
||||
* <th>Description</th>
|
||||
* <th scope="col">Option Name</th>
|
||||
* <th scope="col">Description</th>
|
||||
* </tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td> {@link java.net.StandardSocketOptions#SO_RCVBUF SO_RCVBUF} </td>
|
||||
* <th scope="row"> {@link java.net.StandardSocketOptions#SO_RCVBUF SO_RCVBUF} </th>
|
||||
* <td> The size of the socket receive buffer </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link java.net.StandardSocketOptions#SO_REUSEADDR SO_REUSEADDR} </td>
|
||||
* <th scope="row"> {@link java.net.StandardSocketOptions#SO_REUSEADDR SO_REUSEADDR} </th>
|
||||
* <td> Re-use address </td>
|
||||
* </tr>
|
||||
* </tbody>
|
||||
|
@ -66,29 +66,29 @@ import java.nio.ByteBuffer;
|
||||
* <caption style="display:none">Socket options</caption>
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th>Option Name</th>
|
||||
* <th>Description</th>
|
||||
* <th scope="col">Option Name</th>
|
||||
* <th scope="col">Description</th>
|
||||
* </tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td> {@link java.net.StandardSocketOptions#SO_SNDBUF SO_SNDBUF} </td>
|
||||
* <th scope="row"> {@link java.net.StandardSocketOptions#SO_SNDBUF SO_SNDBUF} </th>
|
||||
* <td> The size of the socket send buffer </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link java.net.StandardSocketOptions#SO_RCVBUF SO_RCVBUF} </td>
|
||||
* <th scope="row"> {@link java.net.StandardSocketOptions#SO_RCVBUF SO_RCVBUF} </th>
|
||||
* <td> The size of the socket receive buffer </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link java.net.StandardSocketOptions#SO_KEEPALIVE SO_KEEPALIVE} </td>
|
||||
* <th scope="row"> {@link java.net.StandardSocketOptions#SO_KEEPALIVE SO_KEEPALIVE} </th>
|
||||
* <td> Keep connection alive </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link java.net.StandardSocketOptions#SO_REUSEADDR SO_REUSEADDR} </td>
|
||||
* <th scope="row"> {@link java.net.StandardSocketOptions#SO_REUSEADDR SO_REUSEADDR} </th>
|
||||
* <td> Re-use address </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link java.net.StandardSocketOptions#TCP_NODELAY TCP_NODELAY} </td>
|
||||
* <th scope="row"> {@link java.net.StandardSocketOptions#TCP_NODELAY TCP_NODELAY} </th>
|
||||
* <td> Disable the Nagle algorithm </td>
|
||||
* </tr>
|
||||
* </tbody>
|
||||
|
@ -61,44 +61,44 @@ import java.nio.channels.spi.SelectorProvider;
|
||||
* <caption style="display:none">Socket options</caption>
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th>Option Name</th>
|
||||
* <th>Description</th>
|
||||
* <th scope="col">Option Name</th>
|
||||
* <th scope="col">Description</th>
|
||||
* </tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td> {@link java.net.StandardSocketOptions#SO_SNDBUF SO_SNDBUF} </td>
|
||||
* <th scope="row"> {@link java.net.StandardSocketOptions#SO_SNDBUF SO_SNDBUF} </th>
|
||||
* <td> The size of the socket send buffer </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link java.net.StandardSocketOptions#SO_RCVBUF SO_RCVBUF} </td>
|
||||
* <th scope="row"> {@link java.net.StandardSocketOptions#SO_RCVBUF SO_RCVBUF} </th>
|
||||
* <td> The size of the socket receive buffer </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link java.net.StandardSocketOptions#SO_REUSEADDR SO_REUSEADDR} </td>
|
||||
* <th scope="row"> {@link java.net.StandardSocketOptions#SO_REUSEADDR SO_REUSEADDR} </th>
|
||||
* <td> Re-use address </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link java.net.StandardSocketOptions#SO_BROADCAST SO_BROADCAST} </td>
|
||||
* <th scope="row"> {@link java.net.StandardSocketOptions#SO_BROADCAST SO_BROADCAST} </th>
|
||||
* <td> Allow transmission of broadcast datagrams </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link java.net.StandardSocketOptions#IP_TOS IP_TOS} </td>
|
||||
* <th scope="row"> {@link java.net.StandardSocketOptions#IP_TOS IP_TOS} </th>
|
||||
* <td> The Type of Service (ToS) octet in the Internet Protocol (IP) header </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link java.net.StandardSocketOptions#IP_MULTICAST_IF IP_MULTICAST_IF} </td>
|
||||
* <th scope="row"> {@link java.net.StandardSocketOptions#IP_MULTICAST_IF IP_MULTICAST_IF} </th>
|
||||
* <td> The network interface for Internet Protocol (IP) multicast datagrams </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link java.net.StandardSocketOptions#IP_MULTICAST_TTL
|
||||
* IP_MULTICAST_TTL} </td>
|
||||
* <th scope="row"> {@link java.net.StandardSocketOptions#IP_MULTICAST_TTL
|
||||
* IP_MULTICAST_TTL} </th>
|
||||
* <td> The <em>time-to-live</em> for Internet Protocol (IP) multicast
|
||||
* datagrams </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link java.net.StandardSocketOptions#IP_MULTICAST_LOOP
|
||||
* IP_MULTICAST_LOOP} </td>
|
||||
* <th scope="row"> {@link java.net.StandardSocketOptions#IP_MULTICAST_LOOP
|
||||
* IP_MULTICAST_LOOP} </th>
|
||||
* <td> Loopback for Internet Protocol (IP) multicast datagrams </td>
|
||||
* </tr>
|
||||
* </tbody>
|
||||
|
@ -177,11 +177,11 @@ public abstract class FileChannel
|
||||
* <table class="striped">
|
||||
* <caption style="display:none">additional options</caption>
|
||||
* <thead>
|
||||
* <tr> <th>Option</th> <th>Description</th> </tr>
|
||||
* <tr> <th scope="col">Option</th> <th scope="col">Description</th> </tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td> {@link StandardOpenOption#APPEND APPEND} </td>
|
||||
* <th scope="row"> {@link StandardOpenOption#APPEND APPEND} </th>
|
||||
* <td> If this option is present then the file is opened for writing and
|
||||
* each invocation of the channel's {@code write} method first advances
|
||||
* the position to the end of the file and then writes the requested
|
||||
@ -191,13 +191,13 @@ public abstract class FileChannel
|
||||
* with the {@code READ} or {@code TRUNCATE_EXISTING} options. </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link StandardOpenOption#TRUNCATE_EXISTING TRUNCATE_EXISTING} </td>
|
||||
* <th scope="row"> {@link StandardOpenOption#TRUNCATE_EXISTING TRUNCATE_EXISTING} </th>
|
||||
* <td> If this option is present then the existing file is truncated to
|
||||
* a size of 0 bytes. This option is ignored when the file is opened only
|
||||
* for reading. </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link StandardOpenOption#CREATE_NEW CREATE_NEW} </td>
|
||||
* <th scope="row"> {@link StandardOpenOption#CREATE_NEW CREATE_NEW} </th>
|
||||
* <td> If this option is present then a new file is created, failing if
|
||||
* the file already exists. When creating a file the check for the
|
||||
* existence of the file and the creation of the file if it does not exist
|
||||
@ -205,7 +205,7 @@ public abstract class FileChannel
|
||||
* ignored when the file is opened only for reading. </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td > {@link StandardOpenOption#CREATE CREATE} </td>
|
||||
* <th scope="row" > {@link StandardOpenOption#CREATE CREATE} </th>
|
||||
* <td> If this option is present then an existing file is opened if it
|
||||
* exists, otherwise a new file is created. When creating a file the check
|
||||
* for the existence of the file and the creation of the file if it does
|
||||
@ -214,7 +214,7 @@ public abstract class FileChannel
|
||||
* the file is opened only for reading. </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td > {@link StandardOpenOption#DELETE_ON_CLOSE DELETE_ON_CLOSE} </td>
|
||||
* <th scope="row" > {@link StandardOpenOption#DELETE_ON_CLOSE DELETE_ON_CLOSE} </th>
|
||||
* <td> When this option is present then the implementation makes a
|
||||
* <em>best effort</em> attempt to delete the file when closed by the
|
||||
* the {@link #close close} method. If the {@code close} method is not
|
||||
@ -222,20 +222,20 @@ public abstract class FileChannel
|
||||
* when the Java virtual machine terminates. </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>{@link StandardOpenOption#SPARSE SPARSE} </td>
|
||||
* <th scope="row">{@link StandardOpenOption#SPARSE SPARSE} </th>
|
||||
* <td> When creating a new file this option is a <em>hint</em> that the
|
||||
* new file will be sparse. This option is ignored when not creating
|
||||
* a new file. </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link StandardOpenOption#SYNC SYNC} </td>
|
||||
* <th scope="row"> {@link StandardOpenOption#SYNC SYNC} </th>
|
||||
* <td> Requires that every update to the file's content or metadata be
|
||||
* written synchronously to the underlying storage device. (see <a
|
||||
* href="../file/package-summary.html#integrity"> Synchronized I/O file
|
||||
* integrity</a>). </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link StandardOpenOption#DSYNC DSYNC} </td>
|
||||
* <th scope="row"> {@link StandardOpenOption#DSYNC DSYNC} </th>
|
||||
* <td> Requires that every update to the file's content be written
|
||||
* synchronously to the underlying storage device. (see <a
|
||||
* href="../file/package-summary.html#integrity"> Synchronized I/O file
|
||||
|
@ -50,17 +50,17 @@ import java.nio.channels.spi.SelectorProvider;
|
||||
* <caption style="display:none">Socket options</caption>
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th>Option Name</th>
|
||||
* <th>Description</th>
|
||||
* <th scope="col">Option Name</th>
|
||||
* <th scope="col">Description</th>
|
||||
* </tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td> {@link java.net.StandardSocketOptions#SO_RCVBUF SO_RCVBUF} </td>
|
||||
* <th scope="row"> {@link java.net.StandardSocketOptions#SO_RCVBUF SO_RCVBUF} </th>
|
||||
* <td> The size of the socket receive buffer </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link java.net.StandardSocketOptions#SO_REUSEADDR SO_REUSEADDR} </td>
|
||||
* <th scope="row"> {@link java.net.StandardSocketOptions#SO_REUSEADDR SO_REUSEADDR} </th>
|
||||
* <td> Re-use address </td>
|
||||
* </tr>
|
||||
* </tbody>
|
||||
|
@ -70,34 +70,34 @@ import java.nio.channels.spi.SelectorProvider;
|
||||
* <caption style="display:none">Socket options</caption>
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th>Option Name</th>
|
||||
* <th>Description</th>
|
||||
* <th scope="col">Option Name</th>
|
||||
* <th scope="col">Description</th>
|
||||
* </tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td> {@link java.net.StandardSocketOptions#SO_SNDBUF SO_SNDBUF} </td>
|
||||
* <th scope="row"> {@link java.net.StandardSocketOptions#SO_SNDBUF SO_SNDBUF} </th>
|
||||
* <td> The size of the socket send buffer </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link java.net.StandardSocketOptions#SO_RCVBUF SO_RCVBUF} </td>
|
||||
* <th scope="row"> {@link java.net.StandardSocketOptions#SO_RCVBUF SO_RCVBUF} </th>
|
||||
* <td> The size of the socket receive buffer </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link java.net.StandardSocketOptions#SO_KEEPALIVE SO_KEEPALIVE} </td>
|
||||
* <th scope="row"> {@link java.net.StandardSocketOptions#SO_KEEPALIVE SO_KEEPALIVE} </th>
|
||||
* <td> Keep connection alive </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link java.net.StandardSocketOptions#SO_REUSEADDR SO_REUSEADDR} </td>
|
||||
* <th scope="row"> {@link java.net.StandardSocketOptions#SO_REUSEADDR SO_REUSEADDR} </th>
|
||||
* <td> Re-use address </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link java.net.StandardSocketOptions#SO_LINGER SO_LINGER} </td>
|
||||
* <th scope="row"> {@link java.net.StandardSocketOptions#SO_LINGER SO_LINGER} </th>
|
||||
* <td> Linger on close if data is present (when configured in blocking mode
|
||||
* only) </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link java.net.StandardSocketOptions#TCP_NODELAY TCP_NODELAY} </td>
|
||||
* <th scope="row"> {@link java.net.StandardSocketOptions#TCP_NODELAY TCP_NODELAY} </th>
|
||||
* <td> Disable the Nagle algorithm </td>
|
||||
* </tr>
|
||||
* </tbody>
|
||||
|
@ -25,6 +25,11 @@
|
||||
|
||||
package java.nio.charset;
|
||||
|
||||
import jdk.internal.misc.VM;
|
||||
import sun.nio.cs.StandardCharsets;
|
||||
import sun.nio.cs.ThreadLocalCoders;
|
||||
import sun.security.action.GetPropertyAction;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.CharBuffer;
|
||||
import java.nio.charset.spi.CharsetProvider;
|
||||
@ -38,15 +43,11 @@ import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.NoSuchElementException;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.ServiceLoader;
|
||||
import java.util.ServiceConfigurationError;
|
||||
import java.util.ServiceLoader;
|
||||
import java.util.Set;
|
||||
import java.util.SortedMap;
|
||||
import java.util.TreeMap;
|
||||
import jdk.internal.misc.VM;
|
||||
import sun.nio.cs.StandardCharsets;
|
||||
import sun.nio.cs.ThreadLocalCoders;
|
||||
import sun.security.action.GetPropertyAction;
|
||||
|
||||
|
||||
/**
|
||||
@ -150,23 +151,23 @@ import sun.security.action.GetPropertyAction;
|
||||
* <blockquote><table class="striped" style="width:80%">
|
||||
* <caption style="display:none">Description of standard charsets</caption>
|
||||
* <thead>
|
||||
* <tr><th style="text-align:left">Charset</th><th style="text-align:left">Description</th></tr>
|
||||
* <tr><th scope="col" style="text-align:left">Charset</th><th scope="col" style="text-align:left">Description</th></tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr><td style="vertical-align:top">{@code US-ASCII}</td>
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code US-ASCII}</th>
|
||||
* <td>Seven-bit ASCII, a.k.a. {@code ISO646-US},
|
||||
* a.k.a. the Basic Latin block of the Unicode character set</td></tr>
|
||||
* <tr><td style="vertical-align:top"><code>ISO-8859-1 </code></td>
|
||||
* <tr><th scope="row" style="vertical-align:top"><code>ISO-8859-1 </code></th>
|
||||
* <td>ISO Latin Alphabet No. 1, a.k.a. {@code ISO-LATIN-1}</td></tr>
|
||||
* <tr><td style="vertical-align:top">{@code UTF-8}</td>
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code UTF-8}</th>
|
||||
* <td>Eight-bit UCS Transformation Format</td></tr>
|
||||
* <tr><td style="vertical-align:top">{@code UTF-16BE}</td>
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code UTF-16BE}</th>
|
||||
* <td>Sixteen-bit UCS Transformation Format,
|
||||
* big-endian byte order</td></tr>
|
||||
* <tr><td style="vertical-align:top">{@code UTF-16LE}</td>
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code UTF-16LE}</th>
|
||||
* <td>Sixteen-bit UCS Transformation Format,
|
||||
* little-endian byte order</td></tr>
|
||||
* <tr><td style="vertical-align:top">{@code UTF-16}</td>
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code UTF-16}</th>
|
||||
* <td>Sixteen-bit UCS Transformation Format,
|
||||
* byte order identified by an optional byte-order mark</td></tr>
|
||||
* </tbody>
|
||||
@ -635,10 +636,19 @@ public abstract class Charset
|
||||
* If the canonical name or any of the aliases are illegal
|
||||
*/
|
||||
protected Charset(String canonicalName, String[] aliases) {
|
||||
checkName(canonicalName);
|
||||
String[] as = Objects.requireNonNullElse(aliases, zeroAliases);
|
||||
for (int i = 0; i < as.length; i++)
|
||||
checkName(as[i]);
|
||||
|
||||
// Skip checks for the standard, built-in Charsets we always load
|
||||
// during initialization. Use of identity is intentional to be
|
||||
// consistent with sun.nio.cs.StandardCharsets
|
||||
if (canonicalName != StandardCharsets.ISO_8859_1
|
||||
&& canonicalName != StandardCharsets.US_ASCII
|
||||
&& canonicalName != StandardCharsets.UTF_8) {
|
||||
checkName(canonicalName);
|
||||
for (int i = 0; i < as.length; i++) {
|
||||
checkName(as[i]);
|
||||
}
|
||||
}
|
||||
this.name = canonicalName;
|
||||
this.aliases = as;
|
||||
}
|
||||
|
@ -236,11 +236,11 @@ public final class Files {
|
||||
* <table class="striped">
|
||||
* <caption style="display:none">Options</caption>
|
||||
* <thead>
|
||||
* <tr> <th>Option</th> <th>Description</th> </tr>
|
||||
* <tr> <th scope="col">Option</th> <th scope="col">Description</th> </tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td> {@link StandardOpenOption#APPEND APPEND} </td>
|
||||
* <th scope="row"> {@link StandardOpenOption#APPEND APPEND} </th>
|
||||
* <td> If this option is present then the file is opened for writing and
|
||||
* each invocation of the channel's {@code write} method first advances
|
||||
* the position to the end of the file and then writes the requested
|
||||
@ -250,13 +250,13 @@ public final class Files {
|
||||
* with the {@code READ} or {@code TRUNCATE_EXISTING} options. </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link StandardOpenOption#TRUNCATE_EXISTING TRUNCATE_EXISTING} </td>
|
||||
* <th scope="row"> {@link StandardOpenOption#TRUNCATE_EXISTING TRUNCATE_EXISTING} </th>
|
||||
* <td> If this option is present then the existing file is truncated to
|
||||
* a size of 0 bytes. This option is ignored when the file is opened only
|
||||
* for reading. </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link StandardOpenOption#CREATE_NEW CREATE_NEW} </td>
|
||||
* <th scope="row"> {@link StandardOpenOption#CREATE_NEW CREATE_NEW} </th>
|
||||
* <td> If this option is present then a new file is created, failing if
|
||||
* the file already exists or is a symbolic link. When creating a file the
|
||||
* check for the existence of the file and the creation of the file if it
|
||||
@ -264,14 +264,14 @@ public final class Files {
|
||||
* This option is ignored when the file is opened only for reading. </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td > {@link StandardOpenOption#CREATE CREATE} </td>
|
||||
* <th scope="row" > {@link StandardOpenOption#CREATE CREATE} </th>
|
||||
* <td> If this option is present then an existing file is opened if it
|
||||
* exists, otherwise a new file is created. This option is ignored if the
|
||||
* {@code CREATE_NEW} option is also present or the file is opened only
|
||||
* for reading. </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td > {@link StandardOpenOption#DELETE_ON_CLOSE DELETE_ON_CLOSE} </td>
|
||||
* <th scope="row" > {@link StandardOpenOption#DELETE_ON_CLOSE DELETE_ON_CLOSE} </th>
|
||||
* <td> When this option is present then the implementation makes a
|
||||
* <em>best effort</em> attempt to delete the file when closed by the
|
||||
* {@link SeekableByteChannel#close close} method. If the {@code close}
|
||||
@ -279,20 +279,20 @@ public final class Files {
|
||||
* delete the file when the Java virtual machine terminates. </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>{@link StandardOpenOption#SPARSE SPARSE} </td>
|
||||
* <th scope="row">{@link StandardOpenOption#SPARSE SPARSE} </th>
|
||||
* <td> When creating a new file this option is a <em>hint</em> that the
|
||||
* new file will be sparse. This option is ignored when not creating
|
||||
* a new file. </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link StandardOpenOption#SYNC SYNC} </td>
|
||||
* <th scope="row"> {@link StandardOpenOption#SYNC SYNC} </th>
|
||||
* <td> Requires that every update to the file's content or metadata be
|
||||
* written synchronously to the underlying storage device. (see <a
|
||||
* href="package-summary.html#integrity"> Synchronized I/O file
|
||||
* integrity</a>). </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link StandardOpenOption#DSYNC DSYNC} </td>
|
||||
* <th scope="row"> {@link StandardOpenOption#DSYNC DSYNC} </th>
|
||||
* <td> Requires that every update to the file's content be written
|
||||
* synchronously to the underlying storage device. (see <a
|
||||
* href="package-summary.html#integrity"> Synchronized I/O file
|
||||
@ -1196,18 +1196,18 @@ public final class Files {
|
||||
* <table class="striped">
|
||||
* <caption style="display:none">Options</caption>
|
||||
* <thead>
|
||||
* <tr> <th>Option</th> <th>Description</th> </tr>
|
||||
* <tr> <th scope="col">Option</th> <th scope="col">Description</th> </tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td> {@link StandardCopyOption#REPLACE_EXISTING REPLACE_EXISTING} </td>
|
||||
* <th scope="row"> {@link StandardCopyOption#REPLACE_EXISTING REPLACE_EXISTING} </th>
|
||||
* <td> If the target file exists, then the target file is replaced if it
|
||||
* is not a non-empty directory. If the target file exists and is a
|
||||
* symbolic link, then the symbolic link itself, not the target of
|
||||
* the link, is replaced. </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link StandardCopyOption#COPY_ATTRIBUTES COPY_ATTRIBUTES} </td>
|
||||
* <th scope="row"> {@link StandardCopyOption#COPY_ATTRIBUTES COPY_ATTRIBUTES} </th>
|
||||
* <td> Attempts to copy the file attributes associated with this file to
|
||||
* the target file. The exact file attributes that are copied is platform
|
||||
* and file system dependent and therefore unspecified. Minimally, the
|
||||
@ -1217,7 +1217,7 @@ public final class Files {
|
||||
* loss. </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link LinkOption#NOFOLLOW_LINKS NOFOLLOW_LINKS} </td>
|
||||
* <th scope="row"> {@link LinkOption#NOFOLLOW_LINKS NOFOLLOW_LINKS} </th>
|
||||
* <td> Symbolic links are not followed. If the file is a symbolic link,
|
||||
* then the symbolic link itself, not the target of the link, is copied.
|
||||
* It is implementation specific if file attributes can be copied to the
|
||||
@ -1319,18 +1319,18 @@ public final class Files {
|
||||
* <table class="striped">
|
||||
* <caption style="display:none">Options</caption>
|
||||
* <thead>
|
||||
* <tr> <th>Option</th> <th>Description</th> </tr>
|
||||
* <tr> <th scope="col">Option</th> <th scope="col">Description</th> </tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td> {@link StandardCopyOption#REPLACE_EXISTING REPLACE_EXISTING} </td>
|
||||
* <th scope="row"> {@link StandardCopyOption#REPLACE_EXISTING REPLACE_EXISTING} </th>
|
||||
* <td> If the target file exists, then the target file is replaced if it
|
||||
* is not a non-empty directory. If the target file exists and is a
|
||||
* symbolic link, then the symbolic link itself, not the target of
|
||||
* the link, is replaced. </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link StandardCopyOption#ATOMIC_MOVE ATOMIC_MOVE} </td>
|
||||
* <th scope="row"> {@link StandardCopyOption#ATOMIC_MOVE ATOMIC_MOVE} </th>
|
||||
* <td> The move is performed as an atomic file system operation and all
|
||||
* other options are ignored. If the target file exists then it is
|
||||
* implementation specific if the existing file is replaced or this method
|
||||
|
@ -37,14 +37,14 @@ import java.security.BasicPermission;
|
||||
* <caption style="display:none">Table shows permission target name, what the permission allows, and associated risks</caption>
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th>Permission Target Name</th>
|
||||
* <th>What the Permission Allows</th>
|
||||
* <th>Risks of Allowing this Permission</th>
|
||||
* <th scope="col">Permission Target Name</th>
|
||||
* <th scope="col">What the Permission Allows</th>
|
||||
* <th scope="col">Risks of Allowing this Permission</th>
|
||||
* </tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td>hard</td>
|
||||
* <th scope="row">hard</th>
|
||||
* <td> Ability to add an existing file to a directory. This is sometimes
|
||||
* known as creating a link, or hard link. </td>
|
||||
* <td> Extreme care should be taken when granting this permission. It allows
|
||||
@ -52,7 +52,7 @@ import java.security.BasicPermission;
|
||||
* attacker access to all files. </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>symbolic</td>
|
||||
* <th scope="row">symbolic</th>
|
||||
* <td> Ability to create symbolic links. </td>
|
||||
* <td> Extreme care should be taken when granting this permission. It allows
|
||||
* linking to any file or directory in the file system thus allowing the
|
||||
|
@ -98,17 +98,17 @@ import java.io.IOException;
|
||||
* <caption style="display:none">Supported attributes</caption>
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th> Name </th>
|
||||
* <th> Type </th>
|
||||
* <th scope="col"> Name </th>
|
||||
* <th scope="col"> Type </th>
|
||||
* </tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td> "acl" </td>
|
||||
* <th scope="row"> "acl" </th>
|
||||
* <td> {@link List}<{@link AclEntry}> </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> "owner" </td>
|
||||
* <th scope="row"> "owner" </th>
|
||||
* <td> {@link UserPrincipal} </td>
|
||||
* </tr>
|
||||
* </tbody>
|
||||
|
@ -45,45 +45,45 @@ import java.io.IOException;
|
||||
* <caption style="display:none">Supported attributes</caption>
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th> Name </th>
|
||||
* <th> Type </th>
|
||||
* <th scope="col"> Name </th>
|
||||
* <th scope="col"> Type </th>
|
||||
* </tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td> "lastModifiedTime" </td>
|
||||
* <th scope="row"> "lastModifiedTime" </th>
|
||||
* <td> {@link FileTime} </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> "lastAccessTime" </td>
|
||||
* <th scope="row"> "lastAccessTime" </th>
|
||||
* <td> {@link FileTime} </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> "creationTime" </td>
|
||||
* <th scope="row"> "creationTime" </th>
|
||||
* <td> {@link FileTime} </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> "size" </td>
|
||||
* <th scope="row"> "size" </th>
|
||||
* <td> {@link Long} </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> "isRegularFile" </td>
|
||||
* <th scope="row"> "isRegularFile" </th>
|
||||
* <td> {@link Boolean} </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> "isDirectory" </td>
|
||||
* <th scope="row"> "isDirectory" </th>
|
||||
* <td> {@link Boolean} </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> "isSymbolicLink" </td>
|
||||
* <th scope="row"> "isSymbolicLink" </th>
|
||||
* <td> {@link Boolean} </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> "isOther" </td>
|
||||
* <th scope="row"> "isOther" </th>
|
||||
* <td> {@link Boolean} </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> "fileKey" </td>
|
||||
* <th scope="row"> "fileKey" </th>
|
||||
* <td> {@link Object} </td>
|
||||
* </tr>
|
||||
* </tbody>
|
||||
|
@ -45,25 +45,25 @@ import java.io.IOException;
|
||||
* <caption style="display:none">Supported attributes</caption>
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th> Name </th>
|
||||
* <th> Type </th>
|
||||
* <th scope="col"> Name </th>
|
||||
* <th scope="col"> Type </th>
|
||||
* </tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td> readonly </td>
|
||||
* <th scope="row"> readonly </th>
|
||||
* <td> {@link Boolean} </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> hidden </td>
|
||||
* <th scope="row"> hidden </th>
|
||||
* <td> {@link Boolean} </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> system </td>
|
||||
* <th scope="row"> system </th>
|
||||
* <td> {@link Boolean} </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> archive </td>
|
||||
* <th scope="row"> archive </th>
|
||||
* <td> {@link Boolean} </td>
|
||||
* </tr>
|
||||
* </tbody>
|
||||
|
@ -78,17 +78,17 @@ import java.io.IOException;
|
||||
* <caption style="display:none">Supported attributes</caption>
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th> Name </th>
|
||||
* <th> Type </th>
|
||||
* <th scope="col"> Name </th>
|
||||
* <th scope="col"> Type </th>
|
||||
* </tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td> "permissions" </td>
|
||||
* <th scope="row"> "permissions" </th>
|
||||
* <td> {@link Set}<{@link PosixFilePermission}> </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> "group" </td>
|
||||
* <th scope="row"> "group" </th>
|
||||
* <td> {@link GroupPrincipal} </td>
|
||||
* </tr>
|
||||
* </tbody>
|
||||
|
@ -922,21 +922,21 @@ public abstract class FileSystemProvider {
|
||||
* <table class="striped">
|
||||
* <caption style="display:none">Access Modes</caption>
|
||||
* <thead>
|
||||
* <tr> <th>Value</th> <th>Description</th> </tr>
|
||||
* <tr> <th scope="col">Value</th> <th scope="col">Description</th> </tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td> {@link AccessMode#READ READ} </td>
|
||||
* <th scope="row"> {@link AccessMode#READ READ} </th>
|
||||
* <td> Checks that the file exists and that the Java virtual machine has
|
||||
* permission to read the file. </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link AccessMode#WRITE WRITE} </td>
|
||||
* <th scope="row"> {@link AccessMode#WRITE WRITE} </th>
|
||||
* <td> Checks that the file exists and that the Java virtual machine has
|
||||
* permission to write to the file, </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link AccessMode#EXECUTE EXECUTE} </td>
|
||||
* <th scope="row"> {@link AccessMode#EXECUTE EXECUTE} </th>
|
||||
* <td> Checks that the file exists and that the Java virtual machine has
|
||||
* permission to {@link Runtime#exec execute} the file. The semantics
|
||||
* may differ when checking access to a directory. For example, on UNIX
|
||||
|
@ -49,15 +49,15 @@ import java.util.StringTokenizer;
|
||||
* <caption style="display:none">target name, what the permission allows, and associated risks</caption>
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th>Permission Target Name</th>
|
||||
* <th>What the Permission Allows</th>
|
||||
* <th>Risks of Allowing this Permission</th>
|
||||
* <th scope="col">Permission Target Name</th>
|
||||
* <th scope="col">What the Permission Allows</th>
|
||||
* <th scope="col">Risks of Allowing this Permission</th>
|
||||
* </tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
*
|
||||
* <tr>
|
||||
* <td>authProvider.{provider name}</td>
|
||||
* <th scope="row">authProvider.{provider name}</th>
|
||||
* <td>Allow the named provider to be an AuthProvider for login and
|
||||
* logout operations. </td>
|
||||
* <td>This allows the named provider to perform login and logout
|
||||
@ -68,7 +68,7 @@ import java.util.StringTokenizer;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>createAccessControlContext</td>
|
||||
* <th scope="row">createAccessControlContext</th>
|
||||
* <td>Creation of an AccessControlContext</td>
|
||||
* <td>This allows someone to instantiate an AccessControlContext
|
||||
* with a {@code DomainCombiner}. Extreme care must be taken when
|
||||
@ -78,7 +78,7 @@ import java.util.StringTokenizer;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>getDomainCombiner</td>
|
||||
* <th scope="row">getDomainCombiner</th>
|
||||
* <td>Retrieval of an AccessControlContext's DomainCombiner</td>
|
||||
* <td>This allows someone to retrieve an AccessControlContext's
|
||||
* {@code DomainCombiner}. Since DomainCombiners may contain
|
||||
@ -86,7 +86,7 @@ import java.util.StringTokenizer;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>getPolicy</td>
|
||||
* <th scope="row">getPolicy</th>
|
||||
* <td>Retrieval of the system-wide security policy (specifically, of the
|
||||
* currently-installed Policy object)</td>
|
||||
* <td>This allows someone to query the policy via the
|
||||
@ -99,7 +99,7 @@ import java.util.StringTokenizer;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>setPolicy</td>
|
||||
* <th scope="row">setPolicy</th>
|
||||
* <td>Setting of the system-wide security policy (specifically,
|
||||
* the Policy object)</td>
|
||||
* <td>Granting this permission is extremely dangerous, as malicious
|
||||
@ -108,7 +108,7 @@ import java.util.StringTokenizer;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>createPolicy.{policy type}</td>
|
||||
* <th scope="row">createPolicy.{policy type}</th>
|
||||
* <td>Getting an instance of a Policy implementation from a provider</td>
|
||||
* <td>Granting this permission enables code to obtain a Policy object.
|
||||
* Malicious code may query the Policy object to determine what permissions
|
||||
@ -116,7 +116,7 @@ import java.util.StringTokenizer;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>getProperty.{key}</td>
|
||||
* <th scope="row">getProperty.{key}</th>
|
||||
* <td>Retrieval of the security property with the specified key</td>
|
||||
* <td>Depending on the particular key for which access has
|
||||
* been granted, the code may have access to the list of security
|
||||
@ -129,7 +129,7 @@ import java.util.StringTokenizer;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>setProperty.{key}</td>
|
||||
* <th scope="row">setProperty.{key}</th>
|
||||
* <td>Setting of the security property with the specified key</td>
|
||||
* <td>This could include setting a security provider or defining
|
||||
* the location of the system-wide security policy. Malicious
|
||||
@ -144,7 +144,7 @@ import java.util.StringTokenizer;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>insertProvider</td>
|
||||
* <th scope="row">insertProvider</th>
|
||||
* <td>Addition of a new provider</td>
|
||||
* <td>This would allow somebody to introduce a possibly
|
||||
* malicious provider (e.g., one that discloses the private keys passed
|
||||
@ -158,7 +158,7 @@ import java.util.StringTokenizer;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>removeProvider.{provider name}</td>
|
||||
* <th scope="row">removeProvider.{provider name}</th>
|
||||
* <td>Removal of the specified provider</td>
|
||||
* <td>This may change the behavior or disable execution of other
|
||||
* parts of the program. If a provider subsequently requested by the
|
||||
@ -171,7 +171,7 @@ import java.util.StringTokenizer;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>clearProviderProperties.{provider name}</td>
|
||||
* <th scope="row">clearProviderProperties.{provider name}</th>
|
||||
* <td>"Clearing" of a Provider so that it no longer contains the properties
|
||||
* used to look up services implemented by the provider</td>
|
||||
* <td>This disables the lookup of services implemented by the provider.
|
||||
@ -181,7 +181,7 @@ import java.util.StringTokenizer;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>putProviderProperty.{provider name}</td>
|
||||
* <th scope="row">putProviderProperty.{provider name}</th>
|
||||
* <td>Setting of properties for the specified Provider</td>
|
||||
* <td>The provider properties each specify the name and location
|
||||
* of a particular service implemented by the provider. By granting
|
||||
@ -190,7 +190,7 @@ import java.util.StringTokenizer;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>removeProviderProperty.{provider name}</td>
|
||||
* <th scope="row">removeProviderProperty.{provider name}</th>
|
||||
* <td>Removal of properties from the specified Provider</td>
|
||||
* <td>This disables the lookup of services implemented by the
|
||||
* provider. They are no longer accessible due to removal of the properties
|
||||
@ -213,15 +213,15 @@ import java.util.StringTokenizer;
|
||||
* <caption style="display:none">target name, what the permission allows, and associated risks</caption>
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th>Permission Target Name</th>
|
||||
* <th>What the Permission Allows</th>
|
||||
* <th>Risks of Allowing this Permission</th>
|
||||
* <th scope="col">Permission Target Name</th>
|
||||
* <th scope="col">What the Permission Allows</th>
|
||||
* <th scope="col">Risks of Allowing this Permission</th>
|
||||
* </tr>
|
||||
* </thead>
|
||||
*
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td>insertProvider.{provider name}</td>
|
||||
* <th scope="row">insertProvider.{provider name}</th>
|
||||
* <td>Addition of a new provider, with the specified name</td>
|
||||
* <td>Use of this permission is discouraged from further use because it is
|
||||
* possible to circumvent the name restrictions by overriding the
|
||||
@ -238,7 +238,7 @@ import java.util.StringTokenizer;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>setSystemScope</td>
|
||||
* <th scope="row">setSystemScope</th>
|
||||
* <td>Setting of the system identity scope</td>
|
||||
* <td>This would allow an attacker to configure the system identity scope with
|
||||
* certificates that should not be trusted, thereby granting applet or
|
||||
@ -247,7 +247,7 @@ import java.util.StringTokenizer;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>setIdentityPublicKey</td>
|
||||
* <th scope="row">setIdentityPublicKey</th>
|
||||
* <td>Setting of the public key for an Identity</td>
|
||||
* <td>If the identity is marked as "trusted", this allows an attacker to
|
||||
* introduce a different public key (e.g., its own) that is not trusted
|
||||
@ -257,7 +257,7 @@ import java.util.StringTokenizer;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>setIdentityInfo</td>
|
||||
* <th scope="row">setIdentityInfo</th>
|
||||
* <td>Setting of a general information string for an Identity</td>
|
||||
* <td>This allows attackers to set the general description for
|
||||
* an identity. This may trick applications into using a different
|
||||
@ -266,7 +266,7 @@ import java.util.StringTokenizer;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>addIdentityCertificate</td>
|
||||
* <th scope="row">addIdentityCertificate</th>
|
||||
* <td>Addition of a certificate for an Identity</td>
|
||||
* <td>This allows attackers to set a certificate for
|
||||
* an identity's public key. This is dangerous because it affects
|
||||
@ -275,7 +275,7 @@ import java.util.StringTokenizer;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>removeIdentityCertificate</td>
|
||||
* <th scope="row">removeIdentityCertificate</th>
|
||||
* <td>Removal of a certificate for an Identity</td>
|
||||
* <td>This allows attackers to remove a certificate for
|
||||
* an identity's public key. This is dangerous because it affects
|
||||
@ -284,7 +284,7 @@ import java.util.StringTokenizer;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>printIdentity</td>
|
||||
* <th scope="row">printIdentity</th>
|
||||
* <td>Viewing the name of a principal
|
||||
* and optionally the scope in which it is used, and whether
|
||||
* or not it is considered "trusted" in that scope</td>
|
||||
@ -296,7 +296,7 @@ import java.util.StringTokenizer;
|
||||
*</tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>getSignerPrivateKey</td>
|
||||
* <th scope="row">getSignerPrivateKey</th>
|
||||
* <td>Retrieval of a Signer's private key</td>
|
||||
* <td>It is very dangerous to allow access to a private key; private
|
||||
* keys are supposed to be kept secret. Otherwise, code can use the
|
||||
@ -305,7 +305,7 @@ import java.util.StringTokenizer;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>setSignerKeyPair</td>
|
||||
* <th scope="row">setSignerKeyPair</th>
|
||||
* <td>Setting of the key pair (public key and private key) for a Signer</td>
|
||||
* <td>This would allow an attacker to replace somebody else's (the "target's")
|
||||
* keypair with a possibly weaker keypair (e.g., a keypair of a smaller
|
||||
|
@ -176,60 +176,60 @@ import sun.util.locale.provider.ResourceBundleBasedAdapter;
|
||||
* <caption style="display:none">Chart showing symbol, location, localized, and meaning.</caption>
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th style="text-align:left">Symbol
|
||||
* <th style="text-align:left">Location
|
||||
* <th style="text-align:left">Localized?
|
||||
* <th style="text-align:left">Meaning
|
||||
* <th scope="col" style="text-align:left">Symbol
|
||||
* <th scope="col" style="text-align:left">Location
|
||||
* <th scope="col" style="text-align:left">Localized?
|
||||
* <th scope="col" style="text-align:left">Meaning
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr style="vertical-align:top">
|
||||
* <td><code>0</code>
|
||||
* <th scope="row"><code>0</code>
|
||||
* <td>Number
|
||||
* <td>Yes
|
||||
* <td>Digit
|
||||
* <tr style="vertical-align: top">
|
||||
* <td><code>#</code>
|
||||
* <th scope="row"><code>#</code>
|
||||
* <td>Number
|
||||
* <td>Yes
|
||||
* <td>Digit, zero shows as absent
|
||||
* <tr style="vertical-align:top">
|
||||
* <td><code>.</code>
|
||||
* <th scope="row"><code>.</code>
|
||||
* <td>Number
|
||||
* <td>Yes
|
||||
* <td>Decimal separator or monetary decimal separator
|
||||
* <tr style="vertical-align: top">
|
||||
* <td><code>-</code>
|
||||
* <th scope="row"><code>-</code>
|
||||
* <td>Number
|
||||
* <td>Yes
|
||||
* <td>Minus sign
|
||||
* <tr style="vertical-align:top">
|
||||
* <td><code>,</code>
|
||||
* <th scope="row"><code>,</code>
|
||||
* <td>Number
|
||||
* <td>Yes
|
||||
* <td>Grouping separator
|
||||
* <tr style="vertical-align: top">
|
||||
* <td><code>E</code>
|
||||
* <th scope="row"><code>E</code>
|
||||
* <td>Number
|
||||
* <td>Yes
|
||||
* <td>Separates mantissa and exponent in scientific notation.
|
||||
* <em>Need not be quoted in prefix or suffix.</em>
|
||||
* <tr style="vertical-align:top">
|
||||
* <td><code>;</code>
|
||||
* <th scope="row"><code>;</code>
|
||||
* <td>Subpattern boundary
|
||||
* <td>Yes
|
||||
* <td>Separates positive and negative subpatterns
|
||||
* <tr style="vertical-align: top">
|
||||
* <td><code>%</code>
|
||||
* <th scope="row"><code>%</code>
|
||||
* <td>Prefix or suffix
|
||||
* <td>Yes
|
||||
* <td>Multiply by 100 and show as percentage
|
||||
* <tr style="vertical-align:top">
|
||||
* <td><code>\u2030</code>
|
||||
* <th scope="row"><code>\u2030</code>
|
||||
* <td>Prefix or suffix
|
||||
* <td>Yes
|
||||
* <td>Multiply by 1000 and show as per mille value
|
||||
* <tr style="vertical-align: top">
|
||||
* <td><code>¤</code> (<code>\u00A4</code>)
|
||||
* <th scope="row"><code>¤</code> (<code>\u00A4</code>)
|
||||
* <td>Prefix or suffix
|
||||
* <td>No
|
||||
* <td>Currency sign, replaced by currency symbol. If
|
||||
@ -237,7 +237,7 @@ import sun.util.locale.provider.ResourceBundleBasedAdapter;
|
||||
* If present in a pattern, the monetary decimal separator
|
||||
* is used instead of the decimal separator.
|
||||
* <tr style="vertical-align:top">
|
||||
* <td><code>'</code>
|
||||
* <th scope="row"><code>'</code>
|
||||
* <td>Prefix or suffix
|
||||
* <td>No
|
||||
* <td>Used to quote special characters in a prefix or suffix,
|
||||
|
@ -96,124 +96,124 @@ import sun.util.locale.provider.LocaleProviderAdapter;
|
||||
* <caption style="display:none">Chart shows pattern letters, date/time component, presentation, and examples.</caption>
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th style="text-align:left">Letter
|
||||
* <th style="text-align:left">Date or Time Component
|
||||
* <th style="text-align:left">Presentation
|
||||
* <th style="text-align:left">Examples
|
||||
* <th scope="col" style="text-align:left">Letter
|
||||
* <th scope="col" style="text-align:left">Date or Time Component
|
||||
* <th scope="col" style="text-align:left">Presentation
|
||||
* <th scope="col" style="text-align:left">Examples
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td><code>G</code>
|
||||
* <th scope="row"><code>G</code>
|
||||
* <td>Era designator
|
||||
* <td><a href="#text">Text</a>
|
||||
* <td><code>AD</code>
|
||||
* <tr>
|
||||
* <td><code>y</code>
|
||||
* <th scope="row"><code>y</code>
|
||||
* <td>Year
|
||||
* <td><a href="#year">Year</a>
|
||||
* <td><code>1996</code>; <code>96</code>
|
||||
* <tr>
|
||||
* <td><code>Y</code>
|
||||
* <th scope="row"><code>Y</code>
|
||||
* <td>Week year
|
||||
* <td><a href="#year">Year</a>
|
||||
* <td><code>2009</code>; <code>09</code>
|
||||
* <tr>
|
||||
* <td><code>M</code>
|
||||
* <th scope="row"><code>M</code>
|
||||
* <td>Month in year (context sensitive)
|
||||
* <td><a href="#month">Month</a>
|
||||
* <td><code>July</code>; <code>Jul</code>; <code>07</code>
|
||||
* <tr>
|
||||
* <td><code>L</code>
|
||||
* <th scope="row"><code>L</code>
|
||||
* <td>Month in year (standalone form)
|
||||
* <td><a href="#month">Month</a>
|
||||
* <td><code>July</code>; <code>Jul</code>; <code>07</code>
|
||||
* <tr>
|
||||
* <td><code>w</code>
|
||||
* <th scope="row"><code>w</code>
|
||||
* <td>Week in year
|
||||
* <td><a href="#number">Number</a>
|
||||
* <td><code>27</code>
|
||||
* <tr>
|
||||
* <td><code>W</code>
|
||||
* <th scope="row"><code>W</code>
|
||||
* <td>Week in month
|
||||
* <td><a href="#number">Number</a>
|
||||
* <td><code>2</code>
|
||||
* <tr>
|
||||
* <td><code>D</code>
|
||||
* <th scope="row"><code>D</code>
|
||||
* <td>Day in year
|
||||
* <td><a href="#number">Number</a>
|
||||
* <td><code>189</code>
|
||||
* <tr>
|
||||
* <td><code>d</code>
|
||||
* <th scope="row"><code>d</code>
|
||||
* <td>Day in month
|
||||
* <td><a href="#number">Number</a>
|
||||
* <td><code>10</code>
|
||||
* <tr>
|
||||
* <td><code>F</code>
|
||||
* <th scope="row"><code>F</code>
|
||||
* <td>Day of week in month
|
||||
* <td><a href="#number">Number</a>
|
||||
* <td><code>2</code>
|
||||
* <tr>
|
||||
* <td><code>E</code>
|
||||
* <th scope="row"><code>E</code>
|
||||
* <td>Day name in week
|
||||
* <td><a href="#text">Text</a>
|
||||
* <td><code>Tuesday</code>; <code>Tue</code>
|
||||
* <tr>
|
||||
* <td><code>u</code>
|
||||
* <th scope="row"><code>u</code>
|
||||
* <td>Day number of week (1 = Monday, ..., 7 = Sunday)
|
||||
* <td><a href="#number">Number</a>
|
||||
* <td><code>1</code>
|
||||
* <tr>
|
||||
* <td><code>a</code>
|
||||
* <th scope="row"><code>a</code>
|
||||
* <td>Am/pm marker
|
||||
* <td><a href="#text">Text</a>
|
||||
* <td><code>PM</code>
|
||||
* <tr>
|
||||
* <td><code>H</code>
|
||||
* <th scope="row"><code>H</code>
|
||||
* <td>Hour in day (0-23)
|
||||
* <td><a href="#number">Number</a>
|
||||
* <td><code>0</code>
|
||||
* <tr>
|
||||
* <td><code>k</code>
|
||||
* <th scope="row"><code>k</code>
|
||||
* <td>Hour in day (1-24)
|
||||
* <td><a href="#number">Number</a>
|
||||
* <td><code>24</code>
|
||||
* <tr>
|
||||
* <td><code>K</code>
|
||||
* <th scope="row"><code>K</code>
|
||||
* <td>Hour in am/pm (0-11)
|
||||
* <td><a href="#number">Number</a>
|
||||
* <td><code>0</code>
|
||||
* <tr>
|
||||
* <td><code>h</code>
|
||||
* <th scope="row"><code>h</code>
|
||||
* <td>Hour in am/pm (1-12)
|
||||
* <td><a href="#number">Number</a>
|
||||
* <td><code>12</code>
|
||||
* <tr>
|
||||
* <td><code>m</code>
|
||||
* <th scope="row"><code>m</code>
|
||||
* <td>Minute in hour
|
||||
* <td><a href="#number">Number</a>
|
||||
* <td><code>30</code>
|
||||
* <tr>
|
||||
* <td><code>s</code>
|
||||
* <th scope="row"><code>s</code>
|
||||
* <td>Second in minute
|
||||
* <td><a href="#number">Number</a>
|
||||
* <td><code>55</code>
|
||||
* <tr>
|
||||
* <td><code>S</code>
|
||||
* <th scope="row"><code>S</code>
|
||||
* <td>Millisecond
|
||||
* <td><a href="#number">Number</a>
|
||||
* <td><code>978</code>
|
||||
* <tr>
|
||||
* <td><code>z</code>
|
||||
* <th scope="row"><code>z</code>
|
||||
* <td>Time zone
|
||||
* <td><a href="#timezone">General time zone</a>
|
||||
* <td><code>Pacific Standard Time</code>; <code>PST</code>; <code>GMT-08:00</code>
|
||||
* <tr>
|
||||
* <td><code>Z</code>
|
||||
* <th scope="row"><code>Z</code>
|
||||
* <td>Time zone
|
||||
* <td><a href="#rfc822timezone">RFC 822 time zone</a>
|
||||
* <td><code>-0800</code>
|
||||
* <tr>
|
||||
* <td><code>X</code>
|
||||
* <th scope="row"><code>X</code>
|
||||
* <td>Time zone
|
||||
* <td><a href="#iso8601timezone">ISO 8601 time zone</a>
|
||||
* <td><code>-08</code>; <code>-0800</code>; <code>-08:00</code>
|
||||
@ -379,42 +379,42 @@ import sun.util.locale.provider.LocaleProviderAdapter;
|
||||
* <caption style="display:none">Examples of date and time patterns interpreted in the U.S. locale</caption>
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th style="text-align:left">Date and Time Pattern
|
||||
* <th style="text-align:left">Result
|
||||
* <th scope="col" style="text-align:left">Date and Time Pattern
|
||||
* <th scope="col" style="text-align:left">Result
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td><code>"yyyy.MM.dd G 'at' HH:mm:ss z"</code>
|
||||
* <th scope="row"><code>"yyyy.MM.dd G 'at' HH:mm:ss z"</code>
|
||||
* <td><code>2001.07.04 AD at 12:08:56 PDT</code>
|
||||
* <tr>
|
||||
* <td><code>"EEE, MMM d, ''yy"</code>
|
||||
* <th scope="row"><code>"EEE, MMM d, ''yy"</code>
|
||||
* <td><code>Wed, Jul 4, '01</code>
|
||||
* <tr>
|
||||
* <td><code>"h:mm a"</code>
|
||||
* <th scope="row"><code>"h:mm a"</code>
|
||||
* <td><code>12:08 PM</code>
|
||||
* <tr>
|
||||
* <td><code>"hh 'o''clock' a, zzzz"</code>
|
||||
* <th scope="row"><code>"hh 'o''clock' a, zzzz"</code>
|
||||
* <td><code>12 o'clock PM, Pacific Daylight Time</code>
|
||||
* <tr>
|
||||
* <td><code>"K:mm a, z"</code>
|
||||
* <th scope="row"><code>"K:mm a, z"</code>
|
||||
* <td><code>0:08 PM, PDT</code>
|
||||
* <tr>
|
||||
* <td><code>"yyyyy.MMMMM.dd GGG hh:mm aaa"</code>
|
||||
* <th scope="row"><code>"yyyyy.MMMMM.dd GGG hh:mm aaa"</code>
|
||||
* <td><code>02001.July.04 AD 12:08 PM</code>
|
||||
* <tr>
|
||||
* <td><code>"EEE, d MMM yyyy HH:mm:ss Z"</code>
|
||||
* <th scope="row"><code>"EEE, d MMM yyyy HH:mm:ss Z"</code>
|
||||
* <td><code>Wed, 4 Jul 2001 12:08:56 -0700</code>
|
||||
* <tr>
|
||||
* <td><code>"yyMMddHHmmssZ"</code>
|
||||
* <th scope="row"><code>"yyMMddHHmmssZ"</code>
|
||||
* <td><code>010704120856-0700</code>
|
||||
* <tr>
|
||||
* <td><code>"yyyy-MM-dd'T'HH:mm:ss.SSSZ"</code>
|
||||
* <th scope="row"><code>"yyyy-MM-dd'T'HH:mm:ss.SSSZ"</code>
|
||||
* <td><code>2001-07-04T12:08:56.235-0700</code>
|
||||
* <tr>
|
||||
* <td><code>"yyyy-MM-dd'T'HH:mm:ss.SSSXXX"</code>
|
||||
* <th scope="row"><code>"yyyy-MM-dd'T'HH:mm:ss.SSSXXX"</code>
|
||||
* <td><code>2001-07-04T12:08:56.235-07:00</code>
|
||||
* <tr>
|
||||
* <td><code>"YYYY-'W'ww-u"</code>
|
||||
* <th scope="row"><code>"YYYY-'W'ww-u"</code>
|
||||
* <td><code>2001-W27-3</code>
|
||||
* </tbody>
|
||||
* </table>
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -100,7 +100,7 @@ import java.util.Objects;
|
||||
* {@code OffsetDateTime} is an immutable representation of a date-time with an offset.
|
||||
* This class stores all date and time fields, to a precision of nanoseconds,
|
||||
* as well as the offset from UTC/Greenwich. For example, the value
|
||||
* "2nd October 2007 at 13:45.30.123456789 +02:00" can be stored in an {@code OffsetDateTime}.
|
||||
* "2nd October 2007 at 13:45:30.123456789 +02:00" can be stored in an {@code OffsetDateTime}.
|
||||
* <p>
|
||||
* {@code OffsetDateTime}, {@link java.time.ZonedDateTime} and {@link java.time.Instant} all store an instant
|
||||
* on the time-line to nanosecond precision.
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -100,7 +100,7 @@ import java.util.Objects;
|
||||
* viewed as hour-minute-second-offset.
|
||||
* This class stores all time fields, to a precision of nanoseconds,
|
||||
* as well as a zone offset.
|
||||
* For example, the value "13:45.30.123456789+02:00" can be stored
|
||||
* For example, the value "13:45:30.123456789+02:00" can be stored
|
||||
* in an {@code OffsetTime}.
|
||||
*
|
||||
* <p>
|
||||
|
@ -154,103 +154,103 @@ import java.util.Set;
|
||||
* <caption>Predefined Formatters</caption>
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th style="text-align:left">Formatter</th>
|
||||
* <th style="text-align:left">Description</th>
|
||||
* <th style="text-align:left">Example</th>
|
||||
* <th scope="col" style="text-align:left">Formatter</th>
|
||||
* <th scope="col" style="text-align:left">Description</th>
|
||||
* <th scope="col" style="text-align:left">Example</th>
|
||||
* </tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td>{@link #ofLocalizedDate ofLocalizedDate(dateStyle)} </td>
|
||||
* <th scope="row">{@link #ofLocalizedDate ofLocalizedDate(dateStyle)} </th>
|
||||
* <td> Formatter with date style from the locale </td>
|
||||
* <td> '2011-12-03'</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link #ofLocalizedTime ofLocalizedTime(timeStyle)} </td>
|
||||
* <th scope="row"> {@link #ofLocalizedTime ofLocalizedTime(timeStyle)} </th>
|
||||
* <td> Formatter with time style from the locale </td>
|
||||
* <td> '10:15:30'</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link #ofLocalizedDateTime ofLocalizedDateTime(dateTimeStyle)} </td>
|
||||
* <th scope="row"> {@link #ofLocalizedDateTime ofLocalizedDateTime(dateTimeStyle)} </th>
|
||||
* <td> Formatter with a style for date and time from the locale</td>
|
||||
* <td> '3 Jun 2008 11:05:30'</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link #ofLocalizedDateTime ofLocalizedDateTime(dateStyle,timeStyle)}
|
||||
* </td>
|
||||
* <th scope="row"> {@link #ofLocalizedDateTime ofLocalizedDateTime(dateStyle,timeStyle)}
|
||||
* </th>
|
||||
* <td> Formatter with date and time styles from the locale </td>
|
||||
* <td> '3 Jun 2008 11:05'</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link #BASIC_ISO_DATE}</td>
|
||||
* <th scope="row"> {@link #BASIC_ISO_DATE}</th>
|
||||
* <td>Basic ISO date </td> <td>'20111203'</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link #ISO_LOCAL_DATE}</td>
|
||||
* <th scope="row"> {@link #ISO_LOCAL_DATE}</th>
|
||||
* <td> ISO Local Date </td>
|
||||
* <td>'2011-12-03'</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link #ISO_OFFSET_DATE}</td>
|
||||
* <th scope="row"> {@link #ISO_OFFSET_DATE}</th>
|
||||
* <td> ISO Date with offset </td>
|
||||
* <td>'2011-12-03+01:00'</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link #ISO_DATE}</td>
|
||||
* <th scope="row"> {@link #ISO_DATE}</th>
|
||||
* <td> ISO Date with or without offset </td>
|
||||
* <td> '2011-12-03+01:00'; '2011-12-03'</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link #ISO_LOCAL_TIME}</td>
|
||||
* <th scope="row"> {@link #ISO_LOCAL_TIME}</th>
|
||||
* <td> Time without offset </td>
|
||||
* <td>'10:15:30'</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link #ISO_OFFSET_TIME}</td>
|
||||
* <th scope="row"> {@link #ISO_OFFSET_TIME}</th>
|
||||
* <td> Time with offset </td>
|
||||
* <td>'10:15:30+01:00'</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link #ISO_TIME}</td>
|
||||
* <th scope="row"> {@link #ISO_TIME}</th>
|
||||
* <td> Time with or without offset </td>
|
||||
* <td>'10:15:30+01:00'; '10:15:30'</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link #ISO_LOCAL_DATE_TIME}</td>
|
||||
* <th scope="row"> {@link #ISO_LOCAL_DATE_TIME}</th>
|
||||
* <td> ISO Local Date and Time </td>
|
||||
* <td>'2011-12-03T10:15:30'</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link #ISO_OFFSET_DATE_TIME}</td>
|
||||
* <th scope="row"> {@link #ISO_OFFSET_DATE_TIME}</th>
|
||||
* <td> Date Time with Offset
|
||||
* </td><td>2011-12-03T10:15:30+01:00'</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link #ISO_ZONED_DATE_TIME}</td>
|
||||
* <th scope="row"> {@link #ISO_ZONED_DATE_TIME}</th>
|
||||
* <td> Zoned Date Time </td>
|
||||
* <td>'2011-12-03T10:15:30+01:00[Europe/Paris]'</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link #ISO_DATE_TIME}</td>
|
||||
* <th scope="row"> {@link #ISO_DATE_TIME}</th>
|
||||
* <td> Date and time with ZoneId </td>
|
||||
* <td>'2011-12-03T10:15:30+01:00[Europe/Paris]'</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link #ISO_ORDINAL_DATE}</td>
|
||||
* <th scope="row"> {@link #ISO_ORDINAL_DATE}</th>
|
||||
* <td> Year and day of year </td>
|
||||
* <td>'2012-337'</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link #ISO_WEEK_DATE}</td>
|
||||
* <th scope="row"> {@link #ISO_WEEK_DATE}</th>
|
||||
* <td> Year and Week </td>
|
||||
* <td>2012-W48-6'</td></tr>
|
||||
* <tr>
|
||||
* <td> {@link #ISO_INSTANT}</td>
|
||||
* <th scope="row"> {@link #ISO_INSTANT}</th>
|
||||
* <td> Date and Time of an Instant </td>
|
||||
* <td>'2011-12-03T10:15:30Z' </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link #RFC_1123_DATE_TIME}</td>
|
||||
* <th scope="row"> {@link #RFC_1123_DATE_TIME}</th>
|
||||
* <td> RFC 1123 / RFC 822 </td>
|
||||
* <td>'Tue, 3 Jun 2008 11:05:30 GMT'</td>
|
||||
* </tr>
|
||||
|
@ -293,12 +293,12 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <table class="striped">
|
||||
* <caption style="display:none">genConv</caption>
|
||||
* <thead>
|
||||
* <tr><th style="vertical-align:bottom"> Conversion
|
||||
* <th style="vertical-align:bottom"> Argument Category
|
||||
* <th style="vertical-align:bottom"> Description
|
||||
* <tr><th scope="col" style="vertical-align:bottom"> Conversion
|
||||
* <th scope="col" style="vertical-align:bottom"> Argument Category
|
||||
* <th scope="col" style="vertical-align:bottom"> Description
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr><td style="vertical-align:top"> {@code 'b'}, {@code 'B'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 'b'}, {@code 'B'}
|
||||
* <td style="vertical-align:top"> general
|
||||
* <td> If the argument <i>arg</i> is {@code null}, then the result is
|
||||
* "{@code false}". If <i>arg</i> is a {@code boolean} or {@link
|
||||
@ -306,64 +306,64 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* String#valueOf(boolean) String.valueOf(arg)}. Otherwise, the result is
|
||||
* "true".
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code 'h'}, {@code 'H'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 'h'}, {@code 'H'}
|
||||
* <td style="vertical-align:top"> general
|
||||
* <td> The result is obtained by invoking
|
||||
* {@code Integer.toHexString(arg.hashCode())}.
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code 's'}, {@code 'S'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 's'}, {@code 'S'}
|
||||
* <td style="vertical-align:top"> general
|
||||
* <td> If <i>arg</i> implements {@link Formattable}, then
|
||||
* {@link Formattable#formatTo arg.formatTo} is invoked. Otherwise, the
|
||||
* result is obtained by invoking {@code arg.toString()}.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'c'}, {@code 'C'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'c'}, {@code 'C'}
|
||||
* <td style="vertical-align:top"> character
|
||||
* <td> The result is a Unicode character
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'd'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'd'}
|
||||
* <td style="vertical-align:top"> integral
|
||||
* <td> The result is formatted as a decimal integer
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'o'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'o'}
|
||||
* <td style="vertical-align:top"> integral
|
||||
* <td> The result is formatted as an octal integer
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'x'}, {@code 'X'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'x'}, {@code 'X'}
|
||||
* <td style="vertical-align:top"> integral
|
||||
* <td> The result is formatted as a hexadecimal integer
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'e'}, {@code 'E'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'e'}, {@code 'E'}
|
||||
* <td style="vertical-align:top"> floating point
|
||||
* <td> The result is formatted as a decimal number in computerized
|
||||
* scientific notation
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'f'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'f'}
|
||||
* <td style="vertical-align:top"> floating point
|
||||
* <td> The result is formatted as a decimal number
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'g'}, {@code 'G'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'g'}, {@code 'G'}
|
||||
* <td style="vertical-align:top"> floating point
|
||||
* <td> The result is formatted using computerized scientific notation or
|
||||
* decimal format, depending on the precision and the value after rounding.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'a'}, {@code 'A'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'a'}, {@code 'A'}
|
||||
* <td style="vertical-align:top"> floating point
|
||||
* <td> The result is formatted as a hexadecimal floating-point number with
|
||||
* a significand and an exponent. This conversion is <b>not</b> supported
|
||||
* for the {@code BigDecimal} type despite the latter's being in the
|
||||
* <i>floating point</i> argument category.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 't'}, {@code 'T'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 't'}, {@code 'T'}
|
||||
* <td style="vertical-align:top"> date/time
|
||||
* <td> Prefix for date and time conversion characters. See <a
|
||||
* href="#dt">Date/Time Conversions</a>.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code '%'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code '%'}
|
||||
* <td style="vertical-align:top"> percent
|
||||
* <td> The result is a literal {@code '%'} (<code>'\u0025'</code>)
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'n'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'n'}
|
||||
* <td style="vertical-align:top"> line separator
|
||||
* <td> The result is the platform-specific line separator
|
||||
*
|
||||
@ -387,44 +387,44 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <table class="striped">
|
||||
* <caption style="display:none">time</caption>
|
||||
* <tbody>
|
||||
* <tr><td style="vertical-align:top"> {@code 'H'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 'H'}
|
||||
* <td> Hour of the day for the 24-hour clock, formatted as two digits with
|
||||
* a leading zero as necessary i.e. {@code 00 - 23}.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'I'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'I'}
|
||||
* <td> Hour for the 12-hour clock, formatted as two digits with a leading
|
||||
* zero as necessary, i.e. {@code 01 - 12}.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'k'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'k'}
|
||||
* <td> Hour of the day for the 24-hour clock, i.e. {@code 0 - 23}.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'l'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'l'}
|
||||
* <td> Hour for the 12-hour clock, i.e. {@code 1 - 12}.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'M'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'M'}
|
||||
* <td> Minute within the hour formatted as two digits with a leading zero
|
||||
* as necessary, i.e. {@code 00 - 59}.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'S'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'S'}
|
||||
* <td> Seconds within the minute, formatted as two digits with a leading
|
||||
* zero as necessary, i.e. {@code 00 - 60} ("{@code 60}" is a special
|
||||
* value required to support leap seconds).
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'L'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'L'}
|
||||
* <td> Millisecond within the second formatted as three digits with
|
||||
* leading zeros as necessary, i.e. {@code 000 - 999}.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'N'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'N'}
|
||||
* <td> Nanosecond within the second, formatted as nine digits with leading
|
||||
* zeros as necessary, i.e. {@code 000000000 - 999999999}.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'p'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'p'}
|
||||
* <td> Locale-specific {@linkplain
|
||||
* java.text.DateFormatSymbols#getAmPmStrings morning or afternoon} marker
|
||||
* in lower case, e.g."{@code am}" or "{@code pm}". Use of the conversion
|
||||
* prefix {@code 'T'} forces this output to upper case.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'z'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'z'}
|
||||
* <td> <a href="http://www.ietf.org/rfc/rfc0822.txt">RFC 822</a>
|
||||
* style numeric time zone offset from GMT, e.g. {@code -0800}. This
|
||||
* value will be adjusted as necessary for Daylight Saving Time. For
|
||||
@ -432,7 +432,7 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* the {@linkplain TimeZone#getDefault() default time zone} for this
|
||||
* instance of the Java virtual machine.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'Z'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'Z'}
|
||||
* <td> A string representing the abbreviation for the time zone. This
|
||||
* value will be adjusted as necessary for Daylight Saving Time. For
|
||||
* {@code long}, {@link Long}, and {@link Date} the time zone used is
|
||||
@ -440,12 +440,12 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* instance of the Java virtual machine. The Formatter's locale will
|
||||
* supersede the locale of the argument (if any).
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 's'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 's'}
|
||||
* <td> Seconds since the beginning of the epoch starting at 1 January 1970
|
||||
* {@code 00:00:00} UTC, i.e. {@code Long.MIN_VALUE/1000} to
|
||||
* {@code Long.MAX_VALUE/1000}.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'Q'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'Q'}
|
||||
* <td> Milliseconds since the beginning of the epoch starting at 1 January
|
||||
* 1970 {@code 00:00:00} UTC, i.e. {@code Long.MIN_VALUE} to
|
||||
* {@code Long.MAX_VALUE}.
|
||||
@ -459,54 +459,54 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <caption style="display:none">date</caption>
|
||||
* <tbody>
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'B'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'B'}
|
||||
* <td> Locale-specific {@linkplain java.text.DateFormatSymbols#getMonths
|
||||
* full month name}, e.g. {@code "January"}, {@code "February"}.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'b'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'b'}
|
||||
* <td> Locale-specific {@linkplain
|
||||
* java.text.DateFormatSymbols#getShortMonths abbreviated month name},
|
||||
* e.g. {@code "Jan"}, {@code "Feb"}.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'h'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'h'}
|
||||
* <td> Same as {@code 'b'}.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'A'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'A'}
|
||||
* <td> Locale-specific full name of the {@linkplain
|
||||
* java.text.DateFormatSymbols#getWeekdays day of the week},
|
||||
* e.g. {@code "Sunday"}, {@code "Monday"}
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'a'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'a'}
|
||||
* <td> Locale-specific short name of the {@linkplain
|
||||
* java.text.DateFormatSymbols#getShortWeekdays day of the week},
|
||||
* e.g. {@code "Sun"}, {@code "Mon"}
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'C'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'C'}
|
||||
* <td> Four-digit year divided by {@code 100}, formatted as two digits
|
||||
* with leading zero as necessary, i.e. {@code 00 - 99}
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'Y'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'Y'}
|
||||
* <td> Year, formatted as at least four digits with leading zeros as
|
||||
* necessary, e.g. {@code 0092} equals {@code 92} CE for the Gregorian
|
||||
* calendar.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'y'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'y'}
|
||||
* <td> Last two digits of the year, formatted with leading zeros as
|
||||
* necessary, i.e. {@code 00 - 99}.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'j'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'j'}
|
||||
* <td> Day of year, formatted as three digits with leading zeros as
|
||||
* necessary, e.g. {@code 001 - 366} for the Gregorian calendar.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'm'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'm'}
|
||||
* <td> Month, formatted as two digits with leading zeros as necessary,
|
||||
* i.e. {@code 01 - 13}.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'd'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'd'}
|
||||
* <td> Day of month, formatted as two digits with leading zeros as
|
||||
* necessary, i.e. {@code 01 - 31}
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'e'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'e'}
|
||||
* <td> Day of month, formatted as two digits, i.e. {@code 1 - 31}.
|
||||
*
|
||||
* </tbody>
|
||||
@ -519,25 +519,25 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <caption style="display:none">composites</caption>
|
||||
* <tbody>
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'R'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'R'}
|
||||
* <td> Time formatted for the 24-hour clock as {@code "%tH:%tM"}
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'T'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'T'}
|
||||
* <td> Time formatted for the 24-hour clock as {@code "%tH:%tM:%tS"}.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'r'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'r'}
|
||||
* <td> Time formatted for the 12-hour clock as {@code "%tI:%tM:%tS %Tp"}.
|
||||
* The location of the morning or afternoon marker ({@code '%Tp'}) may be
|
||||
* locale-dependent.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'D'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'D'}
|
||||
* <td> Date formatted as {@code "%tm/%td/%ty"}.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'F'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'F'}
|
||||
* <td> <a href="http://www.w3.org/TR/NOTE-datetime">ISO 8601</a>
|
||||
* complete date formatted as {@code "%tY-%tm-%td"}.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'c'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'c'}
|
||||
* <td> Date and time formatted as {@code "%ta %tb %td %tT %tZ %tY"},
|
||||
* e.g. {@code "Sun Jul 20 16:17:00 EDT 1969"}.
|
||||
*
|
||||
@ -555,49 +555,49 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <table class="striped">
|
||||
* <caption style="display:none">genConv</caption>
|
||||
* <thead>
|
||||
* <tr><th style="vertical-align:bottom"> Flag <th style="vertical-align:bottom"> General
|
||||
* <th style="vertical-align:bottom"> Character <th style="vertical-align:bottom"> Integral
|
||||
* <th style="vertical-align:bottom"> Floating Point
|
||||
* <th style="vertical-align:bottom"> Date/Time
|
||||
* <th style="vertical-align:bottom"> Description
|
||||
* <tr><th scope="col" style="vertical-align:bottom"> Flag <th scope="col" style="vertical-align:bottom"> General
|
||||
* <th scope="col" style="vertical-align:bottom"> Character <th scope="col" style="vertical-align:bottom"> Integral
|
||||
* <th scope="col" style="vertical-align:bottom"> Floating Point
|
||||
* <th scope="col" style="vertical-align:bottom"> Date/Time
|
||||
* <th scope="col" style="vertical-align:bottom"> Description
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr><td> '-' <td style="text-align:center; vertical-align:top"> y
|
||||
* <tr><th scope="row"> '-' <td style="text-align:center; vertical-align:top"> y
|
||||
* <td style="text-align:center; vertical-align:top"> y
|
||||
* <td style="text-align:center; vertical-align:top"> y
|
||||
* <td style="text-align:center; vertical-align:top"> y
|
||||
* <td style="text-align:center; vertical-align:top"> y
|
||||
* <td> The result will be left-justified.
|
||||
*
|
||||
* <tr><td> '#' <td style="text-align:center; vertical-align:top"> y<sup>1</sup>
|
||||
* <tr><th scope="row"> '#' <td style="text-align:center; vertical-align:top"> y<sup>1</sup>
|
||||
* <td style="text-align:center; vertical-align:top"> -
|
||||
* <td style="text-align:center; vertical-align:top"> y<sup>3</sup>
|
||||
* <td style="text-align:center; vertical-align:top"> y
|
||||
* <td style="text-align:center; vertical-align:top"> -
|
||||
* <td> The result should use a conversion-dependent alternate form
|
||||
*
|
||||
* <tr><td> '+' <td style="text-align:center; vertical-align:top"> -
|
||||
* <tr><th scope="row"> '+' <td style="text-align:center; vertical-align:top"> -
|
||||
* <td style="text-align:center; vertical-align:top"> -
|
||||
* <td style="text-align:center; vertical-align:top"> y<sup>4</sup>
|
||||
* <td style="text-align:center; vertical-align:top"> y
|
||||
* <td style="text-align:center; vertical-align:top"> -
|
||||
* <td> The result will always include a sign
|
||||
*
|
||||
* <tr><td> ' ' <td style="text-align:center; vertical-align:top"> -
|
||||
* <tr><th scope="row"> ' ' <td style="text-align:center; vertical-align:top"> -
|
||||
* <td style="text-align:center; vertical-align:top"> -
|
||||
* <td style="text-align:center; vertical-align:top"> y<sup>4</sup>
|
||||
* <td style="text-align:center; vertical-align:top"> y
|
||||
* <td style="text-align:center; vertical-align:top"> -
|
||||
* <td> The result will include a leading space for positive values
|
||||
*
|
||||
* <tr><td> '0' <td style="text-align:center; vertical-align:top"> -
|
||||
* <tr><th scope="row"> '0' <td style="text-align:center; vertical-align:top"> -
|
||||
* <td style="text-align:center; vertical-align:top"> -
|
||||
* <td style="text-align:center; vertical-align:top"> y
|
||||
* <td style="text-align:center; vertical-align:top"> y
|
||||
* <td style="text-align:center; vertical-align:top"> -
|
||||
* <td> The result will be zero-padded
|
||||
*
|
||||
* <tr><td> ',' <td style="text-align:center; vertical-align:top"> -
|
||||
* <tr><th scope="row"> ',' <td style="text-align:center; vertical-align:top"> -
|
||||
* <td style="text-align:center; vertical-align:top"> -
|
||||
* <td style="text-align:center; vertical-align:top"> y<sup>2</sup>
|
||||
* <td style="text-align:center; vertical-align:top"> y<sup>5</sup>
|
||||
@ -605,7 +605,7 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <td> The result will include locale-specific {@linkplain
|
||||
* java.text.DecimalFormatSymbols#getGroupingSeparator grouping separators}
|
||||
*
|
||||
* <tr><td> '(' <td style="text-align:center; vertical-align:top"> -
|
||||
* <tr><th scope="row"> '(' <td style="text-align:center; vertical-align:top"> -
|
||||
* <td style="text-align:center; vertical-align:top"> -
|
||||
* <td style="text-align:center; vertical-align:top"> y<sup>4</sup>
|
||||
* <td style="text-align:center; vertical-align:top"> y<sup>5</sup>
|
||||
@ -723,7 +723,7 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <caption style="display:none">dgConv</caption>
|
||||
* <tbody>
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code 'b'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 'b'}
|
||||
* <td style="vertical-align:top"> <code>'\u0062'</code>
|
||||
* <td> Produces either "{@code true}" or "{@code false}" as returned by
|
||||
* {@link Boolean#toString(boolean)}.
|
||||
@ -737,11 +737,11 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <p> If the {@code '#'} flag is given, then a {@link
|
||||
* FormatFlagsConversionMismatchException} will be thrown.
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code 'B'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 'B'}
|
||||
* <td style="vertical-align:top"> <code>'\u0042'</code>
|
||||
* <td> The upper-case variant of {@code 'b'}.
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code 'h'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 'h'}
|
||||
* <td style="vertical-align:top"> <code>'\u0068'</code>
|
||||
* <td> Produces a string representing the hash code value of the object.
|
||||
*
|
||||
@ -751,11 +751,11 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <p> If the {@code '#'} flag is given, then a {@link
|
||||
* FormatFlagsConversionMismatchException} will be thrown.
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code 'H'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 'H'}
|
||||
* <td style="vertical-align:top"> <code>'\u0048'</code>
|
||||
* <td> The upper-case variant of {@code 'h'}.
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code 's'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 's'}
|
||||
* <td style="vertical-align:top"> <code>'\u0073'</code>
|
||||
* <td> Produces a string.
|
||||
*
|
||||
@ -768,7 +768,7 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* Formattable} , then a {@link FormatFlagsConversionMismatchException}
|
||||
* will be thrown.
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code 'S'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 'S'}
|
||||
* <td style="vertical-align:top"> <code>'\u0053'</code>
|
||||
* <td> The upper-case variant of {@code 's'}.
|
||||
*
|
||||
@ -781,7 +781,7 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <caption style="display:none">dFlags</caption>
|
||||
* <tbody>
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code '-'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code '-'}
|
||||
* <td style="vertical-align:top"> <code>'\u002d'</code>
|
||||
* <td> Left justifies the output. Spaces (<code>'\u0020'</code>) will be
|
||||
* added at the end of the converted value as required to fill the minimum
|
||||
@ -789,7 +789,7 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* MissingFormatWidthException} will be thrown. If this flag is not given
|
||||
* then the output will be right-justified.
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code '#'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code '#'}
|
||||
* <td style="vertical-align:top"> <code>'\u0023'</code>
|
||||
* <td> Requires the output use an alternate form. The definition of the
|
||||
* form is specified by the conversion.
|
||||
@ -825,7 +825,7 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <caption style="display:none">charConv</caption>
|
||||
* <tbody>
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code 'c'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 'c'}
|
||||
* <td style="vertical-align:top"> <code>'\u0063'</code>
|
||||
* <td> Formats the argument as a Unicode character as described in <a
|
||||
* href="../lang/Character.html#unicode">Unicode Character
|
||||
@ -835,7 +835,7 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <p> If the {@code '#'} flag is given, then a {@link
|
||||
* FormatFlagsConversionMismatchException} will be thrown.
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code 'C'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 'C'}
|
||||
* <td style="vertical-align:top"> <code>'\u0043'</code>
|
||||
* <td> The upper-case variant of {@code 'c'}.
|
||||
*
|
||||
@ -929,7 +929,7 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <caption style="display:none">IntConv</caption>
|
||||
* <tbody>
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code 'd'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 'd'}
|
||||
* <td style="vertical-align:top"> <code>'\u0064'</code>
|
||||
* <td> Formats the argument as a decimal integer. The <a
|
||||
* href="#L10nAlgorithm">localization algorithm</a> is applied.
|
||||
@ -940,7 +940,7 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <p> If the {@code '#'} flag is given then a {@link
|
||||
* FormatFlagsConversionMismatchException} will be thrown.
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code 'o'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 'o'}
|
||||
* <td style="vertical-align:top"> <code>'\u006f'</code>
|
||||
* <td> Formats the argument as an integer in base eight. No localization
|
||||
* is applied.
|
||||
@ -962,7 +962,7 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* are given then a {@link FormatFlagsConversionMismatchException} will be
|
||||
* thrown.
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code 'x'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 'x'}
|
||||
* <td style="vertical-align:top"> <code>'\u0078'</code>
|
||||
* <td> Formats the argument as an integer in base sixteen. No
|
||||
* localization is applied.
|
||||
@ -985,7 +985,7 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* {@code ','} flags are given then a {@link
|
||||
* FormatFlagsConversionMismatchException} will be thrown.
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code 'X'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 'X'}
|
||||
* <td style="vertical-align:top"> <code>'\u0058'</code>
|
||||
* <td> The upper-case variant of {@code 'x'}. The entire string
|
||||
* representing the number will be converted to {@linkplain
|
||||
@ -1012,7 +1012,7 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <caption style="display:none">intFlags</caption>
|
||||
* <tbody>
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code '+'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code '+'}
|
||||
* <td style="vertical-align:top"> <code>'\u002b'</code>
|
||||
* <td> Requires the output to include a positive sign for all positive
|
||||
* numbers. If this flag is not given then only negative values will
|
||||
@ -1021,7 +1021,7 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <p> If both the {@code '+'} and <code>' '</code> flags are given
|
||||
* then an {@link IllegalFormatFlagsException} will be thrown.
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> <code>' '</code>
|
||||
* <tr><th scope="row" style="vertical-align:top"> <code>' '</code>
|
||||
* <td style="vertical-align:top"> <code>'\u0020'</code>
|
||||
* <td> Requires the output to include a single extra space
|
||||
* (<code>'\u0020'</code>) for non-negative values.
|
||||
@ -1029,7 +1029,7 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <p> If both the {@code '+'} and <code>' '</code> flags are given
|
||||
* then an {@link IllegalFormatFlagsException} will be thrown.
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code '0'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code '0'}
|
||||
* <td style="vertical-align:top"> <code>'\u0030'</code>
|
||||
* <td> Requires the output to be padded with leading {@linkplain
|
||||
* java.text.DecimalFormatSymbols#getZeroDigit zeros} to the minimum field
|
||||
@ -1040,14 +1040,14 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <p> If both the {@code '-'} and {@code '0'} flags are given then an
|
||||
* {@link IllegalFormatFlagsException} will be thrown.
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code ','}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code ','}
|
||||
* <td style="vertical-align:top"> <code>'\u002c'</code>
|
||||
* <td> Requires the output to include the locale-specific {@linkplain
|
||||
* java.text.DecimalFormatSymbols#getGroupingSeparator group separators} as
|
||||
* described in the <a href="#L10nGroup">"group" section</a> of the
|
||||
* localization algorithm.
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code '('}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code '('}
|
||||
* <td style="vertical-align:top"> <code>'\u0028'</code>
|
||||
* <td> Requires the output to prepend a {@code '('}
|
||||
* (<code>'\u0028'</code>) and append a {@code ')'}
|
||||
@ -1093,7 +1093,7 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <caption style="display:none">bIntConv</caption>
|
||||
* <tbody>
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code 'd'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 'd'}
|
||||
* <td style="vertical-align:top"> <code>'\u0064'</code>
|
||||
* <td> Requires the output to be formatted as a decimal integer. The <a
|
||||
* href="#L10nAlgorithm">localization algorithm</a> is applied.
|
||||
@ -1101,7 +1101,7 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <p> If the {@code '#'} flag is given {@link
|
||||
* FormatFlagsConversionMismatchException} will be thrown.
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code 'o'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 'o'}
|
||||
* <td style="vertical-align:top"> <code>'\u006f'</code>
|
||||
* <td> Requires the output to be formatted as an integer in base eight.
|
||||
* No localization is applied.
|
||||
@ -1124,7 +1124,7 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <p> If the {@code ','} flag is given then a {@link
|
||||
* FormatFlagsConversionMismatchException} will be thrown.
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code 'x'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 'x'}
|
||||
* <td style="vertical-align:top"> <code>'\u0078'</code>
|
||||
* <td> Requires the output to be formatted as an integer in base
|
||||
* sixteen. No localization is applied.
|
||||
@ -1148,7 +1148,7 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <p> If the {@code ','} flag is given then a {@link
|
||||
* FormatFlagsConversionMismatchException} will be thrown.
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code 'X'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 'X'}
|
||||
* <td style="vertical-align:top"> <code>'\u0058'</code>
|
||||
* <td> The upper-case variant of {@code 'x'}. The entire string
|
||||
* representing the number will be converted to {@linkplain
|
||||
@ -1190,7 +1190,7 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <caption style="display:none">floatConv</caption>
|
||||
* <tbody>
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code 'e'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 'e'}
|
||||
* <td style="vertical-align:top"> <code>'\u0065'</code>
|
||||
* <td> Requires the output to be formatted using <a
|
||||
* id="scientific">computerized scientific notation</a>. The <a
|
||||
@ -1238,12 +1238,12 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <p>If the {@code ','} flag is given, then an {@link
|
||||
* FormatFlagsConversionMismatchException} will be thrown.
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code 'E'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 'E'}
|
||||
* <td style="vertical-align:top"> <code>'\u0045'</code>
|
||||
* <td> The upper-case variant of {@code 'e'}. The exponent symbol
|
||||
* will be {@code 'E'} (<code>'\u0045'</code>).
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code 'g'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 'g'}
|
||||
* <td style="vertical-align:top"> <code>'\u0067'</code>
|
||||
* <td> Requires the output to be formatted in general scientific notation
|
||||
* as described below. The <a href="#L10nAlgorithm">localization
|
||||
@ -1268,11 +1268,11 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <p> If the {@code '#'} flag is given then an {@link
|
||||
* FormatFlagsConversionMismatchException} will be thrown.
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code 'G'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 'G'}
|
||||
* <td style="vertical-align:top"> <code>'\u0047'</code>
|
||||
* <td> The upper-case variant of {@code 'g'}.
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code 'f'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 'f'}
|
||||
* <td style="vertical-align:top"> <code>'\u0066'</code>
|
||||
* <td> Requires the output to be formatted using <a id="decimal">decimal
|
||||
* format</a>. The <a href="#L10nAlgorithm">localization algorithm</a> is
|
||||
@ -1304,7 +1304,7 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* Float#toString(float)} or {@link Double#toString(double)} as
|
||||
* appropriate.
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code 'a'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 'a'}
|
||||
* <td style="vertical-align:top"> <code>'\u0061'</code>
|
||||
* <td> Requires the output to be formatted in hexadecimal exponential
|
||||
* form. No localization is applied.
|
||||
@ -1357,7 +1357,7 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <p> If the {@code '('} or {@code ','} flags are given, then a {@link
|
||||
* FormatFlagsConversionMismatchException} will be thrown.
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code 'A'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 'A'}
|
||||
* <td style="vertical-align:top"> <code>'\u0041'</code>
|
||||
* <td> The upper-case variant of {@code 'a'}. The entire string
|
||||
* representing the number will be converted to upper case including the
|
||||
@ -1427,7 +1427,7 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <caption style="display:none">floatConv</caption>
|
||||
* <tbody>
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code 'e'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 'e'}
|
||||
* <td style="vertical-align:top"> <code>'\u0065'</code>
|
||||
* <td> Requires the output to be formatted using <a
|
||||
* id="bscientific">computerized scientific notation</a>. The <a
|
||||
@ -1469,12 +1469,12 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <p> If the {@code ','} flag is given, then an {@link
|
||||
* FormatFlagsConversionMismatchException} will be thrown.
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code 'E'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 'E'}
|
||||
* <td style="vertical-align:top"> <code>'\u0045'</code>
|
||||
* <td> The upper-case variant of {@code 'e'}. The exponent symbol
|
||||
* will be {@code 'E'} (<code>'\u0045'</code>).
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code 'g'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 'g'}
|
||||
* <td style="vertical-align:top"> <code>'\u0067'</code>
|
||||
* <td> Requires the output to be formatted in general scientific notation
|
||||
* as described below. The <a href="#L10nAlgorithm">localization
|
||||
@ -1499,11 +1499,11 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <p> If the {@code '#'} flag is given then an {@link
|
||||
* FormatFlagsConversionMismatchException} will be thrown.
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code 'G'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 'G'}
|
||||
* <td style="vertical-align:top"> <code>'\u0047'</code>
|
||||
* <td> The upper-case variant of {@code 'g'}.
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code 'f'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 'f'}
|
||||
* <td style="vertical-align:top"> <code>'\u0066'</code>
|
||||
* <td> Requires the output to be formatted using <a id="bdecimal">decimal
|
||||
* format</a>. The <a href="#L10nAlgorithm">localization algorithm</a> is
|
||||
@ -1554,10 +1554,10 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <caption style="display:none">DTConv</caption>
|
||||
* <tbody>
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code 't'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 't'}
|
||||
* <td style="vertical-align:top"> <code>'\u0074'</code>
|
||||
* <td> Prefix for date and time conversion characters.
|
||||
* <tr><td style="vertical-align:top"> {@code 'T'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 'T'}
|
||||
* <td style="vertical-align:top"> <code>'\u0054'</code>
|
||||
* <td> The upper-case variant of {@code 't'}.
|
||||
*
|
||||
@ -1577,52 +1577,52 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <caption style="display:none">time</caption>
|
||||
* <tbody>
|
||||
*
|
||||
* <tr><td style="vertical-align:top"> {@code 'H'}
|
||||
* <tr><th scope="row" style="vertical-align:top"> {@code 'H'}
|
||||
* <td style="vertical-align:top"> <code>'\u0048'</code>
|
||||
* <td> Hour of the day for the 24-hour clock, formatted as two digits with
|
||||
* a leading zero as necessary i.e. {@code 00 - 23}. {@code 00}
|
||||
* corresponds to midnight.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'I'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'I'}
|
||||
* <td style="vertical-align:top"> <code>'\u0049'</code>
|
||||
* <td> Hour for the 12-hour clock, formatted as two digits with a leading
|
||||
* zero as necessary, i.e. {@code 01 - 12}. {@code 01} corresponds to
|
||||
* one o'clock (either morning or afternoon).
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'k'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'k'}
|
||||
* <td style="vertical-align:top"> <code>'\u006b'</code>
|
||||
* <td> Hour of the day for the 24-hour clock, i.e. {@code 0 - 23}.
|
||||
* {@code 0} corresponds to midnight.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'l'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'l'}
|
||||
* <td style="vertical-align:top"> <code>'\u006c'</code>
|
||||
* <td> Hour for the 12-hour clock, i.e. {@code 1 - 12}. {@code 1}
|
||||
* corresponds to one o'clock (either morning or afternoon).
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'M'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'M'}
|
||||
* <td style="vertical-align:top"> <code>'\u004d'</code>
|
||||
* <td> Minute within the hour formatted as two digits with a leading zero
|
||||
* as necessary, i.e. {@code 00 - 59}.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'S'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'S'}
|
||||
* <td style="vertical-align:top"> <code>'\u0053'</code>
|
||||
* <td> Seconds within the minute, formatted as two digits with a leading
|
||||
* zero as necessary, i.e. {@code 00 - 60} ("{@code 60}" is a special
|
||||
* value required to support leap seconds).
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'L'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'L'}
|
||||
* <td style="vertical-align:top"> <code>'\u004c'</code>
|
||||
* <td> Millisecond within the second formatted as three digits with
|
||||
* leading zeros as necessary, i.e. {@code 000 - 999}.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'N'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'N'}
|
||||
* <td style="vertical-align:top"> <code>'\u004e'</code>
|
||||
* <td> Nanosecond within the second, formatted as nine digits with leading
|
||||
* zeros as necessary, i.e. {@code 000000000 - 999999999}. The precision
|
||||
* of this value is limited by the resolution of the underlying operating
|
||||
* system or hardware.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'p'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'p'}
|
||||
* <td style="vertical-align:top"> <code>'\u0070'</code>
|
||||
* <td> Locale-specific {@linkplain
|
||||
* java.text.DateFormatSymbols#getAmPmStrings morning or afternoon} marker
|
||||
@ -1632,7 +1632,7 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* GNU {@code date} and POSIX {@code strftime(3c)} which produce
|
||||
* upper-case output.)
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'z'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'z'}
|
||||
* <td style="vertical-align:top"> <code>'\u007a'</code>
|
||||
* <td> <a href="http://www.ietf.org/rfc/rfc0822.txt">RFC 822</a>
|
||||
* style numeric time zone offset from GMT, e.g. {@code -0800}. This
|
||||
@ -1641,7 +1641,7 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* the {@linkplain TimeZone#getDefault() default time zone} for this
|
||||
* instance of the Java virtual machine.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'Z'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'Z'}
|
||||
* <td style="vertical-align:top"> <code>'\u005a'</code>
|
||||
* <td> A string representing the abbreviation for the time zone. This
|
||||
* value will be adjusted as necessary for Daylight Saving Time. For
|
||||
@ -1650,13 +1650,13 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* instance of the Java virtual machine. The Formatter's locale will
|
||||
* supersede the locale of the argument (if any).
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 's'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 's'}
|
||||
* <td style="vertical-align:top"> <code>'\u0073'</code>
|
||||
* <td> Seconds since the beginning of the epoch starting at 1 January 1970
|
||||
* {@code 00:00:00} UTC, i.e. {@code Long.MIN_VALUE/1000} to
|
||||
* {@code Long.MAX_VALUE/1000}.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'Q'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'Q'}
|
||||
* <td style="vertical-align:top"> <code>'\u004f'</code>
|
||||
* <td> Milliseconds since the beginning of the epoch starting at 1 January
|
||||
* 1970 {@code 00:00:00} UTC, i.e. {@code Long.MIN_VALUE} to
|
||||
@ -1672,68 +1672,68 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <caption style="display:none">date</caption>
|
||||
* <tbody>
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'B'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'B'}
|
||||
* <td style="vertical-align:top"> <code>'\u0042'</code>
|
||||
* <td> Locale-specific {@linkplain java.text.DateFormatSymbols#getMonths
|
||||
* full month name}, e.g. {@code "January"}, {@code "February"}.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'b'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'b'}
|
||||
* <td style="vertical-align:top"> <code>'\u0062'</code>
|
||||
* <td> Locale-specific {@linkplain
|
||||
* java.text.DateFormatSymbols#getShortMonths abbreviated month name},
|
||||
* e.g. {@code "Jan"}, {@code "Feb"}.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'h'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'h'}
|
||||
* <td style="vertical-align:top"> <code>'\u0068'</code>
|
||||
* <td> Same as {@code 'b'}.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'A'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'A'}
|
||||
* <td style="vertical-align:top"> <code>'\u0041'</code>
|
||||
* <td> Locale-specific full name of the {@linkplain
|
||||
* java.text.DateFormatSymbols#getWeekdays day of the week},
|
||||
* e.g. {@code "Sunday"}, {@code "Monday"}
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'a'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'a'}
|
||||
* <td style="vertical-align:top"> <code>'\u0061'</code>
|
||||
* <td> Locale-specific short name of the {@linkplain
|
||||
* java.text.DateFormatSymbols#getShortWeekdays day of the week},
|
||||
* e.g. {@code "Sun"}, {@code "Mon"}
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'C'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'C'}
|
||||
* <td style="vertical-align:top"> <code>'\u0043'</code>
|
||||
* <td> Four-digit year divided by {@code 100}, formatted as two digits
|
||||
* with leading zero as necessary, i.e. {@code 00 - 99}
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'Y'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'Y'}
|
||||
* <td style="vertical-align:top"> <code>'\u0059'</code> <td> Year, formatted to at least
|
||||
* four digits with leading zeros as necessary, e.g. {@code 0092} equals
|
||||
* {@code 92} CE for the Gregorian calendar.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'y'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'y'}
|
||||
* <td style="vertical-align:top"> <code>'\u0079'</code>
|
||||
* <td> Last two digits of the year, formatted with leading zeros as
|
||||
* necessary, i.e. {@code 00 - 99}.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'j'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'j'}
|
||||
* <td style="vertical-align:top"> <code>'\u006a'</code>
|
||||
* <td> Day of year, formatted as three digits with leading zeros as
|
||||
* necessary, e.g. {@code 001 - 366} for the Gregorian calendar.
|
||||
* {@code 001} corresponds to the first day of the year.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'm'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'm'}
|
||||
* <td style="vertical-align:top"> <code>'\u006d'</code>
|
||||
* <td> Month, formatted as two digits with leading zeros as necessary,
|
||||
* i.e. {@code 01 - 13}, where "{@code 01}" is the first month of the
|
||||
* year and ("{@code 13}" is a special value required to support lunar
|
||||
* calendars).
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'd'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'd'}
|
||||
* <td style="vertical-align:top"> <code>'\u0064'</code>
|
||||
* <td> Day of month, formatted as two digits with leading zeros as
|
||||
* necessary, i.e. {@code 01 - 31}, where "{@code 01}" is the first day
|
||||
* of the month.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'e'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'e'}
|
||||
* <td style="vertical-align:top"> <code>'\u0065'</code>
|
||||
* <td> Day of month, formatted as two digits, i.e. {@code 1 - 31} where
|
||||
* "{@code 1}" is the first day of the month.
|
||||
@ -1748,30 +1748,30 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <caption style="display:none">composites</caption>
|
||||
* <tbody>
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'R'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'R'}
|
||||
* <td style="vertical-align:top"> <code>'\u0052'</code>
|
||||
* <td> Time formatted for the 24-hour clock as {@code "%tH:%tM"}
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'T'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'T'}
|
||||
* <td style="vertical-align:top"> <code>'\u0054'</code>
|
||||
* <td> Time formatted for the 24-hour clock as {@code "%tH:%tM:%tS"}.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'r'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'r'}
|
||||
* <td style="vertical-align:top"> <code>'\u0072'</code>
|
||||
* <td> Time formatted for the 12-hour clock as {@code "%tI:%tM:%tS
|
||||
* %Tp"}. The location of the morning or afternoon marker
|
||||
* ({@code '%Tp'}) may be locale-dependent.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'D'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'D'}
|
||||
* <td style="vertical-align:top"> <code>'\u0044'</code>
|
||||
* <td> Date formatted as {@code "%tm/%td/%ty"}.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'F'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'F'}
|
||||
* <td style="vertical-align:top"> <code>'\u0046'</code>
|
||||
* <td> <a href="http://www.w3.org/TR/NOTE-datetime">ISO 8601</a>
|
||||
* complete date formatted as {@code "%tY-%tm-%td"}.
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'c'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'c'}
|
||||
* <td style="vertical-align:top"> <code>'\u0063'</code>
|
||||
* <td> Date and time formatted as {@code "%ta %tb %td %tT %tZ %tY"},
|
||||
* e.g. {@code "Sun Jul 20 16:17:00 EDT 1969"}.
|
||||
@ -1802,7 +1802,7 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <caption style="display:none">DTConv</caption>
|
||||
* <tbody>
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code '%'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code '%'}
|
||||
* <td> The result is a literal {@code '%'} (<code>'\u0025'</code>)
|
||||
*
|
||||
* <p> The width is the minimum number of characters to
|
||||
@ -1830,7 +1830,7 @@ import jdk.internal.math.FormattedFloatingDecimal;
|
||||
* <caption style="display:none">DTConv</caption>
|
||||
* <tbody>
|
||||
*
|
||||
* <tr><td style="vertical-align:top">{@code 'n'}
|
||||
* <tr><th scope="row" style="vertical-align:top">{@code 'n'}
|
||||
* <td> the platform-specific line separator as returned by {@link
|
||||
* System#lineSeparator()}.
|
||||
*
|
||||
|
@ -163,83 +163,83 @@ import sun.util.calendar.ZoneInfo;
|
||||
* <caption style="display:none">GregorianCalendar default field values</caption>
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th>
|
||||
* <th scope="col">
|
||||
* Field
|
||||
* </th>
|
||||
* <th>
|
||||
* <th scope="col">
|
||||
Default Value
|
||||
* </th>
|
||||
* </tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td>
|
||||
* <th scope="row">
|
||||
* <code>ERA</code>
|
||||
* </td>
|
||||
* </th>
|
||||
* <td>
|
||||
* <code>AD</code>
|
||||
* </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>
|
||||
* <th scope="row">
|
||||
* <code>YEAR</code>
|
||||
* </td>
|
||||
* </th>
|
||||
* <td>
|
||||
* <code>1970</code>
|
||||
* </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>
|
||||
* <th scope="row">
|
||||
* <code>MONTH</code>
|
||||
* </td>
|
||||
* </th>
|
||||
* <td>
|
||||
* <code>JANUARY</code>
|
||||
* </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>
|
||||
* <th scope="row">
|
||||
* <code>DAY_OF_MONTH</code>
|
||||
* </td>
|
||||
* </th>
|
||||
* <td>
|
||||
* <code>1</code>
|
||||
* </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>
|
||||
* <th scope="row">
|
||||
* <code>DAY_OF_WEEK</code>
|
||||
* </td>
|
||||
* </th>
|
||||
* <td>
|
||||
* <code>the first day of week</code>
|
||||
* </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>
|
||||
* <th scope="row">
|
||||
* <code>WEEK_OF_MONTH</code>
|
||||
* </td>
|
||||
* </th>
|
||||
* <td>
|
||||
* <code>0</code>
|
||||
* </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>
|
||||
* <th scope="row">
|
||||
* <code>DAY_OF_WEEK_IN_MONTH</code>
|
||||
* </td>
|
||||
* </th>
|
||||
* <td>
|
||||
* <code>1</code>
|
||||
* </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>
|
||||
* <th scope="row">
|
||||
* <code>AM_PM</code>
|
||||
* </td>
|
||||
* </th>
|
||||
* <td>
|
||||
* <code>AM</code>
|
||||
* </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>
|
||||
* <th scope="row">
|
||||
* <code>HOUR, HOUR_OF_DAY, MINUTE, SECOND, MILLISECOND</code>
|
||||
* </td>
|
||||
* </th>
|
||||
* <td>
|
||||
* <code>0</code>
|
||||
* </td>
|
||||
|
@ -1590,29 +1590,29 @@ public final class Locale implements Cloneable, Serializable {
|
||||
* <table class="striped">
|
||||
* <caption style="display:none">Grandfathered tags with canonical replacements</caption>
|
||||
* <thead style="text-align:center">
|
||||
* <tr><th style="padding: 0 2px">grandfathered tag</th><th style="padding: 0 2px">modern replacement</th></tr>
|
||||
* <tr><th scope="col" style="padding: 0 2px">grandfathered tag</th><th scope="col" style="padding: 0 2px">modern replacement</th></tr>
|
||||
* </thead>
|
||||
* <tbody style="text-align:center">
|
||||
* <tr><td>art-lojban</td><td>jbo</td></tr>
|
||||
* <tr><td>i-ami</td><td>ami</td></tr>
|
||||
* <tr><td>i-bnn</td><td>bnn</td></tr>
|
||||
* <tr><td>i-hak</td><td>hak</td></tr>
|
||||
* <tr><td>i-klingon</td><td>tlh</td></tr>
|
||||
* <tr><td>i-lux</td><td>lb</td></tr>
|
||||
* <tr><td>i-navajo</td><td>nv</td></tr>
|
||||
* <tr><td>i-pwn</td><td>pwn</td></tr>
|
||||
* <tr><td>i-tao</td><td>tao</td></tr>
|
||||
* <tr><td>i-tay</td><td>tay</td></tr>
|
||||
* <tr><td>i-tsu</td><td>tsu</td></tr>
|
||||
* <tr><td>no-bok</td><td>nb</td></tr>
|
||||
* <tr><td>no-nyn</td><td>nn</td></tr>
|
||||
* <tr><td>sgn-BE-FR</td><td>sfb</td></tr>
|
||||
* <tr><td>sgn-BE-NL</td><td>vgt</td></tr>
|
||||
* <tr><td>sgn-CH-DE</td><td>sgg</td></tr>
|
||||
* <tr><td>zh-guoyu</td><td>cmn</td></tr>
|
||||
* <tr><td>zh-hakka</td><td>hak</td></tr>
|
||||
* <tr><td>zh-min-nan</td><td>nan</td></tr>
|
||||
* <tr><td>zh-xiang</td><td>hsn</td></tr>
|
||||
* <tr><th scope="row">art-lojban</th><td>jbo</td></tr>
|
||||
* <tr><th scope="row">i-ami</th><td>ami</td></tr>
|
||||
* <tr><th scope="row">i-bnn</th><td>bnn</td></tr>
|
||||
* <tr><th scope="row">i-hak</th><td>hak</td></tr>
|
||||
* <tr><th scope="row">i-klingon</th><td>tlh</td></tr>
|
||||
* <tr><th scope="row">i-lux</th><td>lb</td></tr>
|
||||
* <tr><th scope="row">i-navajo</th><td>nv</td></tr>
|
||||
* <tr><th scope="row">i-pwn</th><td>pwn</td></tr>
|
||||
* <tr><th scope="row">i-tao</th><td>tao</td></tr>
|
||||
* <tr><th scope="row">i-tay</th><td>tay</td></tr>
|
||||
* <tr><th scope="row">i-tsu</th><td>tsu</td></tr>
|
||||
* <tr><th scope="row">no-bok</th><td>nb</td></tr>
|
||||
* <tr><th scope="row">no-nyn</th><td>nn</td></tr>
|
||||
* <tr><th scope="row">sgn-BE-FR</th><td>sfb</td></tr>
|
||||
* <tr><th scope="row">sgn-BE-NL</th><td>vgt</td></tr>
|
||||
* <tr><th scope="row">sgn-CH-DE</th><td>sgg</td></tr>
|
||||
* <tr><th scope="row">zh-guoyu</th><td>cmn</td></tr>
|
||||
* <tr><th scope="row">zh-hakka</th><td>hak</td></tr>
|
||||
* <tr><th scope="row">zh-min-nan</th><td>nan</td></tr>
|
||||
* <tr><th scope="row">zh-xiang</th><td>hsn</td></tr>
|
||||
* </tbody>
|
||||
* </table>
|
||||
*
|
||||
@ -1622,15 +1622,15 @@ public final class Locale implements Cloneable, Serializable {
|
||||
* <table class="striped">
|
||||
* <caption style="display:none">Grandfathered tags with no modern replacement</caption>
|
||||
* <thead style="text-align:center">
|
||||
* <tr><th style="padding: 0 2px">grandfathered tag</th><th style="padding: 0 2px">converts to</th></tr>
|
||||
* <tr><th scope="col" style="padding: 0 2px">grandfathered tag</th><th scope="col" style="padding: 0 2px">converts to</th></tr>
|
||||
* </thead>
|
||||
* <tbody style="text-align:center">
|
||||
* <tr><td>cel-gaulish</td><td>xtg-x-cel-gaulish</td></tr>
|
||||
* <tr><td>en-GB-oed</td><td>en-GB-x-oed</td></tr>
|
||||
* <tr><td>i-default</td><td>en-x-i-default</td></tr>
|
||||
* <tr><td>i-enochian</td><td>und-x-i-enochian</td></tr>
|
||||
* <tr><td>i-mingo</td><td>see-x-i-mingo</td></tr>
|
||||
* <tr><td>zh-min</td><td>nan-x-zh-min</td></tr>
|
||||
* <tr><th scope="row">cel-gaulish</th><td>xtg-x-cel-gaulish</td></tr>
|
||||
* <tr><th scope="row">en-GB-oed</th><td>en-GB-x-oed</td></tr>
|
||||
* <tr><th scope="row">i-default</th><td>en-x-i-default</td></tr>
|
||||
* <tr><th scope="row">i-enochian</th><td>und-x-i-enochian</td></tr>
|
||||
* <tr><th scope="row">i-mingo</th><td>see-x-i-mingo</td></tr>
|
||||
* <tr><th scope="row">zh-min</th><td>nan-x-zh-min</td></tr>
|
||||
* </tbody>
|
||||
* </table>
|
||||
*
|
||||
@ -2778,16 +2778,16 @@ public final class Locale implements Cloneable, Serializable {
|
||||
* <caption>Filtering method behavior</caption>
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th>Filtering Mode</th>
|
||||
* <th>Language Priority List: {@code "de-DE"}</th>
|
||||
* <th>Language Priority List: {@code "de-*-DE"}</th>
|
||||
* <th scope="col">Filtering Mode</th>
|
||||
* <th scope="col">Language Priority List: {@code "de-DE"}</th>
|
||||
* <th scope="col">Language Priority List: {@code "de-*-DE"}</th>
|
||||
* </tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td style="vertical-align:top">
|
||||
* <th scope="row" style="vertical-align:top">
|
||||
* {@link FilteringMode#AUTOSELECT_FILTERING AUTOSELECT_FILTERING}
|
||||
* </td>
|
||||
* </th>
|
||||
* <td style="vertical-align:top">
|
||||
* Performs <em>basic</em> filtering and returns {@code "de-DE"} and
|
||||
* {@code "de-DE-1996"}.
|
||||
@ -2799,9 +2799,9 @@ public final class Locale implements Cloneable, Serializable {
|
||||
* </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td style="vertical-align:top">
|
||||
* <th scope="row" style="vertical-align:top">
|
||||
* {@link FilteringMode#EXTENDED_FILTERING EXTENDED_FILTERING}
|
||||
* </td>
|
||||
* </th>
|
||||
* <td style="vertical-align:top">
|
||||
* Performs <em>extended</em> filtering and returns {@code "de-DE"},
|
||||
* {@code "de-Deva-DE"}, {@code "de-DE-1996"}, {@code "de-Latn-DE"}, and
|
||||
@ -2810,9 +2810,9 @@ public final class Locale implements Cloneable, Serializable {
|
||||
* <td style="vertical-align:top">Same as above.</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td style="vertical-align:top">
|
||||
* <th scope="row" style="vertical-align:top">
|
||||
* {@link FilteringMode#IGNORE_EXTENDED_RANGES IGNORE_EXTENDED_RANGES}
|
||||
* </td>
|
||||
* </th>
|
||||
* <td style="vertical-align:top">
|
||||
* Performs <em>basic</em> filtering and returns {@code "de-DE"} and
|
||||
* {@code "de-DE-1996"}.
|
||||
@ -2823,9 +2823,9 @@ public final class Locale implements Cloneable, Serializable {
|
||||
* </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td style="vertical-align:top">
|
||||
* <th scope="row" style="vertical-align:top">
|
||||
* {@link FilteringMode#MAP_EXTENDED_RANGES MAP_EXTENDED_RANGES}
|
||||
* </td>
|
||||
* </th>
|
||||
* <td style="vertical-align:top">Same as above.</td>
|
||||
* <td style="vertical-align:top">
|
||||
* Performs <em>basic</em> filtering and returns {@code "de-DE"} and
|
||||
@ -2834,9 +2834,9 @@ public final class Locale implements Cloneable, Serializable {
|
||||
* </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td style="vertical-align:top">
|
||||
* <th scope="row" style="vertical-align:top">
|
||||
* {@link FilteringMode#REJECT_EXTENDED_RANGES REJECT_EXTENDED_RANGES}
|
||||
* </td>
|
||||
* </th>
|
||||
* <td style="vertical-align:top">Same as above.</td>
|
||||
* <td style="vertical-align:top">
|
||||
* Throws {@link IllegalArgumentException} because {@code "de-*-DE"} is
|
||||
|
@ -3887,9 +3887,13 @@ loop: for(int x=0, offset=0; x<nCodePoints; x++, offset+=len) {
|
||||
return next.match(matcher, i + 1, seq);
|
||||
if (ch == 0x0D) {
|
||||
i++;
|
||||
if (i < matcher.to && seq.charAt(i) == 0x0A &&
|
||||
next.match(matcher, i + 1, seq)) {
|
||||
return true;
|
||||
if (i < matcher.to) {
|
||||
if (seq.charAt(i) == 0x0A &&
|
||||
next.match(matcher, i + 1, seq)) {
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
matcher.hitEnd = true;
|
||||
}
|
||||
return next.match(matcher, i, seq);
|
||||
}
|
||||
|
@ -48,15 +48,15 @@ import java.security.*;
|
||||
* <caption style="display:none">permission name, what it allows, and associated risks</caption>
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th>Permission Target Name</th>
|
||||
* <th>What the Permission Allows</th>
|
||||
* <th>Risks of Allowing this Permission</th>
|
||||
* <th scope="col">Permission Target Name</th>
|
||||
* <th scope="col">What the Permission Allows</th>
|
||||
* <th scope="col">Risks of Allowing this Permission</th>
|
||||
* </tr>
|
||||
* </thead>
|
||||
*
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td>setHostnameVerifier</td>
|
||||
* <th scope="row">setHostnameVerifier</th>
|
||||
* <td>The ability to set a callback which can decide whether to
|
||||
* allow a mismatch between the host being connected to by
|
||||
* an HttpsURLConnection and the common name field in
|
||||
@ -70,7 +70,7 @@ import java.security.*;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>getSSLSessionContext</td>
|
||||
* <th scope="row">getSSLSessionContext</th>
|
||||
* <td>The ability to get the SSLSessionContext of an SSLSession.
|
||||
* </td>
|
||||
* <td>Malicious code may monitor sessions which have been established
|
||||
@ -79,7 +79,7 @@ import java.security.*;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>setDefaultSSLContext</td>
|
||||
* <th scope="row">setDefaultSSLContext</th>
|
||||
* <td>The ability to set the default SSL context
|
||||
* </td>
|
||||
* <td>Malicious code can set a context that monitors the opening of
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -42,7 +42,7 @@ class ISO_8859_1
|
||||
{
|
||||
|
||||
public ISO_8859_1() {
|
||||
super("ISO-8859-1", StandardCharsets.aliases_ISO_8859_1);
|
||||
super(StandardCharsets.ISO_8859_1, StandardCharsets.aliases_ISO_8859_1);
|
||||
}
|
||||
|
||||
public String historicalName() {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
*
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
@ -51,6 +51,12 @@ public class StandardCharsets extends CharsetProvider {
|
||||
|
||||
private static final String packagePrefix = "sun.nio.cs";
|
||||
|
||||
public static final String US_ASCII = "US-ASCII";
|
||||
|
||||
public static final String ISO_8859_1 = "ISO-8859-1";
|
||||
|
||||
public static final String UTF_8 = "UTF-8";
|
||||
|
||||
public StandardCharsets() {
|
||||
this.aliasMap = new Aliases();
|
||||
this.classMap = new Classes();
|
||||
@ -103,13 +109,13 @@ public class StandardCharsets extends CharsetProvider {
|
||||
|
||||
// As all charset class names added to classMap are string literals we
|
||||
// can check identity here as an optimization
|
||||
if (cln == "US_ASCII") {
|
||||
if (cln == US_ASCII) {
|
||||
return cache(csn, new US_ASCII());
|
||||
}
|
||||
if (cln == "ISO_8859_1") {
|
||||
if (cln == ISO_8859_1) {
|
||||
return cache(csn, new ISO_8859_1());
|
||||
}
|
||||
if (cln == "UTF_8") {
|
||||
if (cln == UTF_8) {
|
||||
return cache(csn, new UTF_8());
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -38,7 +38,7 @@ public class US_ASCII
|
||||
{
|
||||
|
||||
public US_ASCII() {
|
||||
super("US-ASCII", StandardCharsets.aliases_US_ASCII);
|
||||
super(StandardCharsets.US_ASCII, StandardCharsets.aliases_US_ASCII);
|
||||
}
|
||||
|
||||
public String historicalName() {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -57,7 +57,7 @@ import java.nio.charset.CodingErrorAction;
|
||||
class UTF_8 extends Unicode
|
||||
{
|
||||
public UTF_8() {
|
||||
super("UTF-8", StandardCharsets.aliases_UTF_8);
|
||||
super(StandardCharsets.UTF_8, StandardCharsets.aliases_UTF_8);
|
||||
}
|
||||
|
||||
public String historicalName() {
|
||||
|
@ -270,7 +270,7 @@ public final class AlgorithmChecker extends PKIXCertPathChecker {
|
||||
|
||||
AlgorithmParameters currSigAlgParams = algorithmId.getParameters();
|
||||
PublicKey currPubKey = cert.getPublicKey();
|
||||
String currSigAlg = ((X509Certificate)cert).getSigAlgName();
|
||||
String currSigAlg = x509Cert.getSigAlgName();
|
||||
|
||||
// Check the signature algorithm and parameters against constraints.
|
||||
if (!constraints.permits(SIGNATURE_PRIMITIVE_SET, currSigAlg,
|
||||
|
@ -130,7 +130,7 @@ public class ECUtil {
|
||||
return (ECPrivateKey)keyFactory.generatePrivate(keySpec);
|
||||
}
|
||||
|
||||
private static AlgorithmParameters getECParameters(Provider p) {
|
||||
public static AlgorithmParameters getECParameters(Provider p) {
|
||||
try {
|
||||
if (p != null) {
|
||||
return AlgorithmParameters.getInstance("EC", p);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -170,8 +170,8 @@ Java_sun_nio_ch_FileChannelImpl_close0(JNIEnv *env, jobject this, jobject fdo)
|
||||
{
|
||||
HANDLE h = (HANDLE)(handleval(env, fdo));
|
||||
if (h != INVALID_HANDLE_VALUE) {
|
||||
jint result = CloseHandle(h);
|
||||
if (result < 0) {
|
||||
BOOL result = CloseHandle(h);
|
||||
if (result == 0) {
|
||||
JNU_ThrowIOExceptionWithLastError(env, "Close failed");
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -334,7 +334,7 @@ Java_sun_nio_ch_FileDispatcherImpl_truncate0(JNIEnv *env, jobject this,
|
||||
FileEndOfFileInfo,
|
||||
&eofInfo,
|
||||
sizeof(eofInfo));
|
||||
if (result == FALSE) {
|
||||
if (result == 0) {
|
||||
JNU_ThrowIOExceptionWithLastError(env, "Truncation failed");
|
||||
return IOS_THROWN;
|
||||
}
|
||||
@ -411,7 +411,7 @@ Java_sun_nio_ch_FileDispatcherImpl_release0(JNIEnv *env, jobject this,
|
||||
long highPos = (long)(pos >> 32);
|
||||
DWORD lowNumBytes = (DWORD)size;
|
||||
DWORD highNumBytes = (DWORD)(size >> 32);
|
||||
jint result = 0;
|
||||
BOOL result = 0;
|
||||
OVERLAPPED o;
|
||||
o.hEvent = 0;
|
||||
o.Offset = lowPos;
|
||||
@ -422,7 +422,7 @@ Java_sun_nio_ch_FileDispatcherImpl_release0(JNIEnv *env, jobject this,
|
||||
if (error == ERROR_IO_PENDING) {
|
||||
DWORD dwBytes;
|
||||
result = GetOverlappedResult(h, &o, &dwBytes, TRUE);
|
||||
if (result == 0) {
|
||||
if (result != 0) {
|
||||
return;
|
||||
}
|
||||
error = GetLastError();
|
||||
@ -437,7 +437,7 @@ static void closeFile(JNIEnv *env, jlong fd) {
|
||||
HANDLE h = (HANDLE)fd;
|
||||
if (h != INVALID_HANDLE_VALUE) {
|
||||
int result = CloseHandle(h);
|
||||
if (result < 0)
|
||||
if (result == 0)
|
||||
JNU_ThrowIOExceptionWithLastError(env, "Close failed");
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2008, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -126,5 +126,8 @@ Java_sun_nio_ch_WindowsAsynchronousFileChannelImpl_close0(JNIEnv* env, jclass th
|
||||
jlong handle)
|
||||
{
|
||||
HANDLE h = (HANDLE)jlong_to_ptr(handle);
|
||||
CloseHandle(h);
|
||||
BOOL result = CloseHandle(h);
|
||||
if (result == 0) {
|
||||
JNU_ThrowIOExceptionWithLastError(env, "Close failed");
|
||||
}
|
||||
}
|
||||
|
@ -177,13 +177,13 @@ abstract class provides.
|
||||
<caption>Features in <code>BaseRowSet</code></caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Feature</th>
|
||||
<th>Details</th>
|
||||
<th scope="col">Feature</th>
|
||||
<th scope="col">Details</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Properties</td>
|
||||
<th scope="row">Properties</th>
|
||||
<td>Provides standard JavaBeans property manipulation
|
||||
mechanisms to allow applications to get and set <code>RowSet</code> command and
|
||||
property values. Refer to the documentation of the <code>javax.sql.RowSet</code>
|
||||
@ -191,7 +191,7 @@ interface (available in the JDBC 3.0 specification) for more details on
|
||||
the standard <code>RowSet</code> properties.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Event notification</td>
|
||||
<th scope="row">Event notification</th>
|
||||
<td>Provides standard JavaBeans event notifications
|
||||
to registered event listeners. Refer to the documentation of <code>javax.sql.RowSetEvent</code>
|
||||
interface (available in the JDBC 3.0 specification) for
|
||||
@ -199,12 +199,12 @@ more details on how to register and handle standard RowSet events generated
|
||||
by compliant implementations.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Setters for a RowSet object's command</td>
|
||||
<th scope="row">Setters for a RowSet object's command</th>
|
||||
<td>Provides a complete set of setter methods
|
||||
for setting RowSet command parameters.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Streams</td>
|
||||
<th scope="row">Streams</th>
|
||||
<td>Provides fields for storing of stream instances
|
||||
in addition to providing a set of constants for stream type designation.</td>
|
||||
</tr>
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1996, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -1523,7 +1523,7 @@ throws SQLException;
|
||||
*
|
||||
* @implSpec
|
||||
* The default implementation is a no-op.
|
||||
* <p>
|
||||
*
|
||||
* @apiNote
|
||||
* This method is to be used by Connection pooling managers.
|
||||
* <p>
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1996, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -63,7 +63,6 @@ import jdk.internal.reflect.Reflection;
|
||||
* via the {@linkplain ServiceLoader#load service-provider loading} mechanism.
|
||||
*</ul>
|
||||
*
|
||||
*<P>
|
||||
* @implNote
|
||||
* {@code DriverManager} initialization is done lazily and looks up service
|
||||
* providers using the thread context class loader. The drivers loaded and
|
||||
|
@ -62,29 +62,29 @@ import java.security.*;
|
||||
* <caption style="display:none">permission target name, what the permission allows, and associated risks</caption>
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th>Permission Target Name</th>
|
||||
* <th>What the Permission Allows</th>
|
||||
* <th>Risks of Allowing this Permission</th>
|
||||
* <th scope="col">Permission Target Name</th>
|
||||
* <th scope="col">What the Permission Allows</th>
|
||||
* <th scope="col">Risks of Allowing this Permission</th>
|
||||
* </tr>
|
||||
* </thead>
|
||||
*
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td>setLog</td>
|
||||
* <th scope="row">setLog</th>
|
||||
* <td>Setting of the logging stream</td>
|
||||
* <td>This is a dangerous permission to grant.
|
||||
* The contents of the log may contain usernames and passwords,
|
||||
* SQL statements, and SQL data.</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>callAbort</td>
|
||||
* <th scope="row">callAbort</th>
|
||||
* <td>Allows the invocation of the {@code Connection} method
|
||||
* {@code abort}</td>
|
||||
* <td>Permits an application to terminate a physical connection to a
|
||||
* database.</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>setSyncFactory</td>
|
||||
* <th scope="row">setSyncFactory</th>
|
||||
* <td>Allows the invocation of the {@code SyncFactory} methods
|
||||
* {@code setJNDIContext} and {@code setLogger}</td>
|
||||
* <td>Permits an application to specify the JNDI context from which the
|
||||
@ -93,7 +93,7 @@ import java.security.*;
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>setNetworkTimeout</td>
|
||||
* <th scope="row">setNetworkTimeout</th>
|
||||
* <td>Allows the invocation of the {@code Connection} method
|
||||
* {@code setNetworkTimeout}</td>
|
||||
* <td>Permits an application to specify the maximum period a
|
||||
@ -101,7 +101,7 @@ import java.security.*;
|
||||
* objects created from the <code>Connection</code>
|
||||
* will wait for the database to reply to any one request.</td>
|
||||
* <tr>
|
||||
* <td>deregisterDriver</td>
|
||||
* <th scope="row">deregisterDriver</th>
|
||||
* <td>Allows the invocation of the {@code DriverManager}
|
||||
* method {@code deregisterDriver}</td>
|
||||
* <td>Permits an application to remove a JDBC driver from the list of
|
||||
|
@ -1379,17 +1379,17 @@ public interface Statement extends Wrapper, AutoCloseable {
|
||||
* single quote within the string will be replaced by two single quotes.
|
||||
*
|
||||
* <blockquote>
|
||||
* <table class="striped" >
|
||||
* <table class="striped">
|
||||
* <caption>Examples of the conversion:</caption>
|
||||
* <thead>
|
||||
* <tr><th>Value</th><th>Result</th></tr>
|
||||
* <tr><th scope="col">Value</th><th scope="col">Result</th></tr>
|
||||
* </thead>
|
||||
* <tbody style="text-align:center">
|
||||
* <tr> <td>Hello</td> <td>'Hello'</td> </tr>
|
||||
* <tr> <td>G'Day</td> <td>'G''Day'</td> </tr>
|
||||
* <tr> <td>'G''Day'</td>
|
||||
* <tr> <th scope="row">Hello</th> <td>'Hello'</td> </tr>
|
||||
* <tr> <th scope="row">G'Day</th> <td>'G''Day'</td> </tr>
|
||||
* <tr> <th scope="row">'G''Day'</th>
|
||||
* <td>'''G''''Day'''</td> </tr>
|
||||
* <tr> <td>I'''M</td> <td>'I''''''M'</td>
|
||||
* <tr> <th scope="row">I'''M</th> <td>'I''''''M'</td>
|
||||
* </tr>
|
||||
*
|
||||
* </tbody>
|
||||
@ -1454,48 +1454,48 @@ public interface Statement extends Wrapper, AutoCloseable {
|
||||
* <caption>Examples of the conversion:</caption>
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th>identifier</th>
|
||||
* <th>alwaysQuote</th>
|
||||
* <th>Result</th></tr>
|
||||
* <th scope="col">identifier</th>
|
||||
* <th scope="col">alwaysQuote</th>
|
||||
* <th scope="col">Result</th></tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td>Hello</td>
|
||||
* <th scope="row">Hello</th>
|
||||
* <td>false</td>
|
||||
* <td>Hello</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>Hello</td>
|
||||
* <th scope="row">Hello</th>
|
||||
* <td>true</td>
|
||||
* <td>"Hello"</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>G'Day</td>
|
||||
* <th scope="row">G'Day</th>
|
||||
* <td>false</td>
|
||||
* <td>"G'Day"</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>"Bruce Wayne"</td>
|
||||
* <th scope="row">"Bruce Wayne"</th>
|
||||
* <td>false</td>
|
||||
* <td>"Bruce Wayne"</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>"Bruce Wayne"</td>
|
||||
* <th scope="row">"Bruce Wayne"</th>
|
||||
* <td>true</td>
|
||||
* <td>"Bruce Wayne"</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>GoodDay$</td>
|
||||
* <th scope="row">GoodDay$</th>
|
||||
* <td>false</td>
|
||||
* <td>"GoodDay$"</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>Hello"World</td>
|
||||
* <th scope="row">Hello"World</th>
|
||||
* <td>false</td>
|
||||
* <td>SQLException</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>"Hello"World"</td>
|
||||
* <th scope="row">"Hello"World"</th>
|
||||
* <td>false</td>
|
||||
* <td>SQLException</td>
|
||||
* </tr>
|
||||
@ -1554,33 +1554,33 @@ public interface Statement extends Wrapper, AutoCloseable {
|
||||
* <caption>Examples of the conversion:</caption>
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th>identifier</th>
|
||||
* <th>Simple Identifier</th>
|
||||
* <th scope="col">identifier</th>
|
||||
* <th scope="col">Simple Identifier</th>
|
||||
* </thead>
|
||||
*
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td>Hello</td>
|
||||
* <th scope="row">Hello</th>
|
||||
* <td>true</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>G'Day</td>
|
||||
* <th scope="row">G'Day</th>
|
||||
* <td>false</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>"Bruce Wayne"</td>
|
||||
* <th scope="row">"Bruce Wayne"</th>
|
||||
* <td>false</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>GoodDay$</td>
|
||||
* <th scope="row">GoodDay$</th>
|
||||
* <td>false</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>Hello"World</td>
|
||||
* <th scope="row">Hello"World</th>
|
||||
* <td>false</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>"Hello"World"</td>
|
||||
* <th scope="row">"Hello"World"</th>
|
||||
* <td>false</td>
|
||||
* </tr>
|
||||
* </tbody>
|
||||
@ -1613,17 +1613,17 @@ public interface Statement extends Wrapper, AutoCloseable {
|
||||
* <caption>Examples of the conversion:</caption>
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th>Value</th>
|
||||
* <th>Result</th>
|
||||
* <th scope="col">Value</th>
|
||||
* <th scope="col">Result</th>
|
||||
* </tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr> <td>Hello</td> <td>N'Hello'</td> </tr>
|
||||
* <tr> <td>G'Day</td> <td>N'G''Day'</td> </tr>
|
||||
* <tr> <td>'G''Day'</td>
|
||||
* <tr> <th scope="row">Hello</th> <td>N'Hello'</td> </tr>
|
||||
* <tr> <th scope="row">G'Day</th> <td>N'G''Day'</td> </tr>
|
||||
* <tr> <th scope="row">'G''Day'</th>
|
||||
* <td>N'''G''''Day'''</td> </tr>
|
||||
* <tr> <td>I'''M</td> <td>N'I''''''M'</td>
|
||||
* <tr> <td>N'Hello'</td> <td>N'N''Hello'''</td> </tr>
|
||||
* <tr> <th scope="row">I'''M</th> <td>N'I''''''M'</td>
|
||||
* <tr> <th scope="row">N'Hello'</th> <td>N'N''Hello'''</td> </tr>
|
||||
*
|
||||
* </tbody>
|
||||
* </table>
|
||||
|
@ -280,7 +280,6 @@ generally, a writer will do the following:
|
||||
The <code>RowSet</code> interface may be implemented in any number of
|
||||
ways, and anyone may write an implementation. Developers are encouraged
|
||||
to use their imaginations in coming up with new ways to use rowsets.
|
||||
<P>
|
||||
|
||||
|
||||
<h2>Package Specification</h2>
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -25,12 +25,14 @@
|
||||
|
||||
package sun.security.ec;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.math.BigInteger;
|
||||
import java.security.*;
|
||||
import java.security.spec.AlgorithmParameterSpec;
|
||||
import java.security.spec.ECGenParameterSpec;
|
||||
import java.security.spec.ECParameterSpec;
|
||||
import java.security.spec.ECPoint;
|
||||
import java.security.spec.InvalidParameterSpecException;
|
||||
|
||||
import sun.security.ec.ECPrivateKeyImpl;
|
||||
import sun.security.ec.ECPublicKeyImpl;
|
||||
@ -85,17 +87,19 @@ public final class ECKeyPairGenerator extends KeyPairGeneratorSpi {
|
||||
public void initialize(AlgorithmParameterSpec params, SecureRandom random)
|
||||
throws InvalidAlgorithmParameterException {
|
||||
|
||||
ECParameterSpec ecSpec = null;
|
||||
|
||||
if (params instanceof ECParameterSpec) {
|
||||
this.params = ECUtil.getECParameterSpec(null,
|
||||
ecSpec = ECUtil.getECParameterSpec(null,
|
||||
(ECParameterSpec)params);
|
||||
if (this.params == null) {
|
||||
if (ecSpec == null) {
|
||||
throw new InvalidAlgorithmParameterException(
|
||||
"Unsupported curve: " + params);
|
||||
}
|
||||
} else if (params instanceof ECGenParameterSpec) {
|
||||
String name = ((ECGenParameterSpec)params).getName();
|
||||
this.params = ECUtil.getECParameterSpec(null, name);
|
||||
if (this.params == null) {
|
||||
ecSpec = ECUtil.getECParameterSpec(null, name);
|
||||
if (ecSpec == null) {
|
||||
throw new InvalidAlgorithmParameterException(
|
||||
"Unknown curve name: " + name);
|
||||
}
|
||||
@ -103,11 +107,36 @@ public final class ECKeyPairGenerator extends KeyPairGeneratorSpi {
|
||||
throw new InvalidAlgorithmParameterException(
|
||||
"ECParameterSpec or ECGenParameterSpec required for EC");
|
||||
}
|
||||
|
||||
// Not all known curves are supported by the native implementation
|
||||
ensureCurveIsSupported(ecSpec);
|
||||
this.params = ecSpec;
|
||||
|
||||
this.keySize =
|
||||
((ECParameterSpec)this.params).getCurve().getField().getFieldSize();
|
||||
this.random = random;
|
||||
}
|
||||
|
||||
private static void ensureCurveIsSupported(ECParameterSpec ecSpec)
|
||||
throws InvalidAlgorithmParameterException {
|
||||
|
||||
AlgorithmParameters ecParams = ECUtil.getECParameters(null);
|
||||
byte[] encodedParams;
|
||||
try {
|
||||
ecParams.init(ecSpec);
|
||||
encodedParams = ecParams.getEncoded();
|
||||
} catch (InvalidParameterSpecException ex) {
|
||||
throw new InvalidAlgorithmParameterException(
|
||||
"Unsupported curve: " + ecSpec.toString());
|
||||
} catch (IOException ex) {
|
||||
throw new RuntimeException(ex);
|
||||
}
|
||||
if (!isCurveSupported(encodedParams)) {
|
||||
throw new InvalidAlgorithmParameterException(
|
||||
"Unsupported curve: " + ecParams.toString());
|
||||
}
|
||||
}
|
||||
|
||||
// generate the keypair. See JCA doc
|
||||
@Override
|
||||
public KeyPair generateKeyPair() {
|
||||
@ -159,6 +188,17 @@ public final class ECKeyPairGenerator extends KeyPairGeneratorSpi {
|
||||
this.keySize = keySize;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the curve in the encoded parameters is supported by the
|
||||
* native implementation.
|
||||
*
|
||||
* @param encodedParams encoded parameters in the same form accepted
|
||||
* by generateECKeyPair
|
||||
* @return true if and only if generateECKeyPair will succeed for
|
||||
* the supplied parameters
|
||||
*/
|
||||
private static native boolean isCurveSupported(byte[] encodedParams);
|
||||
|
||||
/*
|
||||
* Generates the keypair and returns a 2-element array of encoding bytes.
|
||||
* The first one is for the private key, the second for the public key.
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -88,6 +88,50 @@ jbyteArray getEncodedBytes(JNIEnv *env, SECItem *hSECItem)
|
||||
return jEncodedBytes;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: sun_security_ec_ECKeyPairGenerator
|
||||
* Method: isCurveSupported
|
||||
* Signature: ([B)Z
|
||||
*/
|
||||
JNIEXPORT jboolean
|
||||
JNICALL Java_sun_security_ec_ECKeyPairGenerator_isCurveSupported
|
||||
(JNIEnv *env, jclass clazz, jbyteArray encodedParams)
|
||||
{
|
||||
SECKEYECParams params_item;
|
||||
ECParams *ecparams = NULL;
|
||||
jboolean result = JNI_FALSE;
|
||||
|
||||
// The curve is supported if we can get parameters for it
|
||||
params_item.len = env->GetArrayLength(encodedParams);
|
||||
params_item.data =
|
||||
(unsigned char *) env->GetByteArrayElements(encodedParams, 0);
|
||||
if (params_item.data == NULL) {
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
// Fill a new ECParams using the supplied OID
|
||||
if (EC_DecodeParams(¶ms_item, &ecparams, 0) != SECSuccess) {
|
||||
/* bad curve OID */
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
// If we make it to here, then the curve is supported
|
||||
result = JNI_TRUE;
|
||||
|
||||
cleanup:
|
||||
{
|
||||
if (params_item.data) {
|
||||
env->ReleaseByteArrayElements(encodedParams,
|
||||
(jbyte *) params_item.data, JNI_ABORT);
|
||||
}
|
||||
if (ecparams) {
|
||||
FreeECParams(ecparams, true);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: sun_security_ec_ECKeyPairGenerator
|
||||
* Method: generateECKeyPair
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -33,6 +33,7 @@ import java.lang.management.ManagementFactory;
|
||||
import java.lang.management.RuntimeMXBean;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
import java.lang.UnsupportedOperationException;
|
||||
import sun.management.VMManagement;
|
||||
|
||||
/**
|
||||
@ -132,19 +133,11 @@ public final class JdpController {
|
||||
}
|
||||
|
||||
// Get the process id of the current running Java process
|
||||
private static Integer getProcessId() {
|
||||
private static Long getProcessId() {
|
||||
try {
|
||||
// Get the current process id using a reflection hack
|
||||
RuntimeMXBean runtime = ManagementFactory.getRuntimeMXBean();
|
||||
Field jvm = runtime.getClass().getDeclaredField("jvm");
|
||||
jvm.setAccessible(true);
|
||||
|
||||
VMManagement mgmt = (sun.management.VMManagement) jvm.get(runtime);
|
||||
Method pid_method = mgmt.getClass().getDeclaredMethod("getProcessId");
|
||||
pid_method.setAccessible(true);
|
||||
Integer pid = (Integer) pid_method.invoke(mgmt);
|
||||
return pid;
|
||||
} catch(Exception ex) {
|
||||
// Get the current process id
|
||||
return ProcessHandle.current().pid();
|
||||
} catch(UnsupportedOperationException ex) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@ -206,7 +199,7 @@ public final class JdpController {
|
||||
packet.setBroadcastInterval(Integer.toString(pause));
|
||||
|
||||
// Set process id
|
||||
Integer pid = getProcessId();
|
||||
Long pid = getProcessId();
|
||||
if (pid != null) {
|
||||
packet.setProcessId(pid.toString());
|
||||
}
|
||||
|
@ -59,65 +59,70 @@ import java.nio.channels.SelectionKey;
|
||||
* {@link #setOption(SctpSocketOption,Object) setOption} method. An SCTP
|
||||
* channel support the following options:
|
||||
* <blockquote>
|
||||
* <table class="striped"><caption style="display:none">Socket options</caption>
|
||||
* <table class="striped">
|
||||
* <caption style="display:none">Socket options</caption>
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th>Option Name</th>
|
||||
* <th>Description</th>
|
||||
* <th scope="col">Option Name</th>
|
||||
* <th scope="col">Description</th>
|
||||
* </tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td> {@link SctpStandardSocketOptions#SCTP_DISABLE_FRAGMENTS
|
||||
* SCTP_DISABLE_FRAGMENTS} </td>
|
||||
* <th scope="row"> {@link SctpStandardSocketOptions#SCTP_DISABLE_FRAGMENTS
|
||||
* SCTP_DISABLE_FRAGMENTS} </th>
|
||||
* <td> Enables or disables message fragmentation </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link SctpStandardSocketOptions#SCTP_EXPLICIT_COMPLETE
|
||||
* SCTP_EXPLICIT_COMPLETE} </td>
|
||||
* <th scope="row"> {@link SctpStandardSocketOptions#SCTP_EXPLICIT_COMPLETE
|
||||
* SCTP_EXPLICIT_COMPLETE} </th>
|
||||
* <td> Enables or disables explicit message completion </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link SctpStandardSocketOptions#SCTP_FRAGMENT_INTERLEAVE
|
||||
* SCTP_FRAGMENT_INTERLEAVE} </td>
|
||||
* <th scope="row"> {@link SctpStandardSocketOptions#SCTP_FRAGMENT_INTERLEAVE
|
||||
* SCTP_FRAGMENT_INTERLEAVE} </th>
|
||||
* <td> Controls how the presentation of messages occur for the message
|
||||
* receiver </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link SctpStandardSocketOptions#SCTP_INIT_MAXSTREAMS
|
||||
* SCTP_INIT_MAXSTREAMS} </td>
|
||||
* <th scope="row"> {@link SctpStandardSocketOptions#SCTP_INIT_MAXSTREAMS
|
||||
* SCTP_INIT_MAXSTREAMS} </th>
|
||||
* <td> The maximum number of streams requested by the local endpoint during
|
||||
* association initialization </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link SctpStandardSocketOptions#SCTP_NODELAY SCTP_NODELAY} </td>
|
||||
* <th scope="row"> {@link SctpStandardSocketOptions#SCTP_NODELAY SCTP_NODELAY} </th>
|
||||
* <td> Enables or disable a Nagle-like algorithm </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link SctpStandardSocketOptions#SCTP_PRIMARY_ADDR
|
||||
* SCTP_PRIMARY_ADDR} </td>
|
||||
* <th scope="row"> {@link SctpStandardSocketOptions#SCTP_PRIMARY_ADDR
|
||||
* SCTP_PRIMARY_ADDR} </th>
|
||||
* <td> Requests that the local SCTP stack use the given peer address as the
|
||||
* association primary </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link SctpStandardSocketOptions#SCTP_SET_PEER_PRIMARY_ADDR
|
||||
* SCTP_SET_PEER_PRIMARY_ADDR} </td>
|
||||
* <th scope="row"> {@link SctpStandardSocketOptions#SCTP_SET_PEER_PRIMARY_ADDR
|
||||
* SCTP_SET_PEER_PRIMARY_ADDR} </th>
|
||||
* <td> Requests that the peer mark the enclosed address as the association
|
||||
* primary </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link SctpStandardSocketOptions#SO_SNDBUF
|
||||
* SO_SNDBUF} </td>
|
||||
* <th scope="row"> {@link SctpStandardSocketOptions#SO_SNDBUF
|
||||
* SO_SNDBUF} </th>
|
||||
* <td> The size of the socket send buffer </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link SctpStandardSocketOptions#SO_RCVBUF
|
||||
* SO_RCVBUF} </td>
|
||||
* <th scope="row"> {@link SctpStandardSocketOptions#SO_RCVBUF
|
||||
* SO_RCVBUF} </th>
|
||||
* <td> The size of the socket receive buffer </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link SctpStandardSocketOptions#SO_LINGER
|
||||
* SO_LINGER} </td>
|
||||
* <th scope="row"> {@link SctpStandardSocketOptions#SO_LINGER
|
||||
* SO_LINGER} </th>
|
||||
* <td> Linger on close if data is present (when configured in blocking mode
|
||||
* only) </td>
|
||||
* </tr>
|
||||
* </tbody>
|
||||
* </table>
|
||||
* </blockquote>
|
||||
* Additional (implementation specific) options may also be supported. The list
|
||||
|
@ -63,65 +63,70 @@ import java.nio.channels.SelectionKey;
|
||||
* {@link #setOption(SctpSocketOption,Object,Association) setOption} method. An
|
||||
* {@code SctpMultiChannel} supports the following options:
|
||||
* <blockquote>
|
||||
* <table class="striped"><caption style="display:none">Socket options</caption>
|
||||
* <table class="striped">
|
||||
* <caption style="display:none">Socket options</caption>
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th>Option Name</th>
|
||||
* <th>Description</th>
|
||||
* <th scope="col">Option Name</th>
|
||||
* <th scope="col">Description</th>
|
||||
* </tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td> {@link SctpStandardSocketOptions#SCTP_DISABLE_FRAGMENTS
|
||||
* SCTP_DISABLE_FRAGMENTS} </td>
|
||||
* <th scope="row"> {@link SctpStandardSocketOptions#SCTP_DISABLE_FRAGMENTS
|
||||
* SCTP_DISABLE_FRAGMENTS} </th>
|
||||
* <td> Enables or disables message fragmentation </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link SctpStandardSocketOptions#SCTP_EXPLICIT_COMPLETE
|
||||
* SCTP_EXPLICIT_COMPLETE} </td>
|
||||
* <th scope="row"> {@link SctpStandardSocketOptions#SCTP_EXPLICIT_COMPLETE
|
||||
* SCTP_EXPLICIT_COMPLETE} </th>
|
||||
* <td> Enables or disables explicit message completion </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link SctpStandardSocketOptions#SCTP_FRAGMENT_INTERLEAVE
|
||||
* SCTP_FRAGMENT_INTERLEAVE} </td>
|
||||
* <th scope="row"> {@link SctpStandardSocketOptions#SCTP_FRAGMENT_INTERLEAVE
|
||||
* SCTP_FRAGMENT_INTERLEAVE} </th>
|
||||
* <td> Controls how the presentation of messages occur for the message
|
||||
* receiver </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link SctpStandardSocketOptions#SCTP_INIT_MAXSTREAMS
|
||||
* SCTP_INIT_MAXSTREAMS} </td>
|
||||
* <th scope="row"> {@link SctpStandardSocketOptions#SCTP_INIT_MAXSTREAMS
|
||||
* SCTP_INIT_MAXSTREAMS} </th>
|
||||
* <td> The maximum number of streams requested by the local endpoint during
|
||||
* association initialization </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link SctpStandardSocketOptions#SCTP_NODELAY SCTP_NODELAY} </td>
|
||||
* <th scope="row"> {@link SctpStandardSocketOptions#SCTP_NODELAY SCTP_NODELAY} </th>
|
||||
* <td> Enables or disable a Nagle-like algorithm </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link SctpStandardSocketOptions#SCTP_PRIMARY_ADDR
|
||||
* SCTP_PRIMARY_ADDR} </td>
|
||||
* <th scope="row"> {@link SctpStandardSocketOptions#SCTP_PRIMARY_ADDR
|
||||
* SCTP_PRIMARY_ADDR} </th>
|
||||
* <td> Requests that the local SCTP stack use the given peer address as the
|
||||
* association primary </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link SctpStandardSocketOptions#SCTP_SET_PEER_PRIMARY_ADDR
|
||||
* SCTP_SET_PEER_PRIMARY_ADDR} </td>
|
||||
* <th scope="row"> {@link SctpStandardSocketOptions#SCTP_SET_PEER_PRIMARY_ADDR
|
||||
* SCTP_SET_PEER_PRIMARY_ADDR} </th>
|
||||
* <td> Requests that the peer mark the enclosed address as the association
|
||||
* primary </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link SctpStandardSocketOptions#SO_SNDBUF
|
||||
* SO_SNDBUF} </td>
|
||||
* <th scope="row"> {@link SctpStandardSocketOptions#SO_SNDBUF
|
||||
* SO_SNDBUF} </th>
|
||||
* <td> The size of the socket send buffer </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link SctpStandardSocketOptions#SO_RCVBUF
|
||||
* SO_RCVBUF} </td>
|
||||
* <th scope="row"> {@link SctpStandardSocketOptions#SO_RCVBUF
|
||||
* SO_RCVBUF} </th>
|
||||
* <td> The size of the socket receive buffer </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td> {@link SctpStandardSocketOptions#SO_LINGER
|
||||
* SO_LINGER} </td>
|
||||
* <th scope="row"> {@link SctpStandardSocketOptions#SO_LINGER
|
||||
* SO_LINGER} </th>
|
||||
* <td> Linger on close if data is present (when configured in blocking mode
|
||||
* only) </td>
|
||||
* </tr>
|
||||
* </tbody>
|
||||
* </table>
|
||||
* </blockquote>
|
||||
* Additional (implementation specific) options may also be supported. The list
|
||||
|
@ -47,17 +47,22 @@ import java.nio.channels.spi.AbstractSelectableChannel;
|
||||
* {@link #setOption(SctpSocketOption,Object) setOption} method. SCTP server socket
|
||||
* channels support the following options:
|
||||
* <blockquote>
|
||||
* <table><caption style="display:none">Socket options</caption>
|
||||
* <table class="striped">
|
||||
* <caption style="display:none">Socket options</caption>
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th>Option Name</th>
|
||||
* <th>Description</th>
|
||||
* <th scope="col">Option Name</th>
|
||||
* <th scope="col">Description</th>
|
||||
* </tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td> {@link SctpStandardSocketOptions#SCTP_INIT_MAXSTREAMS
|
||||
* SCTP_INIT_MAXSTREAMS} </td>
|
||||
* <th scope="row"> {@link SctpStandardSocketOptions#SCTP_INIT_MAXSTREAMS
|
||||
* SCTP_INIT_MAXSTREAMS} </th>
|
||||
* <td> The maximum number of streams requested by the local endpoint during
|
||||
* association initialization </td>
|
||||
* </tr>
|
||||
* </tbody>
|
||||
* </table>
|
||||
* </blockquote>
|
||||
* Additional (implementation specific) options may also be supported. The list
|
||||
|
@ -264,9 +264,6 @@ tools/jimage/JImageExtractTest.java 8170120 generic-
|
||||
tools/jimage/JImageListTest.java 8170120 generic-all
|
||||
tools/jimage/JImageVerifyTest.java 8170120 generic-all
|
||||
|
||||
tools/schemagen/MultiReleaseJarTest.java 8174692 generic-all
|
||||
tools/wsgen/MultiReleaseJarTest.java 8174692 generic-all
|
||||
|
||||
############################################################################
|
||||
|
||||
# jdk_jdi
|
||||
|
@ -26,17 +26,22 @@
|
||||
* @bug 7088989 8014374 8167512 8173708
|
||||
* @summary Ensure the AES ciphers of OracleUcrypto provider works correctly
|
||||
* @key randomness
|
||||
* @library /test/lib
|
||||
* @build jdk.test.lib.Platform
|
||||
* jdk.test.lib.Utils
|
||||
* @run main TestAES
|
||||
* @run main/othervm/java.security.policy==empty.policy TestAES
|
||||
* @run main/othervm -Dpolicy=empty.policy TestAES
|
||||
*/
|
||||
|
||||
import java.io.*;
|
||||
import java.security.*;
|
||||
import java.security.spec.*;
|
||||
import java.util.*;
|
||||
import javax.crypto.*;
|
||||
import javax.crypto.spec.*;
|
||||
|
||||
import jdk.test.lib.Platform;
|
||||
import jdk.test.lib.Utils;
|
||||
|
||||
public class TestAES extends UcryptoTest {
|
||||
|
||||
private static final String[] PADDEDCIPHER_ALGOS = {
|
||||
@ -55,10 +60,29 @@ public class TestAES extends UcryptoTest {
|
||||
private static final SecretKey CIPHER_KEY =
|
||||
new SecretKeySpec(new byte[16], "AES");
|
||||
|
||||
private static final boolean IS_BAD_SOLARIS = isBadSolaris();
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
// It has to determine Solaris version before enabling security manager.
|
||||
// Because that needs some permissions, like java.io.FilePermission.
|
||||
String policy = System.getProperty("policy");
|
||||
if (policy != null) {
|
||||
enableSecurityManager(policy);
|
||||
}
|
||||
|
||||
main(new TestAES(), null);
|
||||
}
|
||||
|
||||
// Enables security manager and uses the specified policy file to override
|
||||
// the default one.
|
||||
private static void enableSecurityManager(String policy) {
|
||||
String policyURL = "file://" + System.getProperty("test.src", ".") + "/"
|
||||
+ policy;
|
||||
System.out.println("policyURL: " + policyURL);
|
||||
Security.setProperty("policy.url.1", policyURL);
|
||||
System.setSecurityManager(new SecurityManager());
|
||||
}
|
||||
|
||||
public void doTest(Provider prov) throws Exception {
|
||||
// Provider for testing Interoperability
|
||||
Provider sunJCEProv = Security.getProvider("SunJCE");
|
||||
@ -136,11 +160,18 @@ public class TestAES extends UcryptoTest {
|
||||
boolean testPassed = true;
|
||||
byte[] in = new byte[16];
|
||||
(new SecureRandom()).nextBytes(in);
|
||||
int blockSize = 16;
|
||||
|
||||
for (int j = 1; j < (in.length - 1); j++) {
|
||||
System.out.println("Input offset size: " + j);
|
||||
for (int i = 0; i < algos.length; i++) {
|
||||
for (int i = 0; i < algos.length; i++) {
|
||||
if (IS_BAD_SOLARIS
|
||||
&& algos[i].indexOf("CFB128") != -1
|
||||
&& p.getName().equals("OracleUcrypto")) {
|
||||
System.out.println("Ignore cases on CFB128 due to a pre-S11.3 bug");
|
||||
continue;
|
||||
}
|
||||
|
||||
for (int j = 1; j < (in.length - 1); j++) {
|
||||
System.out.println("Input offset size: " + j);
|
||||
|
||||
try {
|
||||
// check ENC
|
||||
Cipher c;
|
||||
@ -177,12 +208,6 @@ public class TestAES extends UcryptoTest {
|
||||
k += c.doFinal(eout, firstPartLen+1, eout.length - firstPartLen - 1, dout, k);
|
||||
if (!checkArrays(in, in.length, dout, k)) testPassed = false;
|
||||
} catch(Exception ex) {
|
||||
if (ex instanceof BadPaddingException &&
|
||||
algos[i].indexOf("CFB128") != -1 &&
|
||||
p.getName().equals("OracleUcrypto")) {
|
||||
System.out.println("Ignore due to a pre-S11.3 bug: " + ex);
|
||||
continue;
|
||||
}
|
||||
System.out.println("Unexpected Exception: " + algos[i]);
|
||||
ex.printStackTrace();
|
||||
testPassed = false;
|
||||
@ -261,7 +286,6 @@ public class TestAES extends UcryptoTest {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static void testCipherGCM(SecretKey key,
|
||||
Provider p) {
|
||||
boolean testPassed = true;
|
||||
@ -349,4 +373,12 @@ public class TestAES extends UcryptoTest {
|
||||
}
|
||||
return equal;
|
||||
}
|
||||
|
||||
// The cases on CFB128 mode have to be skipped on pre-S11.3.
|
||||
private static boolean isBadSolaris() {
|
||||
return Platform.isSolaris()
|
||||
&& Platform.getOsVersionMajor() <= 5
|
||||
&& Platform.getOsVersionMinor() <= 11
|
||||
&& Utils.distro().compareTo("11.3") < 0;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -22,15 +22,12 @@
|
||||
*/
|
||||
|
||||
/* @test
|
||||
* @bug 6330020
|
||||
* @bug 6330020 8184665
|
||||
* @summary Ensure Charset.forName/isSupport throws the correct exception
|
||||
* if the charset names passed in are illegal.
|
||||
*/
|
||||
|
||||
import java.io.*;
|
||||
import java.nio.*;
|
||||
import java.nio.charset.*;
|
||||
import java.util.*;
|
||||
|
||||
public class IllegalCharsetName {
|
||||
public static void main(String[] args) throws Exception {
|
||||
@ -59,5 +56,18 @@ public class IllegalCharsetName {
|
||||
} catch (IllegalCharsetNameException x) { //expected
|
||||
}
|
||||
}
|
||||
|
||||
// Standard charsets may bypass alias checking during startup, test that
|
||||
// they're all well-behaved as a sanity test
|
||||
checkAliases(StandardCharsets.ISO_8859_1);
|
||||
checkAliases(StandardCharsets.US_ASCII);
|
||||
checkAliases(StandardCharsets.UTF_8);
|
||||
}
|
||||
|
||||
private static void checkAliases(Charset cs) {
|
||||
for (String alias : cs.aliases()) {
|
||||
Charset.forName(alias);
|
||||
Charset.isSupported(alias);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -33,9 +33,8 @@
|
||||
* 6350801 6676425 6878475 6919132 6931676 6948903 6990617 7014645 7039066
|
||||
* 7067045 7014640 7189363 8007395 8013252 8013254 8012646 8023647 6559590
|
||||
* 8027645 8035076 8039124 8035975 8074678 6854417 8143854 8147531 7071819
|
||||
* 8151481 4867170 7080302 6728861 6995635 6736245 4916384
|
||||
* 6328855 6192895 6345469 6988218 6693451 7006761 8140212 8143282 8158482
|
||||
* 8176029
|
||||
* 8151481 4867170 7080302 6728861 6995635 6736245 4916384 6328855 6192895
|
||||
* 6345469 6988218 6693451 7006761 8140212 8143282 8158482 8176029 8184706
|
||||
*
|
||||
* @library /test/lib
|
||||
* @build jdk.test.lib.RandomFactory
|
||||
@ -470,7 +469,25 @@ public class RegExTest {
|
||||
m.find();
|
||||
if (!m.hitEnd())
|
||||
failCount++;
|
||||
report("hitEnd from a Slice");
|
||||
|
||||
// 8184706: Matching u+0d at EOL against \R should hit-end
|
||||
p = Pattern.compile("...\\R");
|
||||
m = p.matcher("cat" + (char)0x0a);
|
||||
m.find();
|
||||
if (m.hitEnd())
|
||||
failCount++;
|
||||
|
||||
m = p.matcher("cat" + (char)0x0d);
|
||||
m.find();
|
||||
if (!m.hitEnd())
|
||||
failCount++;
|
||||
|
||||
m = p.matcher("cat" + (char)0x0d + (char)0x0a);
|
||||
m.find();
|
||||
if (m.hitEnd())
|
||||
failCount++;
|
||||
|
||||
report("hitEnd");
|
||||
}
|
||||
|
||||
// This is for bug 4997476
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -31,6 +31,7 @@
|
||||
|
||||
import java.net.SocketTimeoutException;
|
||||
import java.util.Map;
|
||||
import static jdk.testlibrary.Asserts.assertNotEquals;
|
||||
|
||||
public class JdpOnTestCase extends JdpTestCase {
|
||||
|
||||
@ -58,6 +59,7 @@ public class JdpOnTestCase extends JdpTestCase {
|
||||
final String jdpName = payload.get("INSTANCE_NAME");
|
||||
log.fine("Received correct JDP packet #" + String.valueOf(receivedJDPpackets) +
|
||||
", jdp.name=" + jdpName);
|
||||
assertNotEquals(null, payload.get("PROCESS_ID"), "Expected payload.get(\"PROCESS_ID\") to be not null.");
|
||||
}
|
||||
|
||||
/**
|
||||
|
61
jdk/test/sun/security/ec/InvalidCurve.java
Normal file
61
jdk/test/sun/security/ec/InvalidCurve.java
Normal file
@ -0,0 +1,61 @@
|
||||
/*
|
||||
* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 8182999
|
||||
* @summary Ensure that SunEC behaves correctly for unsupported curves.
|
||||
* @run main InvalidCurve
|
||||
*/
|
||||
|
||||
import java.security.*;
|
||||
import java.security.spec.*;
|
||||
import java.math.*;
|
||||
|
||||
public class InvalidCurve {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
KeyPairGenerator keyGen;
|
||||
try {
|
||||
keyGen = KeyPairGenerator.getInstance("EC", "SunEC");
|
||||
ECGenParameterSpec brainpoolSpec =
|
||||
new ECGenParameterSpec("brainpoolP256r1");
|
||||
keyGen.initialize(brainpoolSpec);
|
||||
} catch (InvalidAlgorithmParameterException ex) {
|
||||
System.out.println(ex.getMessage());
|
||||
// this is expected
|
||||
return;
|
||||
} catch (NoSuchAlgorithmException | NoSuchProviderException ex) {
|
||||
throw new RuntimeException(ex);
|
||||
}
|
||||
|
||||
keyGen.generateKeyPair();
|
||||
|
||||
// If we make it to here, then the test is not working correctly.
|
||||
throw new RuntimeException("The expected exception was not thrown.");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -56,7 +56,7 @@ public class MultiReleaseJarTest {
|
||||
|
||||
@DataProvider(name = "jarFiles")
|
||||
public Object[][] jarFiles() {
|
||||
return new Object[][]{{"MV_BOTH.jar", 9},
|
||||
return new Object[][]{{"MV_BOTH.jar", Math.min(10, Runtime.version().major())},
|
||||
{"MV_ONLY_9.jar", 9},
|
||||
{"NON_MV.jar", 8}};
|
||||
}
|
||||
|
@ -56,7 +56,7 @@ public class MultiReleaseJarTest {
|
||||
|
||||
@DataProvider(name = "jarFiles")
|
||||
public Object[][] jarFiles() {
|
||||
return new Object[][]{{"MV_BOTH.jar", 9},
|
||||
return new Object[][]{{"MV_BOTH.jar", Math.min(10, Runtime.version().major())},
|
||||
{"MV_ONLY_9.jar", 9},
|
||||
{"NON_MV.jar", 8}};
|
||||
}
|
||||
|
@ -699,6 +699,9 @@ else
|
||||
|
||||
jdk.jdeps-gendata: java rmic
|
||||
|
||||
# The ct.sym generation uses all the moduleinfos as input
|
||||
jdk.compiler-gendata: $(GENSRC_MODULEINFO_TARGETS)
|
||||
|
||||
# Declare dependencies between jmod targets.
|
||||
# java.base jmod needs jrt-fs.jar and access to the other jmods to be built.
|
||||
# When creating a BUILDJDK, we don't need to add hashes to java.base, thus
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -680,5 +680,26 @@ public final class Utils {
|
||||
String.format("A mandatory property '%s' isn't set", propName));
|
||||
return prop;
|
||||
}
|
||||
|
||||
/*
|
||||
* Run uname with specified arguments.
|
||||
*/
|
||||
public static OutputAnalyzer uname(String... args) throws Throwable {
|
||||
String[] cmds = new String[args.length + 1];
|
||||
cmds[0] = "uname";
|
||||
System.arraycopy(args, 0, cmds, 1, args.length);
|
||||
return ProcessTools.executeCommand(cmds);
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns the system distro.
|
||||
*/
|
||||
public static String distro() {
|
||||
try {
|
||||
return uname("-v").asLines().get(0);
|
||||
} catch (Throwable t) {
|
||||
throw new RuntimeException("Failed to determine distro.", t);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user