This commit is contained in:
Phil Race 2017-01-23 10:27:58 -08:00
commit ce1ecfe492
302 changed files with 8530 additions and 4664 deletions

View File

@ -394,3 +394,5 @@ f4e854a77aa38749bd90f722b06974a56e7233d5 jdk-9+147
cf139f925da04c8bd7efd33270a0315d72b338d3 jdk-9+149
17469f16fbb406ec9f0dd262ce776ab6efbc38f1 jdk-9+150
37b95df0042ae0687324e1f7dc4a2519e230e704 jdk-9+151
ab2c8b03c3284fcbdd157551a66f807e3a182d9b jdk-9+152
d7034ff7f8e257e81c9f95c7785dd4eaaa3c2afc jdk-9+153

View File

@ -394,3 +394,5 @@ a22e2671d88f6b22a4aa82e3966986542ed2a381 jdk-9+146
b119012d1c2ab2570fe8718633840d0c1f1f441d jdk-9+149
6234069ff9789f7582e1faa32cb6283cbd1a5a2d jdk-9+150
71a766d4c18041a7f833ee22823125b02e1a7f1e jdk-9+151
ef056360ddf3977d7d2ddbeb456a4d612d19ea05 jdk-9+152
816a6d03a7c44edfbd8780110529f1bdc3964fb9 jdk-9+153

View File

@ -1,5 +1,5 @@
#
# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2011, 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
@ -1011,6 +1011,8 @@ AC_DEFUN([BASIC_CHECK_TAR],
# Test which kind of tar was found
if test "x$($TAR --version | $GREP "GNU tar")" != "x"; then
TAR_TYPE="gnu"
elif test "x$($TAR --version | $GREP "bsdtar")" != "x"; then
TAR_TYPE="bsd"
elif test "x$($TAR -v | $GREP "bsdtar")" != "x"; then
TAR_TYPE="bsd"
elif test "x$OPENJDK_BUILD_OS" = "xsolaris"; then
@ -1038,12 +1040,36 @@ AC_DEFUN([BASIC_CHECK_TAR],
AC_SUBST(TAR_SUPPORTS_TRANSFORM)
])
AC_DEFUN([BASIC_CHECK_GREP],
[
# Test that grep supports -Fx with a list of pattern which includes null pattern.
# This is a problem for the grep resident on AIX.
AC_MSG_CHECKING([that grep ($GREP) -Fx handles empty lines in the pattern list correctly])
# Multiple subsequent spaces..
STACK_SPACES='aaa bbb ccc'
# ..converted to subsequent newlines, causes STACK_LIST to be a list with some empty
# patterns in it.
STACK_LIST=${STACK_SPACES// /$'\n'}
NEEDLE_SPACES='ccc bbb aaa'
NEEDLE_LIST=${NEEDLE_SPACES// /$'\n'}
RESULT="$($GREP -Fvx "$STACK_LIST" <<< "$NEEDLE_LIST")"
if test "x$RESULT" == "x"; then
AC_MSG_RESULT([yes])
else
if test "x$OPENJDK_TARGET_OS" = "xaix"; then
ADDINFO="Please make sure you use GNU grep, usually found at /opt/freeware/bin."
fi
AC_MSG_ERROR([grep does not handle -Fx correctly. ${ADDINFO}])
fi
])
AC_DEFUN_ONCE([BASIC_SETUP_COMPLEX_TOOLS],
[
BASIC_CHECK_GNU_MAKE
BASIC_CHECK_FIND_DELETE
BASIC_CHECK_TAR
BASIC_CHECK_GREP
# These tools might not be installed by default,
# need hint on how to install them.

View File

@ -68,7 +68,6 @@ LDFLAGS_JDKLIB := @OPENJDK_BUILD_LDFLAGS_JDKLIB@
CFLAGS_JDKEXE := @OPENJDK_BUILD_CFLAGS_JDKEXE@
CXXFLAGS_JDKEXE := @OPENJDK_BUILD_CXXFLAGS_JDKEXE@
LDFLAGS_JDKEXE := @OPENJDK_BUILD_LDFLAGS_JDKEXE@
OPENJDK_TARGET_CPU_JLI_CFLAGS := @OPENJDK_BUILD_CPU_JLI_CFLAGS@
JVM_CFLAGS := @OPENJDK_BUILD_JVM_CFLAGS@
JVM_LDFLAGS := @OPENJDK_BUILD_JVM_LDFLAGS@

View File

@ -815,11 +815,6 @@ AC_DEFUN([FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK_HELPER],
$2CXXFLAGS_JDK="${$2CXXFLAGS_JDK} -D__solaris__"
fi
if test "x$OPENJDK_TARGET_OS" = xsolaris; then
$2CFLAGS_JDK="${$2CFLAGS_JDK} -D__solaris__"
$2CXXFLAGS_JDK="${$2CXXFLAGS_JDK} -D__solaris__"
fi
$2CFLAGS_JDK="${$2CFLAGS_JDK} ${$2EXTRA_CFLAGS}"
$2CXXFLAGS_JDK="${$2CXXFLAGS_JDK} ${$2EXTRA_CXXFLAGS}"
$2LDFLAGS_JDK="${$2LDFLAGS_JDK} ${$2EXTRA_LDFLAGS}"

View File

@ -3564,7 +3564,7 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
# Include these first...
#
# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2011, 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
@ -3731,6 +3731,8 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
# Check if build directory is on local disk. If not possible to determine,
# we prefer to claim it's local.
# Argument 1: directory to test
@ -4122,7 +4124,7 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
#
# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2011, 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
@ -4237,6 +4239,17 @@ yum_help() {
esac
}
brew_help() {
case $1 in
openjdk)
PKGHANDLER_COMMAND="brew cask install java" ;;
freetype)
PKGHANDLER_COMMAND="brew install freetype" ;;
ccache)
PKGHANDLER_COMMAND="brew install ccache" ;;
esac
}
port_help() {
PKGHANDLER_COMMAND=""
}
@ -4362,7 +4375,7 @@ VALID_JVM_VARIANTS="server client minimal core zero zeroshark custom"
#
# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2011, 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
@ -4667,7 +4680,7 @@ VALID_JVM_VARIANTS="server client minimal core zero zeroshark custom"
#
# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2011, 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
@ -5167,7 +5180,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=1483542685
DATE_WHEN_GENERATED=1484571183
###############################################################################
#
@ -17544,7 +17557,7 @@ $as_echo "$as_me: The path of OUTPUT_ROOT, which resolves as \"$path\", is inval
# Must be done before we can call HELP_MSG_MISSING_DEPENDENCY.
for ac_prog in apt-get yum port pkgutil pkgadd
for ac_prog in apt-get yum brew port pkgutil pkgadd
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
@ -21209,6 +21222,8 @@ $as_echo "yes" >&6; }
# Test which kind of tar was found
if test "x$($TAR --version | $GREP "GNU tar")" != "x"; then
TAR_TYPE="gnu"
elif test "x$($TAR --version | $GREP "bsdtar")" != "x"; then
TAR_TYPE="bsd"
elif test "x$($TAR -v | $GREP "bsdtar")" != "x"; then
TAR_TYPE="bsd"
elif test "x$OPENJDK_BUILD_OS" = "xsolaris"; then
@ -21238,6 +21253,29 @@ $as_echo "$TAR_TYPE" >&6; }
# Test that grep supports -Fx with a list of pattern which includes null pattern.
# This is a problem for the grep resident on AIX.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that grep ($GREP) -Fx handles empty lines in the pattern list correctly" >&5
$as_echo_n "checking that grep ($GREP) -Fx handles empty lines in the pattern list correctly... " >&6; }
# Multiple subsequent spaces..
STACK_SPACES='aaa bbb ccc'
# ..converted to subsequent newlines, causes STACK_LIST to be a list with some empty
# patterns in it.
STACK_LIST=${STACK_SPACES// /$'\n'}
NEEDLE_SPACES='ccc bbb aaa'
NEEDLE_LIST=${NEEDLE_SPACES// /$'\n'}
RESULT="$($GREP -Fvx "$STACK_LIST" <<< "$NEEDLE_LIST")"
if test "x$RESULT" == "x"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
else
if test "x$OPENJDK_TARGET_OS" = "xaix"; then
ADDINFO="Please make sure you use GNU grep, usually found at /opt/freeware/bin."
fi
as_fn_error $? "grep does not handle -Fx correctly. ${ADDINFO}" "$LINENO" 5
fi
# These tools might not be installed by default,
# need hint on how to install them.
@ -24359,15 +24397,13 @@ if test "${enable_keep_packaged_modules+set}" = set; then :
fi
if test "x$enable_keep_packaged_modules" = "xyes"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if packaged modules are kept" >&5
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if packaged modules are kept" >&5
$as_echo_n "checking if packaged modules are kept... " >&6; }
if test "x$enable_keep_packaged_modules" = "xyes"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
JLINK_KEEP_PACKAGED_MODULES=true
elif test "x$enable_keep_packaged_modules" = "xno"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if packaged modules are kept" >&5
$as_echo_n "checking if packaged modules are kept... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
JLINK_KEEP_PACKAGED_MODULES=false
@ -24376,6 +24412,8 @@ $as_echo "no" >&6; }
$as_echo "yes (default)" >&6; }
JLINK_KEEP_PACKAGED_MODULES=true
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: error" >&5
$as_echo "error" >&6; }
as_fn_error $? "--enable-keep-packaged-modules accepts no argument" "$LINENO" 5
fi
@ -29942,6 +29980,8 @@ $as_echo "$BOOT_JDK_VERSION" >&6; }
apt_help $MISSING_DEPENDENCY ;;
yum)
yum_help $MISSING_DEPENDENCY ;;
brew)
brew_help $MISSING_DEPENDENCY ;;
port)
port_help $MISSING_DEPENDENCY ;;
pkgutil)
@ -33235,6 +33275,8 @@ done
apt_help $MISSING_DEPENDENCY ;;
yum)
yum_help $MISSING_DEPENDENCY ;;
brew)
brew_help $MISSING_DEPENDENCY ;;
port)
port_help $MISSING_DEPENDENCY ;;
pkgutil)
@ -34534,6 +34576,8 @@ done
apt_help $MISSING_DEPENDENCY ;;
yum)
yum_help $MISSING_DEPENDENCY ;;
brew)
brew_help $MISSING_DEPENDENCY ;;
port)
port_help $MISSING_DEPENDENCY ;;
pkgutil)
@ -48601,6 +48645,8 @@ $as_echo "$as_me: Failed to compile stdio.h. This likely implies missing compile
apt_help $MISSING_DEPENDENCY ;;
yum)
yum_help $MISSING_DEPENDENCY ;;
brew)
brew_help $MISSING_DEPENDENCY ;;
port)
port_help $MISSING_DEPENDENCY ;;
pkgutil)
@ -48762,6 +48808,8 @@ $as_echo "$as_me: The tested number of bits in the target ($TESTED_TARGET_CPU_BI
apt_help $MISSING_DEPENDENCY ;;
yum)
yum_help $MISSING_DEPENDENCY ;;
brew)
brew_help $MISSING_DEPENDENCY ;;
port)
port_help $MISSING_DEPENDENCY ;;
pkgutil)
@ -49897,11 +49945,6 @@ $as_echo "$supports" >&6; }
CXXFLAGS_JDK="${CXXFLAGS_JDK} -D__solaris__"
fi
if test "x$OPENJDK_TARGET_OS" = xsolaris; then
CFLAGS_JDK="${CFLAGS_JDK} -D__solaris__"
CXXFLAGS_JDK="${CXXFLAGS_JDK} -D__solaris__"
fi
CFLAGS_JDK="${CFLAGS_JDK} ${EXTRA_CFLAGS}"
CXXFLAGS_JDK="${CXXFLAGS_JDK} ${EXTRA_CXXFLAGS}"
LDFLAGS_JDK="${LDFLAGS_JDK} ${EXTRA_LDFLAGS}"
@ -50720,11 +50763,6 @@ $as_echo "$supports" >&6; }
OPENJDK_BUILD_CXXFLAGS_JDK="${OPENJDK_BUILD_CXXFLAGS_JDK} -D__solaris__"
fi
if test "x$OPENJDK_TARGET_OS" = xsolaris; then
OPENJDK_BUILD_CFLAGS_JDK="${OPENJDK_BUILD_CFLAGS_JDK} -D__solaris__"
OPENJDK_BUILD_CXXFLAGS_JDK="${OPENJDK_BUILD_CXXFLAGS_JDK} -D__solaris__"
fi
OPENJDK_BUILD_CFLAGS_JDK="${OPENJDK_BUILD_CFLAGS_JDK} ${OPENJDK_BUILD_EXTRA_CFLAGS}"
OPENJDK_BUILD_CXXFLAGS_JDK="${OPENJDK_BUILD_CXXFLAGS_JDK} ${OPENJDK_BUILD_EXTRA_CXXFLAGS}"
OPENJDK_BUILD_LDFLAGS_JDK="${OPENJDK_BUILD_LDFLAGS_JDK} ${OPENJDK_BUILD_EXTRA_LDFLAGS}"
@ -52844,6 +52882,8 @@ $as_echo "no, missing dependencies" >&6; }
apt_help $MISSING_DEPENDENCY ;;
yum)
yum_help $MISSING_DEPENDENCY ;;
brew)
brew_help $MISSING_DEPENDENCY ;;
port)
port_help $MISSING_DEPENDENCY ;;
pkgutil)
@ -56649,6 +56689,8 @@ fi
apt_help $MISSING_DEPENDENCY ;;
yum)
yum_help $MISSING_DEPENDENCY ;;
brew)
brew_help $MISSING_DEPENDENCY ;;
port)
port_help $MISSING_DEPENDENCY ;;
pkgutil)
@ -56721,6 +56763,8 @@ done
apt_help $MISSING_DEPENDENCY ;;
yum)
yum_help $MISSING_DEPENDENCY ;;
brew)
brew_help $MISSING_DEPENDENCY ;;
port)
port_help $MISSING_DEPENDENCY ;;
pkgutil)
@ -56864,6 +56908,8 @@ done
apt_help $MISSING_DEPENDENCY ;;
yum)
yum_help $MISSING_DEPENDENCY ;;
brew)
brew_help $MISSING_DEPENDENCY ;;
port)
port_help $MISSING_DEPENDENCY ;;
pkgutil)
@ -60683,6 +60729,345 @@ $as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
fi
windows_path="$new_path"
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
unix_path=`$CYGPATH -u "$windows_path"`
new_path="$unix_path"
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
new_path="$unix_path"
fi
if test "x$path" != "x$new_path"; then
POTENTIAL_FREETYPE_LIB_PATH="$new_path"
{ $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&5
$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
fi
# Save the first 10 bytes of this path to the storage, so fixpath can work.
all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
else
# We're on a unix platform. Hooray! :)
path="$POTENTIAL_FREETYPE_LIB_PATH"
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
# Use eval to expand a potential ~
eval path="$path"
if test ! -f "$path" && test ! -d "$path"; then
as_fn_error $? "The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
fi
if test -d "$path"; then
POTENTIAL_FREETYPE_LIB_PATH="`cd "$path"; $THEPWDCMD -L`"
else
dir="`$DIRNAME "$path"`"
base="`$BASENAME "$path"`"
POTENTIAL_FREETYPE_LIB_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
fi
fi
fi
FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype includes" >&5
$as_echo_n "checking for freetype includes... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_INCLUDE_PATH" >&5
$as_echo "$FREETYPE_INCLUDE_PATH" >&6; }
FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype libraries" >&5
$as_echo_n "checking for freetype libraries... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_LIB_PATH" >&5
$as_echo "$FREETYPE_LIB_PATH" >&6; }
fi
fi
if test "x$FOUND_FREETYPE" != xyes; then
FREETYPE_BASE_DIR="$SYSROOT/usr/local"
POTENTIAL_FREETYPE_INCLUDE_PATH="$FREETYPE_BASE_DIR/include"
POTENTIAL_FREETYPE_LIB_PATH="$FREETYPE_BASE_DIR/lib"
METHOD="well-known location"
# Let's start with an optimistic view of the world :-)
FOUND_FREETYPE=yes
# First look for the canonical freetype main include file ft2build.h.
if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
# Oh no! Let's try in the freetype2 directory. This is needed at least at Mac OS X Yosemite.
POTENTIAL_FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH/freetype2"
if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
# Fail.
FOUND_FREETYPE=no
fi
fi
if test "x$FOUND_FREETYPE" = xyes; then
# Include file found, let's continue the sanity check.
{ $as_echo "$as_me:${as_lineno-$LINENO}: Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD" >&5
$as_echo "$as_me: Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD" >&6;}
# Reset to default value
FREETYPE_BASE_NAME=freetype
FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME"; then
if test "x$OPENJDK_TARGET_OS" = xmacosx \
&& test -s "$POTENTIAL_FREETYPE_LIB_PATH/${LIBRARY_PREFIX}freetype.6${SHARED_LIBRARY_SUFFIX}"; then
# On Mac OS X Yosemite, the symlink from libfreetype.dylib to libfreetype.6.dylib disappeared. Check
# for the .6 version explicitly.
FREETYPE_BASE_NAME=freetype.6
FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
{ $as_echo "$as_me:${as_lineno-$LINENO}: Compensating for missing symlink by using version 6 explicitly" >&5
$as_echo "$as_me: Compensating for missing symlink by using version 6 explicitly" >&6;}
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location." >&5
$as_echo "$as_me: Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location." >&6;}
FOUND_FREETYPE=no
fi
else
if test "x$OPENJDK_TARGET_OS" = xwindows; then
# On Windows, we will need both .lib and .dll file.
if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location." >&5
$as_echo "$as_me: Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location." >&6;}
FOUND_FREETYPE=no
fi
elif test "x$OPENJDK_TARGET_OS" = xsolaris \
&& test -s "$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR/$FREETYPE_LIB_NAME"; then
# Found lib in isa dir, use that instead.
POTENTIAL_FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR"
{ $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead" >&5
$as_echo "$as_me: Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead" >&6;}
fi
fi
fi
if test "x$FOUND_FREETYPE" = xyes; then
# Only process if variable expands to non-empty
if test "x$POTENTIAL_FREETYPE_INCLUDE_PATH" != x; then
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
# Input might be given as Windows format, start by converting to
# unix format.
path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
new_path=`$CYGPATH -u "$path"`
# Cygwin tries to hide some aspects of the Windows file system, such that binaries are
# named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
# the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
# "foo.exe" is OK but "foo" is an error.
#
# This test is therefore slightly more accurate than "test -f" to check for file precense.
# It is also a way to make sure we got the proper file name for the real test later on.
test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
if test "x$test_shortpath" = x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Cannot locate the the path of POTENTIAL_FREETYPE_INCLUDE_PATH" "$LINENO" 5
fi
# Call helper function which possibly converts this using DOS-style short mode.
# If so, the updated path is stored in $new_path.
input_path="$new_path"
# Check if we need to convert this using DOS-style short mode. If the path
# contains just simple characters, use it. Otherwise (spaces, weird characters),
# take no chances and rewrite it.
# Note: m4 eats our [], so we need to use [ and ] instead.
has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
if test "x$has_forbidden_chars" != x; then
# Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
shortmode_path=`$CYGPATH -s -m -a "$input_path"`
path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
# Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
fi
test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
if test "x$test_cygdrive_prefix" = x; then
# As a simple fix, exclude /usr/bin since it's not a real path.
if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
# The path is in a Cygwin special directory (e.g. /home). We need this converted to
# a path prefixed by /cygdrive for fixpath to work.
new_path="$CYGWIN_ROOT_PATH$input_path"
fi
fi
if test "x$path" != "x$new_path"; then
POTENTIAL_FREETYPE_INCLUDE_PATH="$new_path"
{ $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
fi
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
has_colon=`$ECHO $path | $GREP ^.:`
new_path="$path"
if test "x$has_colon" = x; then
# Not in mixed or Windows style, start by that.
new_path=`cmd //c echo $path`
fi
input_path="$new_path"
# Check if we need to convert this using DOS-style short mode. If the path
# contains just simple characters, use it. Otherwise (spaces, weird characters),
# take no chances and rewrite it.
# Note: m4 eats our [], so we need to use [ and ] instead.
has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
if test "x$has_forbidden_chars" != x; then
# Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
fi
windows_path="$new_path"
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
unix_path=`$CYGPATH -u "$windows_path"`
new_path="$unix_path"
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
new_path="$unix_path"
fi
if test "x$path" != "x$new_path"; then
POTENTIAL_FREETYPE_INCLUDE_PATH="$new_path"
{ $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
fi
# Save the first 10 bytes of this path to the storage, so fixpath can work.
all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
else
# We're on a unix platform. Hooray! :)
path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
# Use eval to expand a potential ~
eval path="$path"
if test ! -f "$path" && test ! -d "$path"; then
as_fn_error $? "The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
fi
if test -d "$path"; then
POTENTIAL_FREETYPE_INCLUDE_PATH="`cd "$path"; $THEPWDCMD -L`"
else
dir="`$DIRNAME "$path"`"
base="`$BASENAME "$path"`"
POTENTIAL_FREETYPE_INCLUDE_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
fi
fi
fi
# Only process if variable expands to non-empty
if test "x$POTENTIAL_FREETYPE_LIB_PATH" != x; then
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
# Input might be given as Windows format, start by converting to
# unix format.
path="$POTENTIAL_FREETYPE_LIB_PATH"
new_path=`$CYGPATH -u "$path"`
# Cygwin tries to hide some aspects of the Windows file system, such that binaries are
# named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
# the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
# "foo.exe" is OK but "foo" is an error.
#
# This test is therefore slightly more accurate than "test -f" to check for file precense.
# It is also a way to make sure we got the proper file name for the real test later on.
test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
if test "x$test_shortpath" = x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Cannot locate the the path of POTENTIAL_FREETYPE_LIB_PATH" "$LINENO" 5
fi
# Call helper function which possibly converts this using DOS-style short mode.
# If so, the updated path is stored in $new_path.
input_path="$new_path"
# Check if we need to convert this using DOS-style short mode. If the path
# contains just simple characters, use it. Otherwise (spaces, weird characters),
# take no chances and rewrite it.
# Note: m4 eats our [], so we need to use [ and ] instead.
has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
if test "x$has_forbidden_chars" != x; then
# Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
shortmode_path=`$CYGPATH -s -m -a "$input_path"`
path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
# Going to short mode and back again did indeed matter. Since short mode is
# case insensitive, let's make it lowercase to improve readability.
shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
# Now convert it back to Unix-style (cygpath)
input_path=`$CYGPATH -u "$shortmode_path"`
new_path="$input_path"
fi
fi
test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
if test "x$test_cygdrive_prefix" = x; then
# As a simple fix, exclude /usr/bin since it's not a real path.
if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
# The path is in a Cygwin special directory (e.g. /home). We need this converted to
# a path prefixed by /cygdrive for fixpath to work.
new_path="$CYGWIN_ROOT_PATH$input_path"
fi
fi
if test "x$path" != "x$new_path"; then
POTENTIAL_FREETYPE_LIB_PATH="$new_path"
{ $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&5
$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
fi
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
path="$POTENTIAL_FREETYPE_LIB_PATH"
has_colon=`$ECHO $path | $GREP ^.:`
new_path="$path"
if test "x$has_colon" = x; then
# Not in mixed or Windows style, start by that.
new_path=`cmd //c echo $path`
fi
input_path="$new_path"
# Check if we need to convert this using DOS-style short mode. If the path
# contains just simple characters, use it. Otherwise (spaces, weird characters),
# take no chances and rewrite it.
# Note: m4 eats our [], so we need to use [ and ] instead.
has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
if test "x$has_forbidden_chars" != x; then
# Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
fi
windows_path="$new_path"
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
unix_path=`$CYGPATH -u "$windows_path"`
@ -62122,6 +62507,8 @@ $as_echo "$FREETYPE_LIB_PATH" >&6; }
apt_help $MISSING_DEPENDENCY ;;
yum)
yum_help $MISSING_DEPENDENCY ;;
brew)
brew_help $MISSING_DEPENDENCY ;;
port)
port_help $MISSING_DEPENDENCY ;;
pkgutil)
@ -62477,6 +62864,8 @@ $as_echo "$as_me: Using FREETYPE_CFLAGS=$FREETYPE_CFLAGS and FREETYPE_LIBS=$FREE
apt_help $MISSING_DEPENDENCY ;;
yum)
yum_help $MISSING_DEPENDENCY ;;
brew)
brew_help $MISSING_DEPENDENCY ;;
port)
port_help $MISSING_DEPENDENCY ;;
pkgutil)
@ -62682,6 +63071,8 @@ done
apt_help $MISSING_DEPENDENCY ;;
yum)
yum_help $MISSING_DEPENDENCY ;;
brew)
brew_help $MISSING_DEPENDENCY ;;
port)
port_help $MISSING_DEPENDENCY ;;
pkgutil)
@ -62870,6 +63261,8 @@ done
apt_help $MISSING_DEPENDENCY ;;
yum)
yum_help $MISSING_DEPENDENCY ;;
brew)
brew_help $MISSING_DEPENDENCY ;;
port)
port_help $MISSING_DEPENDENCY ;;
pkgutil)
@ -62949,6 +63342,8 @@ $as_echo "$LIBFFI_WORKS" >&6; }
apt_help $MISSING_DEPENDENCY ;;
yum)
yum_help $MISSING_DEPENDENCY ;;
brew)
brew_help $MISSING_DEPENDENCY ;;
port)
port_help $MISSING_DEPENDENCY ;;
pkgutil)
@ -64058,6 +64453,8 @@ done
apt_help $MISSING_DEPENDENCY ;;
yum)
yum_help $MISSING_DEPENDENCY ;;
brew)
brew_help $MISSING_DEPENDENCY ;;
port)
port_help $MISSING_DEPENDENCY ;;
pkgutil)
@ -64142,6 +64539,8 @@ $as_echo "$LIBELF_WORKS" >&6; }
apt_help $MISSING_DEPENDENCY ;;
yum)
yum_help $MISSING_DEPENDENCY ;;
brew)
brew_help $MISSING_DEPENDENCY ;;
port)
port_help $MISSING_DEPENDENCY ;;
pkgutil)

View File

@ -1,5 +1,5 @@
#
# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2011, 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,7 +25,7 @@
AC_DEFUN_ONCE([HELP_SETUP_DEPENDENCY_HELP],
[
AC_CHECK_PROGS(PKGHANDLER, apt-get yum port pkgutil pkgadd)
AC_CHECK_PROGS(PKGHANDLER, apt-get yum brew port pkgutil pkgadd)
])
AC_DEFUN([HELP_MSG_MISSING_DEPENDENCY],
@ -46,6 +46,8 @@ AC_DEFUN([HELP_MSG_MISSING_DEPENDENCY],
apt_help $MISSING_DEPENDENCY ;;
yum)
yum_help $MISSING_DEPENDENCY ;;
brew)
brew_help $MISSING_DEPENDENCY ;;
port)
port_help $MISSING_DEPENDENCY ;;
pkgutil)
@ -147,6 +149,17 @@ yum_help() {
esac
}
brew_help() {
case $1 in
openjdk)
PKGHANDLER_COMMAND="brew cask install java" ;;
freetype)
PKGHANDLER_COMMAND="brew install freetype" ;;
ccache)
PKGHANDLER_COMMAND="brew install ccache" ;;
esac
}
port_help() {
PKGHANDLER_COMMAND=""
}

View File

@ -1,5 +1,5 @@
#
# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2011, 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
@ -382,18 +382,18 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_JLINK_OPTIONS],
AC_ARG_ENABLE([keep-packaged-modules], [AS_HELP_STRING([--disable-keep-packaged-modules],
[Do not keep packaged modules in jdk image @<:@enable@:>@])])
AC_MSG_CHECKING([if packaged modules are kept])
if test "x$enable_keep_packaged_modules" = "xyes"; then
AC_MSG_CHECKING([if packaged modules are kept])
AC_MSG_RESULT([yes])
JLINK_KEEP_PACKAGED_MODULES=true
elif test "x$enable_keep_packaged_modules" = "xno"; then
AC_MSG_CHECKING([if packaged modules are kept])
AC_MSG_RESULT([no])
JLINK_KEEP_PACKAGED_MODULES=false
elif test "x$enable_keep_packaged_modules" = "x"; then
AC_MSG_RESULT([yes (default)])
JLINK_KEEP_PACKAGED_MODULES=true
else
AC_MSG_RESULT([error])
AC_MSG_ERROR([--enable-keep-packaged-modules accepts no argument])
fi

View File

@ -1,5 +1,5 @@
#
# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2011, 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
@ -348,6 +348,10 @@ AC_DEFUN_ONCE([LIB_SETUP_FREETYPE],
FREETYPE_BASE_DIR="$SYSROOT/usr/X11"
LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib], [well-known location])
fi
if test "x$FOUND_FREETYPE" != xyes; then
FREETYPE_BASE_DIR="$SYSROOT/usr/local"
LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib], [well-known location])
fi
if test "x$OPENJDK_TARGET_OS" = xmacosx; then
if test "x$FOUND_FREETYPE" != xyes; then

View File

@ -274,8 +274,6 @@ JAVADOC_OUTPUTDIR = $(DOCS_IMAGE_DIR)
CONFIGURESUPPORT_OUTPUTDIR:=@CONFIGURESUPPORT_OUTPUTDIR@
BUILDJDK_OUTPUTDIR=$(BUILD_OUTPUT)/buildjdk
BUILD_HOTSPOT=@BUILD_HOTSPOT@
BUILD_FAILURE_HANDLER := @BUILD_FAILURE_HANDLER@
ENABLE_GENERATE_CLASSLIST := @ENABLE_GENERATE_CLASSLIST@
@ -642,7 +640,6 @@ NAWK:=@NAWK@
NICE:=@NICE@
PATCH:=@PATCH@
PRINTF:=@PRINTF@
PWD:=@THEPWDCMD@
RM:=@RM@
RMDIR:=@RMDIR@
SED:=@SED@
@ -778,11 +775,18 @@ OS_VERSION_MICRO:=@OS_VERSION_MICRO@
# Images directory definitions
JDK_IMAGE_SUBDIR:=jdk
JRE_IMAGE_SUBDIR:=jre
JRE_COMPACT1_IMAGE_SUBDIR := jre-compact1
JRE_COMPACT2_IMAGE_SUBDIR := jre-compact2
JRE_COMPACT3_IMAGE_SUBDIR := jre-compact3
# Colon left out to be able to override output dir for bootcycle-images
JDK_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(JDK_IMAGE_SUBDIR)
JRE_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(JRE_IMAGE_SUBDIR)
JRE_COMPACT1_IMAGE_DIR := $(IMAGES_OUTPUTDIR)/$(JRE_COMPACT1_IMAGE_SUBDIR)
JRE_COMPACT2_IMAGE_DIR := $(IMAGES_OUTPUTDIR)/$(JRE_COMPACT2_IMAGE_SUBDIR)
JRE_COMPACT3_IMAGE_DIR := $(IMAGES_OUTPUTDIR)/$(JRE_COMPACT3_IMAGE_SUBDIR)
# Test image, as above
TEST_IMAGE_SUBDIR:=test
TEST_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(TEST_IMAGE_SUBDIR)
@ -818,6 +822,12 @@ else ifneq ($(DEBUG_LEVEL), release)
endif
JDK_BUNDLE_NAME := jdk-$(BASE_NAME)_bin$(DEBUG_PART).tar.gz
JRE_BUNDLE_NAME := jre-$(BASE_NAME)_bin$(DEBUG_PART).tar.gz
JRE_COMPACT1_BUNDLE_NAME := \
jre-$(VERSION_SHORT)+$(VERSION_BUILD)-compact1_$(OPENJDK_TARGET_BUNDLE_PLATFORM)_bin$(DEBUG_PART).tar.gz
JRE_COMPACT2_BUNDLE_NAME := \
jre-$(VERSION_SHORT)+$(VERSION_BUILD)-compact2_$(OPENJDK_TARGET_BUNDLE_PLATFORM)_bin$(DEBUG_PART).tar.gz
JRE_COMPACT3_BUNDLE_NAME := \
jre-$(VERSION_SHORT)+$(VERSION_BUILD)-compact3_$(OPENJDK_TARGET_BUNDLE_PLATFORM)_bin$(DEBUG_PART).tar.gz
JDK_SYMBOLS_BUNDLE_NAME := jdk-$(BASE_NAME)_bin$(DEBUG_PART)-symbols.tar.gz
JRE_SYMBOLS_BUNDLE_NAME := jre-$(BASE_NAME)_bin$(DEBUG_PART)-symbols.tar.gz
ifeq ($(OPENJDK_TARGET_OS), windows)

View File

@ -501,7 +501,7 @@ var getJibProfilesProfiles = function (input, common, data) {
// extra default target.
var openOnlyProfilesExtra = {
"linux-x86-open": {
default_make_targets: "profiles",
default_make_targets: "profiles-bundles",
configure_args: "--with-jvm-variants=client,server"
}
};
@ -587,6 +587,7 @@ var getJibProfilesProfiles = function (input, common, data) {
],
work_dir: input.get("src.full", "install_path") + "/test",
environment: {
"JT_JAVA": common.boot_jdk_home,
"PRODUCT_HOME": input.get(testedProfile + ".jdk", "home_path"),
"TEST_IMAGE_DIR": input.get(testedProfile + ".test", "home_path"),
"TEST_OUTPUT_DIR": input.src_top_dir
@ -710,10 +711,15 @@ var getJibProfilesProfiles = function (input, common, data) {
local: "bundles/\\(jdk.*bin.tar.gz\\)",
remote: "bundles/openjdk/GPL/profile/linux-x86/\\1",
},
jre: {
local: "bundles/\\(jre.*[0-9]_linux-x86_bin.tar.gz\\)",
jdk_symbols: {
local: "bundles/\\(jdk.*bin-symbols.tar.gz\\)",
remote: "bundles/openjdk/GPL/profile/linux-x86/\\1",
},/* The build does not create these
},
jre: {
// This regexp needs to not match the compact* files below
local: "bundles/\\(jre.*[+][0-9]\\{1,\\}_linux-x86_bin.tar.gz\\)",
remote: "bundles/openjdk/GPL/profile/linux-x86/\\1",
},
jre_compact1: {
local: "bundles/\\(jre.*-compact1_linux-x86_bin.tar.gz\\)",
remote: "bundles/openjdk/GPL/profile/linux-x86/\\1",
@ -725,7 +731,7 @@ var getJibProfilesProfiles = function (input, common, data) {
jre_compact3: {
local: "bundles/\\(jre.*-compact3_linux-x86_bin.tar.gz\\)",
remote: "bundles/openjdk/GPL/profile/linux-x86/\\1",
},*/
},
}
},
@ -864,7 +870,7 @@ var getJibProfilesDependencies = function (input, common) {
jtreg: {
server: "javare",
revision: "4.2",
build_number: "b04",
build_number: "b05",
checksum_file: "MD5_VALUES",
file: "jtreg_bin-4.2.zip",
environment_name: "JT_HOME",

View File

@ -394,3 +394,5 @@ f95cc86b6ac22ec1ade5d4f825dc7782adeea228 jdk-9+148
00b19338e505690abe93d5995ed74a473d969c2c jdk-9+149
9205e980062a5c4530b51021c6e274025f4ccbdf jdk-9+150
77f827f5bbad3ef795664bc675f72d98d156b9f8 jdk-9+151
ff8cb43c07c069b1debdee44cb88ca22db1ec757 jdk-9+152
68a8e8658511093b322a46ed04b2a321e1da2a43 jdk-9+153

View File

@ -554,3 +554,5 @@ a82cb5350cad96a0b4de496afebe3ded89f27efa jdk-9+146
30e1996bd55da36183434f24ed964adebf9ca71e jdk-9+149
98fe046473c90204cbc9b34c512b9fc10dfb8479 jdk-9+150
2a2ac7d9f52c8cb2b80077e515b5840b947e640c jdk-9+151
31f1d26c60df7b2e516a4f84160d76ba017d4e09 jdk-9+152
217ba81b9a4ce8698200370175aa2db86a39f66c jdk-9+153

View File

@ -394,3 +394,5 @@ c45db75bfe8bc20bb80b4a009ae3f69c9cd2d885 jdk-9+148
5978df8bfa3894f2b3d07b7256f25f78dffb1f9c jdk-9+149
f85154af719f99a3b4d81b67a8b4c18a650d10f9 jdk-9+150
13c6906bfc861d99dc35a19c80b7a99f0b0ac58d jdk-9+151
7e3da313b1746578da648155e37dd8526e83153d jdk-9+152
1384504d2cd0e55c5e0becaeaf40ab05cae959d6 jdk-9+153

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
*/
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
@ -17,20 +17,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* $Id: DOM2SAX.java,v 1.2.4.1 2005/09/06 11:52:46 pvedula Exp $
*/
package com.sun.org.apache.xalan.internal.xsltc.trax;
import com.sun.org.apache.xalan.internal.xsltc.dom.SAXImpl;
import com.sun.org.apache.xalan.internal.xsltc.runtime.BasisLibrary;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Stack;
import java.util.Vector;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.xml.sax.ContentHandler;
@ -58,7 +54,7 @@ public class DOM2SAX implements XMLReader, Locator {
private ContentHandler _sax = null;
private LexicalHandler _lex = null;
private SAXImpl _saxImpl = null;
private Map<String, Stack> _nsPrefixes = new HashMap<>();
private Map<String, Stack<String>> _nsPrefixes = new HashMap<>();
public DOM2SAX(Node root) {
_dom = root;
@ -73,7 +69,7 @@ public class DOM2SAX implements XMLReader, Locator {
{
_sax = handler;
if (handler instanceof LexicalHandler) {
_lex = (LexicalHandler) handler;
_lex = (LexicalHandler)handler;
}
if (handler instanceof SAXImpl) {
@ -90,25 +86,22 @@ public class DOM2SAX implements XMLReader, Locator {
throws SAXException
{
boolean pushed = true;
Stack uriStack = _nsPrefixes.get(prefix);
Stack<String> uriStack = _nsPrefixes.get(prefix);
if (uriStack != null) {
if (uriStack.isEmpty()) {
_sax.startPrefixMapping(prefix, uri);
uriStack.push(uri);
}
else {
final String lastUri = (String) uriStack.peek();
} else {
final String lastUri = uriStack.peek();
if (!lastUri.equals(uri)) {
_sax.startPrefixMapping(prefix, uri);
uriStack.push(uri);
}
else {
} else {
pushed = false;
}
}
}
else {
} else {
_sax.startPrefixMapping(prefix, uri);
_nsPrefixes.put(prefix, uriStack = new Stack());
uriStack.push(uri);
@ -123,7 +116,7 @@ public class DOM2SAX implements XMLReader, Locator {
private void endPrefixMapping(String prefix)
throws SAXException
{
final Stack uriStack = _nsPrefixes.get(prefix);
final Stack<String> uriStack = _nsPrefixes.get(prefix);
if (uriStack != null) {
_sax.endPrefixMapping(prefix);
@ -131,22 +124,6 @@ public class DOM2SAX implements XMLReader, Locator {
}
}
/**
* If the DOM was created using a DOM 1.0 API, the local name may be
* null. If so, get the local name from the qualified name before
* generating the SAX event.
*/
private static String getLocalName(Node node) {
final String localName = node.getLocalName();
if (localName == null) {
final String qname = node.getNodeName();
final int col = qname.lastIndexOf(':');
return (col > 0) ? qname.substring(col + 1) : qname;
}
return localName;
}
public void parse(InputSource unused) throws IOException, SAXException {
parse(_dom);
}
@ -173,8 +150,8 @@ public class DOM2SAX implements XMLReader, Locator {
* declarations.
*/
private void parse(Node node) throws IOException, SAXException {
Node first = null;
if (node == null) return;
if (node == null)
return;
switch (node.getNodeType()) {
case Node.ATTRIBUTE_NODE: // handled by ELEMENT_NODE
@ -198,7 +175,6 @@ public class DOM2SAX implements XMLReader, Locator {
_sax.characters(cdata.toCharArray(), 0, cdata.length());
}
break;
case Node.COMMENT_NODE: // should be handled!!!
if (_lex != null) {
final String value = node.getNodeValue();
@ -216,10 +192,9 @@ public class DOM2SAX implements XMLReader, Locator {
}
_sax.endDocument();
break;
case Node.ELEMENT_NODE:
String prefix;
Vector pushedPrefixes = new Vector();
ArrayList<String> pushedPrefixes = new ArrayList<>();
final AttributesImpl attrs = new AttributesImpl();
final NamedNodeMap map = node.getAttributes();
final int length = map.getLength();
@ -235,7 +210,7 @@ public class DOM2SAX implements XMLReader, Locator {
final int colon = qnameAttr.lastIndexOf(':');
prefix = (colon > 0) ? qnameAttr.substring(colon + 1) : EMPTYSTRING;
if (startPrefixMapping(prefix, uriAttr)) {
pushedPrefixes.addElement(prefix);
pushedPrefixes.add(prefix);
}
}
}
@ -248,27 +223,25 @@ public class DOM2SAX implements XMLReader, Locator {
// Ignore NS declarations here
if (!qnameAttr.startsWith(XMLNS_PREFIX)) {
final String uriAttr = attr.getNamespaceURI();
final String localNameAttr = getLocalName(attr);
// Uri may be implicitly declared
if (uriAttr != null) {
final int colon = qnameAttr.lastIndexOf(':');
if (colon > 0) {
prefix = qnameAttr.substring(0, colon);
}
else {
} else {
// If no prefix for this attr, we need to create
// one because we cannot use the default ns
prefix = BasisLibrary.generatePrefix();
qnameAttr = prefix + ':' + qnameAttr;
}
if (startPrefixMapping(prefix, uriAttr)) {
pushedPrefixes.addElement(prefix);
pushedPrefixes.add(prefix);
}
}
// Add attribute to list
attrs.addAttribute(attr.getNamespaceURI(), getLocalName(attr),
attrs.addAttribute(attr.getNamespaceURI(), attr.getLocalName(),
qnameAttr, "CDATA", attr.getNodeValue());
}
}
@ -276,22 +249,21 @@ public class DOM2SAX implements XMLReader, Locator {
// Now process the element itself
final String qname = node.getNodeName();
final String uri = node.getNamespaceURI();
final String localName = getLocalName(node);
final String localName = node.getLocalName();
// Uri may be implicitly declared
// URI may be implicitly declared
if (uri != null) {
final int colon = qname.lastIndexOf(':');
prefix = (colon > 0) ? qname.substring(0, colon) : EMPTYSTRING;
if (startPrefixMapping(prefix, uri)) {
pushedPrefixes.addElement(prefix);
pushedPrefixes.add(prefix);
}
}
// Generate SAX event to start element
if (_saxImpl != null) {
_saxImpl.startElement(uri, localName, qname, attrs, node);
}
else {
} else {
_sax.startElement(uri, localName, qname, attrs);
}
@ -308,15 +280,13 @@ public class DOM2SAX implements XMLReader, Locator {
// Generate endPrefixMapping() for all pushed prefixes
final int nPushedPrefixes = pushedPrefixes.size();
for (int i = 0; i < nPushedPrefixes; i++) {
endPrefixMapping((String) pushedPrefixes.elementAt(i));
endPrefixMapping(pushedPrefixes.get(i));
}
break;
case Node.PROCESSING_INSTRUCTION_NODE:
_sax.processingInstruction(node.getNodeName(),
node.getNodeValue());
break;
case Node.TEXT_NODE:
final String data = node.getNodeValue();
_sax.characters(data.toCharArray(), 0, data.length());
@ -449,36 +419,4 @@ public class DOM2SAX implements XMLReader, Locator {
public String getSystemId() {
return null;
}
// Debugging
private String getNodeTypeFromCode(short code) {
String retval = null;
switch (code) {
case Node.ATTRIBUTE_NODE :
retval = "ATTRIBUTE_NODE"; break;
case Node.CDATA_SECTION_NODE :
retval = "CDATA_SECTION_NODE"; break;
case Node.COMMENT_NODE :
retval = "COMMENT_NODE"; break;
case Node.DOCUMENT_FRAGMENT_NODE :
retval = "DOCUMENT_FRAGMENT_NODE"; break;
case Node.DOCUMENT_NODE :
retval = "DOCUMENT_NODE"; break;
case Node.DOCUMENT_TYPE_NODE :
retval = "DOCUMENT_TYPE_NODE"; break;
case Node.ELEMENT_NODE :
retval = "ELEMENT_NODE"; break;
case Node.ENTITY_NODE :
retval = "ENTITY_NODE"; break;
case Node.ENTITY_REFERENCE_NODE :
retval = "ENTITY_REFERENCE_NODE"; break;
case Node.NOTATION_NODE :
retval = "NOTATION_NODE"; break;
case Node.PROCESSING_INSTRUCTION_NODE :
retval = "PROCESSING_INSTRUCTION_NODE"; break;
case Node.TEXT_NODE:
retval = "TEXT_NODE"; break;
}
return retval;
}
}

View File

@ -1,13 +1,13 @@
/*
* reserved comment block
* DO NOT REMOVE OR ALTER!
* Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
*/
/*
* Copyright 1999-2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
@ -17,13 +17,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* $Id: SAX2DTM2.java,v 1.2.4.1 2005/09/15 08:15:12 suresh_emailid Exp $
*/
package com.sun.org.apache.xml.internal.dtm.ref.sax2dtm;
import com.sun.org.apache.xml.internal.dtm.*;
import com.sun.org.apache.xml.internal.dtm.ref.*;
import com.sun.org.apache.xml.internal.dtm.DTM;
import com.sun.org.apache.xml.internal.dtm.DTMAxisIterator;
import com.sun.org.apache.xml.internal.dtm.DTMException;
import com.sun.org.apache.xml.internal.dtm.DTMManager;
import com.sun.org.apache.xml.internal.dtm.DTMWSFilter;
import com.sun.org.apache.xml.internal.dtm.ref.DTMDefaultBase;
import com.sun.org.apache.xml.internal.dtm.ref.ExpandedNameTable;
import com.sun.org.apache.xml.internal.dtm.ref.ExtendedType;
import com.sun.org.apache.xml.internal.utils.FastStringBuffer;
import com.sun.org.apache.xml.internal.utils.XMLString;
import com.sun.org.apache.xml.internal.utils.XMLStringDefault;
@ -31,11 +35,12 @@ import com.sun.org.apache.xml.internal.utils.XMLStringFactory;
import com.sun.org.apache.xml.internal.res.XMLMessages;
import com.sun.org.apache.xml.internal.res.XMLErrorResources;
import com.sun.org.apache.xml.internal.serializer.SerializationHandler;
import javax.xml.transform.Source;
import java.util.Vector;
import com.sun.org.apache.xml.internal.utils.SuballocatedIntVector;
import org.xml.sax.*;
import java.util.ArrayList;
import javax.xml.transform.Source;
import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException;
/**
* SAX2DTM2 is an optimized version of SAX2DTM which is used in non-incremental situation.
@ -53,10 +58,6 @@ import org.xml.sax.*;
* The design of SAX2DTM2 may limit its extensibilty. If you have a reason to extend the
* SAX2DTM model, please extend from SAX2DTM instead of this class.
* <p>
* TODO: This class is currently only used by XSLTC. We need to investigate the possibility
* of also using it in Xalan-J Interpretive. Xalan's performance is likely to get an instant
* boost if we use SAX2DTM2 instead of SAX2DTM in non-incremental case.
* <p>
* %MK% The code in this class is critical to the XSLTC_DTM performance. Be very careful
* when making changes here!
*/
@ -87,11 +88,10 @@ public class SAX2DTM2 extends SAX2DTM
*/
public DTMAxisIterator setStartNode(int node)
{
//%HZ%: Added reference to DTMDefaultBase.ROOTNODE back in, temporarily
//%HZ%: Added reference to DTMDefaultBase.ROOTNODE back in, temporarily
if (node == DTMDefaultBase.ROOTNODE)
node = getDocument();
if (_isRestartable)
{
if (_isRestartable) {
_startNode = node;
_currentNode = (node == DTM.NULL) ? DTM.NULL
: _firstch2(makeNodeIdentity(node));
@ -108,8 +108,7 @@ public class SAX2DTM2 extends SAX2DTM
* @return The next node handle in the iteration, or END if no more
* are available.
*/
public int next()
{
public int next() {
if (_currentNode != NULL) {
int node = _currentNode;
_currentNode = _nextsib2(node);
@ -139,13 +138,11 @@ public class SAX2DTM2 extends SAX2DTM
*
* @return A DTMAxisIterator set to the start of the iteration.
*/
public DTMAxisIterator setStartNode(int node)
{
//%HZ%: Added reference to DTMDefaultBase.ROOTNODE back in, temporarily
public DTMAxisIterator setStartNode(int node) {
//%HZ%: Added reference to DTMDefaultBase.ROOTNODE back in, temporarily
if (node == DTMDefaultBase.ROOTNODE)
node = getDocument();
if (_isRestartable)
{
if (_isRestartable) {
_startNode = node;
if (node != DTM.NULL)
@ -229,8 +226,7 @@ public class SAX2DTM2 extends SAX2DTM
*
* @param nodeType The extended type ID being requested.
*/
public TypedChildrenIterator(int nodeType)
{
public TypedChildrenIterator(int nodeType) {
_nodeType = nodeType;
}
@ -242,17 +238,14 @@ public class SAX2DTM2 extends SAX2DTM
*
* @return A DTMAxisIterator set to the start of the iteration.
*/
public DTMAxisIterator setStartNode(int node)
{
//%HZ%: Added reference to DTMDefaultBase.ROOTNODE back in, temporarily
public DTMAxisIterator setStartNode(int node) {
//%HZ%: Added reference to DTMDefaultBase.ROOTNODE back in, temporarily
if (node == DTMDefaultBase.ROOTNODE)
node = getDocument();
if (_isRestartable)
{
if (_isRestartable) {
_startNode = node;
_currentNode = (node == DTM.NULL)
? DTM.NULL
: _firstch2(makeNodeIdentity(_startNode));
_currentNode = (node == DTM.NULL) ? DTM.NULL :
_firstch2(makeNodeIdentity(_startNode));
return resetPosition();
}
@ -265,8 +258,7 @@ public class SAX2DTM2 extends SAX2DTM
*
* @return The next node handle in the iteration, or END.
*/
public int next()
{
public int next() {
int node = _currentNode;
if (node == DTM.NULL)
return DTM.NULL;
@ -301,14 +293,12 @@ public class SAX2DTM2 extends SAX2DTM
_currentNode = _nextsib2(node);
return returnNode(makeNodeHandle(node));
}
}
/**
* Return the node at the given position.
*/
public int getNodeByPosition(int position)
{
public int getNodeByPosition(int position) {
if (position <= 0)
return DTM.NULL;
@ -327,8 +317,7 @@ public class SAX2DTM2 extends SAX2DTM
node = _nextsib2(node);
}
return NULL;
}
else {
} else {
while (node != DTM.NULL) {
if (_exptype2(node) >= DTM.NTYPES) {
pos++;
@ -415,13 +404,11 @@ public class SAX2DTM2 extends SAX2DTM
*
* @return A DTMAxisIterator set to the start of the iteration.
*/
public DTMAxisIterator setStartNode(int node)
{
//%HZ%: Added reference to DTMDefaultBase.ROOTNODE back in, temporarily
public DTMAxisIterator setStartNode(int node) {
//%HZ%: Added reference to DTMDefaultBase.ROOTNODE back in, temporarily
if (node == DTMDefaultBase.ROOTNODE)
node = getDocument();
if (_isRestartable)
{
if (_isRestartable) {
_startNode = node;
_currentNode = makeNodeIdentity(node);
@ -436,8 +423,7 @@ public class SAX2DTM2 extends SAX2DTM
*
* @return The next node handle in the iteration, or END.
*/
public int next()
{
public int next() {
_currentNode = (_currentNode == DTM.NULL) ? DTM.NULL
: _nextsib2(_currentNode);
return returnNode(makeNodeHandle(_currentNode));
@ -460,8 +446,7 @@ public class SAX2DTM2 extends SAX2DTM
*
* @param type The extended type ID being requested.
*/
public TypedFollowingSiblingIterator(int type)
{
public TypedFollowingSiblingIterator(int type) {
_nodeType = type;
}
@ -470,8 +455,7 @@ public class SAX2DTM2 extends SAX2DTM
*
* @return The next node handle in the iteration, or END.
*/
public int next()
{
public int next() {
if (_currentNode == DTM.NULL) {
return DTM.NULL;
}
@ -481,8 +465,7 @@ public class SAX2DTM2 extends SAX2DTM
if (nodeType != DTM.ELEMENT_NODE) {
while ((node = _nextsib2(node)) != DTM.NULL && _exptype2(node) != nodeType) {}
}
else {
} else {
while ((node = _nextsib2(node)) != DTM.NULL && _exptype2(node) < DTM.NTYPES) {}
}
@ -498,8 +481,7 @@ public class SAX2DTM2 extends SAX2DTM
/**
* Iterator that returns attribute nodes (of what nodes?)
*/
public final class AttributeIterator extends InternalAxisIteratorBase
{
public final class AttributeIterator extends InternalAxisIteratorBase {
// assumes caller will pass element nodes
@ -511,13 +493,11 @@ public class SAX2DTM2 extends SAX2DTM
*
* @return A DTMAxisIterator set to the start of the iteration.
*/
public DTMAxisIterator setStartNode(int node)
{
//%HZ%: Added reference to DTMDefaultBase.ROOTNODE back in, temporarily
public DTMAxisIterator setStartNode(int node) {
//%HZ%: Added reference to DTMDefaultBase.ROOTNODE back in, temporarily
if (node == DTMDefaultBase.ROOTNODE)
node = getDocument();
if (_isRestartable)
{
if (_isRestartable) {
_startNode = node;
_currentNode = getFirstAttributeIdentity(makeNodeIdentity(node));
@ -532,9 +512,7 @@ public class SAX2DTM2 extends SAX2DTM
*
* @return The next node handle in the iteration, or END.
*/
public int next()
{
public int next() {
final int node = _currentNode;
if (node != NULL) {
@ -561,8 +539,7 @@ public class SAX2DTM2 extends SAX2DTM
*
* @param nodeType The extended type ID that is requested.
*/
public TypedAttributeIterator(int nodeType)
{
public TypedAttributeIterator(int nodeType) {
_nodeType = nodeType;
}
@ -576,14 +553,10 @@ public class SAX2DTM2 extends SAX2DTM
*
* @return A DTMAxisIterator set to the start of the iteration.
*/
public DTMAxisIterator setStartNode(int node)
{
if (_isRestartable)
{
public DTMAxisIterator setStartNode(int node) {
if (_isRestartable) {
_startNode = node;
_currentNode = getTypedAttribute(node, _nodeType);
return resetPosition();
}
@ -595,9 +568,7 @@ public class SAX2DTM2 extends SAX2DTM
*
* @return The next node handle in the iteration, or END.
*/
public int next()
{
public int next() {
final int node = _currentNode;
// singleton iterator, since there can only be one attribute of
@ -624,8 +595,7 @@ public class SAX2DTM2 extends SAX2DTM
*
* @return true.
*/
public boolean isReverse()
{
public boolean isReverse() {
return true;
}
@ -637,30 +607,25 @@ public class SAX2DTM2 extends SAX2DTM
*
* @return A DTMAxisIterator set to the start of the iteration.
*/
public DTMAxisIterator setStartNode(int node)
{
//%HZ%: Added reference to DTMDefaultBase.ROOTNODE back in, temporarily
public DTMAxisIterator setStartNode(int node) {
//%HZ%: Added reference to DTMDefaultBase.ROOTNODE back in, temporarily
if (node == DTMDefaultBase.ROOTNODE)
node = getDocument();
if (_isRestartable)
{
if (_isRestartable) {
_startNode = node;
node = _startNodeID = makeNodeIdentity(node);
if(node == NULL)
{
if(node == NULL) {
_currentNode = node;
return resetPosition();
}
int type = _type2(node);
if(ExpandedNameTable.ATTRIBUTE == type
|| ExpandedNameTable.NAMESPACE == type )
if (ExpandedNameTable.ATTRIBUTE == type ||
ExpandedNameTable.NAMESPACE == type)
{
_currentNode = node;
}
else
{
} else {
// Be careful to handle the Document node properly
_currentNode = _parent2(node);
if(NULL!=_currentNode)
@ -680,18 +645,12 @@ public class SAX2DTM2 extends SAX2DTM
*
* @return The next node handle in the iteration, or END.
*/
public int next()
{
if (_currentNode == _startNodeID || _currentNode == DTM.NULL)
{
public int next() {
if (_currentNode == _startNodeID || _currentNode == DTM.NULL) {
return NULL;
}
else
{
} else {
final int node = _currentNode;
_currentNode = _nextsib2(node);
return returnNode(makeNodeHandle(node));
}
}
@ -714,8 +673,7 @@ public class SAX2DTM2 extends SAX2DTM
*
* @param type The extended type ID being requested.
*/
public TypedPrecedingSiblingIterator(int type)
{
public TypedPrecedingSiblingIterator(int type) {
_nodeType = type;
}
@ -724,8 +682,7 @@ public class SAX2DTM2 extends SAX2DTM
*
* @return The next node handle in the iteration, or END.
*/
public int next()
{
public int next() {
int node = _currentNode;
final int nodeType = _nodeType;
@ -735,8 +692,7 @@ public class SAX2DTM2 extends SAX2DTM
while (node != NULL && node != startNodeID && _exptype2(node) != nodeType) {
node = _nextsib2(node);
}
}
else {
} else {
while (node != NULL && node != startNodeID && _exptype2(node) < DTM.NTYPES) {
node = _nextsib2(node);
}
@ -745,8 +701,7 @@ public class SAX2DTM2 extends SAX2DTM
if (node == DTM.NULL || node == startNodeID) {
_currentNode = NULL;
return NULL;
}
else {
} else {
_currentNode = _nextsib2(node);
return returnNode(makeNodeHandle(node));
}
@ -755,8 +710,7 @@ public class SAX2DTM2 extends SAX2DTM
/**
* Return the index of the last node in this iterator.
*/
public int getLast()
{
public int getLast() {
if (_last != -1)
return _last;
@ -774,8 +728,7 @@ public class SAX2DTM2 extends SAX2DTM
}
node = _nextsib2(node);
}
}
else {
} else {
while (node != NULL && node != startNodeID) {
if (_exptype2(node) >= DTM.NTYPES) {
last++;
@ -860,7 +813,7 @@ public class SAX2DTM2 extends SAX2DTM
*/
public DTMAxisIterator setStartNode(int node)
{
//%HZ%: Added reference to DTMDefaultBase.ROOTNODE back in, temporarily
//%HZ%: Added reference to DTMDefaultBase.ROOTNODE back in, temporarily
if (node == DTMDefaultBase.ROOTNODE)
node = getDocument();
if (_isRestartable)
@ -1799,9 +1752,7 @@ public class SAX2DTM2 extends SAX2DTM
// %OPT% These values are unlikely to be equal. Storing
// them in a plain Vector is more efficient than storing in the
// DTMStringPool because we can save the cost for hash calculation.
//
// %REVISIT% Do we need a custom class (e.g. StringVector) here?
protected Vector m_values;
protected ArrayList<String> m_values;
// The current index into the m_values Vector.
private int m_valueIndex = 0;
@ -1881,9 +1832,8 @@ public class SAX2DTM2 extends SAX2DTM
m_buildIdIndex = buildIdIndex;
// Some documents do not have attribute nodes. That is why
// we set the initial size of this Vector to be small and set
// the increment to a bigger number.
m_values = new Vector(32, 512);
// we set the initial size of this ArrayList to be small.
m_values = new ArrayList<>(32);
m_maxNodeIndex = 1 << DTMManager.IDENT_DTM_NODE_BITS;
@ -1953,10 +1903,7 @@ public class SAX2DTM2 extends SAX2DTM
* @param identity A node identity, which <em>must not</em> be equal to
* <code>DTM.NULL</code>
*/
public final int _firstch2(int identity)
{
//return m_firstch.elementAt(identity);
public final int _firstch2(int identity) {
if (identity < m_blocksize)
return m_firstch_map0[identity];
else
@ -1969,10 +1916,7 @@ public class SAX2DTM2 extends SAX2DTM
* @param identity A node identity, which <em>must not</em> be equal to
* <code>DTM.NULL</code>
*/
public final int _parent2(int identity)
{
//return m_parent.elementAt(identity);
public final int _parent2(int identity) {
if (identity < m_blocksize)
return m_parent_map0[identity];
else
@ -1985,9 +1929,7 @@ public class SAX2DTM2 extends SAX2DTM
* @param identity A node identity, which <em>must not</em> be equal to
* <code>DTM.NULL</code>
*/
public final int _type2(int identity)
{
//int eType = _exptype2(identity);
public final int _type2(int identity) {
int eType;
if (identity < m_blocksize)
eType = m_exptype_map0[identity];
@ -2006,12 +1948,9 @@ public class SAX2DTM2 extends SAX2DTM
* <p>This one is only used by DOMAdapter.getExpandedTypeID(int), which
* is mostly called from the compiled translets.
*/
public final int getExpandedTypeID2(int nodeHandle)
{
public final int getExpandedTypeID2(int nodeHandle) {
int nodeID = makeNodeIdentity(nodeHandle);
//return (nodeID != NULL) ? _exptype2(nodeID) : NULL;
if (nodeID != NULL) {
if (nodeID < m_blocksize)
return m_exptype_map0[nodeID];
@ -2026,12 +1965,10 @@ public class SAX2DTM2 extends SAX2DTM
* END of DTM base accessor interfaces
*************************************************************************/
/**
* Return the node type from the expanded type
*/
public final int _exptype2Type(int exptype)
{
public final int _exptype2Type(int exptype) {
if (NULL != exptype)
return m_extendedTypes[exptype].getNodeType();
else
@ -2046,16 +1983,14 @@ public class SAX2DTM2 extends SAX2DTM
*
* @return The prefix if there is one, or null.
*/
public int getIdForNamespace(String uri)
{
public int getIdForNamespace(String uri) {
int index = m_values.indexOf(uri);
if (index < 0)
{
m_values.addElement(uri);
if (index < 0) {
m_values.add(uri);
return m_valueIndex++;
}
else
} else {
return index;
}
}
/**
@ -2079,15 +2014,25 @@ public class SAX2DTM2 extends SAX2DTM
* @param attributes The specified or defaulted attributes.
* @throws SAXException Any SAX exception, possibly
* wrapping another exception.
* @see org.xml.sax.ContentHandler#startElement
* @see ContentHandler#startElement
*/
public void startElement(String uri, String localName, String qName, Attributes attributes)
throws SAXException
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException
{
charactersFlush();
int exName = m_expandedNameTable.getExpandedTypeID(uri, localName, DTM.ELEMENT_NODE);
// in case URI and localName are empty, the input is not using the
// namespaces feature. Then we should take the part after the last
// colon of qName as localName (strip all namespace prefixes)
if ((uri == null || uri.isEmpty()) &&
(localName == null || localName.isEmpty()))
{
final int colon = qName.lastIndexOf(':');
localName = (colon > -1) ? qName.substring(colon + 1) : qName;
}
int exName = m_expandedNameTable.getExpandedTypeID(uri, localName,
DTM.ELEMENT_NODE);
int prefixIndex = (qName.length() != localName.length())
? m_valuesOrPrefixes.stringToIndex(qName) : 0;
@ -2095,7 +2040,7 @@ public class SAX2DTM2 extends SAX2DTM
int elemNode = addNode(DTM.ELEMENT_NODE, exName,
m_parents.peek(), m_previous, prefixIndex, true);
if(m_indexing)
if (m_indexing)
indexNode(exName, elemNode);
m_parents.push(elemNode);
@ -2104,31 +2049,31 @@ public class SAX2DTM2 extends SAX2DTM
int nDecls = m_prefixMappings.size();
String prefix;
if(!m_pastFirstElement)
{
if (!m_pastFirstElement) {
// SPECIAL CASE: Implied declaration at root element
prefix="xml";
prefix = "xml";
String declURL = "http://www.w3.org/XML/1998/namespace";
exName = m_expandedNameTable.getExpandedTypeID(null, prefix, DTM.NAMESPACE_NODE);
m_values.addElement(declURL);
exName = m_expandedNameTable.getExpandedTypeID(null, prefix,
DTM.NAMESPACE_NODE);
m_values.add(declURL);
int val = m_valueIndex++;
addNode(DTM.NAMESPACE_NODE, exName, elemNode,
DTM.NULL, val, false);
m_pastFirstElement=true;
}
for (int i = startDecls; i < nDecls; i += 2)
{
prefix = (String) m_prefixMappings.elementAt(i);
for (int i = startDecls; i < nDecls; i += 2) {
prefix = m_prefixMappings.elementAt(i);
if (prefix == null)
continue;
String declURL = (String) m_prefixMappings.elementAt(i + 1);
String declURL = m_prefixMappings.elementAt(i + 1);
exName = m_expandedNameTable.getExpandedTypeID(null, prefix, DTM.NAMESPACE_NODE);
exName = m_expandedNameTable.getExpandedTypeID(null, prefix,
DTM.NAMESPACE_NODE);
m_values.addElement(declURL);
m_values.add(declURL);
int val = m_valueIndex++;
addNode(DTM.NAMESPACE_NODE, exName, elemNode, DTM.NULL, val, false);
@ -2136,28 +2081,37 @@ public class SAX2DTM2 extends SAX2DTM
int n = attributes.getLength();
for (int i = 0; i < n; i++)
{
for (int i = 0; i < n; i++) {
String attrUri = attributes.getURI(i);
String attrLocalName = attributes.getLocalName(i);
String attrQName = attributes.getQName(i);
String valString = attributes.getValue(i);
// in case URI and localName are empty, the input is not using the
// namespaces feature. Then we should take the part after the last
// colon of qName as localName (strip all namespace prefixes)
// When the URI is empty but localName has colons then we can also
// assume non namespace aware and prefixes can be stripped
if (attrUri == null || attrUri.isEmpty()) {
if (attrLocalName == null || attrLocalName.isEmpty()) {
final int colon = attrQName.lastIndexOf(':');
attrLocalName = (colon > -1) ? attrQName.substring(colon + 1) : attrQName;
} else {
final int colon = attrLocalName.lastIndexOf(':');
attrLocalName = (colon > -1) ? attrLocalName.substring(colon + 1) : attrLocalName;
}
}
int nodeType;
String attrLocalName = attributes.getLocalName(i);
if ((null != attrQName)
&& (attrQName.equals("xmlns")
|| attrQName.startsWith("xmlns:")))
if ((null != attrQName) &&
(attrQName.equals("xmlns") || attrQName.startsWith("xmlns:")))
{
prefix = getPrefix(attrQName, attrUri);
if (declAlreadyDeclared(prefix))
continue; // go to the next attribute.
nodeType = DTM.NAMESPACE_NODE;
}
else
{
} else {
nodeType = DTM.ATTRIBUTE_NODE;
if (m_buildIdIndex && attributes.getType(i).equalsIgnoreCase("ID"))
@ -2166,36 +2120,31 @@ public class SAX2DTM2 extends SAX2DTM
// Bit of a hack... if somehow valString is null, stringToIndex will
// return -1, which will make things very unhappy.
if(null == valString)
if (null == valString)
valString = "";
m_values.addElement(valString);
m_values.add(valString);
int val = m_valueIndex++;
if (attrLocalName.length() != attrQName.length())
{
if (attrLocalName.length() != attrQName.length()) {
prefixIndex = m_valuesOrPrefixes.stringToIndex(attrQName);
int dataIndex = m_data.size();
m_data.addElement(prefixIndex);
m_data.addElement(val);
val = -dataIndex;
}
exName = m_expandedNameTable.getExpandedTypeID(attrUri, attrLocalName, nodeType);
addNode(nodeType, exName, elemNode, DTM.NULL, val,
false);
exName = m_expandedNameTable.getExpandedTypeID(attrUri, attrLocalName,
nodeType);
addNode(nodeType, exName, elemNode, DTM.NULL, val, false);
}
if (null != m_wsfilter)
{
short wsv = m_wsfilter.getShouldStripSpace(makeNodeHandle(elemNode), this);
boolean shouldStrip = (DTMWSFilter.INHERIT == wsv)
? getShouldStripWhitespace()
: (DTMWSFilter.STRIP == wsv);
if (null != m_wsfilter) {
short wsv = m_wsfilter.getShouldStripSpace(makeNodeHandle(elemNode),
this);
boolean shouldStrip = (DTMWSFilter.INHERIT == wsv) ?
getShouldStripWhitespace() :
(DTMWSFilter.STRIP == wsv);
pushShouldStripWhitespace(shouldStrip);
}
@ -2223,7 +2172,7 @@ public class SAX2DTM2 extends SAX2DTM
* empty string if qualified names are not available.
* @throws SAXException Any SAX exception, possibly
* wrapping another exception.
* @see org.xml.sax.ContentHandler#endElement
* @see ContentHandler#endElement
*/
public void endElement(String uri, String localName, String qName)
throws SAXException
@ -2257,9 +2206,7 @@ public class SAX2DTM2 extends SAX2DTM
* @param length The number of characters to use from the array.
* @throws SAXException The application may raise an exception.
*/
public void comment(char ch[], int start, int length) throws SAXException
{
public void comment(char ch[], int start, int length) throws SAXException {
if (m_insideDTD) // ignore comments if we're inside the DTD
return;
@ -2267,7 +2214,7 @@ public class SAX2DTM2 extends SAX2DTM
// %OPT% Saving the comment string in a Vector has a lower cost than
// saving it in DTMStringPool.
m_values.addElement(new String(ch, start, length));
m_values.add(new String(ch, start, length));
int dataIndex = m_valueIndex++;
m_previous = addNode(DTM.COMMENT_NODE, DTM.COMMENT_NODE,
@ -2279,13 +2226,10 @@ public class SAX2DTM2 extends SAX2DTM
*
* @throws SAXException Any SAX exception, possibly
* wrapping another exception.
* @see org.xml.sax.ContentHandler#startDocument
* @see ContentHandler#startDocument
*/
public void startDocument() throws SAXException
{
int doc = addNode(DTM.DOCUMENT_NODE,
DTM.DOCUMENT_NODE,
public void startDocument() throws SAXException {
int doc = addNode(DTM.DOCUMENT_NODE, DTM.DOCUMENT_NODE,
DTM.NULL, DTM.NULL, 0, true);
m_parents.push(doc);
@ -2299,10 +2243,9 @@ public class SAX2DTM2 extends SAX2DTM
*
* @throws SAXException Any SAX exception, possibly
* wrapping another exception.
* @see org.xml.sax.ContentHandler#endDocument
* @see ContentHandler#endDocument
*/
public void endDocument() throws SAXException
{
public void endDocument() throws SAXException {
super.endDocument();
// Add a NULL entry to the end of the node arrays as
@ -2334,16 +2277,15 @@ public class SAX2DTM2 extends SAX2DTM
* @return The index identity of the node that was added.
*/
protected final int addNode(int type, int expandedTypeID,
int parentIndex, int previousSibling,
int dataOrPrefix, boolean canHaveFirstChild)
int parentIndex, int previousSibling,
int dataOrPrefix, boolean canHaveFirstChild)
{
// Common to all nodes:
int nodeIndex = m_size++;
// Have we overflowed a DTM Identity's addressing range?
//if(m_dtmIdent.size() == (nodeIndex>>>DTMManager.IDENT_DTM_NODE_BITS))
if (nodeIndex == m_maxNodeIndex)
{
if (nodeIndex == m_maxNodeIndex) {
addNewDTMID(nodeIndex);
m_maxNodeIndex += (1 << DTMManager.IDENT_DTM_NODE_BITS);
}
@ -2366,8 +2308,7 @@ public class SAX2DTM2 extends SAX2DTM
// is called, to handle successive characters() events.
// Special handling by type: Declare namespaces, attach first child
switch(type)
{
switch(type) {
case DTM.NAMESPACE_NODE:
declareNamespaceInContext(parentIndex,nodeIndex);
break;
@ -2376,8 +2317,7 @@ public class SAX2DTM2 extends SAX2DTM
default:
if (DTM.NULL != previousSibling) {
m_nextsib.setElementAt(nodeIndex,previousSibling);
}
else if (DTM.NULL != parentIndex) {
} else if (DTM.NULL != parentIndex) {
m_firstch.setElementAt(nodeIndex,parentIndex);
}
break;
@ -2390,16 +2330,12 @@ public class SAX2DTM2 extends SAX2DTM
* Check whether accumulated text should be stripped; if not,
* append the appropriate flavor of text/cdata node.
*/
protected final void charactersFlush()
{
if (m_textPendingStart >= 0) // -1 indicates no-text-in-progress
{
protected final void charactersFlush() {
if (m_textPendingStart >= 0) { // -1 indicates no-text-in-progress
int length = m_chars.size() - m_textPendingStart;
boolean doStrip = false;
if (getShouldStripWhitespace())
{
if (getShouldStripWhitespace()) {
doStrip = m_chars.isWhitespace(m_textPendingStart, length);
}
@ -2412,19 +2348,19 @@ public class SAX2DTM2 extends SAX2DTM
// If the offset and length do not exceed the given limits
// (offset < 2^21 and length < 2^10), then save both the offset
// and length in a bitwise encoded value.
if (length <= TEXT_LENGTH_MAX
&& m_textPendingStart <= TEXT_OFFSET_MAX) {
if (length <= TEXT_LENGTH_MAX &&
m_textPendingStart <= TEXT_OFFSET_MAX) {
m_previous = addNode(m_coalescedTextType, DTM.TEXT_NODE,
m_parents.peek(), m_previous,
length + (m_textPendingStart << TEXT_LENGTH_BITS),
false);
m_parents.peek(), m_previous,
length + (m_textPendingStart << TEXT_LENGTH_BITS),
false);
} else {
// Store offset and length in the m_data array if one exceeds
// the given limits. Use a negative dataIndex as an indication.
int dataIndex = m_data.size();
m_previous = addNode(m_coalescedTextType, DTM.TEXT_NODE,
m_parents.peek(), m_previous, -dataIndex, false);
m_parents.peek(), m_previous, -dataIndex, false);
m_data.addElement(m_textPendingStart);
m_data.addElement(length);
@ -2452,7 +2388,7 @@ public class SAX2DTM2 extends SAX2DTM
* none is supplied.
* @throws SAXException Any SAX exception, possibly
* wrapping another exception.
* @see org.xml.sax.ContentHandler#processingInstruction
* @see ContentHandler#processingInstruction
*/
public void processingInstruction(String target, String data)
throws SAXException
@ -2467,7 +2403,7 @@ public class SAX2DTM2 extends SAX2DTM
-dataIndex, false);
m_data.addElement(m_valuesOrPrefixes.stringToIndex(target));
m_values.addElement(data);
m_values.add(data);
m_data.addElement(m_valueIndex++);
}
@ -2865,9 +2801,9 @@ public class SAX2DTM2 extends SAX2DTM
}
if (m_xstrf != null)
return m_xstrf.newstr((String)m_values.elementAt(dataIndex));
return m_xstrf.newstr(m_values.get(dataIndex));
else
return new XMLStringDefault((String)m_values.elementAt(dataIndex));
return new XMLStringDefault(m_values.get(dataIndex));
}
}
@ -2966,7 +2902,7 @@ public class SAX2DTM2 extends SAX2DTM
dataIndex = m_data.elementAt(dataIndex + 1);
}
return (String)m_values.elementAt(dataIndex);
return m_values.get(dataIndex);
}
}
@ -3106,7 +3042,7 @@ public class SAX2DTM2 extends SAX2DTM
dataIndex = m_data.elementAt(dataIndex + 1);
}
String str = (String)m_values.elementAt(dataIndex);
String str = m_values.get(dataIndex);
if(normalize)
FastStringBuffer.sendNormalizedSAXcharacters(str.toCharArray(),
@ -3160,7 +3096,7 @@ public class SAX2DTM2 extends SAX2DTM
dataIndex = m_data.elementAt(dataIndex + 1);
}
return (String)m_values.elementAt(dataIndex);
return m_values.get(dataIndex);
}
}
@ -3202,8 +3138,7 @@ public class SAX2DTM2 extends SAX2DTM
if (uri.length() == 0) {
handler.startElement(name);
return name;
}
else {
} else {
int qnameIndex = m_dataOrQName.elementAt(nodeID);
if (qnameIndex == 0) {
@ -3223,14 +3158,12 @@ public class SAX2DTM2 extends SAX2DTM
String prefix;
if (prefixIndex > 0) {
prefix = qName.substring(0, prefixIndex);
}
else {
} else {
prefix = null;
}
handler.namespaceAfterStartElement(prefix, uri);
return qName;
}
}
/**
@ -3285,7 +3218,7 @@ public class SAX2DTM2 extends SAX2DTM
dataIndex = m_data.elementAt(dataIndex + 1);
}
String nodeValue = (String)m_values.elementAt(dataIndex);
String nodeValue = m_values.get(dataIndex);
handler.namespaceAfterStartElement(nodeName, nodeValue);
@ -3335,7 +3268,6 @@ public class SAX2DTM2 extends SAX2DTM
}
/**
* Copy an Attribute node to a SerializationHandler
*
@ -3347,14 +3279,6 @@ public class SAX2DTM2 extends SAX2DTM
SerializationHandler handler)
throws SAXException
{
/*
final String uri = getNamespaceName(node);
if (uri.length() != 0) {
final String prefix = getPrefix(node);
handler.namespaceAfterStartElement(prefix, uri);
}
handler.addAttribute(getNodeName(node), getNodeValue(node));
*/
final ExtendedType extType = m_extendedTypes[exptype];
final String uri = extType.getNamespace();
final String localName = extType.getLocalName();
@ -3377,7 +3301,7 @@ public class SAX2DTM2 extends SAX2DTM
}
String nodeName = (prefix != null) ? qname : localName;
String nodeValue = (String)m_values.elementAt(valueIndex);
String nodeValue = m_values.get(valueIndex);
handler.addAttribute(uri, localName, nodeName, "CDATA", nodeValue);
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -58,7 +58,7 @@ class AltCatalog extends BaseEntry {
}
/**
* Returns the catalog attribute as an URI String.
* Returns the catalog attribute as a URI String.
* @return The value of the catalog attribute
*/
String getCatalogId() {
@ -66,7 +66,7 @@ class AltCatalog extends BaseEntry {
}
/**
* Returns the catalog attribute as an URI.
* Returns the catalog attribute as a URI.
* @return The value of the catalog attribute
*/
URI getCatalogURI() {

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -27,6 +27,7 @@ package javax.xml.catalog;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Objects;
import static javax.xml.catalog.CatalogMessages.ERR_INVALID_ARGUMENT;
/**
* Represents a general Catalog entry.
@ -210,13 +211,12 @@ abstract class BaseEntry {
* @param arg The name of the argument
* @param uri The URI to be verified
* @return The URI created from the specified uri
* @throws IllegalArgumentException if the specified uri is null,
* or an URL can not be created based on the specified base and uri
* @throws NullPointerException if the specified uri is null
* @throws IllegalArgumentException if a URL can not be created based on
* the specified base and uri
*/
URL verifyURI(String arg, URL base, String uri) {
if (uri == null) {
CatalogMessages.reportIAE(new Object[]{uri, arg}, null);
}
CatalogMessages.reportNPEOnNull(arg, uri);
URL url = null;
uri = Normalizer.normalizeURI(uri);
@ -228,32 +228,9 @@ abstract class BaseEntry {
url = new URL(uri);
}
} catch (MalformedURLException e) {
CatalogMessages.reportIAE(new Object[]{uri, arg}, e);
CatalogMessages.reportIAE(ERR_INVALID_ARGUMENT,
new Object[]{uri, arg}, e);
}
return url;
}
/**
* Construct an absolute URI from a relative one, using the current base
* URI.
*
* @param sysid The (possibly relative) system identifier
* @return The system identifier made absolute with respect to the current
* {@link #base}.
*/
protected String makeAbsolute(String sysid) {
URL local = null;
sysid = Util.fixSlashes(sysid);
/**
* try { local = new URL(base, sysid); } catch (MalformedURLException e)
* { catalogManager.debug.message(1, "Malformed URL on system
* identifier", sysid); }
*/
if (local != null) {
return local.toString();
} else {
return sysid;
}
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -44,7 +44,7 @@ import java.util.stream.Stream;
* <ul>
* <li>Locate the external resources with a public or system identifier;
* </li>
* <li>Locate an alternate URI reference with an URI.
* <li>Locate an alternate URI reference with a URI.
* </li>
* </ul>
* <p>
@ -84,7 +84,7 @@ public interface Catalog {
*
* @param systemId the system identifier of the entity to be matched
*
* @return an URI string if a mapping is found, or null otherwise
* @return a URI string if a mapping is found, or null otherwise
*/
public String matchSystem(String systemId);
@ -108,7 +108,7 @@ public interface Catalog {
*
* @param publicId the public identifier of the entity to be matched
* @see CatalogFeatures.Feature
* @return an URI string if a mapping is found, or null otherwise
* @return a URI string if a mapping is found, or null otherwise
*/
public String matchPublic(String publicId);
@ -134,7 +134,7 @@ public interface Catalog {
*
* @param uri the URI reference of the entity to be matched
*
* @return an URI string if a mapping is found, or null otherwise
* @return a URI string if a mapping is found, or null otherwise
*/
public String matchURI(String uri);

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -56,14 +56,14 @@ import jdk.xml.internal.SecuritySupport;
*
* <tr>
* <td><a name="FILES">FILES</a></td>
* <td>A semicolon-delimited list of catalog files. Relative file paths are
* considered relative to ${user.dir}.
* <td>A semicolon-delimited list of URIs to locate the catalog files.
* The URIs must be absolute and have a URL protocol handler for the URI scheme.
* </td>
* <td>javax.xml.catalog.files</td>
* <td>javax.xml.catalog.files</td>
* <td>javax.xml.catalog.files</td>
* <td>String</td>
* <td>File paths</td>
* <td>URIs</td>
* <td>
* Reads the first catalog as the current catalog; Loads others if no match
* is found in the current catalog including delegate catalogs if any.
@ -170,7 +170,7 @@ import jdk.xml.internal.SecuritySupport;
* Properties set through the Catalog API override those that may have been set
* by system properties and/or in {@code jaxp.properties}. In case of multiple
* interfaces, the latest in a procedure shall take preference. For
* {@link Feature#FILES}, this means that the path(s) specified through the methods
* {@link Feature#FILES}, this means that the URI(s) specified through the methods
* of the {@link CatalogManager} will override any that may have been entered
* through the {@link Builder}.
*
@ -188,7 +188,7 @@ import jdk.xml.internal.SecuritySupport;
* in the following sample code:
* <pre>{@code
CatalogFeatures f = CatalogFeatures.builder()
.with(Feature.FILES, "catalog.xml")
.with(Feature.FILES, "file:///etc/xml/catalog")
.with(Feature.PREFER, "public")
.with(Feature.DEFER, "true")
.with(Feature.RESOLVE, "ignore")
@ -202,14 +202,14 @@ import jdk.xml.internal.SecuritySupport;
* Schema Validation ({@link javax.xml.validation}), and XML Transformation
* ({@link javax.xml.transform}). The features described above can be set through JAXP
* factories or processors that define a setProperty or setAttribute interface.
* For example, the following code snippet sets a path to a catalog file on a SAX
* For example, the following code snippet sets a URI to a catalog file on a SAX
* parser through the {@code javax.xml.catalog.files} property:
* <p>
* <pre>{@code
* SAXParserFactory spf = SAXParserFactory.newInstance();
* spf.setFeature(XMLConstants.USE_CATALOG, true); [1]
* SAXParser parser = spf.newSAXParser();
* parser.setProperty(CatalogFeatures.Feature.FILES.getPropertyName(), "catalog.xml");
* parser.setProperty(CatalogFeatures.Feature.FILES.getPropertyName(), "file:///etc/xml/catalog");
* }</pre>
* <p>
* [1] Note that this statement is not required since the default value of
@ -275,7 +275,7 @@ import jdk.xml.internal.SecuritySupport;
The following XInclude element:
<xi:include href="http://openjdk.java.net/xml/disclaimer.xml"/>
can be resolved using an uri entry:
can be resolved using a URI entry:
<uri name="http://openjdk.java.net/xml/disclaimer.xml" uri="file:///pathto/local/disclaimer.xml"/>
or
<uriSuffix uriSuffix="disclaimer.xml" uri="file:///pathto/local/disclaimer.xml"/>
@ -291,7 +291,7 @@ import jdk.xml.internal.SecuritySupport;
<xsd:import namespace="http://openjdk.java.net/xsd/XSDImport_person"
schemaLocation="http://openjdk.java.net/xsd/XSDImport_person.xsd"/>
can be resolved using an uri entry:
can be resolved using a URI entry:
<uri name="http://openjdk.java.net/xsd/XSDImport_person.xsd" uri="file:///pathto/local/XSDImport_person.xsd"/>
or
<uriSuffix uriSuffix="XSDImport_person.xsd" uri="file:///pathto/local/XSDImport_person.xsd"/>
@ -308,7 +308,7 @@ import jdk.xml.internal.SecuritySupport;
The following include element:
<xsd:include schemaLocation="http://openjdk.java.net/xsd/XSDInclude_person.xsd"/>
can be resolved using an uri entry:
can be resolved using a URI entry:
<uri name="http://openjdk.java.net/xsd/XSDInclude_person.xsd" uri="file:///pathto/local/XSDInclude_person.xsd"/>
or
<uriSuffix uriSuffix="XSDInclude_person.xsd" uri="file:///pathto/local/XSDInclude_person.xsd"/>
@ -323,7 +323,7 @@ import jdk.xml.internal.SecuritySupport;
The following include element:
<xsl:include href="http://openjdk.java.net/xsl/include.xsl"/>
can be resolved using an uri entry:
can be resolved using a URI entry:
<uri name="http://openjdk.java.net/xsl/include.xsl" uri="file:///pathto/local/include.xsl"/>
or
<uriSuffix uriSuffix="include.xsl" uri="file:///pathto/local/include.xsl"/>
@ -338,7 +338,7 @@ import jdk.xml.internal.SecuritySupport;
The document in the following element:
<xsl:variable name="dummy" select="document('http://openjdk.java.net/xsl/list.xml')"/>
can be resolved using an uri entry:
can be resolved using a URI entry:
<uri name="http://openjdk.java.net/xsl/list.xml" uri="file:///pathto/local/list.xml"/>
or
<uriSuffix uriSuffix="list.xml" uri="file:///pathto/local/list.xml"/>
@ -559,7 +559,7 @@ public class CatalogFeatures {
values = new String[Feature.values().length];
states = new State[Feature.values().length];
for (Feature cf : Feature.values()) {
setProperty(cf.ordinal(), State.DEFAULT, cf.defaultValue());
setProperty(cf, State.DEFAULT, cf.defaultValue());
}
//read system properties or jaxp.properties
readSystemProperties();
@ -571,52 +571,27 @@ public class CatalogFeatures {
*/
private void setProperties(Builder builder) {
builder.values.entrySet().stream().forEach((entry) -> {
setProperty(entry.getKey().ordinal(), State.APIPROPERTY, entry.getValue());
setProperty(entry.getKey(), State.APIPROPERTY, entry.getValue());
});
}
/**
* Sets the value of a property by its index, updates only if it shall override.
* Sets the value of a property, updates only if it shall override.
*
* @param index the index of the property
* @param state the state of the property
* @param value the value of the property
* @throws IllegalArgumentException if the value is invalid
*/
private void setProperty(int index, State state, String value) {
private void setProperty(Feature feature, State state, String value) {
int index = feature.ordinal();
if (value != null && value.length() != 0) {
if (index == Feature.PREFER.ordinal()) {
if (!value.equals(PREFER_SYSTEM) && !value.equals(PREFER_PUBLIC)) {
CatalogMessages.reportIAE(new Object[]{value, Feature.PREFER.name()}, null);
}
} else if (index == Feature.DEFER.ordinal()) {
if (!value.equals(DEFER_TRUE) && !value.equals(DEFER_FALSE)) {
CatalogMessages.reportIAE(new Object[]{value, Feature.DEFER.name()}, null);
}
} else if (index == Feature.RESOLVE.ordinal()) {
if (!value.equals(RESOLVE_STRICT) && !value.equals(RESOLVE_CONTINUE)
&& !value.equals(RESOLVE_IGNORE)) {
CatalogMessages.reportIAE(new Object[]{value, Feature.RESOLVE.name()}, null);
}
} else if (index == Feature.FILES.ordinal()) {
try {
String[] catalogFile = value.split(";[ ]*");
for (String temp : catalogFile) {
if (Util.verifyAndGetURI(temp, null) == null) {
CatalogMessages.reportIAE(new Object[]{value, Feature.FILES.name()}, null);
}
}
}catch (MalformedURLException | URISyntaxException | IllegalArgumentException ex) {
CatalogMessages.reportIAE(new Object[]{value, Feature.FILES.name()}, ex);
}
if (state != State.APIPROPERTY) {
Util.validateFeatureInput(feature, value);
}
if (states[index] == null || state.compareTo(states[index]) >= 0) {
values[index] = value;
states[index] = state;
}
} else {
if (state == State.SYSTEMPROPERTY || state == State.JAXPDOTPROPERTIES) {
CatalogMessages.reportIAE(new Object[]{value, Feature.values()[index].name()}, null);
}
}
}
@ -639,13 +614,13 @@ public class CatalogFeatures {
if (cf.hasSystemProperty()) {
String value = SecuritySupport.getSystemProperty(sysPropertyName);
if (value != null && !value.equals("")) {
setProperty(cf.ordinal(), State.SYSTEMPROPERTY, value);
setProperty(cf, State.SYSTEMPROPERTY, value);
return true;
}
value = SecuritySupport.readJAXPProperty(sysPropertyName);
if (value != null && !value.equals("")) {
setProperty(cf.ordinal(), State.JAXPDOTPROPERTIES, value);
setProperty(cf, State.JAXPDOTPROPERTIES, value);
return true;
}
}
@ -685,9 +660,7 @@ public class CatalogFeatures {
* property
*/
public Builder with(Feature feature, String value) {
if (value == null || value.length() == 0) {
CatalogMessages.reportIAE(new Object[]{value, feature.name()}, null);
}
Util.validateFeatureInput(feature, value);
values.put(feature, value);
return this;
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -75,7 +75,7 @@ class CatalogImpl extends GroupEntry implements Catalog {
/*
A list of catalog entry files from the input, excluding the current catalog.
Paths in the List are normalized.
URIs in the List are verified during input validation or property retrieval.
*/
List<String> inputFiles;
@ -86,43 +86,44 @@ class CatalogImpl extends GroupEntry implements Catalog {
SAXParser parser;
/**
* Construct a Catalog with specified path.
* Construct a Catalog with specified URI.
*
* @param file The path to a catalog file.
* @param uris the uri(s) to one or more catalogs
* @throws CatalogException If an error happens while parsing the specified
* catalog file.
*/
public CatalogImpl(CatalogFeatures f, String... file) throws CatalogException {
this(null, f, file);
public CatalogImpl(CatalogFeatures f, URI... uris) throws CatalogException {
this(null, f, uris);
}
/**
* Construct a Catalog with specified path.
* Construct a Catalog with specified URI.
*
* @param parent The parent catalog
* @param file The path to a catalog file.
* @param uris the uri(s) to one or more catalogs
* @throws CatalogException If an error happens while parsing the specified
* catalog file.
*/
public CatalogImpl(CatalogImpl parent, CatalogFeatures f, String... file) throws CatalogException {
public CatalogImpl(CatalogImpl parent, CatalogFeatures f, URI... uris) throws CatalogException {
super(CatalogEntryType.CATALOG, parent);
if (f == null) {
throw new NullPointerException(
formatMessage(CatalogMessages.ERR_NULL_ARGUMENT, new Object[]{"CatalogFeatures"}));
}
if (file.length > 0) {
CatalogMessages.reportNPEOnNull("The path to the catalog file", file[0]);
}
init(f);
//Path of catalog files
String[] catalogFile = file;
if (level == 0 && file.length == 0) {
String[] catalogFile = null;
if (level == 0 && uris.length == 0) {
String files = features.get(Feature.FILES);
if (files != null) {
catalogFile = files.split(";[ ]*");
catalogFile = files.split(";");
}
} else {
catalogFile = new String[uris.length];
for (int i=0; i<uris.length; i++) {
catalogFile[i] = uris[i].toASCIIString();
}
}
@ -134,10 +135,10 @@ class CatalogImpl extends GroupEntry implements Catalog {
int start = 0;
URI uri = null;
for (String temp : catalogFile) {
uri = getSystemId(temp);
uri = URI.create(temp);
start++;
if (verifyCatalogFile(uri)) {
systemId = uri.toASCIIString();
systemId = temp;
try {
baseURI = new URL(systemId);
} catch (MalformedURLException e) {
@ -293,29 +294,6 @@ class CatalogImpl extends GroupEntry implements Catalog {
}
}
/**
* Resolves the specified file path to an absolute systemId. If it is
* relative, it shall be resolved using the base or user.dir property if
* base is not specified.
*
* @param file The specified file path
* @return The systemId of the file
* @throws CatalogException if the specified file path can not be converted
* to a system id
*/
private URI getSystemId(String file) {
URI temp = null;
try {
temp = Util.verifyAndGetURI(file, baseURI);
} catch (MalformedURLException | URISyntaxException | IllegalArgumentException e) {
CatalogMessages.reportRunTimeError(CatalogMessages.ERR_INVALID_PATH,
new Object[]{file}, e);
}
return temp;
}
/**
* Returns a SAXParser instance
* @return a SAXParser instance
@ -394,7 +372,7 @@ class CatalogImpl extends GroupEntry implements Catalog {
//Check the input list
if (c == null && inputFiles != null) {
while (c == null && inputFilesIndex < inputFiles.size()) {
c = getCatalog(getSystemId(inputFiles.get(inputFilesIndex++)));
c = getCatalog(URI.create(inputFiles.get(inputFilesIndex++)));
}
}
@ -436,8 +414,8 @@ class CatalogImpl extends GroupEntry implements Catalog {
//loads catalogs from the input list
if (inputFiles != null) {
inputFiles.stream().forEach((file) -> {
getCatalog(getSystemId(file));
inputFiles.stream().forEach((uri) -> {
getCatalog(URI.create(uri));
});
}
}
@ -454,12 +432,11 @@ class CatalogImpl extends GroupEntry implements Catalog {
}
CatalogImpl c = null;
String path = uri.toASCIIString();
if (verifyCatalogFile(uri)) {
c = getLoadedCatalog(path);
c = getLoadedCatalog(uri.toASCIIString());
if (c == null) {
c = new CatalogImpl(this, features, path);
c = new CatalogImpl(this, features, uri);
c.load();
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -24,6 +24,7 @@
*/
package javax.xml.catalog;
import java.net.URI;
/**
* The Catalog Manager manages the creation of XML Catalogs and Catalog Resolvers.
@ -39,30 +40,36 @@ public final class CatalogManager {
/**
* Creates a {@code Catalog} object using the specified feature settings and
* path to one or more catalog files.
* uri(s) to one or more catalog files.
* <p>
* If {@code paths} is empty, system property {@code javax.xml.catalog.files}
* will be read to locate the initial list of catalog files.
* If {@code uris} is empty, system property {@code javax.xml.catalog.files},
* as defined in {@link CatalogFeatures}, will be read to locate the initial
* list of catalog files.
* <p>
* If more than one catalog files are specified through the paths argument or
* If multiple catalog files are specified through the {@code uris} argument or
* {@code javax.xml.catalog.files} property, the first entry is considered
* the main catalog, while others are treated as alternative catalogs after
* those referenced by the {@code nextCatalog} elements in the main catalog.
* <p>
* As specified in
* <a href="https://www.oasis-open.org/committees/download.php/14809/xml-catalogs.html#s.res.fail">
* XML Catalogs, OASIS Standard V1.1</a>, invalid path entries will be ignored.
* No error will be reported. In case all entries are invalid, the resolver
* will return as no mapping is found.
* XML Catalogs, OASIS Standard V1.1</a>, if a catalog entry is invalid, it
* is ignored. In case all entries are invalid, the resulting Catalog object
* will contain no Catalog elements. Any matching operation using the Catalog
* will return null.
*
* @param features the catalog features
* @param paths path(s) to one or more catalogs.
* @param uris uri(s) to one or more catalogs.
*
* @return an instance of a {@code Catalog}
* @throws IllegalArgumentException if either the URIs are not absolute
* or do not have a URL protocol handler for the URI scheme
* @throws CatalogException If an error occurs while parsing the catalog
* @throws SecurityException if access to the resource is denied by the security manager
*/
public static Catalog catalog(CatalogFeatures features, String... paths) {
CatalogImpl catalog = new CatalogImpl(features, paths);
public static Catalog catalog(CatalogFeatures features, URI... uris) {
Util.validateUrisSyntax(uris);
CatalogImpl catalog = new CatalogImpl(features, uris);
catalog.load();
return catalog;
}
@ -80,30 +87,36 @@ public final class CatalogManager {
/**
* Creates an instance of a {@code CatalogResolver} using the specified feature
* settings and path to one or more catalog files.
* settings and uri(s) to one or more catalog files.
* <p>
* If {@code paths} is empty, system property {@code javax.xml.catalog.files}
* will be read to locate the initial list of catalog files.
* If {@code uris} is empty, system property {@code javax.xml.catalog.files},
* as defined in {@link CatalogFeatures}, will be read to locate the initial
* list of catalog files.
* <p>
* If more than one catalog files are specified through the paths argument or
* If multiple catalog files are specified through the {@code uris} argument or
* {@code javax.xml.catalog.files} property, the first entry is considered
* the main catalog, while others are treated as alternative catalogs after
* those referenced by the {@code nextCatalog} elements in the main catalog.
* <p>
* As specified in
* <a href="https://www.oasis-open.org/committees/download.php/14809/xml-catalogs.html#s.res.fail">
* XML Catalogs, OASIS Standard V1.1</a>, invalid path entries will be ignored.
* No error will be reported. In case all entries are invalid, the resolver
* will return as no mapping is found.
* XML Catalogs, OASIS Standard V1.1</a>, if a catalog entry is invalid, it
* is ignored. In case all entries are invalid, the resulting CatalogResolver
* object will contain no valid catalog. Any resolution operation using the
* resolver therefore will return as no mapping is found. See {@link CatalogResolver}
* for the behavior when no mapping is found.
*
* @param features the catalog features
* @param paths the path(s) to one or more catalogs
* @param uris the uri(s) to one or more catalogs
*
* @return an instance of a {@code CatalogResolver}
* @throws IllegalArgumentException if either the URIs are not absolute
* or do not have a URL protocol handler for the URI scheme
* @throws CatalogException If an error occurs while parsing the catalog
* @throws SecurityException if access to the resource is denied by the security manager
*/
public static CatalogResolver catalogResolver(CatalogFeatures features, String... paths) {
Catalog catalog = catalog(features, paths);
public static CatalogResolver catalogResolver(CatalogFeatures features, URI... uris) {
Catalog catalog = catalog(features, uris);
return new CatalogResolverImpl(catalog);
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -24,10 +24,11 @@
*/
package javax.xml.catalog;
import jdk.xml.internal.SecuritySupport;
import java.net.URI;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import jdk.xml.internal.SecuritySupport;
/**
* Catalog Error messages
@ -38,6 +39,8 @@ final class CatalogMessages {
public static final String ERR_INVALID_CATALOG = "InvalidCatalog";
public static final String ERR_INVALID_ENTRY_TYPE = "InvalidEntryType";
public static final String ERR_URI_NOTABSOLUTE = "UriNotAbsolute";
public static final String ERR_URI_NOTVALIDURL = "UriNotValidUrl";
public static final String ERR_INVALID_ARGUMENT = "InvalidArgument";
public static final String ERR_NULL_ARGUMENT = "NullArgument";
public static final String ERR_CIRCULAR_REFERENCE = "CircularReference";
@ -120,7 +123,7 @@ final class CatalogMessages {
* @param name the name of the argument
* @param value the value of the argument
*/
static void reportNPEOnNull(String name, String value) {
static void reportNPEOnNull(String name, Object value) {
if (value == null) {
throw new NullPointerException(
formatMessage(ERR_NULL_ARGUMENT, new Object[]{name}));
@ -132,9 +135,9 @@ final class CatalogMessages {
* @param arguments the arguments for formating the error message
* @param cause the cause if any
*/
static void reportIAE(Object[] arguments, Throwable cause) {
static void reportIAE(String key, Object[] arguments, Throwable cause) {
throw new IllegalArgumentException(
formatMessage(ERR_INVALID_ARGUMENT, arguments), cause);
formatMessage(key, arguments), cause);
}
/**
@ -174,7 +177,7 @@ final class CatalogMessages {
/**
* Returns sanitized URI.
* @param uri an URI to be sanitized
* @param uri a URI to be sanitized
*/
static String sanitize(String uri) {
if (uri == null) {

View File

@ -31,6 +31,8 @@ InvalidEntryType = The entry type ''{0}'' is not valid.
CircularReference = Circular reference is not allowed: ''{0}''.
#errors
UriNotAbsolute = The specified URI ''{0}'' is not absolute.
UriNotValidUrl = The specified URI ''{0}'' is not a valid URL.
InvalidArgument = The specified argument ''{0}'' (case sensitive) for ''{1}'' is not valid.
NullArgument = The argument ''{0}'' can not be null.
InvalidPath = The path ''{0}'' is invalid.

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -25,10 +25,6 @@
package javax.xml.catalog;
import java.io.StringReader;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.file.Path;
import java.nio.file.Paths;
import javax.xml.catalog.BaseEntry.CatalogEntryType;
import javax.xml.parsers.SAXParser;
import javax.xml.transform.Source;
@ -94,25 +90,6 @@ class CatalogReader extends DefaultHandler implements EntityResolver, URIResolve
this.parser = parser;
}
/**
* Returns when the specified path is valid.
* @param path a path
* @return true if the path is valid, false otherwise
*/
boolean isValidPath(String path) {
boolean valid = true;
try {
Path p = Paths.get(new URI(path));
if (!p.toFile().exists()) {
valid = false;
}
} catch (URISyntaxException ex) {
valid = false;
}
return valid;
}
@Override
public void startElement(String namespaceURI,
String localName,

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -47,7 +47,7 @@ import org.xml.sax.InputSource;
* {@link javax.xml.stream.XMLResolver} and {@link org.w3c.dom.ls.LSResourceResolver}
* however, make no such distinction.
* In consistent with the existing Java API, this CatalogResolver recognizes a
* system identifier as an URI and will search both {@code system} and {@code uri}
* system identifier as a URI and will search both {@code system} and {@code uri}
* entries in a catalog in order to find a matching entry.
* <p>
* The search is started in the current catalog. If a match is found,
@ -137,9 +137,9 @@ public interface CatalogResolver extends EntityResolver, XMLResolver,
* with the specified {@code href} attribute. The {@code href} attribute will
* be used literally, with no attempt to be made absolute to the {@code base}.
* <p>
* If the value is an URN, the {@code href} attribute is recognized as a
* If the value is a URN, the {@code href} attribute is recognized as a
* {@code publicId}, and used to search {@code public} entries.
* If the value is an URI, it is taken as a {@code systemId}, and used to
* If the value is a URI, it is taken as a {@code systemId}, and used to
* search both {@code system} and {@code uri} entries.
*
*
@ -219,7 +219,7 @@ public interface CatalogResolver extends EntityResolver, XMLResolver,
* @param publicId the public identifier of the external entity being
* referenced, or {@code null} if no public identifier was
* supplied or if the resource is not an entity.
* @param systemId the system identifier, an URI reference of the
* @param systemId the system identifier, a URI reference of the
* external resource being referenced
* @param baseUri the absolute base URI, not used by the CatalogResolver
*

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -73,7 +73,7 @@ final class CatalogResolverImpl implements CatalogResolver {
systemId = Normalizer.normalizeURI(Util.getNotNullOrEmpty(systemId));
publicId = Normalizer.normalizePublicId(Normalizer.decodeURN(Util.getNotNullOrEmpty(publicId)));
//check whether systemId is an urn
//check whether systemId is a urn
if (systemId != null && systemId.startsWith(Util.URN)) {
systemId = Normalizer.decodeURN(systemId);
if (publicId != null && !publicId.equals(systemId)) {
@ -123,7 +123,7 @@ final class CatalogResolverImpl implements CatalogResolver {
return null;
}
//check whether uri is an urn
//check whether uri is a urn
if (uri != null && uri.startsWith(Util.URN)) {
String publicId = Normalizer.decodeURN(uri);
if (publicId != null) {
@ -131,7 +131,7 @@ final class CatalogResolverImpl implements CatalogResolver {
}
}
//if no match with a public id, continue search for an URI
//if no match with a public id, continue search for a URI
if (result == null) {
//remove fragment if any.
int hashPos = uri.indexOf("#");

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -25,8 +25,6 @@
package javax.xml.catalog;
import java.net.URI;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@ -217,7 +215,7 @@ class GroupEntry extends BaseEntry {
* @param systemId The system identifier of the external entity being
* referenced.
*
* @return An URI string if a mapping is found, or null otherwise.
* @return a URI string if a mapping is found, or null otherwise.
*/
public String matchSystem(String systemId) {
systemEntrySearched = true;
@ -285,7 +283,7 @@ class GroupEntry extends BaseEntry {
* @param publicId The public identifier of the external entity being
* referenced.
*
* @return An URI string if a mapping is found, or null otherwise.
* @return a URI string if a mapping is found, or null otherwise.
*/
public String matchPublic(String publicId) {
/*
@ -329,7 +327,7 @@ class GroupEntry extends BaseEntry {
*
* @param uri The URI reference of a resource.
*
* @return An URI string if a mapping is found, or null otherwise.
* @return a URI string if a mapping is found, or null otherwise.
*/
public String matchURI(String uri) {
String match = null;
@ -455,7 +453,7 @@ class GroupEntry extends BaseEntry {
delegateCatalog = getLoadedCatalog(catalogId);
if (delegateCatalog == null) {
if (verifyCatalogFile(catalogURI)) {
delegateCatalog = new CatalogImpl(catalog, features, catalogId);
delegateCatalog = new CatalogImpl(catalog, features, catalogURI);
delegateCatalog.load();
delegateCatalogs.put(catalogId, delegateCatalog);
}
@ -504,7 +502,8 @@ class GroupEntry extends BaseEntry {
}
//Ignore it if it doesn't exist
if (!Files.exists(Paths.get(catalogURI))) {
if (Util.isFileUri(catalogURI) &&
!Util.isFileUriExist(catalogURI, false)) {
return false;
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -27,7 +27,7 @@ package javax.xml.catalog;
import java.net.URL;
/**
* Represents an uriEntry entry.
* Represents a uri entry.
*
* @since 9
*/
@ -36,7 +36,7 @@ final class UriEntry extends BaseEntry {
URL uri;
/**
* Construct a group entry.
* Construct a uri entry.
* @param name The name attribute.
* @param uri The uri attribute.
*/

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -25,13 +25,20 @@
package javax.xml.catalog;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Iterator;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import static javax.xml.catalog.CatalogFeatures.DEFER_FALSE;
import static javax.xml.catalog.CatalogFeatures.DEFER_TRUE;
import javax.xml.catalog.CatalogFeatures.Feature;
import static javax.xml.catalog.CatalogFeatures.PREFER_PUBLIC;
import static javax.xml.catalog.CatalogFeatures.PREFER_SYSTEM;
import static javax.xml.catalog.CatalogFeatures.RESOLVE_CONTINUE;
import static javax.xml.catalog.CatalogFeatures.RESOLVE_IGNORE;
import static javax.xml.catalog.CatalogFeatures.RESOLVE_STRICT;
import jdk.xml.internal.SecuritySupport;
/**
@ -39,22 +46,25 @@ import jdk.xml.internal.SecuritySupport;
* @since 9
*/
class Util {
final static String URN = "urn:publicid:";
final static String PUBLICID_PREFIX = "-//";
final static String PUBLICID_PREFIX_ALT = "+//";
final static String SCHEME_FILE = "file";
final static String SCHEME_JAR = "jar";
final static String SCHEME_JARFILE = "jar:file:";
/**
* Finds an entry in the catalog that matches with the publicId or systemId.
*
* The resolution follows the following rules determined by the prefer setting:
* The resolution follows the following rules determined by the prefer
* setting:
*
* prefer "system": attempts to resolve with a system entry;
* attempts to resolve with a public entry when only
* publicId is specified.
* prefer "system": attempts to resolve with a system entry; attempts to
* resolve with a public entry when only publicId is specified.
*
* prefer "public": attempts to resolve with a system entry;
* attempts to resolve with a public entry if no matching
* system entry is found.
* prefer "public": attempts to resolve with a system entry; attempts to
* resolve with a public entry if no matching system entry is found.
*
* If no match is found, continue searching uri entries
*
@ -70,9 +80,9 @@ class Util {
catalog.reset();
if (systemId != null) {
/*
If a system identifier is specified, it is used no matter how
prefer is set.
*/
If a system identifier is specified, it is used no matter how
prefer is set.
*/
resolvedSystemId = catalog.matchSystem(systemId);
}
@ -91,7 +101,7 @@ class Util {
if (resolvedSystemId == null) {
Iterator<Catalog> iter = catalog.catalogs().iterator();
while (iter.hasNext()) {
resolvedSystemId = resolve((CatalogImpl)iter.next(), publicId, systemId);
resolvedSystemId = resolve((CatalogImpl) iter.next(), publicId, systemId);
if (resolvedSystemId != null) {
break;
}
@ -102,73 +112,112 @@ class Util {
return resolvedSystemId;
}
/**
* Resolves the specified file path to an absolute systemId. If it is
* relative, it shall be resolved using the base or user.dir property if
* base is not specified.
*
* @param file The specified file path
* @param baseURI the base URI
* @return The URI
* @throws CatalogException if the specified file path can not be converted
* to a system id
*/
static URI verifyAndGetURI(String file, URL baseURI)
throws MalformedURLException, URISyntaxException, IllegalArgumentException {
URL filepath;
URI temp;
if (file != null && file.length() > 0) {
File f = new File(file);
if (baseURI != null && !f.isAbsolute()) {
filepath = new URL(baseURI, fixSlashes(file));
temp = filepath.toURI();
} else {
temp = resolveURI(file);
}
//Paths.get may throw IllegalArgumentException
Path path = Paths.get(temp);
if (path.toFile().isFile()) {
return temp;
}
static void validateUrisSyntax(URI... uris) {
for (URI uri : uris) {
validateUriSyntax(uri);
}
}
static void validateUrisSyntax(String... uris) {
for (String uri : uris) {
validateUriSyntax(URI.create(uri));
}
return null;
}
/**
* Resolves the specified uri. If the uri is relative, makes it absolute by
* the user.dir directory.
* Validate that the URI must be absolute and a valid URL.
*
* @param uri The specified URI.
* @return The resolved URI
* Note that this method does not verify the existence of the resource. The
* Catalog standard requires that such resources be ignored.
*
* @param uri
* @throws IllegalArgumentException if the uri is not absolute and a valid
* URL
*/
static URI resolveURI(String uri) throws MalformedURLException {
if (uri == null) {
uri = "";
static void validateUriSyntax(URI uri) {
CatalogMessages.reportNPEOnNull("URI input", uri);
if (!uri.isAbsolute()) {
CatalogMessages.reportIAE(CatalogMessages.ERR_URI_NOTABSOLUTE,
new Object[]{uri}, null);
}
URI temp = null;
try {
URL url = new URL(uri);
temp = url.toURI();
} catch (MalformedURLException | URISyntaxException mue) {
File file = new File(uri);
temp = file.toURI();
// check if the scheme was valid
uri.toURL();
} catch (MalformedURLException ex) {
CatalogMessages.reportIAE(CatalogMessages.ERR_URI_NOTVALIDURL,
new Object[]{uri}, null);
}
return temp;
// verify the resource exists where possible
if (isFileUri(uri)) {
if (!isFileUriExist(uri, false)) {
CatalogMessages.reportIAE(CatalogMessages.ERR_URI_NOTVALIDURL,
new Object[]{uri}, null);
}
}
}
/**
* Replace backslashes with forward slashes. (URLs always use forward
* slashes.)
* Checks whether the URI is a file URI, including JAR file.
*
* @param sysid The input system identifier.
* @return The same system identifier with backslashes turned into forward
* slashes.
* @param uri the specified URI.
* @return true if it is a file or JAR file URI, false otherwise
*/
static String fixSlashes(String sysid) {
return sysid.replace('\\', '/');
static boolean isFileUri(URI uri) {
if (SCHEME_FILE.equals(uri.getScheme())
|| SCHEME_JAR.equals(uri.getScheme())) {
return true;
}
return false;
}
/**
* Verifies whether the file resource exists.
*
* @param uri the URI to locate the resource
* @param openJarFile a flag to indicate whether a JAR file should be
* opened. This operation may be expensive.
* @return true if the resource exists, false otherwise.
*/
static boolean isFileUriExist(URI uri, boolean openJarFile) {
if (uri != null && uri.isAbsolute()) {
if (null != uri.getScheme()) {
switch (uri.getScheme()) {
case SCHEME_FILE:
String path = uri.getPath();
File f1 = new File(path);
if (f1.isFile()) {
return true;
}
break;
case SCHEME_JAR:
String tempUri = uri.toString();
int pos = tempUri.indexOf("!");
if (pos < 0) {
return false;
}
if (openJarFile) {
String jarFile = tempUri.substring(SCHEME_JARFILE.length(), pos);
String entryName = tempUri.substring(pos + 2);
try {
JarFile jf = new JarFile(jarFile);
JarEntry je = jf.getJarEntry(entryName);
if (je != null) {
return true;
}
} catch (IOException ex) {
return false;
}
} else {
return true;
}
break;
}
}
}
return false;
}
/**
@ -187,11 +236,12 @@ class Util {
}
/**
* Checks whether the specified string is null or empty, returns the original
* string with leading and trailing spaces removed if not.
* Checks whether the specified string is null or empty, returns the
* original string with leading and trailing spaces removed if not.
*
* @param test the string to be tested
* @return the original string with leading and trailing spaces removed,
* or null if it is null or empty
* @return the original string with leading and trailing spaces removed, or
* null if it is null or empty
*
*/
static String getNotNullOrEmpty(String test) {
@ -206,4 +256,39 @@ class Util {
}
}
}
/**
* Validates the input for features.
*
* @param f the feature
* @param value the value
* @throws IllegalArgumentException if the value is invalid for the feature
*/
static void validateFeatureInput(Feature f, String value) {
CatalogMessages.reportNPEOnNull(f.name(), value);
if (value.length() == 0) {
CatalogMessages.reportIAE(CatalogMessages.ERR_INVALID_ARGUMENT,
new Object[]{value, f.name()}, null);
}
if (f == Feature.PREFER) {
if (!value.equals(PREFER_SYSTEM) && !value.equals(PREFER_PUBLIC)) {
CatalogMessages.reportIAE(CatalogMessages.ERR_INVALID_ARGUMENT,
new Object[]{value, Feature.PREFER.name()}, null);
}
} else if (f == Feature.DEFER) {
if (!value.equals(DEFER_TRUE) && !value.equals(DEFER_FALSE)) {
CatalogMessages.reportIAE(CatalogMessages.ERR_INVALID_ARGUMENT,
new Object[]{value, Feature.DEFER.name()}, null);
}
} else if (f == Feature.RESOLVE) {
if (!value.equals(RESOLVE_STRICT) && !value.equals(RESOLVE_CONTINUE)
&& !value.equals(RESOLVE_IGNORE)) {
CatalogMessages.reportIAE(CatalogMessages.ERR_INVALID_ARGUMENT,
new Object[]{value, Feature.RESOLVE.name()}, null);
}
} else if (f == Feature.FILES) {
Util.validateUrisSyntax(value.split(";"));
}
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -81,7 +81,7 @@ public class SpecifyCatalogTest {
@Test
public void specifyCatalogViaSysProps() {
setSystemProperty(FEATURE_FILES,
getCatalogPath("specifyCatalog-sysProps.xml"));
getCatalogPath("specifyCatalog-sysProps.xml").toASCIIString());
checkResolutionOnEntityResolver(catalogResolver((String[]) null),
"http://local/base/dtd/docSysPropsSys.dtd");
@ -107,6 +107,6 @@ public class SpecifyCatalogTest {
}
private static CatalogFeatures createFeature(String catalogName) {
return builder().with(FILES, getCatalogPath(catalogName)).build();
return builder().with(FILES, getCatalogPath(catalogName).toASCIIString()).build();
}
}

View File

@ -0,0 +1 @@
<dummy />

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -25,17 +25,16 @@ package catalog;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.xml.catalog.CatalogFeatures;
import javax.xml.catalog.CatalogManager;
import javax.xml.catalog.CatalogResolver;
import jaxp.library.JAXPTestUtilities;
/*
@ -115,20 +114,20 @@ final class CatalogTestUtils {
}
// Gets the paths of the specified catalogs.
private static String[] getCatalogPaths(String... catalogNames) {
private static URI[] getCatalogPaths(String... catalogNames) {
return catalogNames == null
? null
: Stream.of(catalogNames).map(
catalogName -> getCatalogPath(catalogName)).collect(
Collectors.toList()).toArray(new String[0]);
Collectors.toList()).toArray(new URI[0]);
}
// Gets the paths of the specified catalogs.
static String getCatalogPath(String catalogName) {
static URI getCatalogPath(String catalogName) {
return catalogName == null
? null
: JAXPTestUtilities.getPathByClassName(CatalogTestUtils.class, "catalogFiles")
+ catalogName;
: Paths.get(JAXPTestUtilities.getPathByClassName(CatalogTestUtils.class, "catalogFiles")
+ catalogName).toUri();
}
/* ********** jaxp.properties ********** */

View File

@ -0,0 +1,141 @@
/*
* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package jaxp.library;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.Set;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.jar.JarOutputStream;
import java.util.jar.Manifest;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* This class consists exclusively of static utility methods that are useful
* for creating and manipulating JAR files.
*/
public final class JarUtils {
private JarUtils() { }
/**
* Creates a JAR file.
*
* Equivalent to {@code jar cfm <jarfile> <manifest> -C <dir> file...}
*
* The input files are resolved against the given directory. Any input
* files that are directories are processed recursively.
*/
public static void createJarFile(Path jarfile, Manifest man, Path dir, Path... file)
throws IOException
{
// create the target directory
Path parent = jarfile.getParent();
if (parent != null)
Files.createDirectories(parent);
List<Path> entries = new ArrayList<>();
for (Path entry : file) {
Files.find(dir.resolve(entry), Integer.MAX_VALUE,
(p, attrs) -> attrs.isRegularFile())
.map(e -> dir.relativize(e))
.forEach(entries::add);
}
try (OutputStream out = Files.newOutputStream(jarfile);
JarOutputStream jos = new JarOutputStream(out))
{
if (man != null) {
JarEntry je = new JarEntry(JarFile.MANIFEST_NAME);
jos.putNextEntry(je);
man.write(jos);
jos.closeEntry();
}
for (Path entry : entries) {
String name = toJarEntryName(entry);
jos.putNextEntry(new JarEntry(name));
Files.copy(dir.resolve(entry), jos);
jos.closeEntry();
}
}
}
/**
* Creates a JAR file.
*
* Equivalent to {@code jar cf <jarfile> -C <dir> file...}
*
* The input files are resolved against the given directory. Any input
* files that are directories are processed recursively.
*/
public static void createJarFile(Path jarfile, Path dir, Path... file)
throws IOException
{
createJarFile(jarfile, null, dir, file);
}
/**
* Creates a JAR file.
*
* Equivalent to {@code jar cf <jarfile> -C <dir> file...}
*
* The input files are resolved against the given directory. Any input
* files that are directories are processed recursively.
*/
public static void createJarFile(Path jarfile, Path dir, String... input)
throws IOException
{
Path[] paths = Stream.of(input).map(Paths::get).toArray(Path[]::new);
createJarFile(jarfile, dir, paths);
}
/**
* Creates a JAR file from the contents of a directory.
*
* Equivalent to {@code jar cf <jarfile> -C <dir> .}
*/
public static void createJarFile(Path jarfile, Path dir) throws IOException {
createJarFile(jarfile, dir, Paths.get("."));
}
/**
* Map a file path to the equivalent name in a JAR file
*/
private static String toJarEntryName(Path file) {
Path normalized = file.normalize();
return normalized.subpath(0, normalized.getNameCount()) // drop root
.toString()
.replace(File.separatorChar, '/');
}
}

View File

@ -0,0 +1,177 @@
/*
* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package jaxp.library;
import com.sun.net.httpserver.Headers;
import com.sun.net.httpserver.HttpContext;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.URI;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* A simple HTTP Server
*/
public class SimpleHttpServer {
HttpServer _httpserver;
ExecutorService _executor;
String _address;
String _context, _docroot;
int _port;
public SimpleHttpServer(String context, String docroot) {
//let the system pick up an ephemeral port in a bind operation
this(0, context, docroot);
}
public SimpleHttpServer(int port, String context, String docroot) {
_port = port;
_context = context;
_docroot = docroot;
}
public void start() {
MyHttpHandler handler = new MyHttpHandler(_docroot);
InetSocketAddress addr = new InetSocketAddress(_port);
try {
_httpserver = HttpServer.create(addr, 0);
} catch (IOException ex) {
throw new RuntimeException("cannot create httpserver", ex);
}
//TestHandler is mapped to /test
HttpContext ctx = _httpserver.createContext(_context, handler);
_executor = Executors.newCachedThreadPool();
_httpserver.setExecutor(_executor);
_httpserver.start();
_address = "http://localhost:" + _httpserver.getAddress().getPort();
}
public void stop() {
_httpserver.stop(2);
_executor.shutdown();
}
public String getAddress() {
return _address;
}
static class MyHttpHandler implements HttpHandler {
String _docroot;
public MyHttpHandler(String docroot) {
_docroot = docroot;
}
public void handle(HttpExchange t)
throws IOException {
InputStream is = t.getRequestBody();
Headers map = t.getRequestHeaders();
Headers rmap = t.getResponseHeaders();
OutputStream os = t.getResponseBody();
URI uri = t.getRequestURI();
String path = uri.getPath();
while (is.read() != -1) ;
is.close();
File f = new File(_docroot, path);
if (!f.exists()) {
notfound(t, path);
return;
}
String method = t.getRequestMethod();
if (method.equals("HEAD")) {
rmap.set("Content-Length", Long.toString(f.length()));
t.sendResponseHeaders(200, -1);
t.close();
} else if (!method.equals("GET")) {
t.sendResponseHeaders(405, -1);
t.close();
return;
}
if (path.endsWith(".html") || path.endsWith(".htm")) {
rmap.set("Content-Type", "text/html");
} else {
rmap.set("Content-Type", "text/plain");
}
t.sendResponseHeaders (200, f.length());
FileInputStream fis = new FileInputStream(f);
int count = 0;
try {
byte[] buf = new byte[16 * 1024];
int len;
while ((len = fis.read(buf)) != -1) {
os.write(buf, 0, len);
count += len;
}
} catch (IOException e) {
e.printStackTrace();
}
fis.close();
os.close();
}
void moved(HttpExchange t) throws IOException {
Headers req = t.getRequestHeaders();
Headers map = t.getResponseHeaders();
URI uri = t.getRequestURI();
String host = req.getFirst("Host");
String location = "http://" + host + uri.getPath() + "/";
map.set("Content-Type", "text/html");
map.set("Location", location);
t.sendResponseHeaders(301, -1);
t.close();
}
void notfound(HttpExchange t, String p) throws IOException {
t.getResponseHeaders().set("Content-Type", "text/html");
t.sendResponseHeaders(404, 0);
OutputStream os = t.getResponseBody();
String s = "<h2>File not found</h2>";
s = s + p + "<p>";
os.write(s.getBytes());
os.close();
t.close();
}
}
}

View File

@ -0,0 +1,76 @@
/*
* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package catalog;
import java.net.URI;
import javax.xml.catalog.CatalogFeatures;
import javax.xml.catalog.CatalogManager;
import javax.xml.catalog.CatalogResolver;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
import org.xml.sax.InputSource;
import static jaxp.library.JAXPTestUtilities.tryRunWithAllPerm;
/*
* @test
* @bug 8171243
* @library /javax/xml/jaxp/libs /javax/xml/jaxp/unittest
* @run testng/othervm -DrunSecMngr=true catalog.CatalogAccessTest
* @summary the Catalog API grants no privilege to external resources. This test
* verifies that SecurityException will be thrown if access to resources is denied
* by the security manager.
*/
@Listeners({jaxp.library.BasePolicy.class})
public class CatalogAccessTest {
static final CatalogFeatures FEATURES = CatalogFeatures.builder().
with(CatalogFeatures.Feature.PREFER, "system").build();
/*
* Verifies that the SecurityException is thrown if access to the resource is
* denied by the security manager.
*/
@Test(dataProvider = "accessTest", expectedExceptions = SecurityException.class)
public void testSecurity(String cfile, String sysId, String pubId) throws Exception {
CatalogResolver cr = CatalogManager.catalogResolver(FEATURES, URI.create(cfile));
InputSource is = cr.resolveEntity(pubId, sysId);
Assert.fail("Failed to throw SecurityException");
}
/*
DataProvider: used for SecurityException testing
Data columns:
catalog uri, systemId, publicId
*/
@DataProvider(name = "accessTest")
Object[][] getDataForAccessTest() throws Exception {
String systemId = "http://www.sys00test.com/rewrite.dtd";
String publicId = "PUB-404";
String urlFile = tryRunWithAllPerm(() ->
getClass().getResource("rewriteSystem_id.xml").toExternalForm());
return new Object[][]{
{urlFile, systemId, publicId}
};
}
}

View File

@ -0,0 +1,282 @@
/*
* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package catalog;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.URI;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import static java.nio.file.StandardOpenOption.APPEND;
import static java.nio.file.StandardOpenOption.CREATE;
import javax.xml.catalog.Catalog;
import javax.xml.catalog.CatalogException;
import javax.xml.catalog.CatalogFeatures;
import javax.xml.catalog.CatalogManager;
import javax.xml.catalog.CatalogResolver;
import static jaxp.library.JAXPTestUtilities.getSystemProperty;
import jaxp.library.JarUtils;
import jaxp.library.SimpleHttpServer;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
import org.xml.sax.InputSource;
/*
* @test
* @bug 8151154 8171243
* @library /javax/xml/jaxp/libs /javax/xml/jaxp/unittest
* @run testng/othervm catalog.CatalogFileInputTest
* @summary Verifies that the Catalog API accepts valid URIs only;
Verifies that the CatalogFeatures' builder throws
* IllegalArgumentException on invalid file inputs.
* This test was splitted from CatalogTest.java due to
* JDK-8168968, it has to only run without SecurityManager
* because an ACE will be thrown for invalid path.
*/
@Listeners({jaxp.library.FilePolicy.class, jaxp.library.NetAccessPolicy.class})
public class CatalogFileInputTest extends CatalogSupportBase {
static final CatalogFeatures FEATURES = CatalogFeatures.builder().
with(CatalogFeatures.Feature.PREFER, "system").build();
static String USER_DIR = getSystemProperty("user.dir");
static String CLS_DIR = getSystemProperty("test.classes");
static String SRC_DIR = System.getProperty("test.src");
static String JAR_CONTENT = "META-INF";
final static String SCHEME_JARFILE = "jar:";
static final String REMOTE_FILE_LOCATION = "/jar/META-INF";
static final String DOCROOT = SRC_DIR;
static final String TESTCONTEXT = REMOTE_FILE_LOCATION; //mapped to local file path
SimpleHttpServer _httpserver;
String _remoteFilePath;
/*
* Initializing fields
*/
@BeforeClass
public void setUpClass() throws Exception {
super.setUp();
// set up HttpServer
_httpserver = new SimpleHttpServer(TESTCONTEXT, DOCROOT);
_httpserver.start();
_remoteFilePath = _httpserver.getAddress() + REMOTE_FILE_LOCATION;
}
@AfterClass
protected void tearDown() throws Exception {
if (_httpserver != null) {
_httpserver.stop();
}
}
/*
* Verifies that the Catalog can be created with file system paths including JAR
* and http URL, and used to resolve a systemId as expected.
*/
@Test(dataProvider = "acceptedURI")
public void testMatch(String uri, String sysId, String pubId,
String expectedId, String msg) throws Exception {
CatalogResolver cr = CatalogManager.catalogResolver(FEATURES, URI.create(uri));
InputSource is = cr.resolveEntity(pubId, sysId);
Assert.assertNotNull(is, msg);
Assert.assertEquals(expectedId, is.getSystemId(), msg);
}
@Test(dataProvider = "invalidCatalog")
public void testEmptyCatalog(String uri, String publicId, String msg) {
Catalog c = CatalogManager.catalog(FEATURES, uri != null? URI.create(uri) : null);
Assert.assertNull(c.matchSystem(publicId), msg);
}
@Test(dataProvider = "invalidCatalog", expectedExceptions = CatalogException.class)
public void testCatalogResolverWEmptyCatalog(String uri, String publicId, String msg) {
CatalogResolver cr = CatalogManager.catalogResolver(
CatalogFeatures.builder().with(CatalogFeatures.Feature.RESOLVE, "strict").build(),
uri != null? URI.create(uri) : null);
InputSource is = cr.resolveEntity(publicId, "");
}
@Test(dataProvider = "invalidCatalog")
public void testCatalogResolverWEmptyCatalog1(String uri, String publicId, String msg) {
CatalogResolver cr = CatalogManager.catalogResolver(
CatalogFeatures.builder().with(CatalogFeatures.Feature.RESOLVE, "continue").build(),
uri != null? URI.create(uri) : null);
Assert.assertNull(cr.resolveEntity(publicId, ""), msg);
}
@Test(dataProvider = "invalidInput", expectedExceptions = IllegalArgumentException.class)
public void testFileInput(String file) {
CatalogFeatures features = CatalogFeatures.builder()
.with(CatalogFeatures.Feature.FILES, file)
.build();
}
@Test(dataProvider = "invalidInput", expectedExceptions = IllegalArgumentException.class)
public void testInvalidUri(String file) {
CatalogResolver cr = CatalogManager.catalogResolver(FEATURES, file != null? URI.create(file) : null);
}
@Test(dataProvider = "invalidInput", expectedExceptions = IllegalArgumentException.class)
public void testInvalidUri1(String file) {
Catalog c = CatalogManager.catalog(FEATURES, file != null? URI.create(file) : null);
System.err.println("Catalog =" + c);
}
@Test(expectedExceptions = NullPointerException.class)
public void testNullFileInput() {
CatalogFeatures features = CatalogFeatures.builder()
.with(CatalogFeatures.Feature.FILES, null)
.build();
}
@Test(expectedExceptions = NullPointerException.class)
public void testNullUri() {
URI uri = null;
CatalogResolver cr = CatalogManager.catalogResolver(FEATURES, uri);
}
@Test(expectedExceptions = NullPointerException.class)
public void testNullUri1() {
URI uri = null;
Catalog c = CatalogManager.catalog(FEATURES, uri);
}
String systemId = "http://www.sys00test.com/rewrite.dtd";
String publicId = "PUB-404";
String expected = "http://www.groupxmlbase.com/dtds/rewrite.dtd";
String errMsg = "Relative rewriteSystem with xml:base at group level failed";
/*
DataProvider: used to verify CatalogResolver's resolveEntity function.
Data columns:
catalog, systemId, publicId, expectedUri, msg
*/
@DataProvider(name = "acceptedURI")
Object[][] getData() throws Exception {
String filename = "rewriteSystem_id.xml";
String urlFile = getClass().getResource(filename).toExternalForm();
String urlHttp = _remoteFilePath + "/jax-ws-catalog.xml";
String remoteXSD = _remoteFilePath + "/catalog/ws-addr.xsd";
File file = new File(CLS_DIR + "/JDK8171243.jar!/META-INF/jax-ws-catalog.xml");
String jarPath = SCHEME_JARFILE + file.toURI().toString();
String xsd = jarPath.substring(0, jarPath.lastIndexOf("/")) + "/catalog/ws-addr.xsd";
// create JAR file
try {
JarUtils.createJarFile(Paths.get(CLS_DIR + "/JDK8171243.jar"),
Paths.get(SRC_DIR + "/jar"), JAR_CONTENT);
} catch (IOException ex) {
Assert.fail("Failed to create JAR: " + ex.getMessage());
}
return new Object[][]{
// URL
{urlFile, systemId, publicId, expected, errMsg},
{urlHttp, "http://www.w3.org/2006/03/addressing/ws-addr.xsd", "", remoteXSD, "http test failed."},
// JAR file
{jarPath, "http://www.w3.org/2006/03/addressing/ws-addr.xsd", "", xsd, "jar file test failed."},
};
}
/*
* DataProvider: invalid catalog result in empty catalog
* Note: the difference from invalidInput is that invalidInput is syntactically
* rejected with an IAE.
*/
@DataProvider(name = "invalidCatalog")
public Object[][] getInvalidCatalog() throws Exception {
String catalogUri = getClass().getResource("catalog_invalid.xml").toExternalForm();
return new Object[][]{
{catalogUri, "-//W3C//DTD XHTML 1.0 Strict//EN",
"The catalog is invalid, attempting to match the public entry shall return null."}
};
}
/*
* DataProvider: a list of invalid inputs, expects IAE
* Note: exclude null since NPE would have been expected
*/
@DataProvider(name = "invalidInput")
public Object[][] getFiles() throws Exception {
String filename = "rewriteSystem_id.xml";
copyFile(Paths.get(SRC_DIR + "/" + filename), Paths.get(filename));
String absolutePath = getClass().getResource(filename).getFile();
return new Object[][]{
{""},
{"file:a/b\\c"},
{"file:/../../.."},
{"c:/te:t"},
{"c:/te?t"},
{"c/te*t"},
{"in|valid.txt"},
{"shema:invalid.txt"},
// relative file path
{filename},
// absolute file path
{absolutePath}
};
}
/*
DataProvider: a list of invalid inputs
*/
@DataProvider(name = "nullTest")
public Object[][] getNull() throws Exception {
return new Object[][]{
{null},
};
}
void copyFile(Path src, Path target) throws Exception {
try (InputStream in = Files.newInputStream(src);
BufferedReader reader
= new BufferedReader(new InputStreamReader(in));
OutputStream out = new BufferedOutputStream(
Files.newOutputStream(target, CREATE, APPEND));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(out))) {
String line = null;
while ((line = reader.readLine()) != null) {
bw.write(line);
}
} catch (IOException x) {
throw new Exception(x.getMessage());
}
}
}

View File

@ -1,66 +0,0 @@
/*
* Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package catalog;
import javax.xml.catalog.CatalogFeatures;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
/*
* @test
* @bug 8151154
* @run testng/othervm catalog.CatalogInvalidPathTest
* @summary Verifies that the CatalogFeatures' builder throws
* IllegalArgumentException on invalid file inputs.
* This test was splitted from CatalogTest.java due to
* JDK-8168968, it has to only run without SecurityManager
* because an ACE will be thrown for invalid path.
*/
public class CatalogInvalidPathTest {
/*
DataProvider: for testing the verification of file paths by
the CatalogFeatures builder
*/
@DataProvider(name = "invalidPaths")
public Object[][] getFiles() {
return new Object[][]{
{null},
{""},
{"file:a/b\\c"},
{"file:/../../.."},
{"c:/te:t"},
{"c:/te?t"},
{"c/te*t"},
{"in|valid.txt"},
{"shema:invalid.txt"},
};
}
@Test(dataProvider = "invalidPaths", expectedExceptions = IllegalArgumentException.class)
public void testFileInput(String file) {
CatalogFeatures features = CatalogFeatures.builder()
.with(CatalogFeatures.Feature.FILES, file)
.build();
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -35,6 +35,13 @@ import java.io.Reader;
import java.io.StringReader;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.nio.file.Paths;
import java.security.CodeSource;
import java.security.Permission;
import java.security.PermissionCollection;
import java.security.Permissions;
import java.security.Policy;
import java.security.ProtectionDomain;
import javax.xml.XMLConstants;
import javax.xml.catalog.CatalogFeatures;
import javax.xml.catalog.CatalogResolver;
@ -133,8 +140,8 @@ public class CatalogSupportBase {
dtd_system = filepath + "system.dtd";
dtd_systemResolved = "<!ENTITY system \"resolved by an EntityHandler, rather than a Catalog\">";
xml_catalog = filepath + "CatalogSupport.xml";
xml_bogus_catalog = filepath + "CatalogSupport_bogus.xml";
xml_catalog = Paths.get(filepath + "CatalogSupport.xml").toUri().toASCIIString();
xml_bogus_catalog = Paths.get(filepath + "CatalogSupport_bogus.xml").toUri().toASCIIString();
xml_xInclude = "<?xml version=\"1.0\"?>\n" +
"<xinclude:include xmlns:xinclude=\"http://www.w3.org/2001/XInclude\"\n" +
@ -997,4 +1004,35 @@ public class CatalogSupportBase {
return null;
}
}
/**
* Simple policy implementation that grants a set of permissions to all code
* sources and protection domains.
*/
static class SimplePolicy extends Policy {
private final Permissions perms;
public SimplePolicy(Permission... permissions) {
perms = new Permissions();
for (Permission permission : permissions) {
perms.add(permission);
}
}
@Override
public PermissionCollection getPermissions(CodeSource cs) {
return perms;
}
@Override
public PermissionCollection getPermissions(ProtectionDomain pd) {
return perms;
}
@Override
public boolean implies(ProtectionDomain pd, Permission p) {
return perms.implies(p);
}
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -22,17 +22,14 @@
*/
package catalog;
import static jaxp.library.JAXPTestUtilities.clearSystemProperty;
import static jaxp.library.JAXPTestUtilities.setSystemProperty;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
import java.io.StringWriter;
import java.net.URI;
import java.nio.file.Paths;
import javax.xml.XMLConstants;
import javax.xml.catalog.Catalog;
import javax.xml.catalog.CatalogException;
@ -55,7 +52,8 @@ import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
import static jaxp.library.JAXPTestUtilities.clearSystemProperty;
import static jaxp.library.JAXPTestUtilities.setSystemProperty;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
@ -95,10 +93,10 @@ public class CatalogTest extends CatalogSupportBase {
* CatalogException is thrown.
*/
@Test(dataProvider = "getFeatures", expectedExceptions = CatalogException.class)
public void testCircularRef(CatalogFeatures cf, String xml) {
public void testCircularRef(CatalogFeatures cf, String xml) throws Exception {
CatalogResolver catalogResolver = CatalogManager.catalogResolver(
cf,
getClass().getResource(xml).getFile());
getClass().getResource(xml).toURI());
catalogResolver.resolve("anyuri", "");
}
@ -108,14 +106,14 @@ public class CatalogTest extends CatalogSupportBase {
*/
@DataProvider(name = "getFeatures")
public Object[][] getFeatures() {
String self = "catalogReferCircle-itself.xml";
String left = "catalogReferCircle-left.xml";
return new Object[][]{
{CatalogFeatures.builder().with(CatalogFeatures.Feature.DEFER, "false").build(),
"catalogReferCircle-itself.xml"},
{CatalogFeatures.defaults(), "catalogReferCircle-itself.xml"},
{CatalogFeatures.builder().with(CatalogFeatures.Feature.DEFER, "false").build(),
"catalogReferCircle-left.xml"},
{CatalogFeatures.defaults(), "catalogReferCircle-left.xml"},};
{CatalogFeatures.builder().with(CatalogFeatures.Feature.DEFER, "false").build(), self},
{CatalogFeatures.defaults(), self},
{CatalogFeatures.builder().with(CatalogFeatures.Feature.DEFER, "false").build(), left},
{CatalogFeatures.defaults(), left}
};
}
/*
@ -134,7 +132,7 @@ public class CatalogTest extends CatalogSupportBase {
* Expected: the parser returns the expected string.
*/
@Test(dataProvider = "supportXMLResolver")
public void supportEntityResolver(String catalogFile, String xml, String expected) throws Exception {
public void supportEntityResolver(URI catalogFile, String xml, String expected) throws Exception {
String xmlSource = getClass().getResource(xml).getFile();
CatalogResolver cr = CatalogManager.catalogResolver(CatalogFeatures.defaults(), catalogFile);
@ -150,7 +148,7 @@ public class CatalogTest extends CatalogSupportBase {
* Expected: the parser returns the expected string.
*/
@Test(dataProvider = "supportXMLResolver")
public void supportXMLResolver(String catalogFile, String xml, String expected) throws Exception {
public void supportXMLResolver(URI catalogFile, String xml, String expected) throws Exception {
String xmlSource = getClass().getResource(xml).getFile();
CatalogResolver cr = CatalogManager.catalogResolver(CatalogFeatures.defaults(), catalogFile);
@ -159,7 +157,7 @@ public class CatalogTest extends CatalogSupportBase {
xifactory.setProperty(XMLInputFactory.IS_COALESCING, true);
xifactory.setProperty(XMLInputFactory.RESOLVER, cr);
File file = new File(xmlSource);
String systemId = file.toURI().toString();
String systemId = file.toURI().toASCIIString();
InputStream entityxml = new FileInputStream(file);
XMLStreamReader streamReader = xifactory.createXMLStreamReader(systemId, entityxml);
String result = null;
@ -183,7 +181,7 @@ public class CatalogTest extends CatalogSupportBase {
* Fail: throws Exception if references are not resolved (by the CatalogResolver)
*/
@Test(dataProvider = "supportLSResourceResolver")
public void supportLSResourceResolver(String catalogFile, Source schemaSource) throws SAXException {
public void supportLSResourceResolver(URI catalogFile, Source schemaSource) throws SAXException {
CatalogResolver cr = CatalogManager.catalogResolver(CatalogFeatures.defaults(), catalogFile);
@ -199,7 +197,7 @@ public class CatalogTest extends CatalogSupportBase {
* Fail: throws Exception if references are not resolved (by the CatalogResolver)
*/
@Test(dataProvider = "supportLSResourceResolver1")
public void supportLSResourceResolver1(String catalogFile, Source source) throws Exception {
public void supportLSResourceResolver1(URI catalogFile, Source source) throws Exception {
CatalogResolver cr = CatalogManager.catalogResolver(CatalogFeatures.defaults(), catalogFile);
@ -215,7 +213,7 @@ public class CatalogTest extends CatalogSupportBase {
* Fail: throws Exception if references are not resolved (by the CatalogResolver)
*/
@Test(dataProvider = "supportURIResolver")
public void supportURIResolver(String catalogFile, Source xsl, Source xml, String expected) throws Exception {
public void supportURIResolver(URI catalogFile, Source xsl, Source xml, String expected) throws Exception {
CatalogResolver cr = CatalogManager.catalogResolver(CatalogFeatures.defaults(), catalogFile);
@ -235,9 +233,9 @@ public class CatalogTest extends CatalogSupportBase {
catalog filepath, xml source file, expected result
*/
@DataProvider(name = "supportXMLResolver")
public Object[][] supportXMLResolver() {
String catalogFile = getClass().getResource("catalog.xml").getFile();
String catalogFileUri = getClass().getResource("catalog_uri.xml").getFile();
public Object[][] supportXMLResolver() throws Exception {
URI catalogFile = getClass().getResource("catalog.xml").toURI();
URI catalogFileUri = getClass().getResource("catalog_uri.xml").toURI();
return new Object[][]{
{catalogFile, "system.xml", "Test system entry"},
@ -263,9 +261,9 @@ public class CatalogTest extends CatalogSupportBase {
catalog filepath, schema source file
*/
@DataProvider(name = "supportLSResourceResolver")
public Object[][] supportLSResourceResolver() {
String catalogFile = getClass().getResource("CatalogSupport.xml").getFile();
String catalogFileUri = getClass().getResource("CatalogSupport_uri.xml").getFile();
public Object[][] supportLSResourceResolver() throws Exception {
URI catalogFile = getClass().getResource("CatalogSupport.xml").toURI();
URI catalogFileUri = getClass().getResource("CatalogSupport_uri.xml").toURI();
/*
* XMLSchema.xsd has a reference to XMLSchema.dtd which in turn refers to
@ -287,9 +285,9 @@ public class CatalogTest extends CatalogSupportBase {
catalog filepath, source file
*/
@DataProvider(name = "supportLSResourceResolver1")
public Object[][] supportLSResourceResolver1() {
String catalogFile = getClass().getResource("CatalogSupport.xml").getFile();
String catalogFileUri = getClass().getResource("CatalogSupport_uri.xml").getFile();
public Object[][] supportLSResourceResolver1() throws Exception {
URI catalogFile = getClass().getResource("CatalogSupport.xml").toURI();
URI catalogFileUri = getClass().getResource("CatalogSupport_uri.xml").toURI();
/*
* val_test.xml has a reference to system.dtd and val_test.xsd
@ -310,9 +308,9 @@ public class CatalogTest extends CatalogSupportBase {
catalog filepath, xsl source, xml source file
*/
@DataProvider(name = "supportURIResolver")
public Object[][] supportURIResolver() {
String catalogFile = getClass().getResource("CatalogSupport.xml").getFile();
String catalogFileUri = getClass().getResource("CatalogSupport_uri.xml").getFile();
public Object[][] supportURIResolver() throws Exception {
URI catalogFile = getClass().getResource("CatalogSupport.xml").toURI();
URI catalogFileUri = getClass().getResource("CatalogSupport_uri.xml").toURI();
SAXSource xslSource = new SAXSource(new InputSource(new File(xsl_doc).toURI().toASCIIString()));
/*
@ -353,8 +351,9 @@ public class CatalogTest extends CatalogSupportBase {
* other cases in that test.
*/
@Test(dataProvider = "resolveUri")
public void testMatch1(String cFile, String href, String expectedFile, String expectedUri, String msg) {
String catalogFile = getClass().getResource(cFile).getFile();
public void testMatch1(String cFile, String href, String expectedFile,
String expectedUri, String msg) throws Exception {
URI catalogFile = getClass().getResource(cFile).toURI();
CatalogResolver cur = CatalogManager.catalogResolver(CatalogFeatures.defaults(), catalogFile);
Source source = cur.resolve(href, null);
Assert.assertNotNull(source, "Source returned is null");
@ -368,15 +367,16 @@ public class CatalogTest extends CatalogSupportBase {
*/
@Test(dataProvider = "hierarchyOfCatFilesData")
public void hierarchyOfCatFiles2(String systemId, String expectedUri) {
String file1 = getClass().getResource("first_cat.xml").getFile();
String file2 = getClass().getResource("second_cat.xml").getFile();
String file1 = getClass().getResource("first_cat.xml").toExternalForm();
String file2 = getClass().getResource("second_cat.xml").toExternalForm();
String files = file1 + ";" + file2;
try {
setSystemProperty(KEY_FILES, files);
CatalogResolver catalogResolver = CatalogManager.catalogResolver(CatalogFeatures.defaults());
String sysId = catalogResolver.resolveEntity(null, systemId).getSystemId();
Assert.assertEquals(sysId, Paths.get(filepath + expectedUri).toUri().toString().replace("///", "/"), "System ID match not right");
Assert.assertEquals(sysId, Paths.get(filepath + expectedUri).toUri().toString().replace("///", "/"),
"System ID match not right");
} finally {
clearSystemProperty(KEY_FILES);
}
@ -390,8 +390,9 @@ public class CatalogTest extends CatalogSupportBase {
* expected.
*/
@Test(dataProvider = "resolveEntity")
public void testMatch1(String cfile, String prefer, String sysId, String pubId, String expectedUri, String expectedFile, String msg) {
String catalogFile = getClass().getResource(cfile).getFile();
public void testMatch1(String cfile, String prefer, String sysId, String pubId,
String expectedUri, String expectedFile, String msg) throws Exception {
URI catalogFile = getClass().getResource(cfile).toURI();
CatalogFeatures features = CatalogFeatures.builder().with(CatalogFeatures.Feature.PREFER, prefer).build();
CatalogResolver catalogResolver = CatalogManager.catalogResolver(features, catalogFile);
InputSource is = catalogResolver.resolveEntity(pubId, sysId);
@ -406,9 +407,12 @@ public class CatalogTest extends CatalogSupportBase {
* results as expected.
*/
@Test(dataProvider = "matchWithPrefer")
public void matchWithPrefer(String prefer, String cfile, String publicId, String systemId, String expected) {
String catalogFile = getClass().getResource(cfile).getFile();
Catalog c = CatalogManager.catalog(CatalogFeatures.builder().with(CatalogFeatures.Feature.PREFER, prefer).build(), catalogFile);
public void matchWithPrefer(String prefer, String cfile, String publicId,
String systemId, String expected) throws Exception {
URI catalogFile = getClass().getResource(cfile).toURI();
Catalog c = CatalogManager.catalog(
CatalogFeatures.builder().with(CatalogFeatures.Feature.PREFER, prefer).build(),
catalogFile);
String result;
if (publicId != null && publicId.length() > 0) {
result = c.matchPublic(publicId);
@ -430,8 +434,9 @@ public class CatalogTest extends CatalogSupportBase {
* system entry is found.
*/
@Test(dataProvider = "resolveWithPrefer")
public void resolveWithPrefer(String prefer, String cfile, String publicId, String systemId, String expected) {
String catalogFile = getClass().getResource(cfile).getFile();
public void resolveWithPrefer(String prefer, String cfile, String publicId,
String systemId, String expected) throws Exception {
URI catalogFile = getClass().getResource(cfile).toURI();
CatalogFeatures f = CatalogFeatures.builder().with(CatalogFeatures.Feature.PREFER, prefer).with(CatalogFeatures.Feature.RESOLVE, "ignore").build();
CatalogResolver catalogResolver = CatalogManager.catalogResolver(f, catalogFile);
String result = catalogResolver.resolveEntity(publicId, systemId).getSystemId();
@ -445,8 +450,8 @@ public class CatalogTest extends CatalogSupportBase {
* be loaded is determined by the defer attribute.
*/
@Test(dataProvider = "invalidAltCatalogs", expectedExceptions = CatalogException.class)
public void testDeferAltCatalogs(String file) {
String catalogFile = getClass().getResource(file).getFile();
public void testDeferAltCatalogs(String file) throws Exception {
URI catalogFile = getClass().getResource(file).toURI();
CatalogFeatures features = CatalogFeatures.builder().with(CatalogFeatures.Feature.DEFER, "true").build();
/*
Since the defer attribute is set to false in the specified catalog file,
@ -462,8 +467,8 @@ public class CatalogTest extends CatalogSupportBase {
* PREFER from Features API taking precedence over catalog file
*/
@Test
public void testJDK8146237() {
String catalogFile = getClass().getResource("JDK8146237_catalog.xml").getFile();
public void testJDK8146237() throws Exception {
URI catalogFile = getClass().getResource("JDK8146237_catalog.xml").toURI();
try {
CatalogFeatures features = CatalogFeatures.builder().with(CatalogFeatures.Feature.PREFER, "system").build();
@ -482,8 +487,8 @@ public class CatalogTest extends CatalogSupportBase {
Verifies that the resulting systemId does not contain duplicate slashes
*/
@Test
public void testRewriteSystem() {
String catalog = getClass().getResource("rewriteCatalog.xml").getFile();
public void testRewriteSystem() throws Exception {
URI catalog = getClass().getResource("rewriteCatalog.xml").toURI();
try {
CatalogResolver resolver = CatalogManager.catalogResolver(CatalogFeatures.defaults(), catalog);
@ -500,8 +505,8 @@ public class CatalogTest extends CatalogSupportBase {
Verifies that the resulting systemId does not contain duplicate slashes
*/
@Test
public void testRewriteUri() {
String catalog = getClass().getResource("rewriteCatalog.xml").getFile();
public void testRewriteUri() throws Exception {
URI catalog = getClass().getResource("rewriteCatalog.xml").toURI();
try {
@ -519,18 +524,18 @@ public class CatalogTest extends CatalogSupportBase {
*/
@Test(expectedExceptions = NullPointerException.class)
public void testFeatureNull() {
CatalogResolver resolver = CatalogManager.catalogResolver(null, "");
CatalogResolver resolver = CatalogManager.catalogResolver(null, null);
}
/*
@bug 8144966
Verifies that passing null as the path will result in a NPE.
Verifies that passing null as the URI will result in a NPE.
*/
@Test(expectedExceptions = NullPointerException.class)
public void testPathNull() {
String path = null;
CatalogResolver resolver = CatalogManager.catalogResolver(CatalogFeatures.defaults(), path);
URI uri = null;
CatalogResolver resolver = CatalogManager.catalogResolver(CatalogFeatures.defaults(), uri);
}
/*
@ -540,10 +545,11 @@ public class CatalogTest extends CatalogSupportBase {
that matches the expected value.
*/
@Test(dataProvider = "catalog")
public void testCatalogResolver(String test, String expected, String catalogFile, String xml, SAXParser saxParser) {
String catalog = null;
public void testCatalogResolver(String test, String expected, String catalogFile,
String xml, SAXParser saxParser) throws Exception {
URI catalog = null;
if (catalogFile != null) {
catalog = getClass().getResource(catalogFile).getFile();
catalog = getClass().getResource(catalogFile).toURI();
}
String url = getClass().getResource(xml).getFile();
try {
@ -565,8 +571,8 @@ public class CatalogTest extends CatalogSupportBase {
catalog is provided, the resolver will throw an exception by default.
*/
@Test
public void testInvalidCatalog() {
String catalog = getClass().getResource("catalog_invalid.xml").getFile();
public void testInvalidCatalog() throws Exception {
URI catalog = getClass().getResource("catalog_invalid.xml").toURI();
String test = "testInvalidCatalog";
try {
@ -590,7 +596,7 @@ public class CatalogTest extends CatalogSupportBase {
*/
@Test
public void testIgnoreInvalidCatalog() {
String catalog = getClass().getResource("catalog_invalid.xml").getFile();
String catalog = getClass().getResource("catalog_invalid.xml").toExternalForm();
CatalogFeatures f = CatalogFeatures.builder()
.with(Feature.FILES, catalog)
.with(Feature.PREFER, "public")
@ -600,7 +606,7 @@ public class CatalogTest extends CatalogSupportBase {
String test = "testInvalidCatalog";
try {
CatalogResolver resolver = CatalogManager.catalogResolver(f, "");
CatalogResolver resolver = CatalogManager.catalogResolver(f);
String actualSystemId = resolver.resolveEntity(null, "http://remote/xml/dtd/sys/alice/docAlice.dtd").getSystemId();
System.out.println("testIgnoreInvalidCatalog: expected [null]");
System.out.println("testIgnoreInvalidCatalog: expected [null]");

View File

@ -0,0 +1,3 @@
Manifest-Version: 1.0
Created-By: 9-ea (Oracle Corporation)

View File

@ -0,0 +1,137 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
W3C XML Schema defined in the Web Services Addressing 1.0 specification
http://www.w3.org/TR/ws-addr-core
Copyright © 2005 World Wide Web Consortium,
(Massachusetts Institute of Technology, European Research Consortium for
Informatics and Mathematics, Keio University). All Rights Reserved. This
work is distributed under the W3C® Software License [1] in the hope that
it will be useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
[1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
$Id: ws-addr.xsd,v 1.2 2008/07/23 13:38:16 plehegar Exp $
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.w3.org/2005/08/addressing" targetNamespace="http://www.w3.org/2005/08/addressing" blockDefault="#all" elementFormDefault="qualified" finalDefault="" attributeFormDefault="unqualified">
<!-- Constructs from the WS-Addressing Core -->
<xs:element name="EndpointReference" type="tns:EndpointReferenceType"/>
<xs:complexType name="EndpointReferenceType" mixed="false">
<xs:sequence>
<xs:element name="Address" type="tns:AttributedURIType"/>
<xs:element ref="tns:ReferenceParameters" minOccurs="0"/>
<xs:element ref="tns:Metadata" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
<xs:element name="ReferenceParameters" type="tns:ReferenceParametersType"/>
<xs:complexType name="ReferenceParametersType" mixed="false">
<xs:sequence>
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
<xs:element name="Metadata" type="tns:MetadataType"/>
<xs:complexType name="MetadataType" mixed="false">
<xs:sequence>
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
<xs:element name="MessageID" type="tns:AttributedURIType"/>
<xs:element name="RelatesTo" type="tns:RelatesToType"/>
<xs:complexType name="RelatesToType" mixed="false">
<xs:simpleContent>
<xs:extension base="xs:anyURI">
<xs:attribute name="RelationshipType" type="tns:RelationshipTypeOpenEnum" use="optional" default="http://www.w3.org/2005/08/addressing/reply"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="RelationshipTypeOpenEnum">
<xs:union memberTypes="tns:RelationshipType xs:anyURI"/>
</xs:simpleType>
<xs:simpleType name="RelationshipType">
<xs:restriction base="xs:anyURI">
<xs:enumeration value="http://www.w3.org/2005/08/addressing/reply"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="ReplyTo" type="tns:EndpointReferenceType"/>
<xs:element name="From" type="tns:EndpointReferenceType"/>
<xs:element name="FaultTo" type="tns:EndpointReferenceType"/>
<xs:element name="To" type="tns:AttributedURIType"/>
<xs:element name="Action" type="tns:AttributedURIType"/>
<xs:complexType name="AttributedURIType" mixed="false">
<xs:simpleContent>
<xs:extension base="xs:anyURI">
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<!-- Constructs from the WS-Addressing SOAP binding -->
<xs:attribute name="IsReferenceParameter" type="xs:boolean"/>
<xs:simpleType name="FaultCodesOpenEnumType">
<xs:union memberTypes="tns:FaultCodesType xs:QName"/>
</xs:simpleType>
<xs:simpleType name="FaultCodesType">
<xs:restriction base="xs:QName">
<xs:enumeration value="tns:InvalidAddressingHeader"/>
<xs:enumeration value="tns:InvalidAddress"/>
<xs:enumeration value="tns:InvalidEPR"/>
<xs:enumeration value="tns:InvalidCardinality"/>
<xs:enumeration value="tns:MissingAddressInEPR"/>
<xs:enumeration value="tns:DuplicateMessageID"/>
<xs:enumeration value="tns:ActionMismatch"/>
<xs:enumeration value="tns:MessageAddressingHeaderRequired"/>
<xs:enumeration value="tns:DestinationUnreachable"/>
<xs:enumeration value="tns:ActionNotSupported"/>
<xs:enumeration value="tns:EndpointUnavailable"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="RetryAfter" type="tns:AttributedUnsignedLongType"/>
<xs:complexType name="AttributedUnsignedLongType" mixed="false">
<xs:simpleContent>
<xs:extension base="xs:unsignedLong">
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:element name="ProblemHeaderQName" type="tns:AttributedQNameType"/>
<xs:complexType name="AttributedQNameType" mixed="false">
<xs:simpleContent>
<xs:extension base="xs:QName">
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:element name="ProblemIRI" type="tns:AttributedURIType"/>
<xs:element name="ProblemAction" type="tns:ProblemActionType"/>
<xs:complexType name="ProblemActionType" mixed="false">
<xs:sequence>
<xs:element ref="tns:Action" minOccurs="0"/>
<xs:element name="SoapAction" minOccurs="0" type="xs:anyURI"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
</xs:schema>

View File

@ -0,0 +1,4 @@
<?xml version='1.0' encoding='UTF-8'?>
<catalog prefer="system" xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
<system systemId="http://www.w3.org/2006/03/addressing/ws-addr.xsd" uri="./catalog/ws-addr.xsd"/>
</catalog>

View File

@ -37,6 +37,7 @@ import java.io.StringWriter;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
@ -74,11 +75,30 @@ import com.sun.org.apache.xml.internal.serialize.XMLSerializer;
* @run testng/othervm -DrunSecMngr=true transform.TransformerTest
* @run testng/othervm transform.TransformerTest
* @summary Transformer Tests
* @bug 6272879 6305029 6505031 8150704 8162598 8169112 8169772
* @bug 6272879 6305029 6505031 8150704 8162598 8169112 8169631 8169772
*/
@Listeners({jaxp.library.FilePolicy.class})
public class TransformerTest {
// some global constants
private static final String LINE_SEPARATOR =
getSystemProperty("line.separator");
private static final String NAMESPACES =
"http://xml.org/sax/features/namespaces";
private static final String NAMESPACE_PREFIXES =
"http://xml.org/sax/features/namespace-prefixes";
private static abstract class TestTemplate {
protected void printSnippet(String title, String snippet) {
StringBuilder div = new StringBuilder();
for (int i = 0; i < title.length(); i++)
div.append("=");
System.out.println(title + "\n" + div + "\n" + snippet + "\n");
}
}
/**
* Reads the contents of the given file into a string.
* WARNING: this method adds a final line feed even if the last line of the file doesn't contain one.
@ -101,44 +121,7 @@ public class TransformerTest {
}
}
/**
* Utility method for testBug8162598().
* Provides a convenient way to check/assert the expected namespaces
* of a Node and its siblings.
*
* @param test
* The node to check
* @param nstest
* Expected namespace of the node
* @param nsb
* Expected namespace of the first sibling
* @param nsc
* Expected namespace of the first sibling of the first sibling
*/
private void checkNodeNS8162598(Node test, String nstest, String nsb, String nsc) {
String testNodeName = test.getNodeName();
if (nstest == null) {
Assert.assertNull(test.getNamespaceURI(), "unexpected namespace for " + testNodeName);
} else {
Assert.assertEquals(test.getNamespaceURI(), nstest, "unexpected namespace for " + testNodeName);
}
Node b = test.getChildNodes().item(0);
if (nsb == null) {
Assert.assertNull(b.getNamespaceURI(), "unexpected namespace for " + testNodeName + "->b");
} else {
Assert.assertEquals(b.getNamespaceURI(), nsb, "unexpected namespace for " + testNodeName + "->b");
}
Node c = b.getChildNodes().item(0);
if (nsc == null) {
Assert.assertNull(c.getNamespaceURI(), "unexpected namespace for " + testNodeName + "->b->c");
} else {
Assert.assertEquals(c.getNamespaceURI(), nsc, "unexpected namespace for " + testNodeName + "->b->c");
}
}
private class XMLReaderFor6305029 implements XMLReader {
private static final String NAMESPACES = "http://xml.org/sax/features/namespaces";
private static final String NAMESPACE_PREFIXES = "http://xml.org/sax/features/namespace-prefixes";
private boolean namespaces = true;
private boolean namespacePrefixes = false;
private EntityResolver resolver;
@ -235,8 +218,6 @@ public class TransformerTest {
*/
@Test
public final void testBug6272879() throws IOException, TransformerException {
final String LINE_SEPARATOR = getSystemProperty("line.separator");
final String xsl =
"<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>" + LINE_SEPARATOR +
"<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">" + LINE_SEPARATOR +
@ -349,9 +330,125 @@ public class TransformerTest {
Assert.assertTrue(s.contains("map1key1value") && s.contains("map2key1value"));
}
private static class Test8169631 extends TestTemplate {
private final static String xsl =
"<?xml version=\"1.0\"?>" + LINE_SEPARATOR +
"<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" version=\"1.0\">" + LINE_SEPARATOR +
" <xsl:template match=\"/\">" + LINE_SEPARATOR +
" <xsl:variable name=\"Counter\" select=\"count(//row)\"/>" + LINE_SEPARATOR +
" <xsl:variable name=\"AttribCounter\" select=\"count(//@attrib)\"/>" + LINE_SEPARATOR +
" <Counter><xsl:value-of select=\"$Counter\"/></Counter>" + LINE_SEPARATOR +
" <AttribCounter><xsl:value-of select=\"$AttribCounter\"/></AttribCounter>" + LINE_SEPARATOR +
" </xsl:template>" + LINE_SEPARATOR +
"</xsl:stylesheet>" + LINE_SEPARATOR;
private final static String sourceXml =
"<?xml version=\"1.0\"?>" + LINE_SEPARATOR +
"<envelope xmlns=\"http://www.sap.com/myns\" xmlns:sap=\"http://www.sap.com/myns\">" + LINE_SEPARATOR +
" <sap:row sap:attrib=\"a\">1</sap:row>" + LINE_SEPARATOR +
" <row attrib=\"b\">2</row>" + LINE_SEPARATOR +
" <row sap:attrib=\"c\">3</row>" + LINE_SEPARATOR +
"</envelope>" + LINE_SEPARATOR;
/**
* Utility method to print out transformation result and check values.
*
* @param type
* Text describing type of transformation
* @param result
* Resulting output of transformation
* @param elementCount
* Counter of elements to check
* @param attribCount
* Counter of attributes to check
*/
private void verifyResult(String type, String result, int elementCount,
int attribCount)
{
printSnippet("Result of transformation from " + type + ":",
result);
Assert.assertEquals(
result.contains("<Counter>" + elementCount + "</Counter>"),
true, "Result of transformation from " + type +
" should have count of " + elementCount + " elements.");
Assert.assertEquals(
result.contains("<AttribCounter>" + attribCount +
"</AttribCounter>"), true, "Result of transformation from " +
type + " should have count of "+ attribCount + " attributes.");
}
public void run() throws IOException, TransformerException,
SAXException, ParserConfigurationException
{
printSnippet("Source:", sourceXml);
printSnippet("Stylesheet:", xsl);
// create default transformer (namespace aware)
TransformerFactory tf1 = TransformerFactory.newInstance();
ByteArrayInputStream bais = new ByteArrayInputStream(xsl.getBytes());
Transformer t1 = tf1.newTransformer(new StreamSource(bais));
// test transformation from stream source with namespace support
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bais = new ByteArrayInputStream(sourceXml.getBytes());
t1.transform(new StreamSource(bais), new StreamResult(baos));
verifyResult("StreamSource with namespace support", baos.toString(), 0, 1);
// test transformation from DOM source with namespace support
bais.reset();
baos.reset();
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
Document doc = dbf.newDocumentBuilder().parse(new InputSource(bais));
t1.transform(new DOMSource(doc), new StreamResult(baos));
verifyResult("DOMSource with namespace support", baos.toString(), 0, 1);
// test transformation from DOM source without namespace support
bais.reset();
baos.reset();
dbf.setNamespaceAware(false);
doc = dbf.newDocumentBuilder().parse(new InputSource(bais));
t1.transform(new DOMSource(doc), new StreamResult(baos));
verifyResult("DOMSource without namespace support", baos.toString(), 3, 3);
// test transformation from SAX source with namespace support
bais.reset();
baos.reset();
SAXParserFactory spf = SAXParserFactory.newInstance();
spf.setNamespaceAware(true);
XMLReader xmlr = spf.newSAXParser().getXMLReader();
SAXSource saxS = new SAXSource(xmlr, new InputSource(bais));
t1.transform(saxS, new StreamResult(baos));
verifyResult("SAXSource with namespace support", baos.toString(), 0, 1);
// test transformation from SAX source without namespace support
bais.reset();
baos.reset();
spf.setNamespaceAware(false);
xmlr = spf.newSAXParser().getXMLReader();
saxS = new SAXSource(xmlr, new InputSource(bais));
t1.transform(saxS, new StreamResult(baos));
verifyResult("SAXSource without namespace support", baos.toString(), 3, 3);
}
}
/*
* @bug 8169631
* @summary Test combinations of namespace awareness settings on
* XSL transformations
*/
@Test
public final void testBug8169631() throws IOException, SAXException,
TransformerException, ParserConfigurationException
{
new Test8169631().run();
}
/*
* @bug 8150704
* @summary Test that XSL transformation with lots of temporary result trees will not run out of DTM IDs.
* @summary Test that XSL transformation with lots of temporary result
* trees will not run out of DTM IDs.
*/
@Test
public final void testBug8150704() throws TransformerException, IOException {
@ -375,16 +472,8 @@ public class TransformerTest {
System.out.println("Passed.");
}
/*
* @bug 8162598
* @summary Test XSLTC handling of namespaces, especially empty namespace definitions to reset the
* default namespace
*/
@Test
public final void testBug8162598() throws IOException, TransformerException {
final String LINE_SEPARATOR = getSystemProperty("line.separator");
final String xsl =
private static class Test8162598 extends TestTemplate {
private static final String xsl =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + LINE_SEPARATOR +
"<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" version=\"1.0\">" + LINE_SEPARATOR +
" <xsl:template match=\"/\">" + LINE_SEPARATOR +
@ -402,39 +491,85 @@ public class TransformerTest {
" </xsl:template>" + LINE_SEPARATOR +
"</xsl:stylesheet>";
private static final String sourceXml =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?><aaa></aaa>" + LINE_SEPARATOR;
/**
* Utility method for testBug8162598().
* Provides a convenient way to check/assert the expected namespaces
* of a Node and its siblings.
*
* @param test
* The node to check
* @param nstest
* Expected namespace of the node
* @param nsb
* Expected namespace of the first sibling
* @param nsc
* Expected namespace of the first sibling of the first sibling
*/
final String sourceXml =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?><aaa></aaa>" + LINE_SEPARATOR;
private void checkNodeNS(Node test, String nstest, String nsb, String nsc) {
String testNodeName = test.getNodeName();
if (nstest == null) {
Assert.assertNull(test.getNamespaceURI(), "unexpected namespace for " + testNodeName);
} else {
Assert.assertEquals(test.getNamespaceURI(), nstest, "unexpected namespace for " + testNodeName);
}
Node b = test.getChildNodes().item(0);
if (nsb == null) {
Assert.assertNull(b.getNamespaceURI(), "unexpected namespace for " + testNodeName + "->b");
} else {
Assert.assertEquals(b.getNamespaceURI(), nsb, "unexpected namespace for " + testNodeName + "->b");
}
Node c = b.getChildNodes().item(0);
if (nsc == null) {
Assert.assertNull(c.getNamespaceURI(), "unexpected namespace for " + testNodeName + "->b->c");
} else {
Assert.assertEquals(c.getNamespaceURI(), nsc, "unexpected namespace for " + testNodeName + "->b->c");
}
}
System.out.println("Stylesheet:");
System.out.println("=============================");
System.out.println(xsl);
System.out.println();
public void run() throws IOException, TransformerException {
printSnippet("Source:", sourceXml);
System.out.println("Source before transformation:");
System.out.println("=============================");
System.out.println(sourceXml);
System.out.println();
printSnippet("Stylesheet:", xsl);
// transform to DOM result
TransformerFactory tf = TransformerFactory.newInstance();
Transformer t = tf.newTransformer(new StreamSource(new ByteArrayInputStream(xsl.getBytes())));
DOMResult result = new DOMResult();
t.transform(new StreamSource(new ByteArrayInputStream(sourceXml.getBytes())), result);
Document document = (Document)result.getNode();
// transform to DOM result
TransformerFactory tf = TransformerFactory.newInstance();
ByteArrayInputStream bais = new ByteArrayInputStream(xsl.getBytes());
Transformer t = tf.newTransformer(new StreamSource(bais));
DOMResult result = new DOMResult();
bais = new ByteArrayInputStream(sourceXml.getBytes());
t.transform(new StreamSource(bais), result);
Document document = (Document)result.getNode();
System.out.println("Result after transformation:");
System.out.println("============================");
OutputFormat format = new OutputFormat();
format.setIndenting(true);
new XMLSerializer(System.out, format).serialize(document);
System.out.println();
checkNodeNS8162598(document.getElementsByTagName("test1").item(0), "ns2", "ns2", null);
checkNodeNS8162598(document.getElementsByTagName("test2").item(0), "ns1", "ns2", null);
checkNodeNS8162598(document.getElementsByTagName("test3").item(0), null, null, null);
checkNodeNS8162598(document.getElementsByTagName("test4").item(0), null, null, null);
checkNodeNS8162598(document.getElementsByTagName("test5").item(0), "ns1", "ns1", null);
Assert.assertNull(document.getElementsByTagName("test6").item(0).getNamespaceURI(), "unexpected namespace for test6");
System.out.println("Result after transformation:");
System.out.println("============================");
OutputFormat format = new OutputFormat();
format.setIndenting(true);
new XMLSerializer(System.out, format).serialize(document);
System.out.println();
checkNodeNS(document.getElementsByTagName("test1").item(0), "ns2", "ns2", null);
checkNodeNS(document.getElementsByTagName("test2").item(0), "ns1", "ns2", null);
checkNodeNS(document.getElementsByTagName("test3").item(0), null, null, null);
checkNodeNS(document.getElementsByTagName("test4").item(0), null, null, null);
checkNodeNS(document.getElementsByTagName("test5").item(0), "ns1", "ns1", null);
Assert.assertNull(document.getElementsByTagName("test6").item(0).getNamespaceURI(),
"unexpected namespace for test6");
}
}
/*
* @bug 8162598
* @summary Test XSLTC handling of namespaces, especially empty namespace
* definitions to reset the default namespace
*/
@Test
public final void testBug8162598() throws IOException,
TransformerException
{
new Test8162598().run();
}
/**

View File

@ -397,3 +397,5 @@ c8c9c334743caf8155c9809b6b4ac315d3a66476 jdk-9+148
72554d319b474b3636c7d02fe3c110254d111b1a jdk-9+149
77e4e30d9d111272cd4a45a2203e8f570d40b12e jdk-9+150
c48b4d4768b1c2b8fe5d1a844ca13732e5dfbe2a jdk-9+151
6f8fb1cf7e5f61c40dcc3654f9a623c505f6de1f jdk-9+152
7a532a9a227137155b905341d4b99939db51220e jdk-9+153

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 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
@ -47,13 +47,13 @@ public abstract class DetailImpl extends FaultElementImpl implements Detail {
public DetailEntry addDetailEntry(Name name) throws SOAPException {
DetailEntry entry = createDetailEntry(name);
addNode(entry);
return (DetailEntry) circumventBug5034339(entry);
return entry;
}
public DetailEntry addDetailEntry(QName qname) throws SOAPException {
DetailEntry entry = createDetailEntry(qname);
addNode(entry);
return (DetailEntry) circumventBug5034339(entry);
return entry;
}
protected SOAPElement addElement(Name name) throws SOAPException {
@ -119,28 +119,4 @@ public abstract class DetailImpl extends FaultElementImpl implements Detail {
return true;
}
//overriding this method since the only two uses of this method
// are in ElementImpl and DetailImpl
//whereas the original base impl does the correct job for calls to it inside ElementImpl
// But it would not work for DetailImpl.
protected SOAPElement circumventBug5034339(SOAPElement element) {
Name elementName = element.getElementName();
if (!isNamespaceQualified(elementName)) {
String prefix = elementName.getPrefix();
String defaultNamespace = getNamespaceURI(prefix);
if (defaultNamespace != null) {
Name newElementName =
NameImpl.create(
elementName.getLocalName(),
elementName.getPrefix(),
defaultNamespace);
SOAPElement newElement = createDetailEntry(newElementName);
replaceChild(newElement, element);
return newElement;
}
}
return element;
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 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
@ -127,8 +127,11 @@ public class ElementImpl
}
public SOAPElement addChildElement(String localName) throws SOAPException {
return (SOAPElement) addChildElement(
NameImpl.createFromUnqualifiedName(localName));
String nsUri = getNamespaceURI("");
Name name = (nsUri == null || nsUri.isEmpty())
? NameImpl.createFromUnqualifiedName(localName)
: NameImpl.createFromQualifiedName(localName, nsUri);
return addChildElement(name);
}
public SOAPElement addChildElement(String localName, String prefix)
@ -372,13 +375,13 @@ public class ElementImpl
protected SOAPElement addElement(Name name) throws SOAPException {
SOAPElement newElement = createElement(name);
addNode(newElement);
return circumventBug5034339(newElement);
return newElement;
}
protected SOAPElement addElement(QName name) throws SOAPException {
SOAPElement newElement = createElement(name);
addNode(newElement);
return circumventBug5034339(newElement);
return newElement;
}
protected SOAPElement createElement(Name name) {
@ -1226,26 +1229,6 @@ public class ElementImpl
return !"".equals(name.getNamespaceURI());
}
protected SOAPElement circumventBug5034339(SOAPElement element) {
Name elementName = element.getElementName();
if (!isNamespaceQualified(elementName)) {
String prefix = elementName.getPrefix();
String defaultNamespace = getNamespaceURI(prefix);
if (defaultNamespace != null) {
Name newElementName =
NameImpl.create(
elementName.getLocalName(),
elementName.getPrefix(),
defaultNamespace);
SOAPElement newElement = createElement(newElementName);
replaceChild(newElement, element);
return newElement;
}
}
return element;
}
//TODO: This is a temporary SAAJ workaround for optimizing XWS
// should be removed once the corresponding JAXP bug is fixed
// It appears the bug will be fixed in JAXP 1.4 (not by Appserver 9 timeframe)

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, 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,8 +25,10 @@
package com.sun.xml.internal.messaging.saaj.util.stax;
import java.util.Arrays;
import java.util.Iterator;
import java.util.Arrays;
import java.util.List;
import java.util.LinkedList;
import javax.xml.namespace.NamespaceContext;
import javax.xml.namespace.QName;
@ -42,6 +44,17 @@ import org.w3c.dom.Node;
/**
* SaajStaxWriter builds a SAAJ SOAPMessage by using XMLStreamWriter interface.
*
* <p>
* Defers creation of SOAPElement until all the aspects of the name of the element are known.
* In some cases, the namespace uri is indicated only by the {@link #writeNamespace(String, String)} call.
* After opening an element ({@code writeStartElement}, {@code writeEmptyElement} methods), all attributes
* and namespace assignments are retained within {@link DeferredElement} object ({@code deferredElement} field).
* As soon as any other method than {@code writeAttribute}, {@code writeNamespace}, {@code writeDefaultNamespace}
* or {@code setNamespace} is called, the contents of {@code deferredElement} is transformed into new SOAPElement
* (which is appropriately inserted into the SOAPMessage under construction).
* This mechanism is necessary to fix JDK-8159058 issue.
* </p>
*
* @author shih-chang.chen@oracle.com
*/
public class SaajStaxWriter implements XMLStreamWriter {
@ -49,6 +62,7 @@ public class SaajStaxWriter implements XMLStreamWriter {
protected SOAPMessage soap;
protected String envURI;
protected SOAPElement currentElement;
protected DeferredElement deferredElement;
static final protected String Envelope = "Envelope";
static final protected String Header = "Header";
@ -58,6 +72,7 @@ public class SaajStaxWriter implements XMLStreamWriter {
public SaajStaxWriter(final SOAPMessage msg, String uri) throws SOAPException {
soap = msg;
this.envURI = uri;
this.deferredElement = new DeferredElement();
}
public SOAPMessage getSOAPMessage() {
@ -70,11 +85,8 @@ public class SaajStaxWriter implements XMLStreamWriter {
@Override
public void writeStartElement(final String localName) throws XMLStreamException {
try {
currentElement = currentElement.addChildElement(localName);
} catch (SOAPException e) {
throw new XMLStreamException(e);
}
currentElement = deferredElement.flushTo(currentElement);
deferredElement.setLocalName(localName);
}
@Override
@ -84,8 +96,10 @@ public class SaajStaxWriter implements XMLStreamWriter {
@Override
public void writeStartElement(final String prefix, final String ln, final String ns) throws XMLStreamException {
try {
if (envURI.equals(ns)) {
currentElement = deferredElement.flushTo(currentElement);
if (envURI.equals(ns)) {
try {
if (Envelope.equals(ln)) {
currentElement = getEnvelope();
fixPrefix(prefix);
@ -99,13 +113,16 @@ public class SaajStaxWriter implements XMLStreamWriter {
fixPrefix(prefix);
return;
}
} catch (SOAPException e) {
throw new XMLStreamException(e);
}
currentElement = (prefix == null) ?
currentElement.addChildElement(new QName(ns, ln)) :
currentElement.addChildElement(ln, prefix, ns);
} catch (SOAPException e) {
throw new XMLStreamException(e);
}
deferredElement.setLocalName(ln);
deferredElement.setNamespaceUri(ns);
deferredElement.setPrefix(prefix);
}
private void fixPrefix(final String prfx) throws XMLStreamException {
@ -136,11 +153,13 @@ public class SaajStaxWriter implements XMLStreamWriter {
@Override
public void writeEndElement() throws XMLStreamException {
currentElement = deferredElement.flushTo(currentElement);
if (currentElement != null) currentElement = currentElement.getParentElement();
}
@Override
public void writeEndDocument() throws XMLStreamException {
currentElement = deferredElement.flushTo(currentElement);
}
@Override
@ -158,19 +177,14 @@ public class SaajStaxWriter implements XMLStreamWriter {
@Override
public void writeAttribute(final String prefix, final String ns, final String ln, final String value) throws XMLStreamException {
try {
if (ns == null) {
if (prefix == null && xmlns.equals(ln)) {
currentElement.addNamespaceDeclaration("", value);
} else {
currentElement.setAttributeNS("", ln, value);
}
if (ns == null && prefix == null && xmlns.equals(ln)) {
writeNamespace("", value);
} else {
if (deferredElement.isInitialized()) {
deferredElement.addAttribute(prefix, ns, ln, value);
} else {
QName name = (prefix == null) ? new QName(ns, ln) : new QName(ns, ln, prefix);
currentElement.addAttribute(name, value);
addAttibuteToElement(currentElement, prefix, ns, ln, value);
}
} catch (SOAPException e) {
throw new XMLStreamException(e);
}
}
@ -181,16 +195,16 @@ public class SaajStaxWriter implements XMLStreamWriter {
@Override
public void writeNamespace(String prefix, final String uri) throws XMLStreamException {
// make prefix default if null or "xmlns" (according to javadoc)
if (prefix == null || "xmlns".equals(prefix)) {
prefix = "";
}
try {
currentElement.addNamespaceDeclaration(prefix, uri);
} catch (SOAPException e) {
throw new XMLStreamException(e);
String thePrefix = prefix == null || "xmlns".equals(prefix) ? "" : prefix;
if (deferredElement.isInitialized()) {
deferredElement.addNamespaceDeclaration(thePrefix, uri);
} else {
try {
currentElement.addNamespaceDeclaration(thePrefix, uri);
} catch (SOAPException e) {
throw new XMLStreamException(e);
}
}
}
@ -201,35 +215,40 @@ public class SaajStaxWriter implements XMLStreamWriter {
@Override
public void writeComment(final String data) throws XMLStreamException {
currentElement = deferredElement.flushTo(currentElement);
Comment c = soap.getSOAPPart().createComment(data);
currentElement.appendChild(c);
}
@Override
public void writeProcessingInstruction(final String target) throws XMLStreamException {
currentElement = deferredElement.flushTo(currentElement);
Node n = soap.getSOAPPart().createProcessingInstruction(target, "");
currentElement.appendChild(n);
}
@Override
public void writeProcessingInstruction(final String target, final String data) throws XMLStreamException {
currentElement = deferredElement.flushTo(currentElement);
Node n = soap.getSOAPPart().createProcessingInstruction(target, data);
currentElement.appendChild(n);
}
@Override
public void writeCData(final String data) throws XMLStreamException {
currentElement = deferredElement.flushTo(currentElement);
Node n = soap.getSOAPPart().createCDATASection(data);
currentElement.appendChild(n);
}
@Override
public void writeDTD(final String dtd) throws XMLStreamException {
//TODO ... Don't do anything here
currentElement = deferredElement.flushTo(currentElement);
}
@Override
public void writeEntityRef(final String name) throws XMLStreamException {
currentElement = deferredElement.flushTo(currentElement);
Node n = soap.getSOAPPart().createEntityReference(name);
currentElement.appendChild(n);
}
@ -257,6 +276,7 @@ public class SaajStaxWriter implements XMLStreamWriter {
@Override
public void writeCharacters(final String text) throws XMLStreamException {
currentElement = deferredElement.flushTo(currentElement);
try {
currentElement.addTextNode(text);
} catch (SOAPException e) {
@ -266,6 +286,7 @@ public class SaajStaxWriter implements XMLStreamWriter {
@Override
public void writeCharacters(final char[] text, final int start, final int len) throws XMLStreamException {
currentElement = deferredElement.flushTo(currentElement);
char[] chr = (start == 0 && len == text.length) ? text : Arrays.copyOfRange(text, start, start + len);
try {
currentElement.addTextNode(new String(chr));
@ -281,10 +302,16 @@ public class SaajStaxWriter implements XMLStreamWriter {
@Override
public void setPrefix(final String prefix, final String uri) throws XMLStreamException {
try {
this.currentElement.addNamespaceDeclaration(prefix, uri);
} catch (SOAPException e) {
throw new XMLStreamException(e);
// TODO: this in fact is not what would be expected from XMLStreamWriter
// (e.g. XMLStreamWriter for writing to output stream does not write anything as result of
// this method, it just rememebers that given prefix is associated with the given uri
// for the scope; to actually declare the prefix assignment in the resulting XML, one
// needs to call writeNamespace(...) method
// Kept for backwards compatibility reasons - this might be worth of further investigation.
if (deferredElement.isInitialized()) {
deferredElement.addNamespaceDeclaration(prefix, uri);
} else {
throw new XMLStreamException("Namespace not associated with any element");
}
}
@ -331,4 +358,209 @@ public class SaajStaxWriter implements XMLStreamWriter {
}
};
}
static void addAttibuteToElement(SOAPElement element, String prefix, String ns, String ln, String value)
throws XMLStreamException {
try {
if (ns == null) {
element.setAttributeNS("", ln, value);
} else {
QName name = prefix == null ? new QName(ns, ln) : new QName(ns, ln, prefix);
element.addAttribute(name, value);
}
} catch (SOAPException e) {
throw new XMLStreamException(e);
}
}
/**
* Holds details of element that needs to be deferred in order to manage namespace assignments correctly.
*
* <p>
* An instance of can be set with all the aspects of the element name (local name, prefix, namespace uri).
* Attributes and namespace declarations (special case of attribute) can be added.
* Namespace declarations are handled so that the element namespace is updated if it is implied by the namespace
* declaration and the namespace was not set to non-{@code null} value previously.
* </p>
*
* <p>
* The state of this object can be {@link #flushTo(SOAPElement) flushed} to SOAPElement - new SOAPElement will
* be added a child element; the new element will have exactly the shape as represented by the state of this
* object. Note that the {@link #flushTo(SOAPElement)} method does nothing
* (and returns the argument immediately) if the state of this object is not initialized
* (i.e. local name is null).
* </p>
*
* @author ondrej.cerny@oracle.com
*/
static class DeferredElement {
private String prefix;
private String localName;
private String namespaceUri;
private final List<NamespaceDeclaration> namespaceDeclarations;
private final List<AttributeDeclaration> attributeDeclarations;
DeferredElement() {
this.namespaceDeclarations = new LinkedList<NamespaceDeclaration>();
this.attributeDeclarations = new LinkedList<AttributeDeclaration>();
reset();
}
/**
* Set prefix of the element.
* @param prefix namespace prefix
*/
public void setPrefix(final String prefix) {
this.prefix = prefix;
}
/**
* Set local name of the element.
*
* <p>
* This method initializes the element.
* </p>
*
* @param localName local name {@code not null}
*/
public void setLocalName(final String localName) {
if (localName == null) {
throw new IllegalArgumentException("localName can not be null");
}
this.localName = localName;
}
/**
* Set namespace uri.
*
* @param namespaceUri namespace uri
*/
public void setNamespaceUri(final String namespaceUri) {
this.namespaceUri = namespaceUri;
}
/**
* Adds namespace prefix assignment to the element.
*
* @param prefix prefix (not {@code null})
* @param namespaceUri namespace uri
*/
public void addNamespaceDeclaration(final String prefix, final String namespaceUri) {
if (null == this.namespaceUri && null != namespaceUri && prefix.equals(emptyIfNull(this.prefix))) {
this.namespaceUri = namespaceUri;
}
this.namespaceDeclarations.add(new NamespaceDeclaration(prefix, namespaceUri));
}
/**
* Adds attribute to the element.
* @param prefix prefix
* @param ns namespace
* @param ln local name
* @param value value
*/
public void addAttribute(final String prefix, final String ns, final String ln, final String value) {
if (ns == null && prefix == null && xmlns.equals(ln)) {
this.addNamespaceDeclaration(prefix, value);
} else {
this.attributeDeclarations.add(new AttributeDeclaration(prefix, ns, ln, value));
}
}
/**
* Flushes state of this element to the {@code target} element.
*
* <p>
* If this element is initialized then it is added with all the namespace declarations and attributes
* to the {@code target} element as a child. The state of this element is reset to uninitialized.
* The newly added element object is returned.
* </p>
* <p>
* If this element is not initialized then the {@code target} is returned immediately, nothing else is done.
* </p>
*
* @param target target element
* @return {@code target} or new element
* @throws XMLStreamException on error
*/
public SOAPElement flushTo(final SOAPElement target) throws XMLStreamException {
try {
if (this.localName != null) {
// add the element appropriately (based on namespace declaration)
final SOAPElement newElement;
if (this.namespaceUri == null) {
// add element with inherited scope
newElement = target.addChildElement(this.localName);
} else if (prefix == null) {
newElement = target.addChildElement(new QName(this.namespaceUri, this.localName));
} else {
newElement = target.addChildElement(this.localName, this.prefix, this.namespaceUri);
}
// add namespace declarations
for (NamespaceDeclaration namespace : this.namespaceDeclarations) {
target.addNamespaceDeclaration(namespace.prefix, namespace.namespaceUri);
}
// add attribute declarations
for (AttributeDeclaration attribute : this.attributeDeclarations) {
addAttibuteToElement(newElement,
attribute.prefix, attribute.namespaceUri, attribute.localName, attribute.value);
}
// reset state
this.reset();
return newElement;
} else {
return target;
}
// else after reset state -> not initialized
} catch (SOAPException e) {
throw new XMLStreamException(e);
}
}
/**
* Is the element initialized?
* @return boolean indicating whether it was initialized after last flush
*/
public boolean isInitialized() {
return this.localName != null;
}
private void reset() {
this.localName = null;
this.prefix = null;
this.namespaceUri = null;
this.namespaceDeclarations.clear();
this.attributeDeclarations.clear();
}
private static String emptyIfNull(String s) {
return s == null ? "" : s;
}
}
static class NamespaceDeclaration {
final String prefix;
final String namespaceUri;
NamespaceDeclaration(String prefix, String namespaceUri) {
this.prefix = prefix;
this.namespaceUri = namespaceUri;
}
}
static class AttributeDeclaration {
final String prefix;
final String namespaceUri;
final String localName;
final String value;
AttributeDeclaration(String prefix, String namespaceUri, String localName, String value) {
this.prefix = prefix;
this.namespaceUri = namespaceUri;
this.localName = localName;
this.value = value;
}
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2013, 2014, 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
@ -25,8 +25,10 @@
package com.sun.xml.internal.ws.api.message.saaj;
import java.util.Arrays;
import java.util.Iterator;
import java.util.Arrays;
import java.util.List;
import java.util.LinkedList;
import javax.xml.namespace.NamespaceContext;
import javax.xml.namespace.QName;
@ -42,6 +44,17 @@ import org.w3c.dom.Node;
/**
* SaajStaxWriter builds a SAAJ SOAPMessage by using XMLStreamWriter interface.
*
* <p>
* Defers creation of SOAPElement until all the aspects of the name of the element are known.
* In some cases, the namespace uri is indicated only by the {@link #writeNamespace(String, String)} call.
* After opening an element ({@code writeStartElement}, {@code writeEmptyElement} methods), all attributes
* and namespace assignments are retained within {@link DeferredElement} object ({@code deferredElement} field).
* As soon as any other method than {@code writeAttribute}, {@code writeNamespace}, {@code writeDefaultNamespace}
* or {@code setNamespace} is called, the contents of {@code deferredElement} is transformed into new SOAPElement
* (which is appropriately inserted into the SOAPMessage under construction).
* This mechanism is necessary to fix JDK-8159058 issue.
* </p>
*
* @author shih-chang.chen@oracle.com
*/
public class SaajStaxWriter implements XMLStreamWriter {
@ -49,6 +62,7 @@ public class SaajStaxWriter implements XMLStreamWriter {
protected SOAPMessage soap;
protected String envURI;
protected SOAPElement currentElement;
protected DeferredElement deferredElement;
static final protected String Envelope = "Envelope";
static final protected String Header = "Header";
@ -58,6 +72,7 @@ public class SaajStaxWriter implements XMLStreamWriter {
public SaajStaxWriter(final SOAPMessage msg, String uri) throws SOAPException {
soap = msg;
this.envURI = uri;
this.deferredElement = new DeferredElement();
}
public SOAPMessage getSOAPMessage() {
@ -70,11 +85,8 @@ public class SaajStaxWriter implements XMLStreamWriter {
@Override
public void writeStartElement(final String localName) throws XMLStreamException {
try {
currentElement = currentElement.addChildElement(localName);
} catch (SOAPException e) {
throw new XMLStreamException(e);
}
currentElement = deferredElement.flushTo(currentElement);
deferredElement.setLocalName(localName);
}
@Override
@ -84,8 +96,10 @@ public class SaajStaxWriter implements XMLStreamWriter {
@Override
public void writeStartElement(final String prefix, final String ln, final String ns) throws XMLStreamException {
try {
if (envURI.equals(ns)) {
currentElement = deferredElement.flushTo(currentElement);
if (envURI.equals(ns)) {
try {
if (Envelope.equals(ln)) {
currentElement = getEnvelope();
fixPrefix(prefix);
@ -99,13 +113,16 @@ public class SaajStaxWriter implements XMLStreamWriter {
fixPrefix(prefix);
return;
}
} catch (SOAPException e) {
throw new XMLStreamException(e);
}
currentElement = (prefix == null) ?
currentElement.addChildElement(new QName(ns, ln)) :
currentElement.addChildElement(ln, prefix, ns);
} catch (SOAPException e) {
throw new XMLStreamException(e);
}
deferredElement.setLocalName(ln);
deferredElement.setNamespaceUri(ns);
deferredElement.setPrefix(prefix);
}
private void fixPrefix(final String prfx) throws XMLStreamException {
@ -136,11 +153,13 @@ public class SaajStaxWriter implements XMLStreamWriter {
@Override
public void writeEndElement() throws XMLStreamException {
currentElement = deferredElement.flushTo(currentElement);
if (currentElement != null) currentElement = currentElement.getParentElement();
}
@Override
public void writeEndDocument() throws XMLStreamException {
currentElement = deferredElement.flushTo(currentElement);
}
@Override
@ -158,19 +177,14 @@ public class SaajStaxWriter implements XMLStreamWriter {
@Override
public void writeAttribute(final String prefix, final String ns, final String ln, final String value) throws XMLStreamException {
try {
if (ns == null) {
if (prefix == null && xmlns.equals(ln)) {
currentElement.addNamespaceDeclaration("", value);
} else {
currentElement.setAttributeNS("", ln, value);
}
if (ns == null && prefix == null && xmlns.equals(ln)) {
writeNamespace("", value);
} else {
if (deferredElement.isInitialized()) {
deferredElement.addAttribute(prefix, ns, ln, value);
} else {
QName name = (prefix == null) ? new QName(ns, ln) : new QName(ns, ln, prefix);
currentElement.addAttribute(name, value);
addAttibuteToElement(currentElement, prefix, ns, ln, value);
}
} catch (SOAPException e) {
throw new XMLStreamException(e);
}
}
@ -181,16 +195,16 @@ public class SaajStaxWriter implements XMLStreamWriter {
@Override
public void writeNamespace(String prefix, final String uri) throws XMLStreamException {
// make prefix default if null or "xmlns" (according to javadoc)
if (prefix == null || "xmlns".equals(prefix)) {
prefix = "";
}
try {
currentElement.addNamespaceDeclaration(prefix, uri);
} catch (SOAPException e) {
throw new XMLStreamException(e);
String thePrefix = prefix == null || "xmlns".equals(prefix) ? "" : prefix;
if (deferredElement.isInitialized()) {
deferredElement.addNamespaceDeclaration(thePrefix, uri);
} else {
try {
currentElement.addNamespaceDeclaration(thePrefix, uri);
} catch (SOAPException e) {
throw new XMLStreamException(e);
}
}
}
@ -201,35 +215,40 @@ public class SaajStaxWriter implements XMLStreamWriter {
@Override
public void writeComment(final String data) throws XMLStreamException {
currentElement = deferredElement.flushTo(currentElement);
Comment c = soap.getSOAPPart().createComment(data);
currentElement.appendChild(c);
}
@Override
public void writeProcessingInstruction(final String target) throws XMLStreamException {
currentElement = deferredElement.flushTo(currentElement);
Node n = soap.getSOAPPart().createProcessingInstruction(target, "");
currentElement.appendChild(n);
}
@Override
public void writeProcessingInstruction(final String target, final String data) throws XMLStreamException {
currentElement = deferredElement.flushTo(currentElement);
Node n = soap.getSOAPPart().createProcessingInstruction(target, data);
currentElement.appendChild(n);
}
@Override
public void writeCData(final String data) throws XMLStreamException {
currentElement = deferredElement.flushTo(currentElement);
Node n = soap.getSOAPPart().createCDATASection(data);
currentElement.appendChild(n);
}
@Override
public void writeDTD(final String dtd) throws XMLStreamException {
//TODO ... Don't do anything here
currentElement = deferredElement.flushTo(currentElement);
}
@Override
public void writeEntityRef(final String name) throws XMLStreamException {
currentElement = deferredElement.flushTo(currentElement);
Node n = soap.getSOAPPart().createEntityReference(name);
currentElement.appendChild(n);
}
@ -257,6 +276,7 @@ public class SaajStaxWriter implements XMLStreamWriter {
@Override
public void writeCharacters(final String text) throws XMLStreamException {
currentElement = deferredElement.flushTo(currentElement);
try {
currentElement.addTextNode(text);
} catch (SOAPException e) {
@ -266,6 +286,7 @@ public class SaajStaxWriter implements XMLStreamWriter {
@Override
public void writeCharacters(final char[] text, final int start, final int len) throws XMLStreamException {
currentElement = deferredElement.flushTo(currentElement);
char[] chr = (start == 0 && len == text.length) ? text : Arrays.copyOfRange(text, start, start + len);
try {
currentElement.addTextNode(new String(chr));
@ -281,10 +302,16 @@ public class SaajStaxWriter implements XMLStreamWriter {
@Override
public void setPrefix(final String prefix, final String uri) throws XMLStreamException {
try {
this.currentElement.addNamespaceDeclaration(prefix, uri);
} catch (SOAPException e) {
throw new XMLStreamException(e);
// TODO: this in fact is not what would be expected from XMLStreamWriter
// (e.g. XMLStreamWriter for writing to output stream does not write anything as result of
// this method, it just rememebers that given prefix is associated with the given uri
// for the scope; to actually declare the prefix assignment in the resulting XML, one
// needs to call writeNamespace(...) method
// Kept for backwards compatibility reasons - this might be worth of further investigation.
if (deferredElement.isInitialized()) {
deferredElement.addNamespaceDeclaration(prefix, uri);
} else {
throw new XMLStreamException("Namespace not associated with any element");
}
}
@ -315,12 +342,12 @@ public class SaajStaxWriter implements XMLStreamWriter {
return currentElement.lookupPrefix(namespaceURI);
}
public Iterator getPrefixes(final String namespaceURI) {
return new Iterator() {
return new Iterator<String>() {
String prefix = getPrefix(namespaceURI);
public boolean hasNext() {
return (prefix != null);
}
public Object next() {
public String next() {
if (!hasNext()) throw new java.util.NoSuchElementException();
String next = prefix;
prefix = null;
@ -331,4 +358,209 @@ public class SaajStaxWriter implements XMLStreamWriter {
}
};
}
static void addAttibuteToElement(SOAPElement element, String prefix, String ns, String ln, String value)
throws XMLStreamException {
try {
if (ns == null) {
element.setAttributeNS("", ln, value);
} else {
QName name = prefix == null ? new QName(ns, ln) : new QName(ns, ln, prefix);
element.addAttribute(name, value);
}
} catch (SOAPException e) {
throw new XMLStreamException(e);
}
}
/**
* Holds details of element that needs to be deferred in order to manage namespace assignments correctly.
*
* <p>
* An instance of can be set with all the aspects of the element name (local name, prefix, namespace uri).
* Attributes and namespace declarations (special case of attribute) can be added.
* Namespace declarations are handled so that the element namespace is updated if it is implied by the namespace
* declaration and the namespace was not set to non-{@code null} value previously.
* </p>
*
* <p>
* The state of this object can be {@link #flushTo(SOAPElement) flushed} to SOAPElement - new SOAPElement will
* be added a child element; the new element will have exactly the shape as represented by the state of this
* object. Note that the {@link #flushTo(SOAPElement)} method does nothing
* (and returns the argument immediately) if the state of this object is not initialized
* (i.e. local name is null).
* </p>
*
* @author ondrej.cerny@oracle.com
*/
static class DeferredElement {
private String prefix;
private String localName;
private String namespaceUri;
private final List<NamespaceDeclaration> namespaceDeclarations;
private final List<AttributeDeclaration> attributeDeclarations;
DeferredElement() {
this.namespaceDeclarations = new LinkedList<NamespaceDeclaration>();
this.attributeDeclarations = new LinkedList<AttributeDeclaration>();
reset();
}
/**
* Set prefix of the element.
* @param prefix namespace prefix
*/
public void setPrefix(final String prefix) {
this.prefix = prefix;
}
/**
* Set local name of the element.
*
* <p>
* This method initializes the element.
* </p>
*
* @param localName local name {@code not null}
*/
public void setLocalName(final String localName) {
if (localName == null) {
throw new IllegalArgumentException("localName can not be null");
}
this.localName = localName;
}
/**
* Set namespace uri.
*
* @param namespaceUri namespace uri
*/
public void setNamespaceUri(final String namespaceUri) {
this.namespaceUri = namespaceUri;
}
/**
* Adds namespace prefix assignment to the element.
*
* @param prefix prefix (not {@code null})
* @param namespaceUri namespace uri
*/
public void addNamespaceDeclaration(final String prefix, final String namespaceUri) {
if (null == this.namespaceUri && null != namespaceUri && prefix.equals(emptyIfNull(this.prefix))) {
this.namespaceUri = namespaceUri;
}
this.namespaceDeclarations.add(new NamespaceDeclaration(prefix, namespaceUri));
}
/**
* Adds attribute to the element.
* @param prefix prefix
* @param ns namespace
* @param ln local name
* @param value value
*/
public void addAttribute(final String prefix, final String ns, final String ln, final String value) {
if (ns == null && prefix == null && xmlns.equals(ln)) {
this.addNamespaceDeclaration(prefix, value);
} else {
this.attributeDeclarations.add(new AttributeDeclaration(prefix, ns, ln, value));
}
}
/**
* Flushes state of this element to the {@code target} element.
*
* <p>
* If this element is initialized then it is added with all the namespace declarations and attributes
* to the {@code target} element as a child. The state of this element is reset to uninitialized.
* The newly added element object is returned.
* </p>
* <p>
* If this element is not initialized then the {@code target} is returned immediately, nothing else is done.
* </p>
*
* @param target target element
* @return {@code target} or new element
* @throws XMLStreamException on error
*/
public SOAPElement flushTo(final SOAPElement target) throws XMLStreamException {
try {
if (this.localName != null) {
// add the element appropriately (based on namespace declaration)
final SOAPElement newElement;
if (this.namespaceUri == null) {
// add element with inherited scope
newElement = target.addChildElement(this.localName);
} else if (prefix == null) {
newElement = target.addChildElement(new QName(this.namespaceUri, this.localName));
} else {
newElement = target.addChildElement(this.localName, this.prefix, this.namespaceUri);
}
// add namespace declarations
for (NamespaceDeclaration namespace : this.namespaceDeclarations) {
target.addNamespaceDeclaration(namespace.prefix, namespace.namespaceUri);
}
// add attribute declarations
for (AttributeDeclaration attribute : this.attributeDeclarations) {
addAttibuteToElement(newElement,
attribute.prefix, attribute.namespaceUri, attribute.localName, attribute.value);
}
// reset state
this.reset();
return newElement;
} else {
return target;
}
// else after reset state -> not initialized
} catch (SOAPException e) {
throw new XMLStreamException(e);
}
}
/**
* Is the element initialized?
* @return boolean indicating whether it was initialized after last flush
*/
public boolean isInitialized() {
return this.localName != null;
}
private void reset() {
this.localName = null;
this.prefix = null;
this.namespaceUri = null;
this.namespaceDeclarations.clear();
this.attributeDeclarations.clear();
}
private static String emptyIfNull(String s) {
return s == null ? "" : s;
}
}
static class NamespaceDeclaration {
final String prefix;
final String namespaceUri;
NamespaceDeclaration(String prefix, String namespaceUri) {
this.prefix = prefix;
this.namespaceUri = namespaceUri;
}
}
static class AttributeDeclaration {
final String prefix;
final String namespaceUri;
final String localName;
final String value;
AttributeDeclaration(String prefix, String namespaceUri, String localName, String value) {
this.prefix = prefix;
this.namespaceUri = namespaceUri;
this.localName = localName;
this.value = value;
}
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 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.io.InputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.lang.reflect.Method;
import java.net.URI;
import java.net.URL;
import java.security.AccessController;
import java.security.PrivilegedAction;
@ -332,13 +333,13 @@ public class XmlUtil {
* (com.sun.org.apache.xml.internal) for modular runtime.
*/
private static EntityResolver createCatalogResolver(ArrayList<URL> urls) throws Exception {
// Prepare array of catalog paths
String[] paths = urls.stream()
.map(u -> u.toExternalForm())
.toArray(c -> new String[c]);
// Prepare array of catalog URIs
URI[] uris = urls.stream()
.map(u -> URI.create(u.toExternalForm()))
.toArray(URI[]::new);
//Create CatalogResolver with new JDK9+ API
return (EntityResolver) CatalogManager.catalogResolver(catalogFeatures, paths);
return (EntityResolver) CatalogManager.catalogResolver(catalogFeatures, uris);
}
// Cache CatalogFeatures instance for future usages.

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 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
@ -777,13 +777,13 @@ public class Options
* Adds a new catalog file.
*/
public void addCatalog(File catalogFile) throws IOException {
String newUrl = catalogFile.getPath();
URI newUrl = catalogFile.toURI();
if (!catalogUrls.contains(newUrl)) {
catalogUrls.add(newUrl);
}
try {
entityResolver = CatalogManager.catalogResolver(catalogFeatures,
catalogUrls.toArray(new String[0]));
catalogUrls.stream().toArray(URI[]::new));
} catch (Exception ex) {
entityResolver = null;
}
@ -791,7 +791,7 @@ public class Options
// Since javax.xml.catalog is unmodifiable we need to track catalog
// URLs added and create new catalog each time addCatalog is called
private final ArrayList<String> catalogUrls = new ArrayList<String>();
private final ArrayList<URI> catalogUrls = new ArrayList<>();
// Cache CatalogFeatures instance for future usages.
// Resolve feature is set to "continue" value for backward compatibility.

View File

@ -395,3 +395,4 @@ c41140100bf1e5c10c7b8f3bde91c16eff7485f5 jdk-9+147
71e198ef3839045e829a879af1d709be16ab0f88 jdk-9+150
d27bab22ff62823902d93d1d35ca397cfd50d059 jdk-9+151
a20f2cf90762673e1bc4980fd6597e70a2578045 jdk-9+152
1c4411322327aea3f91011ec3977a12a05b09629 jdk-9+153

View File

@ -310,7 +310,6 @@ module java.base {
// JDK-internal service types
uses jdk.internal.logger.DefaultLoggerFinder;
uses sun.security.ssl.ClientKeyExchangeService;
uses sun.security.util.AuthResourcesProvider;
uses sun.text.spi.JavaTimeDateTimePatternProvider;
uses sun.util.spi.CalendarProvider;
uses sun.util.locale.provider.LocaleDataMetaInfo;
@ -322,6 +321,4 @@ module java.base {
provides java.nio.file.spi.FileSystemProvider with
jdk.internal.jrtfs.JrtFileSystemProvider;
provides sun.security.util.AuthResourcesProvider with
sun.security.util.AuthResourcesProviderImpl;
}

View File

@ -331,9 +331,8 @@ public final class ConfigFile extends Configuration {
if (debugConfig != null) {
debugConfig.println(fnfe.toString());
}
throw new IOException(ResourcesMgr.getString
("Configuration.Error.No.such.file.or.directory",
"sun.security.util.AuthResources"));
throw new IOException(ResourcesMgr.getAuthResourceString
("Configuration.Error.No.such.file.or.directory"));
}
}
@ -661,8 +660,8 @@ public final class ConfigFile extends Configuration {
}
private IOException ioException(String resourceKey, Object... args) {
MessageFormat form = new MessageFormat(ResourcesMgr.getString
(resourceKey, "sun.security.util.AuthResources"));
MessageFormat form = new MessageFormat(
ResourcesMgr.getAuthResourceString(resourceKey));
return new IOException(form.format(args));
}
}

View File

@ -34,6 +34,7 @@ import java.lang.reflect.Constructor;
import javax.security.auth.Subject;
import sun.security.provider.PolicyParser.PrincipalEntry;
import sun.security.util.ResourcesMgr;
/**
* <p> This <code>SubjectCodeSource</code> class contains
@ -47,15 +48,6 @@ class SubjectCodeSource extends CodeSource implements java.io.Serializable {
private static final long serialVersionUID = 6039418085604715275L;
private static final java.util.ResourceBundle rb =
java.security.AccessController.doPrivileged
(new java.security.PrivilegedAction<java.util.ResourceBundle>() {
public java.util.ResourceBundle run() {
return (java.util.ResourceBundle.getBundle
("sun.security.util.AuthResources"));
}
});
private Subject subject;
private LinkedList<PrincipalEntry> principals;
private static final Class<?>[] PARAMS = { String.class };
@ -391,7 +383,7 @@ class SubjectCodeSource extends CodeSource implements java.io.Serializable {
ListIterator<PrincipalEntry> li = principals.listIterator();
while (li.hasNext()) {
PrincipalEntry pppe = li.next();
returnMe = returnMe + rb.getString("NEWLINE") +
returnMe = returnMe + ResourcesMgr.getAuthResourceString("NEWLINE") +
pppe.getPrincipalClass() + " " +
pppe.getPrincipalName();
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 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
@ -3522,7 +3522,8 @@ public final class Main {
System.err.flush();
reply = (new BufferedReader(new InputStreamReader
(System.in))).readLine();
if (collator.compare(reply, "") == 0 ||
if (reply == null ||
collator.compare(reply, "") == 0 ||
collator.compare(reply, rb.getString("n")) == 0 ||
collator.compare(reply, rb.getString("no")) == 0) {
reply = "NO";

View File

@ -1,29 +0,0 @@
/*
* Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package sun.security.util;
public interface AuthResourcesProvider extends java.util.spi.ResourceBundleProvider {
}

View File

@ -1,35 +0,0 @@
/*
* Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package sun.security.util;
import java.util.spi.AbstractResourceBundleProvider;
public final class AuthResourcesProviderImpl extends AbstractResourceBundleProvider
implements AuthResourcesProvider {
public AuthResourcesProviderImpl() {
super("java.class");
}
}

View File

@ -25,18 +25,22 @@
package sun.security.util;
import java.util.Map;
import java.util.ResourceBundle;
import java.util.concurrent.ConcurrentHashMap;
import jdk.internal.misc.VM;
/**
*/
public class ResourcesMgr {
// intended for java.security, javax.security and sun.security resources
private static java.util.ResourceBundle bundle;
private final static String RESOURCES = "sun.security.util.Resources";
private final static String AUTH_RESOURCES = "sun.security.util.AuthResources";
// intended for com.sun.security resources
private static java.util.ResourceBundle altBundle;
private final static Map<String, ResourceBundle> bundles = new ConcurrentHashMap<>();
public static String getString(String s) {
ResourceBundle bundle = bundles.get(RESOURCES);
if (bundle == null) {
// only load if/when needed
@ -52,19 +56,15 @@ public class ResourcesMgr {
return bundle.getString(s);
}
public static String getString(String s, final String altBundleName) {
if (altBundle == null) {
// only load if/when needed
altBundle = java.security.AccessController.doPrivileged(
new java.security.PrivilegedAction<java.util.ResourceBundle>() {
public java.util.ResourceBundle run() {
return (java.util.ResourceBundle.getBundle(altBundleName));
}
});
public static String getAuthResourceString(String s) {
if (VM.initLevel() == 3) {
// cannot trigger loading of any resource bundle as
// it depends on the system class loader fully initialized.
throw new InternalError("system class loader is being initialized");
}
return altBundle.getString(s);
return bundles.computeIfAbsent(AUTH_RESOURCES, ResourceBundle::getBundle)
.getString(s);
}
}

View File

@ -205,3 +205,11 @@ grant codeBase "jrt:/jdk.accessibility" {
grant codeBase "jrt:/jdk.desktop" {
permission java.lang.RuntimePermission "accessClassInPackage.com.sun.awt";
};
// permissions needed by applications using java.desktop module
grant {
permission java.lang.RuntimePermission "accessClassInPackage.com.sun.beans";
permission java.lang.RuntimePermission "accessClassInPackage.com.sun.beans.*";
permission java.lang.RuntimePermission "accessClassInPackage.com.sun.java.swing.plaf.*";
permission java.lang.RuntimePermission "accessClassInPackage.com.apple.*";
};

View File

@ -75,8 +75,8 @@ Java_sun_nio_ch_WindowsSelectorImpl_00024SubSelector_poll0(JNIEnv *env, jobject
} else if (timeout < 0) {
tv = NULL;
} else {
tv = &timevalue;
jlong sec = timeout / 1000;
tv = &timevalue;
//
// struct timeval members are signed 32-bit integers so the
// signed 64-bit jlong needs to be clamped

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 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,7 +25,7 @@
package com.sun.jmx.defaults;
import java.util.logging.Logger;
import java.lang.System.Logger;
/**
* This contains the property list defined for this
@ -120,7 +120,7 @@ public class JmxProperties {
* Logger for MBean Server information.
*/
public static final Logger MBEANSERVER_LOGGER =
Logger.getLogger(MBEANSERVER_LOGGER_NAME);
System.getLogger(MBEANSERVER_LOGGER_NAME);
/**
* Logger name for MLet service information.
@ -132,7 +132,7 @@ public class JmxProperties {
* Logger for MLet service information.
*/
public static final Logger MLET_LOGGER =
Logger.getLogger(MLET_LOGGER_NAME);
System.getLogger(MLET_LOGGER_NAME);
/**
* Logger name for Monitor information.
@ -144,7 +144,7 @@ public class JmxProperties {
* Logger for Monitor information.
*/
public static final Logger MONITOR_LOGGER =
Logger.getLogger(MONITOR_LOGGER_NAME);
System.getLogger(MONITOR_LOGGER_NAME);
/**
* Logger name for Timer information.
@ -156,7 +156,7 @@ public class JmxProperties {
* Logger for Timer information.
*/
public static final Logger TIMER_LOGGER =
Logger.getLogger(TIMER_LOGGER_NAME);
System.getLogger(TIMER_LOGGER_NAME);
/**
* Logger name for Event Management information.
@ -168,7 +168,7 @@ public class JmxProperties {
* Logger for Event Management information.
*/
public static final Logger NOTIFICATION_LOGGER =
Logger.getLogger(NOTIFICATION_LOGGER_NAME);
System.getLogger(NOTIFICATION_LOGGER_NAME);
/**
* Logger name for Relation Service.
@ -180,7 +180,7 @@ public class JmxProperties {
* Logger for Relation Service.
*/
public static final Logger RELATION_LOGGER =
Logger.getLogger(RELATION_LOGGER_NAME);
System.getLogger(RELATION_LOGGER_NAME);
/**
* Logger name for Model MBean.
@ -192,7 +192,7 @@ public class JmxProperties {
* Logger for Model MBean.
*/
public static final Logger MODELMBEAN_LOGGER =
Logger.getLogger(MODELMBEAN_LOGGER_NAME);
System.getLogger(MODELMBEAN_LOGGER_NAME);
/**
* Logger name for all other JMX classes.
@ -204,5 +204,5 @@ public class JmxProperties {
* Logger for all other JMX classes.
*/
public static final Logger MISC_LOGGER =
Logger.getLogger(MISC_LOGGER_NAME);
System.getLogger(MISC_LOGGER_NAME);
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2000, 2016, 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
@ -50,7 +50,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.WeakHashMap;
import java.util.logging.Level;
import java.lang.System.Logger.Level;
// JMX import
import javax.management.Attribute;
@ -258,19 +258,16 @@ public class DefaultMBeanServerInterceptor implements MBeanServerInterceptor {
/* Load the appropriate class. */
if (withDefaultLoaderRepository) {
if (MBEANSERVER_LOGGER.isLoggable(Level.FINER)) {
MBEANSERVER_LOGGER.logp(Level.FINER,
DefaultMBeanServerInterceptor.class.getName(),
"createMBean",
if (MBEANSERVER_LOGGER.isLoggable(Level.TRACE)) {
MBEANSERVER_LOGGER.log(Level.TRACE,
"ClassName = " + className + ", ObjectName = " + name);
}
theClass =
instantiator.findClassWithDefaultLoaderRepository(className);
} else if (loaderName == null) {
if (MBEANSERVER_LOGGER.isLoggable(Level.FINER)) {
MBEANSERVER_LOGGER.logp(Level.FINER,
DefaultMBeanServerInterceptor.class.getName(),
"createMBean", "ClassName = " + className +
if (MBEANSERVER_LOGGER.isLoggable(Level.TRACE)) {
MBEANSERVER_LOGGER.log(Level.TRACE,
"ClassName = " + className +
", ObjectName = " + name + ", Loader name = null");
}
@ -279,10 +276,9 @@ public class DefaultMBeanServerInterceptor implements MBeanServerInterceptor {
} else {
loaderName = nonDefaultDomain(loaderName);
if (MBEANSERVER_LOGGER.isLoggable(Level.FINER)) {
MBEANSERVER_LOGGER.logp(Level.FINER,
DefaultMBeanServerInterceptor.class.getName(),
"createMBean", "ClassName = " + className +
if (MBEANSERVER_LOGGER.isLoggable(Level.TRACE)) {
MBEANSERVER_LOGGER.log(Level.TRACE,
"ClassName = " + className +
", ObjectName = " + name +
", Loader name = " + loaderName);
}
@ -633,10 +629,8 @@ public class DefaultMBeanServerInterceptor implements MBeanServerInterceptor {
name = nonDefaultDomain(name);
if (MBEANSERVER_LOGGER.isLoggable(Level.FINER)) {
MBEANSERVER_LOGGER.logp(Level.FINER,
DefaultMBeanServerInterceptor.class.getName(),
"getAttribute",
if (MBEANSERVER_LOGGER.isLoggable(Level.TRACE)) {
MBEANSERVER_LOGGER.log(Level.TRACE,
"Attribute = " + attribute + ", ObjectName = " + name);
}
@ -670,10 +664,8 @@ public class DefaultMBeanServerInterceptor implements MBeanServerInterceptor {
name = nonDefaultDomain(name);
if (MBEANSERVER_LOGGER.isLoggable(Level.FINER)) {
MBEANSERVER_LOGGER.logp(Level.FINER,
DefaultMBeanServerInterceptor.class.getName(),
"getAttributes", "ObjectName = " + name);
if (MBEANSERVER_LOGGER.isLoggable(Level.TRACE)) {
MBEANSERVER_LOGGER.log(Level.TRACE, "ObjectName = " + name);
}
final DynamicMBean instance = getMBean(name);
@ -732,10 +724,8 @@ public class DefaultMBeanServerInterceptor implements MBeanServerInterceptor {
name = nonDefaultDomain(name);
if (MBEANSERVER_LOGGER.isLoggable(Level.FINER)) {
MBEANSERVER_LOGGER.logp(Level.FINER,
DefaultMBeanServerInterceptor.class.getName(),
"setAttribute", "ObjectName = " + name +
if (MBEANSERVER_LOGGER.isLoggable(Level.TRACE)) {
MBEANSERVER_LOGGER.log(Level.TRACE, "ObjectName = " + name +
", Attribute = " + attribute.getName());
}
@ -910,10 +900,9 @@ public class DefaultMBeanServerInterceptor implements MBeanServerInterceptor {
name = nonDefaultDomain(name);
if (MBEANSERVER_LOGGER.isLoggable(Level.FINER)) {
MBEANSERVER_LOGGER.logp(Level.FINER,
DefaultMBeanServerInterceptor.class.getName(),
"registerMBean", "ObjectName = " + name);
if (MBEANSERVER_LOGGER.isLoggable(Level.TRACE)) {
MBEANSERVER_LOGGER.log(Level.TRACE,
"ObjectName = " + name);
}
ObjectName logicalName = preRegister(mbean, server, name);
@ -1023,14 +1012,14 @@ public class DefaultMBeanServerInterceptor implements MBeanServerInterceptor {
if (mbean instanceof MBeanRegistration)
((MBeanRegistration) mbean).postRegister(registrationDone);
} catch (RuntimeException e) {
MBEANSERVER_LOGGER.fine("While registering MBean ["+logicalName+
MBEANSERVER_LOGGER.log(Level.DEBUG, "While registering MBean ["+logicalName+
"]: " + "Exception thrown by postRegister: " +
"rethrowing <"+e+">, but keeping the MBean registered");
throw new RuntimeMBeanException(e,
"RuntimeException thrown in postRegister method: "+
"rethrowing <"+e+">, but keeping the MBean registered");
} catch (Error er) {
MBEANSERVER_LOGGER.fine("While registering MBean ["+logicalName+
MBEANSERVER_LOGGER.log(Level.DEBUG, "While registering MBean ["+logicalName+
"]: " + "Error thrown by postRegister: " +
"rethrowing <"+er+">, but keeping the MBean registered");
throw new RuntimeErrorException(er,
@ -1053,7 +1042,7 @@ public class DefaultMBeanServerInterceptor implements MBeanServerInterceptor {
try {
moi.postDeregister();
} catch (RuntimeException e) {
MBEANSERVER_LOGGER.fine("While unregistering MBean ["+mbean+
MBEANSERVER_LOGGER.log(Level.DEBUG, "While unregistering MBean ["+mbean+
"]: " + "Exception thrown by postDeregister: " +
"rethrowing <"+e+">, although the MBean is succesfully " +
"unregistered");
@ -1062,7 +1051,7 @@ public class DefaultMBeanServerInterceptor implements MBeanServerInterceptor {
"rethrowing <"+e+
">, although the MBean is sucessfully unregistered");
} catch (Error er) {
MBEANSERVER_LOGGER.fine("While unregistering MBean ["+mbean+
MBEANSERVER_LOGGER.log(Level.DEBUG, "While unregistering MBean ["+mbean+
"]: " + "Error thrown by postDeregister: " +
"rethrowing <"+er+">, although the MBean is succesfully " +
"unregistered");
@ -1087,10 +1076,9 @@ public class DefaultMBeanServerInterceptor implements MBeanServerInterceptor {
}
DynamicMBean obj = repository.retrieve(name);
if (obj == null) {
if (MBEANSERVER_LOGGER.isLoggable(Level.FINER)) {
MBEANSERVER_LOGGER.logp(Level.FINER,
DefaultMBeanServerInterceptor.class.getName(),
"getMBean", name + " : Found no object");
if (MBEANSERVER_LOGGER.isLoggable(Level.TRACE)) {
MBEANSERVER_LOGGER.log(Level.TRACE,
name + " : Found no object");
}
throw new InstanceNotFoundException(name.toString());
}
@ -1176,10 +1164,8 @@ public class DefaultMBeanServerInterceptor implements MBeanServerInterceptor {
// ------------------------------
// ------------------------------
if (MBEANSERVER_LOGGER.isLoggable(Level.FINER)) {
MBEANSERVER_LOGGER.logp(Level.FINER,
DefaultMBeanServerInterceptor.class.getName(),
"addNotificationListener", "ObjectName = " + name);
if (MBEANSERVER_LOGGER.isLoggable(Level.TRACE)) {
MBEANSERVER_LOGGER.log(Level.TRACE, "ObjectName = " + name);
}
DynamicMBean instance = getMBean(name);
@ -1226,10 +1212,8 @@ public class DefaultMBeanServerInterceptor implements MBeanServerInterceptor {
// ----------------
// Add a listener on an MBean
// ----------------
if (MBEANSERVER_LOGGER.isLoggable(Level.FINER)) {
MBEANSERVER_LOGGER.logp(Level.FINER,
DefaultMBeanServerInterceptor.class.getName(),
"addNotificationListener",
if (MBEANSERVER_LOGGER.isLoggable(Level.TRACE)) {
MBEANSERVER_LOGGER.log(Level.TRACE,
"ObjectName = " + name + ", Listener = " + listener);
}
server.addNotificationListener(name,(NotificationListener) resource,
@ -1255,10 +1239,8 @@ public class DefaultMBeanServerInterceptor implements MBeanServerInterceptor {
throws InstanceNotFoundException, ListenerNotFoundException {
NotificationListener instance = getListener(listener);
if (MBEANSERVER_LOGGER.isLoggable(Level.FINER)) {
MBEANSERVER_LOGGER.logp(Level.FINER,
DefaultMBeanServerInterceptor.class.getName(),
"removeNotificationListener",
if (MBEANSERVER_LOGGER.isLoggable(Level.TRACE)) {
MBEANSERVER_LOGGER.log(Level.TRACE,
"ObjectName = " + name + ", Listener = " + listener);
}
server.removeNotificationListener(name, instance);
@ -1272,10 +1254,8 @@ public class DefaultMBeanServerInterceptor implements MBeanServerInterceptor {
NotificationListener instance = getListener(listener);
if (MBEANSERVER_LOGGER.isLoggable(Level.FINER)) {
MBEANSERVER_LOGGER.logp(Level.FINER,
DefaultMBeanServerInterceptor.class.getName(),
"removeNotificationListener",
if (MBEANSERVER_LOGGER.isLoggable(Level.TRACE)) {
MBEANSERVER_LOGGER.log(Level.TRACE,
"ObjectName = " + name + ", Listener = " + listener);
}
server.removeNotificationListener(name, instance, filter, handback);
@ -1313,10 +1293,8 @@ public class DefaultMBeanServerInterceptor implements MBeanServerInterceptor {
boolean removeAll)
throws InstanceNotFoundException, ListenerNotFoundException {
if (MBEANSERVER_LOGGER.isLoggable(Level.FINER)) {
MBEANSERVER_LOGGER.logp(Level.FINER,
DefaultMBeanServerInterceptor.class.getName(),
"removeNotificationListener", "ObjectName = " + name);
if (MBEANSERVER_LOGGER.isLoggable(Level.TRACE)) {
MBEANSERVER_LOGGER.log(Level.TRACE, "ObjectName = " + name);
}
DynamicMBean instance = getMBean(name);
@ -1421,10 +1399,9 @@ public class DefaultMBeanServerInterceptor implements MBeanServerInterceptor {
return classNameClass.isAssignableFrom(resourceClass);
} catch (Exception x) {
/* Could be SecurityException or ClassNotFoundException */
if (MBEANSERVER_LOGGER.isLoggable(Level.FINEST)) {
MBEANSERVER_LOGGER.logp(Level.FINEST,
DefaultMBeanServerInterceptor.class.getName(),
"isInstanceOf", "Exception calling isInstanceOf", x);
if (MBEANSERVER_LOGGER.isLoggable(Level.DEBUG)) {
MBEANSERVER_LOGGER.log(Level.DEBUG,
"Exception calling isInstanceOf", x);
}
return false;
}
@ -1489,10 +1466,8 @@ public class DefaultMBeanServerInterceptor implements MBeanServerInterceptor {
MBeanServerNotification notif = new MBeanServerNotification(
NotifType,MBeanServerDelegate.DELEGATE_NAME,0,name);
if (MBEANSERVER_LOGGER.isLoggable(Level.FINER)) {
MBEANSERVER_LOGGER.logp(Level.FINER,
DefaultMBeanServerInterceptor.class.getName(),
"sendNotification", NotifType + " " + name);
if (MBEANSERVER_LOGGER.isLoggable(Level.TRACE)) {
MBEANSERVER_LOGGER.log(Level.TRACE, NotifType + " " + name);
}
delegate.sendNotification(notif);
@ -1594,10 +1569,8 @@ public class DefaultMBeanServerInterceptor implements MBeanServerInterceptor {
try {
return getClassName(mbean);
} catch (Exception e) {
if (MBEANSERVER_LOGGER.isLoggable(Level.FINEST)) {
MBEANSERVER_LOGGER.logp(Level.FINEST,
DefaultMBeanServerInterceptor.class.getName(),
"safeGetClassName",
if (MBEANSERVER_LOGGER.isLoggable(Level.DEBUG)) {
MBEANSERVER_LOGGER.log(Level.DEBUG,
"Exception getting MBean class name", e);
}
return null;
@ -1885,10 +1858,9 @@ public class DefaultMBeanServerInterceptor implements MBeanServerInterceptor {
// ---------------------
// Send create event
// ---------------------
if (MBEANSERVER_LOGGER.isLoggable(Level.FINER)) {
MBEANSERVER_LOGGER.logp(Level.FINER,
DefaultMBeanServerInterceptor.class.getName(),
"addObject", "Send create notification of object " +
if (MBEANSERVER_LOGGER.isLoggable(Level.TRACE)) {
MBEANSERVER_LOGGER.log(Level.TRACE,
"Send create notification of object " +
logicalName.getCanonicalName());
}
@ -1926,10 +1898,9 @@ public class DefaultMBeanServerInterceptor implements MBeanServerInterceptor {
// ---------------------
// Send deletion event
// ---------------------
if (MBEANSERVER_LOGGER.isLoggable(Level.FINER)) {
MBEANSERVER_LOGGER.logp(Level.FINER,
DefaultMBeanServerInterceptor.class.getName(),
"unregisterMBean", "Send delete notification of object " +
if (MBEANSERVER_LOGGER.isLoggable(Level.TRACE)) {
MBEANSERVER_LOGGER.log(Level.TRACE,
"Send delete notification of object " +
logicalName.getCanonicalName());
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -33,7 +33,7 @@ import java.util.Arrays;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.lang.System.Logger.Level;
import javax.management.MBeanPermission;
import javax.management.ObjectName;
@ -148,10 +148,9 @@ final class ClassLoaderRepositorySupport
// from javax.management.loading.DefaultLoaderRepository
public final Class<?> loadClassWithout(ClassLoader without, String className)
throws ClassNotFoundException {
if (MBEANSERVER_LOGGER.isLoggable(Level.FINER)) {
MBEANSERVER_LOGGER.logp(Level.FINER,
ClassLoaderRepositorySupport.class.getName(),
"loadClassWithout", className + " without " + without);
if (MBEANSERVER_LOGGER.isLoggable(Level.TRACE)) {
MBEANSERVER_LOGGER.log(Level.TRACE,
className + " without " + without);
}
// without is null => just behave as loadClass
@ -172,10 +171,9 @@ final class ClassLoaderRepositorySupport
public final Class<?> loadClassBefore(ClassLoader stop, String className)
throws ClassNotFoundException {
if (MBEANSERVER_LOGGER.isLoggable(Level.FINER)) {
MBEANSERVER_LOGGER.logp(Level.FINER,
ClassLoaderRepositorySupport.class.getName(),
"loadClassBefore", className + " before " + stop);
if (MBEANSERVER_LOGGER.isLoggable(Level.TRACE)) {
MBEANSERVER_LOGGER.log(Level.TRACE,
className + " before " + stop);
}
if (stop == null)
@ -206,10 +204,8 @@ final class ClassLoaderRepositorySupport
continue;
if (cl == stop)
break;
if (MBEANSERVER_LOGGER.isLoggable(Level.FINER)) {
MBEANSERVER_LOGGER.logp(Level.FINER,
ClassLoaderRepositorySupport.class.getName(),
"loadClass", "Trying loader = " + cl);
if (MBEANSERVER_LOGGER.isLoggable(Level.TRACE)) {
MBEANSERVER_LOGGER.log(Level.TRACE, "Trying loader = " + cl);
}
/* We used to have a special case for "instanceof
MLet" here, where we invoked the method
@ -239,10 +235,9 @@ final class ClassLoaderRepositorySupport
//
List<ClassLoader> excluded = search.get(className);
if ((excluded!= null) && (excluded.contains(aloader))) {
if (MBEANSERVER_LOGGER.isLoggable(Level.FINER)) {
MBEANSERVER_LOGGER.logp(Level.FINER,
ClassLoaderRepositorySupport.class.getName(),
"startValidSearch", "Already requested loader = " +
if (MBEANSERVER_LOGGER.isLoggable(Level.TRACE)) {
MBEANSERVER_LOGGER.log(Level.TRACE,
"Already requested loader = " +
aloader + " class = " + className);
}
throw new ClassNotFoundException(className);
@ -255,10 +250,8 @@ final class ClassLoaderRepositorySupport
search.put(className, excluded);
}
excluded.add(aloader);
if (MBEANSERVER_LOGGER.isLoggable(Level.FINER)) {
MBEANSERVER_LOGGER.logp(Level.FINER,
ClassLoaderRepositorySupport.class.getName(),
"startValidSearch",
if (MBEANSERVER_LOGGER.isLoggable(Level.TRACE)) {
MBEANSERVER_LOGGER.log(Level.TRACE,
"loader = " + aloader + " class = " + className);
}
}
@ -271,10 +264,8 @@ final class ClassLoaderRepositorySupport
List<ClassLoader> excluded = search.get(className);
if (excluded != null) {
excluded.remove(aloader);
if (MBEANSERVER_LOGGER.isLoggable(Level.FINER)) {
MBEANSERVER_LOGGER.logp(Level.FINER,
ClassLoaderRepositorySupport.class.getName(),
"stopValidSearch",
if (MBEANSERVER_LOGGER.isLoggable(Level.TRACE)) {
MBEANSERVER_LOGGER.log(Level.TRACE,
"loader = " + aloader + " class = " + className);
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 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
@ -36,7 +36,7 @@ import java.security.PrivilegedAction;
import java.security.PrivilegedExceptionAction;
import java.util.List;
import java.util.Set;
import java.util.logging.Level;
import java.lang.System.Logger.Level;
import javax.management.Attribute;
import javax.management.AttributeList;
@ -1229,16 +1229,14 @@ public final class JmxMBeanServer
}
});
} catch (SecurityException e) {
if (MBEANSERVER_LOGGER.isLoggable(Level.FINEST)) {
MBEANSERVER_LOGGER.logp(Level.FINEST,
JmxMBeanServer.class.getName(), "initialize",
if (MBEANSERVER_LOGGER.isLoggable(Level.DEBUG)) {
MBEANSERVER_LOGGER.log(Level.DEBUG,
"Unexpected security exception occurred", e);
}
throw e;
} catch (Exception e) {
if (MBEANSERVER_LOGGER.isLoggable(Level.FINEST)) {
MBEANSERVER_LOGGER.logp(Level.FINEST,
JmxMBeanServer.class.getName(), "initialize",
if (MBEANSERVER_LOGGER.isLoggable(Level.DEBUG)) {
MBEANSERVER_LOGGER.log(Level.DEBUG,
"Unexpected exception occurred", e);
}
throw new

View File

@ -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
@ -40,7 +40,7 @@ import java.security.Permissions;
import java.security.PrivilegedAction;
import java.security.ProtectionDomain;
import java.util.Map;
import java.util.logging.Level;
import java.lang.System.Logger.Level;
import javax.management.InstanceNotFoundException;
import javax.management.MBeanException;
@ -186,19 +186,15 @@ public class MBeanInstantiator {
}
}
} catch (ClassNotFoundException e) {
if (MBEANSERVER_LOGGER.isLoggable(Level.FINEST)) {
MBEANSERVER_LOGGER.logp(Level.FINEST,
MBeanInstantiator.class.getName(),
"findSignatureClasses",
if (MBEANSERVER_LOGGER.isLoggable(Level.DEBUG)) {
MBEANSERVER_LOGGER.log(Level.DEBUG,
"The parameter class could not be found", e);
}
throw new ReflectionException(e,
"The parameter class could not be found");
} catch (RuntimeException e) {
if (MBEANSERVER_LOGGER.isLoggable(Level.FINEST)) {
MBEANSERVER_LOGGER.logp(Level.FINEST,
MBeanInstantiator.class.getName(),
"findSignatureClasses",
if (MBEANSERVER_LOGGER.isLoggable(Level.DEBUG)) {
MBEANSERVER_LOGGER.log(Level.DEBUG,
"Unexpected exception", e);
}
throw e;
@ -696,19 +692,15 @@ public class MBeanInstantiator {
tab[i] = Class.forName(signature[i], false, aLoader);
}
} catch (ClassNotFoundException e) {
if (MBEANSERVER_LOGGER.isLoggable(Level.FINEST)) {
MBEANSERVER_LOGGER.logp(Level.FINEST,
MBeanInstantiator.class.getName(),
"findSignatureClasses",
if (MBEANSERVER_LOGGER.isLoggable(Level.DEBUG)) {
MBEANSERVER_LOGGER.log(Level.DEBUG,
"The parameter class could not be found", e);
}
throw new ReflectionException(e,
"The parameter class could not be found");
} catch (RuntimeException e) {
if (MBEANSERVER_LOGGER.isLoggable(Level.FINEST)) {
MBEANSERVER_LOGGER.logp(Level.FINEST,
MBeanInstantiator.class.getName(),
"findSignatureClasses",
if (MBEANSERVER_LOGGER.isLoggable(Level.DEBUG)) {
MBEANSERVER_LOGGER.log(Level.DEBUG,
"Unexpected exception", e);
}
throw e;

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2002, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -24,7 +24,7 @@
*/
package com.sun.jmx.mbeanserver;
import java.util.logging.Level;
import java.lang.System.Logger.Level;
import javax.management.Attribute;
import javax.management.AttributeList;
@ -244,10 +244,8 @@ final class MBeanServerDelegateImpl
} catch (Exception x) {
// Skip the attribute that couldn't be obtained.
//
if (MBEANSERVER_LOGGER.isLoggable(Level.FINEST)) {
MBEANSERVER_LOGGER.logp(Level.FINEST,
MBeanServerDelegateImpl.class.getName(),
"getAttributes",
if (MBEANSERVER_LOGGER.isLoggable(Level.TRACE)) {
MBEANSERVER_LOGGER.log(Level.TRACE,
"Attribute " + attn[i] + " not found");
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 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
@ -34,7 +34,7 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import java.util.logging.Level;
import java.lang.System.Logger.Level;
import java.util.Map;
import java.util.Set;
import javax.management.DynamicMBean;
@ -264,7 +264,7 @@ public class Repository {
context.unregistered();
} catch (Exception x) {
// shouldn't come here...
MBEANSERVER_LOGGER.log(Level.FINE,
MBEANSERVER_LOGGER.log(Level.DEBUG,
"Unexpected exception while unregistering "+name,
x);
}
@ -385,9 +385,8 @@ public class Repository {
final RegistrationContext context)
throws InstanceAlreadyExistsException {
if (MBEANSERVER_LOGGER.isLoggable(Level.FINER)) {
MBEANSERVER_LOGGER.logp(Level.FINER, Repository.class.getName(),
"addMBean", "name = " + name);
if (MBEANSERVER_LOGGER.isLoggable(Level.TRACE)) {
MBEANSERVER_LOGGER.log(Level.TRACE, "name = " + name);
}
// Extract the domain name.
@ -456,9 +455,8 @@ public class Repository {
* false otherwise.
*/
public boolean contains(ObjectName name) {
if (MBEANSERVER_LOGGER.isLoggable(Level.FINER)) {
MBEANSERVER_LOGGER.logp(Level.FINER, Repository.class.getName(),
"contains", " name = " + name);
if (MBEANSERVER_LOGGER.isLoggable(Level.TRACE)) {
MBEANSERVER_LOGGER.log(Level.TRACE, "name = " + name);
}
lock.readLock().lock();
try {
@ -478,9 +476,8 @@ public class Repository {
* null otherwise.
*/
public DynamicMBean retrieve(ObjectName name) {
if (MBEANSERVER_LOGGER.isLoggable(Level.FINER)) {
MBEANSERVER_LOGGER.logp(Level.FINER, Repository.class.getName(),
"retrieve", "name = " + name);
if (MBEANSERVER_LOGGER.isLoggable(Level.TRACE)) {
MBEANSERVER_LOGGER.log(Level.TRACE, "name = " + name);
}
// Calls internal retrieve method to get the named object
@ -609,9 +606,8 @@ public class Repository {
throws InstanceNotFoundException {
// Debugging stuff
if (MBEANSERVER_LOGGER.isLoggable(Level.FINER)) {
MBEANSERVER_LOGGER.logp(Level.FINER, Repository.class.getName(),
"remove", "name = " + name);
if (MBEANSERVER_LOGGER.isLoggable(Level.TRACE)) {
MBEANSERVER_LOGGER.log(Level.TRACE, "name = " + name);
}
// Extract domain name.

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -25,222 +25,188 @@
package com.sun.jmx.remote.util;
import java.util.logging.Logger;
import java.lang.System.Logger;
import java.lang.System.Logger.Level;
import java.util.ResourceBundle;
public class ClassLogger {
public class ClassLogger implements System.Logger {
private static final boolean ok;
private final String className;
private final Logger logger;
static {
/* We attempt to work even if we are running in J2SE 1.3, where
there is no java.util.logging. The technique we use here is
not strictly portable, but it does work with Sun's J2SE 1.3
at least. This is just a best effort: the Right Thing is for
people to use at least J2SE 1.4. */
boolean loaded = false;
try {
Class<?> c = java.util.logging.Logger.class;
loaded = true;
} catch (Error e) {
// OK.
// java.util.logger package is not available in this jvm.
}
ok = loaded;
}
public ClassLogger(String subsystem, String className) {
if (ok)
logger = Logger.getLogger(subsystem);
else
logger = null;
logger = System.getLogger(subsystem);
this.className = className;
}
public final boolean traceOn() {
return finerOn();
return logger.isLoggable(Level.TRACE);
}
public final boolean debugOn() {
return finestOn();
return logger.isLoggable(Level.DEBUG);
}
public final boolean warningOn() {
return ok && logger.isLoggable(java.util.logging.Level.WARNING);
return logger.isLoggable(Level.WARNING);
}
public final boolean infoOn() {
return ok && logger.isLoggable(java.util.logging.Level.INFO);
return logger.isLoggable(Level.INFO);
}
public final boolean configOn() {
return ok && logger.isLoggable(java.util.logging.Level.CONFIG);
return logger.isLoggable(Level.DEBUG);
}
public final boolean fineOn() {
return ok && logger.isLoggable(java.util.logging.Level.FINE);
return logger.isLoggable(Level.DEBUG);
}
public final boolean finerOn() {
return ok && logger.isLoggable(java.util.logging.Level.FINER);
return logger.isLoggable(Level.TRACE);
}
public final boolean finestOn() {
return ok && logger.isLoggable(java.util.logging.Level.FINEST);
return logger.isLoggable(Level.TRACE);
}
public final void debug(String func, String msg) {
finest(func,msg);
logger.log(Level.DEBUG, msg);
}
public final void debug(String func, Throwable t) {
finest(func,t);
logger.log(Level.DEBUG, className + "::" + func, t);
}
public final void debug(String func, String msg, Throwable t) {
finest(func,msg,t);
logger.log(Level.DEBUG, msg, t);
}
public final void trace(String func, String msg) {
finer(func,msg);
logger.log(Level.TRACE, msg);
}
public final void trace(String func, Throwable t) {
finer(func,t);
logger.log(Level.TRACE, className + "::" + func, t);
}
public final void trace(String func, String msg, Throwable t) {
finer(func,msg,t);
logger.log(Level.TRACE, msg, t);
}
public final void error(String func, String msg) {
severe(func,msg);
logger.log(Level.ERROR, msg);
}
public final void error(String func, Throwable t) {
severe(func,t);
logger.log(Level.ERROR, className + "::" + func, t);
}
public final void error(String func, String msg, Throwable t) {
severe(func,msg,t);
logger.log(Level.ERROR, msg, t);
}
public final void finest(String func, String msg) {
if (ok)
logger.logp(java.util.logging.Level.FINEST, className, func, msg);
logger.log(Level.TRACE, msg);
}
public final void finest(String func, Throwable t) {
if (ok)
logger.logp(java.util.logging.Level.FINEST, className, func,
t.toString(), t);
logger.log(Level.TRACE, className + "::" + func, t);
}
public final void finest(String func, String msg, Throwable t) {
if (ok)
logger.logp(java.util.logging.Level.FINEST, className, func, msg,
t);
logger.log(Level.TRACE, msg, t);
}
public final void finer(String func, String msg) {
if (ok)
logger.logp(java.util.logging.Level.FINER, className, func, msg);
logger.log(Level.TRACE, msg);
}
public final void finer(String func, Throwable t) {
if (ok)
logger.logp(java.util.logging.Level.FINER, className, func,
t.toString(), t);
logger.log(Level.TRACE, className + "::" + func, t);
}
public final void finer(String func, String msg, Throwable t) {
if (ok)
logger.logp(java.util.logging.Level.FINER, className, func, msg,t);
logger.log(Level.DEBUG, msg, t);
}
public final void fine(String func, String msg) {
if (ok)
logger.logp(java.util.logging.Level.FINE, className, func, msg);
logger.log(Level.DEBUG, msg);
}
public final void fine(String func, Throwable t) {
if (ok)
logger.logp(java.util.logging.Level.FINE, className, func,
t.toString(), t);
logger.log(Level.DEBUG, className + "::" + func, t);
}
public final void fine(String func, String msg, Throwable t) {
if (ok)
logger.logp(java.util.logging.Level.FINE, className, func, msg,
t);
logger.log(Level.DEBUG, msg, t);
}
public final void config(String func, String msg) {
if (ok)
logger.logp(java.util.logging.Level.CONFIG, className, func, msg);
logger.log(Level.DEBUG, msg);
}
public final void config(String func, Throwable t) {
if (ok)
logger.logp(java.util.logging.Level.CONFIG, className, func,
t.toString(), t);
logger.log(Level.DEBUG, className + "::" + func, t);
}
public final void config(String func, String msg, Throwable t) {
if (ok)
logger.logp(java.util.logging.Level.CONFIG, className, func, msg,
t);
logger.log(Level.DEBUG, msg, t);
}
public final void info(String func, String msg) {
if (ok)
logger.logp(java.util.logging.Level.INFO, className, func, msg);
logger.log(Level.INFO, msg);
}
public final void info(String func, Throwable t) {
if (ok)
logger.logp(java.util.logging.Level.INFO, className, func,
t.toString(), t);
logger.log(Level.INFO, className + "::" + func, t);
}
public final void info(String func, String msg, Throwable t) {
if (ok)
logger.logp(java.util.logging.Level.INFO, className, func, msg,
t);
logger.log(Level.INFO, msg, t);
}
public final void warning(String func, String msg) {
if (ok)
logger.logp(java.util.logging.Level.WARNING, className, func, msg);
logger.log(Level.WARNING, msg);
}
public final void warning(String func, Throwable t) {
if (ok)
logger.logp(java.util.logging.Level.WARNING, className, func,
t.toString(), t);
logger.log(Level.WARNING, className + "::" + func, t);
}
public final void warning(String func, String msg, Throwable t) {
if (ok)
logger.logp(java.util.logging.Level.WARNING, className, func, msg,
t);
logger.log(Level.WARNING, msg, t);
}
public final void severe(String func, String msg) {
if (ok)
logger.logp(java.util.logging.Level.SEVERE, className, func, msg);
logger.log(Level.ERROR, msg);
}
public final void severe(String func, Throwable t) {
if (ok)
logger.logp(java.util.logging.Level.SEVERE, className, func,
t.toString(), t);
logger.log(Level.ERROR, className + "::" + func, t);
}
public final void severe(String func, String msg, Throwable t) {
if (ok)
logger.logp(java.util.logging.Level.SEVERE, className, func, msg,
t);
logger.log(Level.ERROR, msg, t);
}
public final String getName() {
return logger.getName();
}
public final boolean isLoggable(Level level) {
return logger.isLoggable(level);
}
public final void log(Level level, ResourceBundle bundle, String msg,
Throwable thrown) {
logger.log(level, bundle, msg, thrown);
}
public final void log(Level level, ResourceBundle bundle, String format,
Object... params) {
logger.log(level, bundle, format, params);
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 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,6 +25,7 @@
package javax.management;
import java.lang.System.Logger.Level;
import com.sun.jmx.defaults.JmxProperties;
import com.sun.jmx.defaults.ServiceName;
import com.sun.jmx.mbeanserver.Util;
@ -84,7 +85,8 @@ public class MBeanServerDelegate implements MBeanServerDelegateMBean,
try {
localHost = java.net.InetAddress.getLocalHost().getHostName();
} catch (java.net.UnknownHostException e) {
JmxProperties.MISC_LOGGER.finest("Can't get local host name, " +
JmxProperties.MISC_LOGGER.log(Level.TRACE,
"Can't get local host name, " +
"using \"localhost\" instead. Cause is: "+e);
localHost = "localhost";
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 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
@ -32,7 +32,7 @@ import com.sun.jmx.mbeanserver.GetPropertyAction;
import java.security.AccessController;
import java.security.Permission;
import java.util.ArrayList;
import java.util.logging.Level;
import java.lang.System.Logger.Level;
import javax.management.loading.ClassLoaderRepository;
import sun.reflect.misc.ReflectUtil;
@ -399,7 +399,7 @@ public class MBeanServerFactory {
return (String) mbs.getAttribute(MBeanServerDelegate.DELEGATE_NAME,
"MBeanServerId");
} catch (JMException e) {
JmxProperties.MISC_LOGGER.finest(
JmxProperties.MISC_LOGGER.log(Level.TRACE,
"Ignoring exception while getting MBeanServerId: "+e);
return null;
}
@ -421,9 +421,7 @@ public class MBeanServerFactory {
private static synchronized void removeMBeanServer(MBeanServer mbs) {
boolean removed = mBeanServerList.remove(mbs);
if (!removed) {
MBEANSERVER_LOGGER.logp(Level.FINER,
MBeanServerFactory.class.getName(),
"removeMBeanServer(MBeanServer)",
MBEANSERVER_LOGGER.log(Level.TRACE,
"MBeanServer was not in list!");
throw new IllegalArgumentException("MBeanServer was not in list!");
}
@ -504,15 +502,12 @@ public class MBeanServerFactory {
throw new JMRuntimeException(msg, x);
}
} catch (RuntimeException x) {
if (MBEANSERVER_LOGGER.isLoggable(Level.FINEST)) {
if (MBEANSERVER_LOGGER.isLoggable(Level.DEBUG)) {
StringBuilder strb = new StringBuilder()
.append("Failed to instantiate MBeanServerBuilder: ").append(x)
.append("\n\t\tCheck the value of the ")
.append(JMX_INITIAL_BUILDER).append(" property.");
MBEANSERVER_LOGGER.logp(Level.FINEST,
MBeanServerFactory.class.getName(),
"checkMBeanServerBuilder",
strb.toString());
MBEANSERVER_LOGGER.log(Level.DEBUG, strb::toString);
}
throw x;
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -38,7 +38,7 @@ import java.security.PrivilegedAction;
import java.util.HashMap;
import java.util.Map;
import java.util.WeakHashMap;
import java.util.logging.Level;
import java.lang.System.Logger.Level;
import javax.management.openmbean.OpenMBeanAttributeInfo;
import javax.management.openmbean.OpenMBeanAttributeInfoSupport;
import javax.management.openmbean.OpenMBeanConstructorInfo;
@ -432,16 +432,14 @@ public class StandardMBean implements DynamicMBean, MBeanRegistration {
final MBeanInfo cached = getCachedMBeanInfo();
if (cached != null) return cached;
} catch (RuntimeException x) {
if (MISC_LOGGER.isLoggable(Level.FINEST)) {
MISC_LOGGER.logp(Level.FINEST,
MBeanServerFactory.class.getName(), "getMBeanInfo",
if (MISC_LOGGER.isLoggable(Level.DEBUG)) {
MISC_LOGGER.log(Level.DEBUG,
"Failed to get cached MBeanInfo", x);
}
}
if (MISC_LOGGER.isLoggable(Level.FINER)) {
MISC_LOGGER.logp(Level.FINER,
MBeanServerFactory.class.getName(), "getMBeanInfo",
if (MISC_LOGGER.isLoggable(Level.TRACE)) {
MISC_LOGGER.log(Level.TRACE,
"Building MBeanInfo for " +
getImplementationClass().getName());
}
@ -465,9 +463,8 @@ public class StandardMBean implements DynamicMBean, MBeanRegistration {
try {
cacheMBeanInfo(nmbi);
} catch (RuntimeException x) {
if (MISC_LOGGER.isLoggable(Level.FINEST)) {
MISC_LOGGER.logp(Level.FINEST,
MBeanServerFactory.class.getName(), "getMBeanInfo",
if (MISC_LOGGER.isLoggable(Level.DEBUG)) {
MISC_LOGGER.log(Level.DEBUG,
"Failed to cache MBeanInfo", x);
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2000, 2008, 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
@ -28,7 +28,7 @@ package javax.management.loading;
import static com.sun.jmx.defaults.JmxProperties.MBEANSERVER_LOGGER;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Level;
import java.lang.System.Logger.Level;
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
@ -71,9 +71,7 @@ public class DefaultLoaderRepository {
*/
public static Class<?> loadClass(String className)
throws ClassNotFoundException {
MBEANSERVER_LOGGER.logp(Level.FINEST,
DefaultLoaderRepository.class.getName(),
"loadClass", className);
MBEANSERVER_LOGGER.log(Level.TRACE, className);
return load(null, className);
}
@ -96,9 +94,7 @@ public class DefaultLoaderRepository {
public static Class<?> loadClassWithout(ClassLoader loader,
String className)
throws ClassNotFoundException {
MBEANSERVER_LOGGER.logp(Level.FINEST,
DefaultLoaderRepository.class.getName(),
"loadClassWithout", className);
MBEANSERVER_LOGGER.log(Level.TRACE, className);
return load(loader, className);
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 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
@ -52,7 +52,7 @@ import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.logging.Level;
import java.lang.System.Logger.Level;
import java.util.Map;
import java.util.Set;
import java.util.StringTokenizer;
@ -412,9 +412,8 @@ public class MLet extends java.net.URLClassLoader
if (!Arrays.asList(getURLs()).contains(ur))
super.addURL(ur);
} catch (MalformedURLException e) {
if (MLET_LOGGER.isLoggable(Level.FINEST)) {
MLET_LOGGER.logp(Level.FINEST, MLet.class.getName(),
"addUrl", "Malformed URL: " + url, e);
if (MLET_LOGGER.isLoggable(Level.DEBUG)) {
MLET_LOGGER.log(Level.DEBUG, "Malformed URL: " + url, e);
}
throw new
ServiceNotFoundException("The specified URL is malformed");
@ -481,23 +480,19 @@ public class MLet extends java.net.URLClassLoader
public Set<Object> getMBeansFromURL(String url)
throws ServiceNotFoundException {
String mth = "getMBeansFromURL";
if (server == null) {
throw new IllegalStateException("This MLet MBean is not " +
"registered with an MBeanServer.");
}
// Parse arguments
if (url == null) {
MLET_LOGGER.logp(Level.FINER, MLet.class.getName(),
mth, "URL is null");
MLET_LOGGER.log(Level.TRACE, "URL is null");
throw new ServiceNotFoundException("The specified URL is null");
} else {
url = url.replace(File.separatorChar,'/');
}
if (MLET_LOGGER.isLoggable(Level.FINER)) {
MLET_LOGGER.logp(Level.FINER, MLet.class.getName(),
mth, "<URL = " + url + ">");
if (MLET_LOGGER.isLoggable(Level.TRACE)) {
MLET_LOGGER.log(Level.TRACE, "<URL = " + url + ">");
}
// Parse URL
@ -508,7 +503,7 @@ public class MLet extends java.net.URLClassLoader
final String msg =
"Problems while parsing URL [" + url +
"], got exception [" + e.toString() + "]";
MLET_LOGGER.logp(Level.FINER, MLet.class.getName(), mth, msg);
MLET_LOGGER.log(Level.TRACE, msg);
throw EnvHelp.initCause(new ServiceNotFoundException(msg), e);
}
@ -516,7 +511,7 @@ public class MLet extends java.net.URLClassLoader
if (mletList.size() == 0) {
final String msg =
"File " + url + " not found or MLET tag not defined in file";
MLET_LOGGER.logp(Level.FINER, MLet.class.getName(), mth, msg);
MLET_LOGGER.log(Level.TRACE, msg);
throw new ServiceNotFoundException(msg);
}
@ -538,7 +533,7 @@ public class MLet extends java.net.URLClassLoader
URL documentBase = elmt.getDocumentBase();
// Display debug information
if (MLET_LOGGER.isLoggable(Level.FINER)) {
if (MLET_LOGGER.isLoggable(Level.TRACE)) {
final StringBuilder strb = new StringBuilder()
.append("\n\tMLET TAG = ").append(elmt.getAttributes())
.append("\n\tCODEBASE = ").append(codebase)
@ -548,16 +543,15 @@ public class MLet extends java.net.URLClassLoader
.append("\n\tNAME = ").append(name)
.append("\n\tVERSION = ").append(version)
.append("\n\tDOCUMENT URL = ").append(documentBase);
MLET_LOGGER.logp(Level.FINER, MLet.class.getName(),
mth, strb.toString());
MLET_LOGGER.log(Level.TRACE, strb::toString);
}
// Load classes from JAR files
StringTokenizer st = new StringTokenizer(jarFiles, ",", false);
while (st.hasMoreTokens()) {
String tok = st.nextToken().trim();
if (MLET_LOGGER.isLoggable(Level.FINER)) {
MLET_LOGGER.logp(Level.FINER, MLet.class.getName(), mth,
if (MLET_LOGGER.isLoggable(Level.TRACE)) {
MLET_LOGGER.log(Level.TRACE,
"Load archive for codebase <" + codebase +
">, file <" + tok + ">");
}
@ -570,8 +564,8 @@ public class MLet extends java.net.URLClassLoader
try {
codebase = check(version, codebase, tok, elmt);
} catch (Exception ex) {
MLET_LOGGER.logp(Level.FINEST, MLet.class.getName(),
mth, "Got unexpected exception", ex);
MLET_LOGGER.log(Level.DEBUG,
"Got unexpected exception", ex);
mbeans.add(ex);
continue;
}
@ -599,7 +593,7 @@ public class MLet extends java.net.URLClassLoader
final String msg =
"CODE and OBJECT parameters cannot be specified at the " +
"same time in tag MLET";
MLET_LOGGER.logp(Level.FINER, MLet.class.getName(), mth, msg);
MLET_LOGGER.log(Level.TRACE, msg);
mbeans.add(new Error(msg));
continue;
}
@ -607,7 +601,7 @@ public class MLet extends java.net.URLClassLoader
final String msg =
"Either CODE or OBJECT parameter must be specified in " +
"tag MLET";
MLET_LOGGER.logp(Level.FINER, MLet.class.getName(), mth, msg);
MLET_LOGGER.log(Level.TRACE, msg);
mbeans.add(new Error(msg));
continue;
}
@ -635,7 +629,7 @@ public class MLet extends java.net.URLClassLoader
Object[] parms = objectPars.toArray();
String[] signature = new String[signat.size()];
signat.toArray(signature);
if (MLET_LOGGER.isLoggable(Level.FINEST)) {
if (MLET_LOGGER.isLoggable(Level.TRACE)) {
final StringBuilder strb = new StringBuilder();
for (int i = 0; i < signature.length; i++) {
strb.append("\n\tSignature = ")
@ -643,9 +637,7 @@ public class MLet extends java.net.URLClassLoader
.append("\t\nParams = ")
.append(parms[i]);
}
MLET_LOGGER.logp(Level.FINEST,
MLet.class.getName(),
mth, strb.toString());
MLET_LOGGER.log(Level.TRACE, strb::toString);
}
if (name == null) {
objInst =
@ -668,53 +660,46 @@ public class MLet extends java.net.URLClassLoader
objInst = new ObjectInstance(name, o.getClass().getName());
}
} catch (ReflectionException ex) {
MLET_LOGGER.logp(Level.FINER, MLet.class.getName(), mth,
"ReflectionException", ex);
MLET_LOGGER.log(Level.TRACE, "ReflectionException", ex);
mbeans.add(ex);
continue;
} catch (InstanceAlreadyExistsException ex) {
MLET_LOGGER.logp(Level.FINER, MLet.class.getName(), mth,
MLET_LOGGER.log(Level.TRACE,
"InstanceAlreadyExistsException", ex);
mbeans.add(ex);
continue;
} catch (MBeanRegistrationException ex) {
MLET_LOGGER.logp(Level.FINER, MLet.class.getName(), mth,
"MBeanRegistrationException", ex);
MLET_LOGGER.log(Level.TRACE, "MBeanRegistrationException", ex);
mbeans.add(ex);
continue;
} catch (MBeanException ex) {
MLET_LOGGER.logp(Level.FINER, MLet.class.getName(), mth,
"MBeanException", ex);
MLET_LOGGER.log(Level.TRACE, "MBeanException", ex);
mbeans.add(ex);
continue;
} catch (NotCompliantMBeanException ex) {
MLET_LOGGER.logp(Level.FINER, MLet.class.getName(), mth,
MLET_LOGGER.log(Level.TRACE,
"NotCompliantMBeanException", ex);
mbeans.add(ex);
continue;
} catch (InstanceNotFoundException ex) {
MLET_LOGGER.logp(Level.FINER, MLet.class.getName(), mth,
MLET_LOGGER.log(Level.TRACE,
"InstanceNotFoundException", ex);
mbeans.add(ex);
continue;
} catch (IOException ex) {
MLET_LOGGER.logp(Level.FINER, MLet.class.getName(), mth,
"IOException", ex);
MLET_LOGGER.log(Level.TRACE, "IOException", ex);
mbeans.add(ex);
continue;
} catch (SecurityException ex) {
MLET_LOGGER.logp(Level.FINER, MLet.class.getName(), mth,
"SecurityException", ex);
MLET_LOGGER.log(Level.TRACE, "SecurityException", ex);
mbeans.add(ex);
continue;
} catch (Exception ex) {
MLET_LOGGER.logp(Level.FINER, MLet.class.getName(), mth,
"Exception", ex);
MLET_LOGGER.log(Level.TRACE, "Exception", ex);
mbeans.add(ex);
continue;
} catch (Error ex) {
MLET_LOGGER.logp(Level.FINER, MLet.class.getName(), mth,
"Error", ex);
MLET_LOGGER.log(Level.TRACE, "Error", ex);
mbeans.add(ex);
continue;
}
@ -937,20 +922,18 @@ public class MLet extends java.net.URLClassLoader
Class<?> findClass(String name, ClassLoaderRepository clr)
throws ClassNotFoundException {
Class<?> c = null;
MLET_LOGGER.logp(Level.FINER, MLet.class.getName(), "findClass", name);
MLET_LOGGER.log(Level.TRACE, name);
// Try looking in the JAR:
try {
c = super.findClass(name);
if (MLET_LOGGER.isLoggable(Level.FINER)) {
MLET_LOGGER.logp(Level.FINER, MLet.class.getName(),
"findClass",
if (MLET_LOGGER.isLoggable(Level.TRACE)) {
MLET_LOGGER.log(Level.TRACE,
"Class " + name + " loaded through MLet classloader");
}
} catch (ClassNotFoundException e) {
// Drop through
if (MLET_LOGGER.isLoggable(Level.FINEST)) {
MLET_LOGGER.logp(Level.FINEST, MLet.class.getName(),
"findClass",
if (MLET_LOGGER.isLoggable(Level.TRACE)) {
MLET_LOGGER.log(Level.TRACE,
"Class " + name + " not found locally");
}
}
@ -959,32 +942,28 @@ public class MLet extends java.net.URLClassLoader
// Try the classloader repository:
//
try {
if (MLET_LOGGER.isLoggable(Level.FINEST)) {
MLET_LOGGER.logp(Level.FINEST, MLet.class.getName(),
"findClass",
if (MLET_LOGGER.isLoggable(Level.TRACE)) {
MLET_LOGGER.log(Level.TRACE,
"Class " + name + " : looking in CLR");
}
c = clr.loadClassBefore(this, name);
// The loadClassBefore method never returns null.
// If the class is not found we get an exception.
if (MLET_LOGGER.isLoggable(Level.FINER)) {
MLET_LOGGER.logp(Level.FINER, MLet.class.getName(),
"findClass",
if (MLET_LOGGER.isLoggable(Level.TRACE)) {
MLET_LOGGER.log(Level.TRACE,
"Class " + name + " loaded through " +
"the default classloader repository");
}
} catch (ClassNotFoundException e) {
// Drop through
if (MLET_LOGGER.isLoggable(Level.FINEST)) {
MLET_LOGGER.logp(Level.FINEST, MLet.class.getName(),
"findClass",
if (MLET_LOGGER.isLoggable(Level.TRACE)) {
MLET_LOGGER.log(Level.TRACE,
"Class " + name + " not found in CLR");
}
}
}
if (c == null) {
MLET_LOGGER.logp(Level.FINEST, MLet.class.getName(),
"findClass", "Failed to load class " + name);
MLET_LOGGER.log(Level.TRACE, "Failed to load class " + name);
throw new ClassNotFoundException(name);
}
return c;
@ -1041,8 +1020,8 @@ public class MLet extends java.net.URLClassLoader
//
// See if the native library is accessible as a resource through the JAR file.
//
if (MLET_LOGGER.isLoggable(Level.FINER)) {
MLET_LOGGER.logp(Level.FINER, MLet.class.getName(), mth,
if (MLET_LOGGER.isLoggable(Level.TRACE)) {
MLET_LOGGER.log(Level.TRACE,
"Search " + libname + " in all JAR files");
}
@ -1051,14 +1030,14 @@ public class MLet extends java.net.URLClassLoader
// for "foo" on Solaris SPARC 5.7 we try to load "libfoo.so"
// from the JAR file.
//
if (MLET_LOGGER.isLoggable(Level.FINER)) {
MLET_LOGGER.logp(Level.FINER, MLet.class.getName(), mth,
if (MLET_LOGGER.isLoggable(Level.TRACE)) {
MLET_LOGGER.log(Level.TRACE,
"loadLibraryAsResource(" + nativelibname + ")");
}
abs_path = loadLibraryAsResource(nativelibname);
if (abs_path != null) {
if (MLET_LOGGER.isLoggable(Level.FINER)) {
MLET_LOGGER.logp(Level.FINER, MLet.class.getName(), mth,
if (MLET_LOGGER.isLoggable(Level.TRACE)) {
MLET_LOGGER.log(Level.TRACE,
nativelibname + " loaded, absolute path = " + abs_path);
}
return abs_path;
@ -1073,15 +1052,15 @@ public class MLet extends java.net.URLClassLoader
removeSpace(System.getProperty("os.arch")) + File.separator +
removeSpace(System.getProperty("os.version")) + File.separator +
"lib" + File.separator + nativelibname;
if (MLET_LOGGER.isLoggable(Level.FINER)) {
MLET_LOGGER.logp(Level.FINER, MLet.class.getName(), mth,
if (MLET_LOGGER.isLoggable(Level.TRACE)) {
MLET_LOGGER.log(Level.TRACE,
"loadLibraryAsResource(" + nativelibname + ")");
}
abs_path = loadLibraryAsResource(nativelibname);
if (abs_path != null) {
if (MLET_LOGGER.isLoggable(Level.FINER)) {
MLET_LOGGER.logp(Level.FINER, MLet.class.getName(), mth,
if (MLET_LOGGER.isLoggable(Level.TRACE)) {
MLET_LOGGER.log(Level.TRACE,
nativelibname + " loaded, absolute path = " + abs_path);
}
return abs_path;
@ -1091,10 +1070,10 @@ public class MLet extends java.net.URLClassLoader
// All paths exhausted, library not found in JAR file.
//
if (MLET_LOGGER.isLoggable(Level.FINER)) {
MLET_LOGGER.logp(Level.FINER, MLet.class.getName(), mth,
if (MLET_LOGGER.isLoggable(Level.TRACE)) {
MLET_LOGGER.log(Level.TRACE,
libname + " not found in any JAR file");
MLET_LOGGER.logp(Level.FINER, MLet.class.getName(), mth,
MLET_LOGGER.log(Level.TRACE,
"Search " + libname + " along the path " +
"specified as the java.library.path property");
}
@ -1127,8 +1106,8 @@ public class MLet extends java.net.URLClassLoader
if (tmpDirFile == null) return null;
return tmpDirFile.getAbsolutePath();
} catch (Exception x) {
MLET_LOGGER.logp(Level.FINEST, MLet.class.getName(),
"getTmpDir", "Failed to determine system temporary dir");
MLET_LOGGER.log(Level.DEBUG,
"Failed to determine system temporary dir");
return null;
} finally {
// Cleanup ...
@ -1136,12 +1115,12 @@ public class MLet extends java.net.URLClassLoader
try {
boolean deleted = tmpFile.delete();
if (!deleted) {
MLET_LOGGER.logp(Level.FINEST, MLet.class.getName(),
"getTmpDir", "Failed to delete temp file");
MLET_LOGGER.log(Level.DEBUG,
"Failed to delete temp file");
}
} catch (Exception x) {
MLET_LOGGER.logp(Level.FINEST, MLet.class.getName(),
"getTmpDir", "Failed to delete temporary file", x);
MLET_LOGGER.log(Level.DEBUG,
"Failed to delete temporary file", x);
}
}
}
@ -1183,8 +1162,7 @@ public class MLet extends java.net.URLClassLoader
}
}
} catch (Exception e) {
MLET_LOGGER.logp(Level.FINEST, MLet.class.getName(),
"loadLibraryAsResource",
MLET_LOGGER.log(Level.DEBUG,
"Failed to load library : " + libname, e);
return null;
}
@ -1248,9 +1226,8 @@ public class MLet extends java.net.URLClassLoader
if (filename != null) {
filename = filename.replace(File.separatorChar,'/');
}
if (MLET_LOGGER.isLoggable(Level.FINER)) {
MLET_LOGGER.logp(Level.FINER, MLet.class.getName(),
"loadSerializedObject", codebase.toString() + filename);
if (MLET_LOGGER.isLoggable(Level.TRACE)) {
MLET_LOGGER.log(Level.TRACE, codebase.toString() + filename);
}
InputStream is = getResourceAsStream(filename);
if (is != null) {
@ -1260,24 +1237,21 @@ public class MLet extends java.net.URLClassLoader
ois.close();
return serObject;
} catch (IOException e) {
if (MLET_LOGGER.isLoggable(Level.FINEST)) {
MLET_LOGGER.logp(Level.FINEST, MLet.class.getName(),
"loadSerializedObject",
if (MLET_LOGGER.isLoggable(Level.DEBUG)) {
MLET_LOGGER.log(Level.DEBUG,
"Exception while deserializing " + filename, e);
}
throw e;
} catch (ClassNotFoundException e) {
if (MLET_LOGGER.isLoggable(Level.FINEST)) {
MLET_LOGGER.logp(Level.FINEST, MLet.class.getName(),
"loadSerializedObject",
if (MLET_LOGGER.isLoggable(Level.DEBUG)) {
MLET_LOGGER.log(Level.DEBUG,
"Exception while deserializing " + filename, e);
}
throw e;
}
} else {
if (MLET_LOGGER.isLoggable(Level.FINEST)) {
MLET_LOGGER.logp(Level.FINEST, MLet.class.getName(),
"loadSerializedObject", "Error: File " + filename +
if (MLET_LOGGER.isLoggable(Level.DEBUG)) {
MLET_LOGGER.log(Level.DEBUG, "Error: File " + filename +
" containing serialized object not found");
}
throw new Error("File " + filename + " containing serialized object not found");
@ -1300,8 +1274,7 @@ public class MLet extends java.net.URLClassLoader
return(cons.newInstance(oo));
} catch (Exception e) {
MLET_LOGGER.logp(Level.FINEST, MLet.class.getName(),
"constructParameter", "Got unexpected exception", e);
MLET_LOGGER.log(Level.DEBUG, "Got unexpected exception", e);
}
}
if (type.compareTo("java.lang.Boolean") == 0)

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 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
@ -39,7 +39,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.logging.Level;
import java.lang.System.Logger.Level;
/**
* This class is used for parsing URLs.
@ -153,7 +153,6 @@ class MLetParser {
* Scan an html file for {@literal <mlet>} tags.
*/
public List<MLetContent> parse(URL url) throws IOException {
String mth = "parse";
// Warning Messages
String requiresTypeWarning = "<arg type=... value=...> tag requires type parameter.";
String requiresValueWarning = "<arg type=... value=...> tag requires value parameter.";
@ -204,33 +203,25 @@ class MLetParser {
Map<String,String> t = scanTag(in);
String att = t.get("type");
if (att == null) {
MLET_LOGGER.logp(Level.FINER,
MLetParser.class.getName(),
mth, requiresTypeWarning);
MLET_LOGGER.log(Level.TRACE, requiresTypeWarning);
throw new IOException(requiresTypeWarning);
} else {
if (atts != null) {
types.add(att);
} else {
MLET_LOGGER.logp(Level.FINER,
MLetParser.class.getName(),
mth, paramOutsideWarning);
MLET_LOGGER.log(Level.TRACE, paramOutsideWarning);
throw new IOException(paramOutsideWarning);
}
}
String val = t.get("value");
if (val == null) {
MLET_LOGGER.logp(Level.FINER,
MLetParser.class.getName(),
mth, requiresValueWarning);
MLET_LOGGER.log(Level.TRACE, requiresValueWarning);
throw new IOException(requiresValueWarning);
} else {
if (atts != null) {
values.add(val);
} else {
MLET_LOGGER.logp(Level.FINER,
MLetParser.class.getName(),
mth, paramOutsideWarning);
MLET_LOGGER.log(Level.TRACE, paramOutsideWarning);
throw new IOException(paramOutsideWarning);
}
}
@ -238,15 +229,11 @@ class MLetParser {
if (nm.equalsIgnoreCase(tag)) {
atts = scanTag(in);
if (atts.get("code") == null && atts.get("object") == null) {
MLET_LOGGER.logp(Level.FINER,
MLetParser.class.getName(),
mth, requiresCodeWarning);
MLET_LOGGER.log(Level.TRACE, requiresCodeWarning);
throw new IOException(requiresCodeWarning);
}
if (atts.get("archive") == null) {
MLET_LOGGER.logp(Level.FINER,
MLetParser.class.getName(),
mth, requiresJarsWarning);
MLET_LOGGER.log(Level.TRACE, requiresJarsWarning);
throw new IOException(requiresJarsWarning);
}
}

View File

@ -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.
*
* This code is free software; you can redistribute it and/or modify it
@ -51,7 +51,7 @@ import java.util.Set;
import java.util.SortedMap;
import java.util.StringTokenizer;
import java.util.TreeMap;
import java.util.logging.Level;
import java.lang.System.Logger.Level;
import javax.management.Descriptor;
import javax.management.ImmutableDescriptor;
@ -164,10 +164,8 @@ public class DescriptorSupport
* (the method {@link #isValid isValid} returns <CODE>false</CODE>)
*/
public DescriptorSupport() {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"DescriptorSupport()" , "Constructor");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Constructor");
}
init(null);
}
@ -188,17 +186,14 @@ public class DescriptorSupport
*/
public DescriptorSupport(int initNumFields)
throws MBeanException, RuntimeOperationsException {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"Descriptor(initNumFields = " + initNumFields + ")",
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"Descriptor(initNumFields = " + initNumFields + ") " +
"Constructor");
}
if (initNumFields <= 0) {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"Descriptor(initNumFields)",
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"Illegal arguments: initNumFields <= 0");
}
final String msg =
@ -219,10 +214,9 @@ public class DescriptorSupport
* fields, an empty Descriptor will be created.
*/
public DescriptorSupport(DescriptorSupport inDescr) {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"Descriptor(Descriptor)", "Constructor");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"Descriptor(Descriptor) Constructor");
}
if (inDescr == null)
init(null);
@ -268,16 +262,14 @@ public class DescriptorSupport
XMLParseException {
/* parse an XML-formatted string and populate internal
* structure with it */
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"Descriptor(String = '" + inStr + "')", "Constructor");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"Descriptor(String = '" + inStr + "') Constructor");
}
if (inStr == null) {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"Descriptor(String = null)", "Illegal arguments");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"Descriptor(String = null) Illegal arguments");
}
final String msg = "String in parameter is null";
final RuntimeException iae = new IllegalArgumentException(msg);
@ -350,10 +342,9 @@ public class DescriptorSupport
}
}
} // while tokens
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"Descriptor(XMLString)", "Exit");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"Descriptor(XMLString) Exit");
}
}
@ -380,19 +371,17 @@ public class DescriptorSupport
*/
public DescriptorSupport(String[] fieldNames, Object[] fieldValues)
throws RuntimeOperationsException {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"Descriptor(fieldNames,fieldObjects)", "Constructor");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"Descriptor(fieldNames,fieldObjects) Constructor");
}
if ((fieldNames == null) || (fieldValues == null) ||
(fieldNames.length != fieldValues.length)) {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"Descriptor(fieldNames,fieldObjects)",
"Illegal arguments");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"Descriptor(fieldNames,fieldObjects)" +
" Illegal arguments");
}
final String msg =
@ -408,10 +397,9 @@ public class DescriptorSupport
// the fieldName and fieldValue will be validated in setField.
setField(fieldNames[i], fieldValues[i]);
}
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"Descriptor(fieldNames,fieldObjects)", "Exit");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"Descriptor(fieldNames,fieldObjects) Exit");
}
}
@ -444,10 +432,9 @@ public class DescriptorSupport
*/
public DescriptorSupport(String... fields)
{
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"Descriptor(String... fields)", "Constructor");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"Descriptor(String... fields) Constructor");
}
init(null);
if (( fields == null ) || ( fields.length == 0))
@ -462,10 +449,9 @@ public class DescriptorSupport
int eq_separator = fields[i].indexOf('=');
if (eq_separator < 0) {
// illegal if no = or is first character
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"Descriptor(String... fields)",
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"Descriptor(String... fields) " +
"Illegal arguments: field does not have " +
"'=' as a name and value separator");
}
@ -482,10 +468,9 @@ public class DescriptorSupport
}
if (fieldName.equals("")) {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"Descriptor(String... fields)",
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"Descriptor(String... fields) " +
"Illegal arguments: fieldName is empty");
}
@ -496,10 +481,9 @@ public class DescriptorSupport
setField(fieldName,fieldValue);
}
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"Descriptor(String... fields)", "Exit");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"Descriptor(String... fields) Exit");
}
}
@ -517,10 +501,8 @@ public class DescriptorSupport
throws RuntimeOperationsException {
if ((fieldName == null) || (fieldName.equals(""))) {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"getFieldValue(String fieldName)",
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"Illegal arguments: null field name");
}
final String msg = "Fieldname requested is null";
@ -528,10 +510,9 @@ public class DescriptorSupport
throw new RuntimeOperationsException(iae, msg);
}
Object retValue = descriptorMap.get(fieldName);
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"getFieldValue(String fieldName = " + fieldName + ")",
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"getFieldValue(String fieldName = " + fieldName + ") " +
"Returns '" + retValue + "'");
}
return(retValue);
@ -542,10 +523,8 @@ public class DescriptorSupport
// field name cannot be null or empty
if ((fieldName == null) || (fieldName.equals(""))) {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"setField(fieldName,fieldValue)",
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"Illegal arguments: null or empty field name");
}
@ -555,10 +534,8 @@ public class DescriptorSupport
}
if (!validateField(fieldName, fieldValue)) {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"setField(fieldName,fieldValue)",
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"Illegal arguments");
}
@ -568,10 +545,8 @@ public class DescriptorSupport
throw new RuntimeOperationsException(iae, msg);
}
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"setField(fieldName,fieldValue)", "Entry: setting '"
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Entry: setting '"
+ fieldName + "' to '" + fieldValue + "'");
}
@ -582,10 +557,8 @@ public class DescriptorSupport
}
public synchronized String[] getFields() {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"getFields()", "Entry");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Entry");
}
int numberOfEntries = descriptorMap.size();
@ -594,20 +567,18 @@ public class DescriptorSupport
int i = 0;
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"getFields()", "Returning " + numberOfEntries + " fields");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"Returning " + numberOfEntries + " fields");
}
for (Iterator<Map.Entry<String, Object>> iter = returnedSet.iterator();
iter.hasNext(); i++) {
Map.Entry<String, Object> currElement = iter.next();
if (currElement == null) {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"getFields()", "Element is null");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"Element is null");
}
} else {
Object currValue = currElement.getValue();
@ -626,20 +597,16 @@ public class DescriptorSupport
}
}
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"getFields()", "Exit");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Exit");
}
return responseFields;
}
public synchronized String[] getFieldNames() {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"getFieldNames()", "Entry");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Entry");
}
int numberOfEntries = descriptorMap.size();
@ -648,10 +615,8 @@ public class DescriptorSupport
int i = 0;
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"getFieldNames()",
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"Returning " + numberOfEntries + " fields");
}
@ -660,20 +625,16 @@ public class DescriptorSupport
Map.Entry<String, Object> currElement = iter.next();
if (( currElement == null ) || (currElement.getKey() == null)) {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"getFieldNames()", "Field is null");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Field is null");
}
} else {
responseFields[i] = currElement.getKey().toString();
}
}
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"getFieldNames()", "Exit");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Exit");
}
return responseFields;
@ -681,10 +642,8 @@ public class DescriptorSupport
public synchronized Object[] getFieldValues(String... fieldNames) {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"getFieldValues(String... fieldNames)", "Entry");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Entry");
}
// if fieldNames == null return all values
// if fieldNames is String[0] return no values
@ -695,10 +654,8 @@ public class DescriptorSupport
int i = 0;
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"getFieldValues(String... fieldNames)",
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"Returning " + numberOfEntries + " fields");
}
@ -715,10 +672,8 @@ public class DescriptorSupport
}
}
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"getFieldValues(String... fieldNames)", "Exit");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Exit");
}
return responseFields;
@ -728,18 +683,14 @@ public class DescriptorSupport
Object[] fieldValues)
throws RuntimeOperationsException {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"setFields(fieldNames,fieldValues)", "Entry");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Entry");
}
if ((fieldNames == null) || (fieldValues == null) ||
(fieldNames.length != fieldValues.length)) {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"setFields(fieldNames,fieldValues)",
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"Illegal arguments");
}
@ -750,10 +701,8 @@ public class DescriptorSupport
for (int i=0; i < fieldNames.length; i++) {
if (( fieldNames[i] == null) || (fieldNames[i].equals(""))) {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"setFields(fieldNames,fieldValues)",
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"Null field name encountered at element " + i);
}
final String msg = "fieldNames is null or invalid";
@ -762,10 +711,8 @@ public class DescriptorSupport
}
setField(fieldNames[i], fieldValues[i]);
}
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"setFields(fieldNames,fieldValues)", "Exit");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Exit");
}
}
@ -779,10 +726,8 @@ public class DescriptorSupport
@Override
public synchronized Object clone() throws RuntimeOperationsException {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"clone()", "Entry");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Entry");
}
return(new DescriptorSupport(this));
}
@ -898,20 +843,17 @@ public class DescriptorSupport
*/
public synchronized boolean isValid() throws RuntimeOperationsException {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"isValid()", "Entry");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Entry");
}
// verify that the descriptor is valid, by iterating over each field...
Set<Map.Entry<String, Object>> returnedSet = descriptorMap.entrySet();
if (returnedSet == null) { // null descriptor, not valid
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"isValid()", "Returns false (null set)");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"isValid() Returns false (null set)");
}
return false;
}
@ -934,10 +876,8 @@ public class DescriptorSupport
(currElement.getValue()).toString())) {
continue;
} else {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"isValid()",
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"Field " + currElement.getKey() + "=" +
currElement.getValue() + " is not valid");
}
@ -948,10 +888,9 @@ public class DescriptorSupport
}
// fell through, all fields OK
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"isValid()", "Returns true");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"isValid() Returns true");
}
return true;
}
@ -1287,28 +1226,23 @@ public class DescriptorSupport
*/
@Override
public synchronized String toString() {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"toString()", "Entry");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Entry");
}
String respStr = "";
String[] fields = getFields();
if ((fields == null) || (fields.length == 0)) {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"toString()", "Empty Descriptor");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Empty Descriptor");
}
return respStr;
}
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"toString()", "Printing " + fields.length + " fields");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"Printing " + fields.length + " fields");
}
for (int i=0; i < fields.length; i++) {
@ -1319,10 +1253,8 @@ public class DescriptorSupport
}
}
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
MODELMBEAN_LOGGER.logp(Level.FINEST,
DescriptorSupport.class.getName(),
"toString()", "Exit returning " + respStr);
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Exit returning " + respStr);
}
return respStr;

View File

@ -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
@ -39,7 +39,7 @@ import java.io.ObjectOutputStream;
import java.io.ObjectStreamField;
import java.lang.reflect.Method;
import java.security.AccessController;
import java.util.logging.Level;
import java.lang.System.Logger.Level;
import javax.management.Descriptor;
import javax.management.DescriptorKey;
@ -201,12 +201,11 @@ public class ModelMBeanAttributeInfo
throws javax.management.IntrospectionException {
super(name, description, getter, setter);
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanAttributeInfo.class.getName(),
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"ModelMBeanAttributeInfo(" +
"String,String,Method,Method)",
"Entry", name);
"String,String,Method,Method) " +
"Entry " + name);
}
attrDescriptor = validDescriptor(null);
@ -251,12 +250,11 @@ public class ModelMBeanAttributeInfo
super(name, description, getter, setter);
// put getter and setter methods in operations list
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanAttributeInfo.class.getName(),
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"ModelMBeanAttributeInfo(" +
"String,String,Method,Method,Descriptor)",
"Entry", name);
"String,String,Method,Method,Descriptor) " +
"Entry " + name);
}
attrDescriptor = validDescriptor(descriptor);
}
@ -282,8 +280,8 @@ public class ModelMBeanAttributeInfo
super(name, type, description, isReadable, isWritable, isIs);
// create default descriptor
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
ModelMBeanAttributeInfo.class.getName(),
"ModelMBeanAttributeInfo(" +
"String,String,String,boolean,boolean,boolean)",
@ -321,12 +319,11 @@ public class ModelMBeanAttributeInfo
Descriptor descriptor)
{
super(name, type, description, isReadable, isWritable, isIs);
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanAttributeInfo.class.getName(),
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"ModelMBeanAttributeInfo(String,String,String," +
"boolean,boolean,boolean,Descriptor)",
"Entry", name);
"boolean,boolean,boolean,Descriptor)" +
"Entry " + name);
}
attrDescriptor = validDescriptor(descriptor);
}
@ -347,10 +344,9 @@ public class ModelMBeanAttributeInfo
inInfo.isReadable(),
inInfo.isWritable(),
inInfo.isIs());
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanAttributeInfo.class.getName(),
"ModelMBeanAttributeInfo(ModelMBeanAttributeInfo)",
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"ModelMBeanAttributeInfo(ModelMBeanAttributeInfo) " +
"Entry");
}
Descriptor newDesc = inInfo.getDescriptor();
@ -368,10 +364,8 @@ public class ModelMBeanAttributeInfo
*/
public Descriptor getDescriptor() {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanAttributeInfo.class.getName(),
"getDescriptor()", "Entry");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Entry");
}
if (attrDescriptor == null) {
attrDescriptor = validDescriptor(null);
@ -411,10 +405,8 @@ public class ModelMBeanAttributeInfo
@Override
public Object clone()
{
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanAttributeInfo.class.getName(),
"clone()", "Entry");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Entry");
}
return(new ModelMBeanAttributeInfo(this));
}
@ -454,7 +446,7 @@ public class ModelMBeanAttributeInfo
boolean defaulted = (in == null);
if (defaulted) {
clone = new DescriptorSupport();
MODELMBEAN_LOGGER.finer("Null Descriptor, creating new.");
MODELMBEAN_LOGGER.log(Level.TRACE, "Null Descriptor, creating new.");
} else {
clone = (Descriptor) in.clone();
}
@ -462,15 +454,15 @@ public class ModelMBeanAttributeInfo
//Setting defaults.
if (defaulted && clone.getFieldValue("name")==null) {
clone.setField("name", this.getName());
MODELMBEAN_LOGGER.finer("Defaulting Descriptor name to " + this.getName());
MODELMBEAN_LOGGER.log(Level.TRACE, "Defaulting Descriptor name to " + this.getName());
}
if (defaulted && clone.getFieldValue("descriptorType")==null) {
clone.setField("descriptorType", "attribute");
MODELMBEAN_LOGGER.finer("Defaulting descriptorType to \"attribute\"");
MODELMBEAN_LOGGER.log(Level.TRACE, "Defaulting descriptorType to \"attribute\"");
}
if (clone.getFieldValue("displayName") == null) {
clone.setField("displayName",this.getName());
MODELMBEAN_LOGGER.finer("Defaulting Descriptor displayName to " + this.getName());
MODELMBEAN_LOGGER.log(Level.TRACE, "Defaulting Descriptor displayName to " + this.getName());
}
//Checking validity

View File

@ -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
@ -39,7 +39,7 @@ import java.io.ObjectOutputStream;
import java.io.ObjectStreamField;
import java.lang.reflect.Constructor;
import java.security.AccessController;
import java.util.logging.Level;
import java.lang.System.Logger.Level;
import javax.management.Descriptor;
import javax.management.DescriptorAccess;
@ -164,10 +164,9 @@ public class ModelMBeanConstructorInfo
Constructor<?> constructorMethod)
{
super(description, constructorMethod);
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanConstructorInfo.class.getName(),
"ModelMBeanConstructorInfo(String,Constructor)",
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"ModelMBeanConstructorInfo(String,Constructor) " +
"Entry");
}
consDescriptor = validDescriptor(null);
@ -209,11 +208,10 @@ public class ModelMBeanConstructorInfo
super(description, constructorMethod);
// put getter and setter methods in constructors list
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanConstructorInfo.class.getName(),
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"ModelMBeanConstructorInfo(" +
"String,Constructor,Descriptor)", "Entry");
"String,Constructor,Descriptor) Entry");
}
consDescriptor = validDescriptor(descriptor);
}
@ -232,11 +230,10 @@ public class ModelMBeanConstructorInfo
super(name, description, signature);
// create default descriptor
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanConstructorInfo.class.getName(),
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"ModelMBeanConstructorInfo(" +
"String,String,MBeanParameterInfo[])", "Entry");
"String,String,MBeanParameterInfo[]) Entry");
}
consDescriptor = validDescriptor(null);
}
@ -265,11 +262,10 @@ public class ModelMBeanConstructorInfo
Descriptor descriptor)
{
super(name, description, signature);
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanConstructorInfo.class.getName(),
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"ModelMBeanConstructorInfo(" +
"String,String,MBeanParameterInfo[],Descriptor)",
"String,String,MBeanParameterInfo[],Descriptor) " +
"Entry");
}
consDescriptor = validDescriptor(descriptor);
@ -284,11 +280,10 @@ public class ModelMBeanConstructorInfo
ModelMBeanConstructorInfo(ModelMBeanConstructorInfo old)
{
super(old.getName(), old.getDescription(), old.getSignature());
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanConstructorInfo.class.getName(),
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"ModelMBeanConstructorInfo(" +
"ModelMBeanConstructorInfo)", "Entry");
"ModelMBeanConstructorInfo) Entry");
}
consDescriptor = validDescriptor(consDescriptor);
}
@ -300,10 +295,8 @@ public class ModelMBeanConstructorInfo
@Override
public Object clone ()
{
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanConstructorInfo.class.getName(),
"clone()", "Entry");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Entry");
}
return(new ModelMBeanConstructorInfo(this)) ;
}
@ -321,10 +314,8 @@ public class ModelMBeanConstructorInfo
@Override
public Descriptor getDescriptor()
{
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanConstructorInfo.class.getName(),
"getDescriptor()", "Entry");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Entry");
}
if (consDescriptor == null){
consDescriptor = validDescriptor(null);
@ -356,10 +347,8 @@ public class ModelMBeanConstructorInfo
*/
public void setDescriptor(Descriptor inDescriptor)
{
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanConstructorInfo.class.getName(),
"setDescriptor()", "Entry");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Entry");
}
consDescriptor = validDescriptor(inDescriptor);
}
@ -370,10 +359,8 @@ public class ModelMBeanConstructorInfo
@Override
public String toString()
{
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanConstructorInfo.class.getName(),
"toString()", "Entry");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Entry");
}
String retStr =
"ModelMBeanConstructorInfo: " + this.getName() +
@ -408,7 +395,7 @@ public class ModelMBeanConstructorInfo
boolean defaulted = (in == null);
if (defaulted) {
clone = new DescriptorSupport();
MODELMBEAN_LOGGER.finer("Null Descriptor, creating new.");
MODELMBEAN_LOGGER.log(Level.TRACE, "Null Descriptor, creating new.");
} else {
clone = (Descriptor) in.clone();
}
@ -416,19 +403,19 @@ public class ModelMBeanConstructorInfo
//Setting defaults.
if (defaulted && clone.getFieldValue("name")==null) {
clone.setField("name", this.getName());
MODELMBEAN_LOGGER.finer("Defaulting Descriptor name to " + this.getName());
MODELMBEAN_LOGGER.log(Level.TRACE, "Defaulting Descriptor name to " + this.getName());
}
if (defaulted && clone.getFieldValue("descriptorType")==null) {
clone.setField("descriptorType", "operation");
MODELMBEAN_LOGGER.finer("Defaulting descriptorType to \"operation\"");
MODELMBEAN_LOGGER.log(Level.TRACE, "Defaulting descriptorType to \"operation\"");
}
if (clone.getFieldValue("displayName") == null) {
clone.setField("displayName",this.getName());
MODELMBEAN_LOGGER.finer("Defaulting Descriptor displayName to " + this.getName());
MODELMBEAN_LOGGER.log(Level.TRACE, "Defaulting Descriptor displayName to " + this.getName());
}
if (clone.getFieldValue("role") == null) {
clone.setField("role","constructor");
MODELMBEAN_LOGGER.finer("Defaulting Descriptor role field to \"constructor\"");
MODELMBEAN_LOGGER.log(Level.TRACE, "Defaulting Descriptor role field to \"constructor\"");
}
//Checking validity

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2000, 2008, 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 @@ import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.ObjectStreamField;
import java.security.AccessController;
import java.util.logging.Level;
import java.lang.System.Logger.Level;
import javax.management.Descriptor;
import javax.management.MBeanAttributeInfo;
@ -231,19 +231,16 @@ public class ModelMBeanInfoSupport extends MBeanInfo implements ModelMBeanInfo {
modelMBeanDescriptor = validDescriptor(mbeandescriptor);
} catch (MBeanException mbe) {
modelMBeanDescriptor = validDescriptor(null);
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanInfoSupport.class.getName(),
"ModelMBeanInfo(ModelMBeanInfo)",
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"ModelMBeanInfo(ModelMBeanInfo) " +
"Could not get a valid modelMBeanDescriptor, " +
"setting a default Descriptor");
}
}
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanInfoSupport.class.getName(),
"ModelMBeanInfo(ModelMBeanInfo)", "Exit");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Exit");
}
}
@ -330,12 +327,11 @@ public class ModelMBeanInfoSupport extends MBeanInfo implements ModelMBeanInfo {
modelMBeanOperations = operations;
modelMBeanNotifications = notifications;
modelMBeanDescriptor = validDescriptor(mbeandescriptor);
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanInfoSupport.class.getName(),
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"ModelMBeanInfoSupport(String,String,ModelMBeanAttributeInfo[]," +
"ModelMBeanConstructorInfo[],ModelMBeanOperationInfo[]," +
"ModelMBeanNotificationInfo[],Descriptor)",
"ModelMBeanNotificationInfo[],Descriptor) " +
"Exit");
}
}
@ -367,10 +363,8 @@ public class ModelMBeanInfoSupport extends MBeanInfo implements ModelMBeanInfo {
public Descriptor[] getDescriptors(String inDescriptorType)
throws MBeanException, RuntimeOperationsException {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanInfoSupport.class.getName(),
"getDescriptors(String)", "Entry");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Entry");
}
if ((inDescriptorType == null) || (inDescriptorType.equals(""))) {
@ -474,10 +468,8 @@ public class ModelMBeanInfoSupport extends MBeanInfo implements ModelMBeanInfo {
" the descriptors of the MBean";
throw new RuntimeOperationsException(iae,msg);
}
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanInfoSupport.class.getName(),
"getDescriptors(String)", "Exit");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Exit");
}
return retList;
@ -486,10 +478,8 @@ public class ModelMBeanInfoSupport extends MBeanInfo implements ModelMBeanInfo {
public void setDescriptors(Descriptor[] inDescriptors)
throws MBeanException, RuntimeOperationsException {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanInfoSupport.class.getName(),
"setDescriptors(Descriptor[])", "Entry");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Entry");
}
if (inDescriptors==null) {
// throw RuntimeOperationsException - invalid descriptor
@ -504,10 +494,8 @@ public class ModelMBeanInfoSupport extends MBeanInfo implements ModelMBeanInfo {
for (int j=0; j < inDescriptors.length; j++) {
setDescriptor(inDescriptors[j],null);
}
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanInfoSupport.class.getName(),
"setDescriptors(Descriptor[])", "Exit");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Exit");
}
}
@ -530,10 +518,8 @@ public class ModelMBeanInfoSupport extends MBeanInfo implements ModelMBeanInfo {
public Descriptor getDescriptor(String inDescriptorName)
throws MBeanException, RuntimeOperationsException {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanInfoSupport.class.getName(),
"getDescriptor(String)", "Entry");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Entry");
}
return(getDescriptor(inDescriptorName, null));
}
@ -606,10 +592,8 @@ public class ModelMBeanInfoSupport extends MBeanInfo implements ModelMBeanInfo {
throws MBeanException, RuntimeOperationsException {
final String excMsg =
"Exception occurred trying to set the descriptors of the MBean";
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanInfoSupport.class.getName(),
"setDescriptor(Descriptor,String)", "Entry");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Entry");
}
if (inDescriptor==null) {
@ -621,10 +605,9 @@ public class ModelMBeanInfoSupport extends MBeanInfo implements ModelMBeanInfo {
(String) inDescriptor.getFieldValue("descriptorType");
if (inDescriptorType == null) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanInfoSupport.class.getName(),
"setDescriptor(Descriptor,String)",
"descriptorType null in both String parameter and Descriptor, defaulting to "+ MMB);
MODELMBEAN_LOGGER.log(Level.TRACE,
"descriptorType null in both String parameter " +
"and Descriptor, defaulting to "+ MMB);
inDescriptorType = MMB;
}
}
@ -632,10 +615,9 @@ public class ModelMBeanInfoSupport extends MBeanInfo implements ModelMBeanInfo {
String inDescriptorName =
(String) inDescriptor.getFieldValue("name");
if (inDescriptorName == null) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanInfoSupport.class.getName(),
"setDescriptor(Descriptor,String)",
"descriptor name null, defaulting to "+ this.getClassName());
MODELMBEAN_LOGGER.log(Level.TRACE,
"descriptor name null, defaulting to " +
this.getClassName());
inDescriptorName = this.getClassName();
}
boolean found = false;
@ -653,17 +635,14 @@ public class ModelMBeanInfoSupport extends MBeanInfo implements ModelMBeanInfo {
ModelMBeanAttributeInfo mmbai =
(ModelMBeanAttributeInfo) attrList[i];
mmbai.setDescriptor(inDescriptor);
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
StringBuilder strb = new StringBuilder()
.append("Setting descriptor to ").append(inDescriptor)
.append("\t\n local: AttributeInfo descriptor is ")
.append(mmbai.getDescriptor())
.append("\t\n modelMBeanInfo: AttributeInfo descriptor is ")
.append(this.getDescriptor(inDescriptorName,"attribute"));
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanInfoSupport.class.getName(),
"setDescriptor(Descriptor,String)",
strb.toString());
MODELMBEAN_LOGGER.log(Level.TRACE, strb::toString);
}
}
}
@ -720,10 +699,8 @@ public class ModelMBeanInfoSupport extends MBeanInfo implements ModelMBeanInfo {
"; name=" + inDescriptorName);
throw new RuntimeOperationsException(iae, excMsg);
}
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanInfoSupport.class.getName(),
"setDescriptor(Descriptor,String)", "Exit");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Exit");
}
}
@ -732,10 +709,8 @@ public class ModelMBeanInfoSupport extends MBeanInfo implements ModelMBeanInfo {
public ModelMBeanAttributeInfo getAttribute(String inName)
throws MBeanException, RuntimeOperationsException {
ModelMBeanAttributeInfo retInfo = null;
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanInfoSupport.class.getName(),
"getAttribute(String)", "Entry");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Entry");
}
if (inName == null) {
throw new RuntimeOperationsException(
@ -748,7 +723,7 @@ public class ModelMBeanInfoSupport extends MBeanInfo implements ModelMBeanInfo {
if (attrList != null) numAttrs = attrList.length;
for (int i=0; (i < numAttrs) && (retInfo == null); i++) {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
final StringBuilder strb = new StringBuilder()
.append("\t\n this.getAttributes() MBeanAttributeInfo Array ")
.append(i).append(":")
@ -756,18 +731,14 @@ public class ModelMBeanInfoSupport extends MBeanInfo implements ModelMBeanInfo {
.append("\t\n this.modelMBeanAttributes MBeanAttributeInfo Array ")
.append(i).append(":")
.append(((ModelMBeanAttributeInfo)modelMBeanAttributes[i]).getDescriptor());
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanInfoSupport.class.getName(),
"getAttribute(String)", strb.toString());
MODELMBEAN_LOGGER.log(Level.TRACE, strb::toString);
}
if (inName.equals(attrList[i].getName())) {
retInfo = ((ModelMBeanAttributeInfo)attrList[i].clone());
}
}
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanInfoSupport.class.getName(),
"getAttribute(String)", "Exit");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Exit");
}
return retInfo;
@ -778,10 +749,8 @@ public class ModelMBeanInfoSupport extends MBeanInfo implements ModelMBeanInfo {
public ModelMBeanOperationInfo getOperation(String inName)
throws MBeanException, RuntimeOperationsException {
ModelMBeanOperationInfo retInfo = null;
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanInfoSupport.class.getName(),
"getOperation(String)", "Entry");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Entry");
}
if (inName == null) {
throw new RuntimeOperationsException(
@ -798,10 +767,8 @@ public class ModelMBeanInfoSupport extends MBeanInfo implements ModelMBeanInfo {
retInfo = ((ModelMBeanOperationInfo) operList[i].clone());
}
}
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanInfoSupport.class.getName(),
"getOperation(String)", "Exit");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Exit");
}
return retInfo;
@ -824,10 +791,8 @@ public class ModelMBeanInfoSupport extends MBeanInfo implements ModelMBeanInfo {
public ModelMBeanConstructorInfo getConstructor(String inName)
throws MBeanException, RuntimeOperationsException {
ModelMBeanConstructorInfo retInfo = null;
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanInfoSupport.class.getName(),
"getConstructor(String)", "Entry");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Entry");
}
if (inName == null) {
throw new RuntimeOperationsException(
@ -844,10 +809,8 @@ public class ModelMBeanInfoSupport extends MBeanInfo implements ModelMBeanInfo {
retInfo = ((ModelMBeanConstructorInfo) consList[i].clone());
}
}
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanInfoSupport.class.getName(),
"getConstructor(String)", "Exit");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Exit");
}
return retInfo;
@ -857,10 +820,8 @@ public class ModelMBeanInfoSupport extends MBeanInfo implements ModelMBeanInfo {
public ModelMBeanNotificationInfo getNotification(String inName)
throws MBeanException, RuntimeOperationsException {
ModelMBeanNotificationInfo retInfo = null;
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanInfoSupport.class.getName(),
"getNotification(String)", "Entry");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Entry");
}
if (inName == null) {
throw new RuntimeOperationsException(
@ -877,10 +838,8 @@ public class ModelMBeanInfoSupport extends MBeanInfo implements ModelMBeanInfo {
retInfo = ((ModelMBeanNotificationInfo) notifList[i].clone());
}
}
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanInfoSupport.class.getName(),
"getNotification(String)", "Exit");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Exit");
}
return retInfo;
@ -901,19 +860,15 @@ public class ModelMBeanInfoSupport extends MBeanInfo implements ModelMBeanInfo {
}
private Descriptor getMBeanDescriptorNoException() {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanInfoSupport.class.getName(),
"getMBeanDescriptorNoException()", "Entry");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Entry");
}
if (modelMBeanDescriptor == null)
modelMBeanDescriptor = validDescriptor(null);
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanInfoSupport.class.getName(),
"getMBeanDescriptorNoException()",
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"Exit, returning: " + modelMBeanDescriptor);
}
return (Descriptor) modelMBeanDescriptor.clone();
@ -921,10 +876,8 @@ public class ModelMBeanInfoSupport extends MBeanInfo implements ModelMBeanInfo {
public void setMBeanDescriptor(Descriptor inMBeanDescriptor)
throws MBeanException, RuntimeOperationsException {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanInfoSupport.class.getName(),
"setMBeanDescriptor(Descriptor)", "Entry");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Entry");
}
modelMBeanDescriptor = validDescriptor(inMBeanDescriptor);
}
@ -948,7 +901,7 @@ public class ModelMBeanInfoSupport extends MBeanInfo implements ModelMBeanInfo {
boolean defaulted = (in == null);
if (defaulted) {
clone = new DescriptorSupport();
MODELMBEAN_LOGGER.finer("Null Descriptor, creating new.");
MODELMBEAN_LOGGER.log(Level.TRACE, "Null Descriptor, creating new.");
} else {
clone = (Descriptor) in.clone();
}
@ -956,27 +909,27 @@ public class ModelMBeanInfoSupport extends MBeanInfo implements ModelMBeanInfo {
//Setting defaults.
if (defaulted && clone.getFieldValue("name")==null) {
clone.setField("name", this.getClassName());
MODELMBEAN_LOGGER.finer("Defaulting Descriptor name to " + this.getClassName());
MODELMBEAN_LOGGER.log(Level.TRACE, "Defaulting Descriptor name to " + this.getClassName());
}
if (defaulted && clone.getFieldValue("descriptorType")==null) {
clone.setField("descriptorType", MMB);
MODELMBEAN_LOGGER.finer("Defaulting descriptorType to \"" + MMB + "\"");
MODELMBEAN_LOGGER.log(Level.TRACE, "Defaulting descriptorType to \"" + MMB + "\"");
}
if (clone.getFieldValue("displayName") == null) {
clone.setField("displayName",this.getClassName());
MODELMBEAN_LOGGER.finer("Defaulting Descriptor displayName to " + this.getClassName());
MODELMBEAN_LOGGER.log(Level.TRACE, "Defaulting Descriptor displayName to " + this.getClassName());
}
if (clone.getFieldValue("persistPolicy") == null) {
clone.setField("persistPolicy","never");
MODELMBEAN_LOGGER.finer("Defaulting Descriptor persistPolicy to \"never\"");
MODELMBEAN_LOGGER.log(Level.TRACE, "Defaulting Descriptor persistPolicy to \"never\"");
}
if (clone.getFieldValue("log") == null) {
clone.setField("log","F");
MODELMBEAN_LOGGER.finer("Defaulting Descriptor \"log\" field to \"F\"");
MODELMBEAN_LOGGER.log(Level.TRACE, "Defaulting Descriptor \"log\" field to \"F\"");
}
if (clone.getFieldValue("visibility") == null) {
clone.setField("visibility","1");
MODELMBEAN_LOGGER.finer("Defaulting Descriptor visibility to 1");
MODELMBEAN_LOGGER.log(Level.TRACE, "Defaulting Descriptor visibility to 1");
}
//Checking validity

View File

@ -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
@ -38,7 +38,7 @@ import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.ObjectStreamField;
import java.security.AccessController;
import java.util.logging.Level;
import java.lang.System.Logger.Level;
import javax.management.Descriptor;
import javax.management.DescriptorAccess;
@ -199,10 +199,8 @@ public class ModelMBeanNotificationInfo
String description,
Descriptor descriptor) {
super(notifTypes, name, description);
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanNotificationInfo.class.getName(),
"ModelMBeanNotificationInfo", "Entry");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Entry");
}
notificationDescriptor = validDescriptor(descriptor);
}
@ -225,10 +223,8 @@ public class ModelMBeanNotificationInfo
* duplicate of this ModelMBeanNotificationInfo.
**/
public Object clone () {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanNotificationInfo.class.getName(),
"clone()", "Entry");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Entry");
}
return(new ModelMBeanNotificationInfo(this));
}
@ -243,18 +239,15 @@ public class ModelMBeanNotificationInfo
* @see #setDescriptor
**/
public Descriptor getDescriptor() {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanNotificationInfo.class.getName(),
"getDescriptor()", "Entry");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Entry");
}
if (notificationDescriptor == null) {
// Dead code. Should never happen.
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanNotificationInfo.class.getName(),
"getDescriptor()", "Descriptor value is null, " +
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"Descriptor value is null, " +
"setting descriptor to default values");
}
notificationDescriptor = validDescriptor(null);
@ -281,10 +274,8 @@ public class ModelMBeanNotificationInfo
* @see #getDescriptor
**/
public void setDescriptor(Descriptor inDescriptor) {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanNotificationInfo.class.getName(),
"setDescriptor(Descriptor)", "Entry");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Entry");
}
notificationDescriptor = validDescriptor(inDescriptor);
}
@ -296,10 +287,8 @@ public class ModelMBeanNotificationInfo
* @return a string describing this object.
**/
public String toString() {
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanNotificationInfo.class.getName(),
"toString()", "Entry");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Entry");
}
final StringBuilder retStr = new StringBuilder();
@ -342,7 +331,7 @@ public class ModelMBeanNotificationInfo
boolean defaulted = (in == null);
if (defaulted) {
clone = new DescriptorSupport();
MODELMBEAN_LOGGER.finer("Null Descriptor, creating new.");
MODELMBEAN_LOGGER.log(Level.TRACE, "Null Descriptor, creating new.");
} else {
clone = (Descriptor) in.clone();
}
@ -350,19 +339,19 @@ public class ModelMBeanNotificationInfo
//Setting defaults.
if (defaulted && clone.getFieldValue("name")==null) {
clone.setField("name", this.getName());
MODELMBEAN_LOGGER.finer("Defaulting Descriptor name to " + this.getName());
MODELMBEAN_LOGGER.log(Level.TRACE, "Defaulting Descriptor name to " + this.getName());
}
if (defaulted && clone.getFieldValue("descriptorType")==null) {
clone.setField("descriptorType", "notification");
MODELMBEAN_LOGGER.finer("Defaulting descriptorType to \"notification\"");
MODELMBEAN_LOGGER.log(Level.TRACE, "Defaulting descriptorType to \"notification\"");
}
if (clone.getFieldValue("displayName") == null) {
clone.setField("displayName",this.getName());
MODELMBEAN_LOGGER.finer("Defaulting Descriptor displayName to " + this.getName());
MODELMBEAN_LOGGER.log(Level.TRACE, "Defaulting Descriptor displayName to " + this.getName());
}
if (clone.getFieldValue("severity") == null) {
clone.setField("severity", "6");
MODELMBEAN_LOGGER.finer("Defaulting Descriptor severity field to 6");
MODELMBEAN_LOGGER.log(Level.TRACE, "Defaulting Descriptor severity field to 6");
}
//Checking validity

View File

@ -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
@ -39,7 +39,7 @@ import java.io.ObjectOutputStream;
import java.io.ObjectStreamField;
import java.lang.reflect.Method;
import java.security.AccessController;
import java.util.logging.Level;
import java.lang.System.Logger.Level;
import javax.management.Descriptor;
import javax.management.DescriptorAccess;
@ -185,10 +185,9 @@ public class ModelMBeanOperationInfo extends MBeanOperationInfo
{
super(description, operationMethod);
// create default descriptor
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanOperationInfo.class.getName(),
"ModelMBeanOperationInfo(String,Method)",
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"ModelMBeanOperationInfo(String,Method) " +
"Entry");
}
operationDescriptor = validDescriptor(null);
@ -228,11 +227,10 @@ public class ModelMBeanOperationInfo extends MBeanOperationInfo
{
super(description, operationMethod);
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanOperationInfo.class.getName(),
"ModelMBeanOperationInfo(String,Method,Descriptor)",
"Entry");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"ModelMBeanOperationInfo(String,Method,Descriptor) "
+ "Entry");
}
operationDescriptor = validDescriptor(descriptor);
}
@ -258,11 +256,10 @@ public class ModelMBeanOperationInfo extends MBeanOperationInfo
super(name, description, signature, type, impact);
// create default descriptor
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanOperationInfo.class.getName(),
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"ModelMBeanOperationInfo(" +
"String,String,MBeanParameterInfo[],String,int)",
"String,String,MBeanParameterInfo[],String,int) " +
"Entry");
}
operationDescriptor = validDescriptor(null);
@ -302,11 +299,10 @@ public class ModelMBeanOperationInfo extends MBeanOperationInfo
Descriptor descriptor)
{
super(name, description, signature, type, impact);
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanOperationInfo.class.getName(),
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"ModelMBeanOperationInfo(String,String," +
"MBeanParameterInfo[],String,int,Descriptor)",
"MBeanParameterInfo[],String,int,Descriptor) " +
"Entry");
}
operationDescriptor = validDescriptor(descriptor);
@ -327,10 +323,9 @@ public class ModelMBeanOperationInfo extends MBeanOperationInfo
inInfo.getSignature(),
inInfo.getReturnType(),
inInfo.getImpact());
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanOperationInfo.class.getName(),
"ModelMBeanOperationInfo(ModelMBeanOperationInfo)",
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE,
"ModelMBeanOperationInfo(ModelMBeanOperationInfo)" +
"Entry");
}
Descriptor newDesc = inInfo.getDescriptor();
@ -345,10 +340,8 @@ public class ModelMBeanOperationInfo extends MBeanOperationInfo
public Object clone ()
{
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanOperationInfo.class.getName(),
"clone()", "Entry");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Entry");
}
return(new ModelMBeanOperationInfo(this)) ;
}
@ -365,10 +358,8 @@ public class ModelMBeanOperationInfo extends MBeanOperationInfo
public Descriptor getDescriptor()
{
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanOperationInfo.class.getName(),
"getDescriptor()", "Entry");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Entry");
}
if (operationDescriptor == null) {
operationDescriptor = validDescriptor(null);
@ -396,10 +387,8 @@ public class ModelMBeanOperationInfo extends MBeanOperationInfo
*/
public void setDescriptor(Descriptor inDescriptor)
{
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanOperationInfo.class.getName(),
"setDescriptor(Descriptor)", "Entry");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Entry");
}
operationDescriptor = validDescriptor(inDescriptor);
}
@ -410,10 +399,8 @@ public class ModelMBeanOperationInfo extends MBeanOperationInfo
*/
public String toString()
{
if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) {
MODELMBEAN_LOGGER.logp(Level.FINER,
ModelMBeanOperationInfo.class.getName(),
"toString()", "Entry");
if (MODELMBEAN_LOGGER.isLoggable(Level.TRACE)) {
MODELMBEAN_LOGGER.log(Level.TRACE, "Entry");
}
String retStr =
"ModelMBeanOperationInfo: " + this.getName() +
@ -449,7 +436,7 @@ public class ModelMBeanOperationInfo extends MBeanOperationInfo
boolean defaulted = (in == null);
if (defaulted) {
clone = new DescriptorSupport();
MODELMBEAN_LOGGER.finer("Null Descriptor, creating new.");
MODELMBEAN_LOGGER.log(Level.TRACE, "Null Descriptor, creating new.");
} else {
clone = (Descriptor) in.clone();
}
@ -457,19 +444,19 @@ public class ModelMBeanOperationInfo extends MBeanOperationInfo
//Setting defaults.
if (defaulted && clone.getFieldValue("name")==null) {
clone.setField("name", this.getName());
MODELMBEAN_LOGGER.finer("Defaulting Descriptor name to " + this.getName());
MODELMBEAN_LOGGER.log(Level.TRACE, "Defaulting Descriptor name to " + this.getName());
}
if (defaulted && clone.getFieldValue("descriptorType")==null) {
clone.setField("descriptorType", "operation");
MODELMBEAN_LOGGER.finer("Defaulting descriptorType to \"operation\"");
MODELMBEAN_LOGGER.log(Level.TRACE, "Defaulting descriptorType to \"operation\"");
}
if (clone.getFieldValue("displayName") == null) {
clone.setField("displayName",this.getName());
MODELMBEAN_LOGGER.finer("Defaulting Descriptor displayName to " + this.getName());
MODELMBEAN_LOGGER.log(Level.TRACE, "Defaulting Descriptor displayName to " + this.getName());
}
if (clone.getFieldValue("role") == null) {
clone.setField("role","operation");
MODELMBEAN_LOGGER.finer("Defaulting Descriptor role field to \"operation\"");
MODELMBEAN_LOGGER.log(Level.TRACE, "Defaulting Descriptor role field to \"operation\"");
}
//Checking validity

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 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
@ -26,7 +26,7 @@
package javax.management.monitor;
import static com.sun.jmx.defaults.JmxProperties.MONITOR_LOGGER;
import java.util.logging.Level;
import java.lang.System.Logger.Level;
import javax.management.ObjectName;
import javax.management.MBeanNotificationInfo;
import static javax.management.monitor.Monitor.NumericalType.*;
@ -228,8 +228,7 @@ public class CounterMonitor extends Monitor implements CounterMonitorMBean {
*/
public synchronized void start() {
if (isActive()) {
MONITOR_LOGGER.logp(Level.FINER, CounterMonitor.class.getName(),
"start", "the monitor is already active");
MONITOR_LOGGER.log(Level.TRACE, "the monitor is already active");
return;
}
// Reset values.
@ -696,7 +695,7 @@ public class CounterMonitor extends Monitor implements CounterMonitorMBean {
}
}
} else {
if (MONITOR_LOGGER.isLoggable(Level.FINER)) {
if (MONITOR_LOGGER.isLoggable(Level.TRACE)) {
final StringBuilder strb = new StringBuilder()
.append("The notification:")
.append("\n\tNotification observed object = ")
@ -708,8 +707,7 @@ public class CounterMonitor extends Monitor implements CounterMonitorMBean {
.append("\n\tNotification derived gauge = ")
.append(o.getDerivedGauge())
.append("\nhas already been sent");
MONITOR_LOGGER.logp(Level.FINER, CounterMonitor.class.getName(),
"updateNotifications", strb.toString());
MONITOR_LOGGER.log(Level.TRACE, strb::toString);
}
}
@ -756,9 +754,7 @@ public class CounterMonitor extends Monitor implements CounterMonitorMBean {
break;
default:
// Should never occur...
MONITOR_LOGGER.logp(Level.FINEST,
CounterMonitor.class.getName(),
"updateThreshold",
MONITOR_LOGGER.log(Level.TRACE,
"the threshold type is invalid");
break;
}
@ -819,8 +815,7 @@ public class CounterMonitor extends Monitor implements CounterMonitorMBean {
case LONG: o.setDerivedGauge(Long.valueOf(derived)); break;
default:
// Should never occur...
MONITOR_LOGGER.logp(Level.FINEST, CounterMonitor.class.getName(),
"setDerivedGaugeWithDifference",
MONITOR_LOGGER.log(Level.TRACE,
"the threshold type is invalid");
break;
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 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
@ -26,7 +26,7 @@
package javax.management.monitor;
import static com.sun.jmx.defaults.JmxProperties.MONITOR_LOGGER;
import java.util.logging.Level;
import java.lang.System.Logger.Level;
import javax.management.MBeanNotificationInfo;
import javax.management.ObjectName;
import static javax.management.monitor.Monitor.NumericalType.*;
@ -224,8 +224,7 @@ public class GaugeMonitor extends Monitor implements GaugeMonitorMBean {
*/
public synchronized void start() {
if (isActive()) {
MONITOR_LOGGER.logp(Level.FINER, GaugeMonitor.class.getName(),
"start", "the monitor is already active");
MONITOR_LOGGER.log(Level.TRACE, "the monitor is already active");
return;
}
// Reset values.
@ -664,8 +663,7 @@ public class GaugeMonitor extends Monitor implements GaugeMonitorMBean {
break;
default:
// Should never occur...
MONITOR_LOGGER.logp(Level.FINEST, GaugeMonitor.class.getName(),
"setDerivedGaugeWithDifference",
MONITOR_LOGGER.log(Level.TRACE,
"the threshold type is invalid");
return;
}
@ -698,8 +696,7 @@ public class GaugeMonitor extends Monitor implements GaugeMonitorMBean {
return (greater.doubleValue() >= less.doubleValue());
default:
// Should never occur...
MONITOR_LOGGER.logp(Level.FINEST, GaugeMonitor.class.getName(),
"isFirstGreaterThanLast",
MONITOR_LOGGER.log(Level.TRACE,
"the threshold type is invalid");
return false;
}
@ -733,8 +730,7 @@ public class GaugeMonitor extends Monitor implements GaugeMonitorMBean {
}
else {
// Should never occur...
MONITOR_LOGGER.logp(Level.FINEST, GaugeMonitor.class.getName(),
"isFirstStrictlyGreaterThanLast",
MONITOR_LOGGER.log(Level.TRACE,
"the threshold type is invalid");
return false;
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 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
@ -47,7 +47,7 @@ import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
import java.util.logging.Level;
import java.lang.System.Logger.Level;
import javax.management.AttributeNotFoundException;
import javax.management.InstanceNotFoundException;
import javax.management.IntrospectionException;
@ -205,13 +205,11 @@ public abstract class Monitor
try {
maximumPoolSizeTmp = Integer.parseInt(maximumPoolSizeStr);
} catch (NumberFormatException e) {
if (MONITOR_LOGGER.isLoggable(Level.FINER)) {
MONITOR_LOGGER.logp(Level.FINER, Monitor.class.getName(),
"<static initializer>",
if (MONITOR_LOGGER.isLoggable(Level.TRACE)) {
MONITOR_LOGGER.log(Level.TRACE,
"Wrong value for " + maximumPoolSizeSysProp +
" system property", e);
MONITOR_LOGGER.logp(Level.FINER, Monitor.class.getName(),
"<static initializer>",
MONITOR_LOGGER.log(Level.TRACE,
maximumPoolSizeSysProp + " defaults to 10");
}
maximumPoolSizeTmp = 10;
@ -391,8 +389,7 @@ public abstract class Monitor
public ObjectName preRegister(MBeanServer server, ObjectName name)
throws Exception {
MONITOR_LOGGER.logp(Level.FINER, Monitor.class.getName(),
"preRegister(MBeanServer, ObjectName)",
MONITOR_LOGGER.log(Level.TRACE,
"initialize the reference on the MBean server");
this.server = server;
@ -419,8 +416,7 @@ public abstract class Monitor
*/
public void preDeregister() throws Exception {
MONITOR_LOGGER.logp(Level.FINER, Monitor.class.getName(),
"preDeregister()", "stop the monitor");
MONITOR_LOGGER.log(Level.TRACE, "stop the monitor");
// Stop the Monitor.
//
@ -693,13 +689,11 @@ public abstract class Monitor
* Starts the monitor.
*/
void doStart() {
MONITOR_LOGGER.logp(Level.FINER, Monitor.class.getName(),
"doStart()", "start the monitor");
MONITOR_LOGGER.log(Level.TRACE, "start the monitor");
synchronized (this) {
if (isActive()) {
MONITOR_LOGGER.logp(Level.FINER, Monitor.class.getName(),
"doStart()", "the monitor is already active");
MONITOR_LOGGER.log(Level.TRACE, "the monitor is already active");
return;
}
@ -729,13 +723,11 @@ public abstract class Monitor
* Stops the monitor.
*/
void doStop() {
MONITOR_LOGGER.logp(Level.FINER, Monitor.class.getName(),
"doStop()", "stop the monitor");
MONITOR_LOGGER.log(Level.TRACE, "stop the monitor");
synchronized (this) {
if (!isActive()) {
MONITOR_LOGGER.logp(Level.FINER, Monitor.class.getName(),
"doStop()", "the monitor is not active");
MONITOR_LOGGER.log(Level.TRACE, "the monitor is not active");
return;
}
@ -1089,9 +1081,8 @@ public abstract class Monitor
if (!isActive())
return;
if (MONITOR_LOGGER.isLoggable(Level.FINER)) {
MONITOR_LOGGER.logp(Level.FINER, Monitor.class.getName(),
"sendNotification", "send notification: " +
if (MONITOR_LOGGER.isLoggable(Level.TRACE)) {
MONITOR_LOGGER.log(Level.TRACE, "send notification: " +
"\n\tNotification observed object = " + object +
"\n\tNotification observed attribute = " + observedAttribute +
"\n\tNotification derived gauge = " + derGauge);
@ -1163,8 +1154,7 @@ public abstract class Monitor
setAlreadyNotified(
o, index, OBSERVED_ATTRIBUTE_TYPE_ERROR_NOTIFIED, an);
msg = "The observed attribute value is null.";
MONITOR_LOGGER.logp(Level.FINEST, Monitor.class.getName(),
"monitor", msg);
MONITOR_LOGGER.log(Level.TRACE, msg);
}
} catch (NullPointerException np_ex) {
if (isAlreadyNotified(o, RUNTIME_ERROR_NOTIFIED))
@ -1176,10 +1166,8 @@ public abstract class Monitor
"The monitor must be registered in the MBean " +
"server or an MBeanServerConnection must be " +
"explicitly supplied.";
MONITOR_LOGGER.logp(Level.FINEST, Monitor.class.getName(),
"monitor", msg);
MONITOR_LOGGER.logp(Level.FINEST, Monitor.class.getName(),
"monitor", np_ex.toString());
MONITOR_LOGGER.log(Level.TRACE, msg);
MONITOR_LOGGER.log(Level.TRACE, np_ex::toString);
}
} catch (InstanceNotFoundException inf_ex) {
if (isAlreadyNotified(o, OBSERVED_OBJECT_ERROR_NOTIFIED))
@ -1191,10 +1179,8 @@ public abstract class Monitor
msg =
"The observed object must be accessible in " +
"the MBeanServerConnection.";
MONITOR_LOGGER.logp(Level.FINEST, Monitor.class.getName(),
"monitor", msg);
MONITOR_LOGGER.logp(Level.FINEST, Monitor.class.getName(),
"monitor", inf_ex.toString());
MONITOR_LOGGER.log(Level.TRACE, msg);
MONITOR_LOGGER.log(Level.TRACE, inf_ex::toString);
}
} catch (AttributeNotFoundException anf_ex) {
if (isAlreadyNotified(o, OBSERVED_ATTRIBUTE_ERROR_NOTIFIED))
@ -1206,10 +1192,8 @@ public abstract class Monitor
msg =
"The observed attribute must be accessible in " +
"the observed object.";
MONITOR_LOGGER.logp(Level.FINEST, Monitor.class.getName(),
"monitor", msg);
MONITOR_LOGGER.logp(Level.FINEST, Monitor.class.getName(),
"monitor", anf_ex.toString());
MONITOR_LOGGER.log(Level.TRACE, msg);
MONITOR_LOGGER.log(Level.TRACE, anf_ex::toString);
}
} catch (MBeanException mb_ex) {
if (isAlreadyNotified(o, RUNTIME_ERROR_NOTIFIED))
@ -1218,10 +1202,8 @@ public abstract class Monitor
notifType = RUNTIME_ERROR;
setAlreadyNotified(o, index, RUNTIME_ERROR_NOTIFIED, an);
msg = mb_ex.getMessage() == null ? "" : mb_ex.getMessage();
MONITOR_LOGGER.logp(Level.FINEST, Monitor.class.getName(),
"monitor", msg);
MONITOR_LOGGER.logp(Level.FINEST, Monitor.class.getName(),
"monitor", mb_ex.toString());
MONITOR_LOGGER.log(Level.TRACE, msg);
MONITOR_LOGGER.log(Level.TRACE, mb_ex::toString);
}
} catch (ReflectionException ref_ex) {
if (isAlreadyNotified(o, RUNTIME_ERROR_NOTIFIED)) {
@ -1230,10 +1212,8 @@ public abstract class Monitor
notifType = RUNTIME_ERROR;
setAlreadyNotified(o, index, RUNTIME_ERROR_NOTIFIED, an);
msg = ref_ex.getMessage() == null ? "" : ref_ex.getMessage();
MONITOR_LOGGER.logp(Level.FINEST, Monitor.class.getName(),
"monitor", msg);
MONITOR_LOGGER.logp(Level.FINEST, Monitor.class.getName(),
"monitor", ref_ex.toString());
MONITOR_LOGGER.log(Level.TRACE, msg);
MONITOR_LOGGER.log(Level.TRACE, ref_ex::toString);
}
} catch (IOException io_ex) {
if (isAlreadyNotified(o, RUNTIME_ERROR_NOTIFIED))
@ -1242,10 +1222,8 @@ public abstract class Monitor
notifType = RUNTIME_ERROR;
setAlreadyNotified(o, index, RUNTIME_ERROR_NOTIFIED, an);
msg = io_ex.getMessage() == null ? "" : io_ex.getMessage();
MONITOR_LOGGER.logp(Level.FINEST, Monitor.class.getName(),
"monitor", msg);
MONITOR_LOGGER.logp(Level.FINEST, Monitor.class.getName(),
"monitor", io_ex.toString());
MONITOR_LOGGER.log(Level.TRACE, msg);
MONITOR_LOGGER.log(Level.TRACE, io_ex::toString);
}
} catch (RuntimeException rt_ex) {
if (isAlreadyNotified(o, RUNTIME_ERROR_NOTIFIED))
@ -1254,10 +1232,8 @@ public abstract class Monitor
notifType = RUNTIME_ERROR;
setAlreadyNotified(o, index, RUNTIME_ERROR_NOTIFIED, an);
msg = rt_ex.getMessage() == null ? "" : rt_ex.getMessage();
MONITOR_LOGGER.logp(Level.FINEST, Monitor.class.getName(),
"monitor", msg);
MONITOR_LOGGER.logp(Level.FINEST, Monitor.class.getName(),
"monitor", rt_ex.toString());
MONITOR_LOGGER.log(Level.TRACE, msg);
MONITOR_LOGGER.log(Level.TRACE, rt_ex::toString);
}
}
@ -1297,10 +1273,8 @@ public abstract class Monitor
msg =
"The observed attribute value does not " +
"implement the Comparable interface.";
MONITOR_LOGGER.logp(Level.FINEST,
Monitor.class.getName(), "monitor", msg);
MONITOR_LOGGER.logp(Level.FINEST,
Monitor.class.getName(), "monitor", e.toString());
MONITOR_LOGGER.log(Level.TRACE, msg);
MONITOR_LOGGER.log(Level.TRACE, e::toString);
}
} catch (AttributeNotFoundException e) {
if (isAlreadyNotified(o, OBSERVED_ATTRIBUTE_ERROR_NOTIFIED))
@ -1312,10 +1286,8 @@ public abstract class Monitor
msg =
"The observed attribute must be accessible in " +
"the observed object.";
MONITOR_LOGGER.logp(Level.FINEST,
Monitor.class.getName(), "monitor", msg);
MONITOR_LOGGER.logp(Level.FINEST,
Monitor.class.getName(), "monitor", e.toString());
MONITOR_LOGGER.log(Level.TRACE, msg);
MONITOR_LOGGER.log(Level.TRACE, e::toString);
}
} catch (RuntimeException e) {
if (isAlreadyNotified(o, RUNTIME_ERROR_NOTIFIED))
@ -1325,10 +1297,8 @@ public abstract class Monitor
setAlreadyNotified(o, index,
RUNTIME_ERROR_NOTIFIED, an);
msg = e.getMessage() == null ? "" : e.getMessage();
MONITOR_LOGGER.logp(Level.FINEST,
Monitor.class.getName(), "monitor", msg);
MONITOR_LOGGER.logp(Level.FINEST,
Monitor.class.getName(), "monitor", e.toString());
MONITOR_LOGGER.log(Level.TRACE, msg);
MONITOR_LOGGER.log(Level.TRACE, e::toString);
}
}
}
@ -1346,8 +1316,7 @@ public abstract class Monitor
setAlreadyNotified(o, index,
OBSERVED_ATTRIBUTE_TYPE_ERROR_NOTIFIED, an);
msg = "The observed attribute type is not valid.";
MONITOR_LOGGER.logp(Level.FINEST,
Monitor.class.getName(), "monitor", msg);
MONITOR_LOGGER.log(Level.TRACE, msg);
}
}
}
@ -1363,8 +1332,7 @@ public abstract class Monitor
setAlreadyNotified(o, index,
THRESHOLD_ERROR_NOTIFIED, an);
msg = "The threshold type is not valid.";
MONITOR_LOGGER.logp(Level.FINEST,
Monitor.class.getName(), "monitor", msg);
MONITOR_LOGGER.log(Level.TRACE, msg);
}
}
}
@ -1381,8 +1349,7 @@ public abstract class Monitor
notifType = RUNTIME_ERROR;
setAlreadyNotified(o, index,
RUNTIME_ERROR_NOTIFIED, an);
MONITOR_LOGGER.logp(Level.FINEST,
Monitor.class.getName(), "monitor", msg);
MONITOR_LOGGER.log(Level.TRACE, msg);
}
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 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
@ -26,7 +26,7 @@
package javax.management.monitor;
import static com.sun.jmx.defaults.JmxProperties.MONITOR_LOGGER;
import java.util.logging.Level;
import java.lang.System.Logger.Level;
import javax.management.ObjectName;
import javax.management.MBeanNotificationInfo;
import static javax.management.monitor.MonitorNotification.*;
@ -151,8 +151,7 @@ public class StringMonitor extends Monitor implements StringMonitorMBean {
*/
public synchronized void start() {
if (isActive()) {
MONITOR_LOGGER.logp(Level.FINER, StringMonitor.class.getName(),
"start", "the monitor is already active");
MONITOR_LOGGER.log(Level.TRACE, "the monitor is already active");
return;
}
// Reset values.

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2000, 2008, 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
@ -45,7 +45,7 @@ import javax.management.NotificationFilterSupport;
import javax.management.ObjectName;
import java.util.List;
import java.util.logging.Level;
import java.lang.System.Logger.Level;
import java.util.Vector;
/**
@ -160,14 +160,12 @@ public class MBeanServerNotificationFilter extends NotificationFilterSupport {
public MBeanServerNotificationFilter() {
super();
RELATION_LOGGER.entering(MBeanServerNotificationFilter.class.getName(),
"MBeanServerNotificationFilter");
RELATION_LOGGER.log(Level.TRACE, "ENTRY");
enableType(MBeanServerNotification.REGISTRATION_NOTIFICATION);
enableType(MBeanServerNotification.UNREGISTRATION_NOTIFICATION);
RELATION_LOGGER.exiting(MBeanServerNotificationFilter.class.getName(),
"MBeanServerNotificationFilter");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}
@ -181,14 +179,12 @@ public class MBeanServerNotificationFilter extends NotificationFilterSupport {
*/
public synchronized void disableAllObjectNames() {
RELATION_LOGGER.entering(MBeanServerNotificationFilter.class.getName(),
"disableAllObjectNames");
RELATION_LOGGER.log(Level.TRACE, "ENTRY");
selectedNames = new Vector<ObjectName>();
deselectedNames = null;
RELATION_LOGGER.exiting(MBeanServerNotificationFilter.class.getName(),
"disableAllObjectNames");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}
@ -207,8 +203,7 @@ public class MBeanServerNotificationFilter extends NotificationFilterSupport {
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(MBeanServerNotificationFilter.class.getName(),
"disableObjectName", objectName);
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0}" + objectName);
// Removes from selected ObjectNames, if present
if (selectedNames != null) {
@ -226,8 +221,7 @@ public class MBeanServerNotificationFilter extends NotificationFilterSupport {
}
}
RELATION_LOGGER.exiting(MBeanServerNotificationFilter.class.getName(),
"disableObjectName");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}
@ -236,14 +230,12 @@ public class MBeanServerNotificationFilter extends NotificationFilterSupport {
*/
public synchronized void enableAllObjectNames() {
RELATION_LOGGER.entering(MBeanServerNotificationFilter.class.getName(),
"enableAllObjectNames");
RELATION_LOGGER.log(Level.TRACE, "ENTRY");
selectedNames = null;
deselectedNames = new Vector<ObjectName>();
RELATION_LOGGER.exiting(MBeanServerNotificationFilter.class.getName(),
"enableAllObjectNames");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}
@ -262,8 +254,7 @@ public class MBeanServerNotificationFilter extends NotificationFilterSupport {
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(MBeanServerNotificationFilter.class.getName(),
"enableObjectName", objectName);
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0}", objectName);
// Removes from deselected ObjectNames, if present
if (deselectedNames != null) {
@ -281,8 +272,7 @@ public class MBeanServerNotificationFilter extends NotificationFilterSupport {
}
}
RELATION_LOGGER.exiting(MBeanServerNotificationFilter.class.getName(),
"enableObjectName");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}
@ -349,16 +339,13 @@ public class MBeanServerNotificationFilter extends NotificationFilterSupport {
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(MBeanServerNotificationFilter.class.getName(),
"isNotificationEnabled", notif);
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0}", notif);
// Checks the type first
String ntfType = notif.getType();
Vector<String> enabledTypes = getEnabledTypes();
if (!(enabledTypes.contains(ntfType))) {
RELATION_LOGGER.logp(Level.FINER,
MBeanServerNotificationFilter.class.getName(),
"isNotificationEnabled",
RELATION_LOGGER.log(Level.TRACE,
"Type not selected, exiting");
return false;
}
@ -375,9 +362,7 @@ public class MBeanServerNotificationFilter extends NotificationFilterSupport {
// checks for explicit selection
if (selectedNames.size() == 0) {
// All are explicitly not selected
RELATION_LOGGER.logp(Level.FINER,
MBeanServerNotificationFilter.class.getName(),
"isNotificationEnabled",
RELATION_LOGGER.log(Level.TRACE,
"No ObjectNames selected, exiting");
return false;
}
@ -385,9 +370,7 @@ public class MBeanServerNotificationFilter extends NotificationFilterSupport {
isSelectedFlg = selectedNames.contains(objName);
if (!isSelectedFlg) {
// Not in the explicit selected list
RELATION_LOGGER.logp(Level.FINER,
MBeanServerNotificationFilter.class.getName(),
"isNotificationEnabled",
RELATION_LOGGER.log(Level.TRACE,
"ObjectName not in selected list, exiting");
return false;
}
@ -399,26 +382,20 @@ public class MBeanServerNotificationFilter extends NotificationFilterSupport {
if (deselectedNames == null) {
// All are implicitly deselected and it is not explicitly
// selected
RELATION_LOGGER.logp(Level.FINER,
MBeanServerNotificationFilter.class.getName(),
"isNotificationEnabled",
RELATION_LOGGER.log(Level.TRACE,
"ObjectName not selected, and all " +
"names deselected, exiting");
return false;
} else if (deselectedNames.contains(objName)) {
// Explicitly deselected
RELATION_LOGGER.logp(Level.FINER,
MBeanServerNotificationFilter.class.getName(),
"isNotificationEnabled",
RELATION_LOGGER.log(Level.TRACE,
"ObjectName explicitly not selected, exiting");
return false;
}
}
RELATION_LOGGER.logp(Level.FINER,
MBeanServerNotificationFilter.class.getName(),
"isNotificationEnabled",
RELATION_LOGGER.log(Level.TRACE,
"ObjectName selected, exiting");
return true;
}

View File

@ -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
@ -36,7 +36,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.atomic.AtomicLong;
import java.util.logging.Level;
import java.lang.System.Logger.Level;
import javax.management.Attribute;
import javax.management.AttributeNotFoundException;
@ -157,13 +157,11 @@ public class RelationService extends NotificationBroadcasterSupport
*/
public RelationService(boolean immediatePurgeFlag) {
RELATION_LOGGER.entering(RelationService.class.getName(),
"RelationService");
RELATION_LOGGER.log(Level.TRACE, "ENTRY");
setPurgeFlag(immediatePurgeFlag);
RELATION_LOGGER.exiting(RelationService.class.getName(),
"RelationService");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}
@ -286,8 +284,7 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"createRelationType", relationTypeName);
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0}", relationTypeName);
// Can throw an InvalidRelationTypeException
RelationType relType =
@ -295,8 +292,7 @@ public class RelationService extends NotificationBroadcasterSupport
addRelationTypeInt(relType);
RELATION_LOGGER.exiting(RelationService.class.getName(),
"createRelationType");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}
@ -325,8 +321,7 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"addRelationType");
RELATION_LOGGER.log(Level.TRACE, "ENTRY");
// Checks the role infos
List<RoleInfo> roleInfoList = relationTypeObj.getRoleInfos();
@ -346,8 +341,7 @@ public class RelationService extends NotificationBroadcasterSupport
addRelationTypeInt(relationTypeObj);
RELATION_LOGGER.exiting(RelationService.class.getName(),
"addRelationType");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}
@ -385,14 +379,12 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"getRoleInfos", relationTypeName);
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0}", relationTypeName);
// Can throw a RelationTypeNotFoundException
RelationType relType = getRelationType(relationTypeName);
RELATION_LOGGER.exiting(RelationService.class.getName(),
"getRoleInfos");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return relType.getRoleInfos();
}
@ -421,8 +413,8 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"getRoleInfo", new Object[] {relationTypeName, roleInfoName});
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0} {1}",
relationTypeName, roleInfoName);
// Can throw a RelationTypeNotFoundException
RelationType relType = getRelationType(relationTypeName);
@ -430,8 +422,7 @@ public class RelationService extends NotificationBroadcasterSupport
// Can throw a RoleInfoNotFoundException
RoleInfo roleInfo = relType.getRoleInfo(roleInfoName);
RELATION_LOGGER.exiting(RelationService.class.getName(),
"getRoleInfo");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return roleInfo;
}
@ -461,8 +452,7 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"removeRelationType", relationTypeName);
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0}", relationTypeName);
// Checks if the relation type to be removed exists
// Can throw a RelationTypeNotFoundException
@ -504,8 +494,7 @@ public class RelationService extends NotificationBroadcasterSupport
}
}
RELATION_LOGGER.exiting(RelationService.class.getName(),
"removeRelationType");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}
@ -566,9 +555,8 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"createRelation",
new Object[] {relationId, relationTypeName, roleList});
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0} {1} {2}",
relationId, relationTypeName, roleList);
// Creates RelationSupport object
// Can throw InvalidRoleValueException
@ -588,8 +576,7 @@ public class RelationService extends NotificationBroadcasterSupport
relationId,
relationTypeName,
roleList);
RELATION_LOGGER.exiting(RelationService.class.getName(),
"createRelation");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}
@ -654,8 +641,7 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"addRelation", relationObjectName);
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0}", relationObjectName);
// Can throw RelationServiceNotRegisteredException
isActive();
@ -791,8 +777,7 @@ public class RelationService extends NotificationBroadcasterSupport
newRefList.add(relationObjectName);
updateUnregistrationListener(newRefList, null);
RELATION_LOGGER.exiting(RelationService.class.getName(),
"addRelation");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}
@ -819,8 +804,7 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"isRelationMBean", relationId);
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0}", relationId);
// Can throw RelationNotFoundException
Object result = getRelation(relationId);
@ -850,8 +834,7 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"isRelation", objectName);
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0}", objectName);
String result = null;
synchronized(myRelMBeanObjName2RelIdMap) {
@ -881,8 +864,7 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"hasRelation", relationId);
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0}", relationId);
try {
// Can throw RelationNotFoundException
@ -933,8 +915,8 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"checkRoleReading", new Object[] {roleName, relationTypeName});
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0} {1}",
roleName, relationTypeName);
Integer result;
@ -956,8 +938,7 @@ public class RelationService extends NotificationBroadcasterSupport
result = Integer.valueOf(RoleStatus.NO_ROLE_WITH_NAME);
}
RELATION_LOGGER.exiting(RelationService.class.getName(),
"checkRoleReading");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return result;
}
@ -995,9 +976,8 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"checkRoleWriting",
new Object[] {role, relationTypeName, initFlag});
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0} {1} {2}",
role, relationTypeName, initFlag);
// Can throw a RelationTypeNotFoundException
RelationType relType = getRelationType(relationTypeName);
@ -1013,8 +993,7 @@ public class RelationService extends NotificationBroadcasterSupport
try {
roleInfo = relType.getRoleInfo(roleName);
} catch (RoleInfoNotFoundException exc) {
RELATION_LOGGER.exiting(RelationService.class.getName(),
"checkRoleWriting");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return Integer.valueOf(RoleStatus.NO_ROLE_WITH_NAME);
}
@ -1024,8 +1003,7 @@ public class RelationService extends NotificationBroadcasterSupport
roleInfo,
writeChkFlag);
RELATION_LOGGER.exiting(RelationService.class.getName(),
"checkRoleWriting");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return result;
}
@ -1055,8 +1033,7 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"sendRelationCreationNotification", relationId);
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0}", relationId);
// Message
StringBuilder ntfMsg = new StringBuilder("Creation of relation ");
@ -1071,8 +1048,7 @@ public class RelationService extends NotificationBroadcasterSupport
null,
null);
RELATION_LOGGER.exiting(RelationService.class.getName(),
"sendRelationCreationNotification");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}
@ -1114,9 +1090,8 @@ public class RelationService extends NotificationBroadcasterSupport
if (!(oldValue instanceof ArrayList<?>))
oldValue = new ArrayList<ObjectName>(oldValue);
RELATION_LOGGER.entering(RelationService.class.getName(),
"sendRoleUpdateNotification",
new Object[] {relationId, newRole, oldValue});
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0} {1} {2}",
relationId, newRole, oldValue);
String roleName = newRole.getRoleName();
List<ObjectName> newRoleVal = newRole.getRoleValue();
@ -1140,8 +1115,7 @@ public class RelationService extends NotificationBroadcasterSupport
newRoleVal,
oldValue);
RELATION_LOGGER.exiting(RelationService.class.getName(),
"sendRoleUpdateNotification");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
}
/**
@ -1172,9 +1146,8 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"sendRelationRemovalNotification",
new Object[] {relationId, unregMBeanList});
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0} {1}",
relationId, unregMBeanList);
// Can throw RelationNotFoundException
sendNotificationInt(3,
@ -1186,8 +1159,7 @@ public class RelationService extends NotificationBroadcasterSupport
null);
RELATION_LOGGER.exiting(RelationService.class.getName(),
"sendRelationRemovalNotification");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}
@ -1226,8 +1198,8 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"updateRoleMap", new Object[] {relationId, newRole, oldValue});
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0} {1} {2}",
relationId, newRole, oldValue);
// Can throw RelationServiceNotRegisteredException
isActive();
@ -1303,8 +1275,7 @@ public class RelationService extends NotificationBroadcasterSupport
// all ObjectNames of interest
updateUnregistrationListener(newRefList, obsRefList);
RELATION_LOGGER.exiting(RelationService.class.getName(),
"updateRoleMap");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}
@ -1338,8 +1309,7 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"removeRelation", relationId);
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0}", relationId);
// Checks there is a relation with this id
// Can throw RelationNotFoundException
@ -1442,8 +1412,7 @@ public class RelationService extends NotificationBroadcasterSupport
}
}
RELATION_LOGGER.exiting(RelationService.class.getName(),
"removeRelation");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}
@ -1476,8 +1445,7 @@ public class RelationService extends NotificationBroadcasterSupport
public void purgeRelations()
throws RelationServiceNotRegisteredException {
RELATION_LOGGER.entering(RelationService.class.getName(),
"purgeRelations");
RELATION_LOGGER.log(Level.TRACE, "ENTRY");
// Can throw RelationServiceNotRegisteredException
isActive();
@ -1574,8 +1542,7 @@ public class RelationService extends NotificationBroadcasterSupport
}
}
RELATION_LOGGER.exiting(RelationService.class.getName(),
"purgeRelations");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}
@ -1610,9 +1577,8 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"findReferencingRelations",
new Object[] {mbeanName, relationTypeName, roleName});
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0} {1} {2}",
mbeanName, relationTypeName, roleName);
Map<String,List<String>> result = new HashMap<String,List<String>>();
@ -1684,8 +1650,7 @@ public class RelationService extends NotificationBroadcasterSupport
}
}
RELATION_LOGGER.exiting(RelationService.class.getName(),
"findReferencingRelations");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return result;
}
@ -1720,9 +1685,8 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"findAssociatedMBeans",
new Object[] {mbeanName, relationTypeName, roleName});
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0} {1} {2}",
mbeanName, relationTypeName, roleName);
// Retrieves the map <relation id> -> <role names> for those
// criterias
@ -1769,8 +1733,7 @@ public class RelationService extends NotificationBroadcasterSupport
}
}
RELATION_LOGGER.exiting(RelationService.class.getName(),
"findAssociatedMBeans");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return result;
}
@ -1794,8 +1757,7 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"findRelationsOfType");
RELATION_LOGGER.log(Level.TRACE, "ENTRY");
// Can throw RelationTypeNotFoundException
RelationType relType = getRelationType(relationTypeName);
@ -1809,8 +1771,7 @@ public class RelationService extends NotificationBroadcasterSupport
result = new ArrayList<String>(result1);
}
RELATION_LOGGER.exiting(RelationService.class.getName(),
"findRelationsOfType");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return result;
}
@ -1845,8 +1806,8 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"getRole", new Object[] {relationId, roleName});
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0} {1}",
relationId, roleName);
// Can throw RelationServiceNotRegisteredException
isActive();
@ -1899,7 +1860,7 @@ public class RelationService extends NotificationBroadcasterSupport
}
}
RELATION_LOGGER.exiting(RelationService.class.getName(), "getRole");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return result;
}
@ -1931,8 +1892,7 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"getRoles", relationId);
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0}", relationId);
// Can throw RelationServiceNotRegisteredException
isActive();
@ -1976,7 +1936,7 @@ public class RelationService extends NotificationBroadcasterSupport
}
}
RELATION_LOGGER.exiting(RelationService.class.getName(), "getRoles");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return result;
}
@ -2004,8 +1964,7 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"getRoles", relationId);
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0}", relationId);
// Can throw a RelationNotFoundException
Object relObj = getRelation(relationId);
@ -2028,7 +1987,7 @@ public class RelationService extends NotificationBroadcasterSupport
}
}
RELATION_LOGGER.exiting(RelationService.class.getName(), "getRoles");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return result;
}
@ -2055,8 +2014,8 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"getRoleCardinality", new Object[] {relationId, roleName});
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0} {1}",
relationId, roleName);
// Can throw a RelationNotFoundException
Object relObj = getRelation(relationId);
@ -2098,8 +2057,7 @@ public class RelationService extends NotificationBroadcasterSupport
}
}
RELATION_LOGGER.exiting(RelationService.class.getName(),
"getRoleCardinality");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return result;
}
@ -2147,8 +2105,8 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"setRole", new Object[] {relationId, role});
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0} {1}",
relationId, role);
// Can throw RelationServiceNotRegisteredException
isActive();
@ -2211,7 +2169,7 @@ public class RelationService extends NotificationBroadcasterSupport
}
}
RELATION_LOGGER.exiting(RelationService.class.getName(), "setRole");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}
@ -2247,8 +2205,8 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"setRoles", new Object[] {relationId, roleList});
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0} {1}",
relationId, roleList);
// Can throw RelationServiceNotRegisteredException
isActive();
@ -2296,7 +2254,7 @@ public class RelationService extends NotificationBroadcasterSupport
}
}
RELATION_LOGGER.exiting(RelationService.class.getName(), "setRoles");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return result;
}
@ -2322,8 +2280,8 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"getReferencedMBeans", relationId);
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0}",
relationId);
// Can throw a RelationNotFoundException
Object relObj = getRelation(relationId);
@ -2346,8 +2304,7 @@ public class RelationService extends NotificationBroadcasterSupport
}
}
RELATION_LOGGER.exiting(RelationService.class.getName(),
"getReferencedMBeans");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return result;
}
@ -2371,8 +2328,7 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"getRelationTypeName", relationId);
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0}", relationId);
// Can throw a RelationNotFoundException
Object relObj = getRelation(relationId);
@ -2395,8 +2351,7 @@ public class RelationService extends NotificationBroadcasterSupport
}
}
RELATION_LOGGER.exiting(RelationService.class.getName(),
"getRelationTypeName");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return result;
}
@ -2421,8 +2376,7 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"handleNotification", notif);
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0}", notif);
if (notif instanceof MBeanServerNotification) {
@ -2480,8 +2434,7 @@ public class RelationService extends NotificationBroadcasterSupport
}
}
RELATION_LOGGER.exiting(RelationService.class.getName(),
"handleNotification");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}
@ -2495,8 +2448,7 @@ public class RelationService extends NotificationBroadcasterSupport
*/
public MBeanNotificationInfo[] getNotificationInfo() {
RELATION_LOGGER.entering(RelationService.class.getName(),
"getNotificationInfo");
RELATION_LOGGER.log(Level.TRACE, "ENTRY");
String ntfClass = "javax.management.relation.RelationNotification";
@ -2514,8 +2466,7 @@ public class RelationService extends NotificationBroadcasterSupport
MBeanNotificationInfo ntfInfo =
new MBeanNotificationInfo(ntfTypes, ntfClass, ntfDesc);
RELATION_LOGGER.exiting(RelationService.class.getName(),
"getNotificationInfo");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return new MBeanNotificationInfo[] {ntfInfo};
}
@ -2539,8 +2490,7 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"addRelationTypeInt");
RELATION_LOGGER.log(Level.TRACE, "ENTRY");
String relTypeName = relationTypeObj.getRelationTypeName();
@ -2570,8 +2520,7 @@ public class RelationService extends NotificationBroadcasterSupport
((RelationTypeSupport)relationTypeObj).setRelationServiceFlag(true);
}
RELATION_LOGGER.exiting(RelationService.class.getName(),
"addRelationTypeInt");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}
@ -2595,8 +2544,7 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"getRelationType", relationTypeName);
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0}", relationTypeName);
// No null relation type accepted, so can use get()
RelationType relType;
@ -2611,8 +2559,7 @@ public class RelationService extends NotificationBroadcasterSupport
throw new RelationTypeNotFoundException(excMsgStrB.toString());
}
RELATION_LOGGER.exiting(RelationService.class.getName(),
"getRelationType");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return relType;
}
@ -2639,8 +2586,7 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"getRelation", relationId);
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0}", relationId);
// No null relation accepted, so can use get()
Object rel;
@ -2653,8 +2599,7 @@ public class RelationService extends NotificationBroadcasterSupport
throw new RelationNotFoundException(excMsg);
}
RELATION_LOGGER.exiting(RelationService.class.getName(),
"getRelation");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return rel;
}
@ -2684,9 +2629,8 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"addNewMBeanReference",
new Object[] {objectName, relationId, roleName});
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0} {1} {2}",
objectName, relationId, roleName);
boolean isNewFlag = false;
@ -2739,8 +2683,7 @@ public class RelationService extends NotificationBroadcasterSupport
}
}
RELATION_LOGGER.exiting(RelationService.class.getName(),
"addNewMBeanReference");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return isNewFlag;
}
@ -2772,9 +2715,8 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"removeMBeanReference",
new Object[] {objectName, relationId, roleName, allRolesFlag});
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0} {1} {2} {3}",
objectName, relationId, roleName, allRolesFlag);
boolean noLongerRefFlag = false;
@ -2790,8 +2732,7 @@ public class RelationService extends NotificationBroadcasterSupport
if (mbeanRefMap == null) {
// The MBean is no longer referenced
RELATION_LOGGER.exiting(RelationService.class.getName(),
"removeMBeanReference");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return true;
}
@ -2824,8 +2765,7 @@ public class RelationService extends NotificationBroadcasterSupport
}
}
RELATION_LOGGER.exiting(RelationService.class.getName(),
"removeMBeanReference");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return noLongerRefFlag;
}
@ -2850,9 +2790,8 @@ public class RelationService extends NotificationBroadcasterSupport
}
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"updateUnregistrationListener",
new Object[] {newRefList, obsoleteRefList});
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0} {1}",
newRefList, obsoleteRefList);
// Can throw RelationServiceNotRegisteredException
isActive();
@ -2936,8 +2875,7 @@ public class RelationService extends NotificationBroadcasterSupport
}
}
RELATION_LOGGER.exiting(RelationService.class.getName(),
"updateUnregistrationListener");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}
@ -3003,9 +2941,10 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"addRelationInt", new Object[] {relationBaseFlag, relationObj,
relationObjName, relationId, relationTypeName, roleList});
RELATION_LOGGER.log(Level.TRACE,
"ENTRY {0} {1} {2} {3} {4} {5}",
relationBaseFlag, relationObj, relationObjName,
relationId, relationTypeName, roleList);
// Can throw RelationServiceNotRegisteredException
isActive();
@ -3144,8 +3083,7 @@ public class RelationService extends NotificationBroadcasterSupport
// OK : The Relation could not be found.
}
RELATION_LOGGER.exiting(RelationService.class.getName(),
"addRelationInt");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}
@ -3185,15 +3123,13 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"checkRoleInt", new Object[] {chkType, roleName,
roleValue, roleInfo, writeChkFlag});
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0} {1} {2} {3} {4}",
chkType, roleName, roleValue, roleInfo, writeChkFlag);
// Compares names
String expName = roleInfo.getName();
if (!(roleName.equals(expName))) {
RELATION_LOGGER.exiting(RelationService.class.getName(),
"checkRoleInt");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return Integer.valueOf(RoleStatus.NO_ROLE_WITH_NAME);
}
@ -3201,13 +3137,11 @@ public class RelationService extends NotificationBroadcasterSupport
if (chkType == 1) {
boolean isReadable = roleInfo.isReadable();
if (!isReadable) {
RELATION_LOGGER.exiting(RelationService.class.getName(),
"checkRoleInt");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return Integer.valueOf(RoleStatus.ROLE_NOT_READABLE);
} else {
// End of check :)
RELATION_LOGGER.exiting(RelationService.class.getName(),
"checkRoleInt");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return 0;
}
}
@ -3216,8 +3150,7 @@ public class RelationService extends NotificationBroadcasterSupport
if (writeChkFlag) {
boolean isWritable = roleInfo.isWritable();
if (!isWritable) {
RELATION_LOGGER.exiting(RelationService.class.getName(),
"checkRoleInt");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return RoleStatus.ROLE_NOT_WRITABLE;
}
}
@ -3227,16 +3160,14 @@ public class RelationService extends NotificationBroadcasterSupport
// Checks minimum cardinality
boolean chkMinFlag = roleInfo.checkMinDegree(refNbr);
if (!chkMinFlag) {
RELATION_LOGGER.exiting(RelationService.class.getName(),
"checkRoleInt");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return RoleStatus.LESS_THAN_MIN_ROLE_DEGREE;
}
// Checks maximum cardinality
boolean chkMaxFlag = roleInfo.checkMaxDegree(refNbr);
if (!chkMaxFlag) {
RELATION_LOGGER.exiting(RelationService.class.getName(),
"checkRoleInt");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return RoleStatus.MORE_THAN_MAX_ROLE_DEGREE;
}
@ -3252,8 +3183,7 @@ public class RelationService extends NotificationBroadcasterSupport
// Checks it is registered
if (currObjName == null) {
RELATION_LOGGER.exiting(RelationService.class.getName(),
"checkRoleInt");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return RoleStatus.REF_MBEAN_NOT_REGISTERED;
}
@ -3263,20 +3193,17 @@ public class RelationService extends NotificationBroadcasterSupport
boolean classSts = myMBeanServer.isInstanceOf(currObjName,
expClassName);
if (!classSts) {
RELATION_LOGGER.exiting(RelationService.class.getName(),
"checkRoleInt");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return RoleStatus.REF_MBEAN_OF_INCORRECT_CLASS;
}
} catch (InstanceNotFoundException exc) {
RELATION_LOGGER.exiting(RelationService.class.getName(),
"checkRoleInt");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return RoleStatus.REF_MBEAN_NOT_REGISTERED;
}
}
RELATION_LOGGER.exiting(RelationService.class.getName(),
"checkRoleInt");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return 0;
}
@ -3328,10 +3255,9 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"initializeMissingRoles", new Object[] {relationBaseFlag,
relationObj, relationObjName, relationId, relationTypeName,
roleInfoList});
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0} {1} {2} {3} {4} {5}",
relationBaseFlag, relationObj, relationObjName,
relationId, relationTypeName, roleInfoList);
// Can throw RelationServiceNotRegisteredException
isActive();
@ -3410,8 +3336,7 @@ public class RelationService extends NotificationBroadcasterSupport
}
}
RELATION_LOGGER.exiting(RelationService.class.getName(),
"initializeMissingRoles");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}
@ -3528,9 +3453,9 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"sendNotificationInt", new Object[] {intNtfType, message,
relationId, unregMBeanList, roleName, roleNewValue, oldValue});
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0} {1} {2} {3} {4} {5} {6}",
intNtfType, message, relationId, unregMBeanList,
roleName, roleNewValue, oldValue);
// Relation type name
// Note: do not use getRelationTypeName() as if it is a relation MBean
@ -3616,8 +3541,7 @@ public class RelationService extends NotificationBroadcasterSupport
sendNotification(ntf);
RELATION_LOGGER.exiting(RelationService.class.getName(),
"sendNotificationInt");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}
@ -3654,9 +3578,8 @@ public class RelationService extends NotificationBroadcasterSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationService.class.getName(),
"handleReferenceUnregistration",
new Object[] {relationId, objectName, roleNameList});
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0} {1} {2}",
relationId, objectName, roleNameList);
// Can throw RelationServiceNotRegisteredException
isActive();
@ -3782,8 +3705,7 @@ public class RelationService extends NotificationBroadcasterSupport
}
}
RELATION_LOGGER.exiting(RelationService.class.getName(),
"handleReferenceUnregistration");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}
}

View File

@ -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
@ -27,8 +27,8 @@ package javax.management.relation;
import java.lang.System.Logger.Level;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
@ -162,8 +162,7 @@ public class RelationSupport
super();
RELATION_LOGGER.entering(RelationSupport.class.getName(),
"RelationSupport");
RELATION_LOGGER.log(Level.TRACE, "ENTRY");
// Can throw InvalidRoleValueException and IllegalArgumentException
initMembers(relationId,
@ -172,8 +171,7 @@ public class RelationSupport
relationTypeName,
list);
RELATION_LOGGER.exiting(RelationSupport.class.getName(),
"RelationSupport");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
}
/**
@ -239,8 +237,7 @@ public class RelationSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationSupport.class.getName(),
"RelationSupport");
RELATION_LOGGER.log(Level.TRACE, "ENTRY");
// Can throw InvalidRoleValueException and
// IllegalArgumentException
@ -250,8 +247,7 @@ public class RelationSupport
relationTypeName,
list);
RELATION_LOGGER.exiting(RelationSupport.class.getName(),
"RelationSupport");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
}
//
@ -286,15 +282,14 @@ public class RelationSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationSupport.class.getName(),
"getRole", roleName);
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0}", roleName);
// Can throw RoleNotFoundException and
// RelationServiceNotRegisteredException
List<ObjectName> result = cast(
getRoleInt(roleName, false, null, false));
RELATION_LOGGER.exiting(RelationSupport.class.getName(), "getRole");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return result;
}
@ -324,12 +319,12 @@ public class RelationSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationSupport.class.getName(), "getRoles");
RELATION_LOGGER.log(Level.TRACE, "ENTRY");
// Can throw RelationServiceNotRegisteredException
RoleResult result = getRolesInt(roleNameArray, false, null);
RELATION_LOGGER.exiting(RelationSupport.class.getName(), "getRoles");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return result;
}
@ -346,8 +341,7 @@ public class RelationSupport
public RoleResult getAllRoles()
throws RelationServiceNotRegisteredException {
RELATION_LOGGER.entering(RelationSupport.class.getName(),
"getAllRoles");
RELATION_LOGGER.log(Level.TRACE, "ENTRY");
RoleResult result = null;
try {
@ -356,7 +350,7 @@ public class RelationSupport
// OK : Invalid parameters, ignore...
}
RELATION_LOGGER.exiting(RelationSupport.class.getName(), "getAllRoles");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return result;
}
@ -367,8 +361,7 @@ public class RelationSupport
*/
public RoleList retrieveAllRoles() {
RELATION_LOGGER.entering(RelationSupport.class.getName(),
"retrieveAllRoles");
RELATION_LOGGER.log(Level.TRACE, "ENTRY");
RoleList result;
synchronized(myRoleName2ValueMap) {
@ -376,8 +369,7 @@ public class RelationSupport
new RoleList(new ArrayList<Role>(myRoleName2ValueMap.values()));
}
RELATION_LOGGER.exiting(RelationSupport.class.getName(),
"retrieveAllRoles");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return result;
}
@ -400,8 +392,7 @@ public class RelationSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationSupport.class.getName(),
"getRoleCardinality", roleName);
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0}", roleName);
// Try to retrieve the role
Role role;
@ -426,8 +417,7 @@ public class RelationSupport
List<ObjectName> roleValue = role.getRoleValue();
RELATION_LOGGER.exiting(RelationSupport.class.getName(),
"getRoleCardinality");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return roleValue.size();
}
@ -476,13 +466,12 @@ public class RelationSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationSupport.class.getName(),
"setRole", role);
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0}", role);
// Will return null :)
Object result = setRoleInt(role, false, null, false);
RELATION_LOGGER.exiting(RelationSupport.class.getName(), "setRole");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}
@ -521,12 +510,11 @@ public class RelationSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationSupport.class.getName(),
"setRoles", list);
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0}", list);
RoleResult result = setRolesInt(list, false, null);
RELATION_LOGGER.exiting(RelationSupport.class.getName(), "setRoles");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return result;
}
@ -570,9 +558,7 @@ public class RelationSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationSupport.class.getName(),
"handleMBeanUnregistration",
new Object[]{objectName, roleName});
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0} {1}", objectName, roleName);
// Can throw RoleNotFoundException, InvalidRoleValueException,
// or RelationTypeNotFoundException
@ -581,8 +567,7 @@ public class RelationSupport
false,
null);
RELATION_LOGGER.exiting(RelationSupport.class.getName(),
"handleMBeanUnregistration");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}
@ -594,8 +579,7 @@ public class RelationSupport
*/
public Map<ObjectName,List<String>> getReferencedMBeans() {
RELATION_LOGGER.entering(RelationSupport.class.getName(),
"getReferencedMBeans");
RELATION_LOGGER.log(Level.TRACE, "ENTRY");
Map<ObjectName,List<String>> refMBeanMap =
new HashMap<ObjectName,List<String>>();
@ -628,8 +612,7 @@ public class RelationSupport
}
}
RELATION_LOGGER.exiting(RelationSupport.class.getName(),
"getReferencedMBeans");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return refMBeanMap;
}
@ -779,8 +762,7 @@ public class RelationSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationSupport.class.getName(),
"getRoleInt", roleName);
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0}", roleName);
int pbType = 0;
@ -885,7 +867,7 @@ public class RelationSupport
}
}
RELATION_LOGGER.exiting(RelationSupport.class.getName(), "getRoleInt");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return result;
}
@ -921,8 +903,7 @@ public class RelationSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationSupport.class.getName(),
"getRolesInt");
RELATION_LOGGER.log(Level.TRACE, "ENTRY");
RoleList roleList = new RoleList();
RoleUnresolvedList roleUnresList = new RoleUnresolvedList();
@ -966,8 +947,7 @@ public class RelationSupport
}
RoleResult result = new RoleResult(roleList, roleUnresList);
RELATION_LOGGER.exiting(RelationSupport.class.getName(),
"getRolesInt");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return result;
}
@ -991,8 +971,7 @@ public class RelationSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationSupport.class.getName(),
"getAllRolesInt");
RELATION_LOGGER.log(Level.TRACE, "ENTRY");
List<String> roleNameList;
synchronized(myRoleName2ValueMap) {
@ -1006,8 +985,7 @@ public class RelationSupport
relationServCallFlg,
relationServ);
RELATION_LOGGER.exiting(RelationSupport.class.getName(),
"getAllRolesInt");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return result;
}
@ -1083,9 +1061,9 @@ public class RelationSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationSupport.class.getName(),
"setRoleInt", new Object[] {aRole, relationServCallFlg,
relationServ, multiRoleFlg});
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0} {1} {2} {3}",
aRole, relationServCallFlg, relationServ,
multiRoleFlg);
String roleName = aRole.getRoleName();
int pbType = 0;
@ -1244,7 +1222,7 @@ public class RelationSupport
}
}
RELATION_LOGGER.exiting(RelationSupport.class.getName(), "setRoleInt");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return result;
}
@ -1286,9 +1264,9 @@ public class RelationSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationSupport.class.getName(),
"sendRoleUpdateNotification", new Object[] {newRole,
oldRoleValue, relationServCallFlg, relationServ});
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0} {1} {2} {3}",
newRole, oldRoleValue, relationServCallFlg,
relationServ);
if (relationServCallFlg) {
// Direct call to the Relation Service
@ -1341,8 +1319,7 @@ public class RelationSupport
}
}
RELATION_LOGGER.exiting(RelationSupport.class.getName(),
"sendRoleUpdateNotification");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}
@ -1383,9 +1360,9 @@ public class RelationSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationSupport.class.getName(),
"updateRelationServiceMap", new Object[] {newRole,
oldRoleValue, relationServCallFlg, relationServ});
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0} {1} {2} {3}",
newRole, oldRoleValue, relationServCallFlg,
relationServ);
if (relationServCallFlg) {
// Direct call to the Relation Service
@ -1433,8 +1410,7 @@ public class RelationSupport
}
}
RELATION_LOGGER.exiting(RelationSupport.class.getName(),
"updateRelationServiceMap");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}
@ -1484,9 +1460,8 @@ public class RelationSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationSupport.class.getName(),
"setRolesInt",
new Object[] {list, relationServCallFlg, relationServ});
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0} {1} {2}",
list, relationServCallFlg, relationServ);
RoleList roleList = new RoleList();
RoleUnresolvedList roleUnresList = new RoleUnresolvedList();
@ -1534,7 +1509,7 @@ public class RelationSupport
RoleResult result = new RoleResult(roleList, roleUnresList);
RELATION_LOGGER.exiting(RelationSupport.class.getName(), "setRolesInt");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return result;
}
@ -1578,9 +1553,9 @@ public class RelationSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationSupport.class.getName(),
"initMembers", new Object[] {relationId, relationServiceName,
relationServiceMBeanServer, relationTypeName, list});
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0} {1} {2} {3} {4}",
relationId, relationServiceName,
relationServiceMBeanServer, relationTypeName, list);
myRelId = relationId;
myRelServiceName = relationServiceName;
@ -1589,7 +1564,7 @@ public class RelationSupport
// Can throw InvalidRoleValueException
initRoleMap(list);
RELATION_LOGGER.exiting(RelationSupport.class.getName(), "initMembers");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}
@ -1608,8 +1583,7 @@ public class RelationSupport
return;
}
RELATION_LOGGER.entering(RelationSupport.class.getName(),
"initRoleMap", list);
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0}", list);
synchronized(myRoleName2ValueMap) {
@ -1632,7 +1606,7 @@ public class RelationSupport
}
}
RELATION_LOGGER.exiting(RelationSupport.class.getName(), "initRoleMap");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}
@ -1692,9 +1666,9 @@ public class RelationSupport
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationSupport.class.getName(),
"handleMBeanUnregistrationInt", new Object[] {objectName,
roleName, relationServCallFlg, relationServ});
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0} {1} {2} {3}",
objectName, roleName, relationServCallFlg,
relationServ);
// Retrieves current role value
Role role;
@ -1723,8 +1697,7 @@ public class RelationSupport
Object result =
setRoleInt(newRole, relationServCallFlg, relationServ, false);
RELATION_LOGGER.exiting(RelationSupport.class.getName(),
"handleMBeanUnregistrationInt");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2000, 2006, 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 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.logging.Level;
import java.lang.System.Logger.Level;
/**
* A RelationTypeSupport object implements the RelationType interface.
@ -173,15 +173,13 @@ public class RelationTypeSupport implements RelationType {
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationTypeSupport.class.getName(),
"RelationTypeSupport", relationTypeName);
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0}", relationTypeName);
// Can throw InvalidRelationTypeException, ClassNotFoundException
// and NotCompliantMBeanException
initMembers(relationTypeName, roleInfoArray);
RELATION_LOGGER.exiting(RelationTypeSupport.class.getName(),
"RelationTypeSupport");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}
@ -199,13 +197,11 @@ public class RelationTypeSupport implements RelationType {
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationTypeSupport.class.getName(),
"RelationTypeSupport", relationTypeName);
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0}", relationTypeName);
typeName = relationTypeName;
RELATION_LOGGER.exiting(RelationTypeSupport.class.getName(),
"RelationTypeSupport");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}
@ -251,8 +247,7 @@ public class RelationTypeSupport implements RelationType {
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationTypeSupport.class.getName(),
"getRoleInfo", roleInfoName);
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0}", roleInfoName);
// No null RoleInfo allowed, so use get()
RoleInfo result = roleName2InfoMap.get(roleInfoName);
@ -265,8 +260,7 @@ public class RelationTypeSupport implements RelationType {
throw new RoleInfoNotFoundException(excMsgStrB.toString());
}
RELATION_LOGGER.exiting(RelationTypeSupport.class.getName(),
"getRoleInfo");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return result;
}
@ -297,8 +291,7 @@ public class RelationTypeSupport implements RelationType {
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationTypeSupport.class.getName(),
"addRoleInfo", roleInfo);
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0}", roleInfo);
if (isInRelationService) {
// Trying to update a declared relation type
@ -319,8 +312,7 @@ public class RelationTypeSupport implements RelationType {
roleName2InfoMap.put(roleName, new RoleInfo(roleInfo));
RELATION_LOGGER.exiting(RelationTypeSupport.class.getName(),
"addRoleInfo");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}
@ -351,8 +343,7 @@ public class RelationTypeSupport implements RelationType {
throw new IllegalArgumentException(excMsg);
}
RELATION_LOGGER.entering(RelationTypeSupport.class.getName(),
"initMembers", relationTypeName);
RELATION_LOGGER.log(Level.TRACE, "ENTRY {0}", relationTypeName);
typeName = relationTypeName;
@ -366,8 +357,7 @@ public class RelationTypeSupport implements RelationType {
new RoleInfo(currRoleInfo));
}
RELATION_LOGGER.exiting(RelationTypeSupport.class.getName(),
"initMembers");
RELATION_LOGGER.log(Level.TRACE, "RETURN");
return;
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 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,7 +33,7 @@ import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import java.util.Vector;
import java.util.logging.Level;
import java.lang.System.Logger.Level;
// jmx imports
//
@ -221,8 +221,7 @@ public class Timer extends NotificationBroadcasterSupport
*/
public void preDeregister() throws java.lang.Exception {
TIMER_LOGGER.logp(Level.FINER, Timer.class.getName(),
"preDeregister", "stop the timer");
TIMER_LOGGER.log(Level.TRACE, "stop the timer");
// Stop the timer.
//
@ -273,8 +272,7 @@ public class Timer extends NotificationBroadcasterSupport
*/
public synchronized void start() {
TIMER_LOGGER.logp(Level.FINER, Timer.class.getName(),
"start", "starting the timer");
TIMER_LOGGER.log(Level.TRACE, "starting the timer");
// Start the TimerAlarmClock.
//
@ -323,11 +321,9 @@ public class Timer extends NotificationBroadcasterSupport
//
isActive = true;
TIMER_LOGGER.logp(Level.FINER, Timer.class.getName(),
"start", "timer started");
TIMER_LOGGER.log(Level.TRACE, "timer started");
} else {
TIMER_LOGGER.logp(Level.FINER, Timer.class.getName(),
"start", "the timer is already activated");
TIMER_LOGGER.log(Level.TRACE, "the timer is already activated");
}
}
@ -336,8 +332,7 @@ public class Timer extends NotificationBroadcasterSupport
*/
public synchronized void stop() {
TIMER_LOGGER.logp(Level.FINER, Timer.class.getName(),
"stop", "stopping the timer");
TIMER_LOGGER.log(Level.TRACE, "stopping the timer");
// Stop the TimerAlarmClock.
//
@ -370,11 +365,9 @@ public class Timer extends NotificationBroadcasterSupport
//
isActive = false;
TIMER_LOGGER.logp(Level.FINER, Timer.class.getName(),
"stop", "timer stopped");
TIMER_LOGGER.log(Level.TRACE, "timer stopped");
} else {
TIMER_LOGGER.logp(Level.FINER, Timer.class.getName(),
"stop", "the timer is already deactivated");
TIMER_LOGGER.log(Level.TRACE, "the timer is already deactivated");
}
}
@ -444,9 +437,8 @@ public class Timer extends NotificationBroadcasterSupport
if (currentDate.after(date)) {
date.setTime(currentDate.getTime());
if (TIMER_LOGGER.isLoggable(Level.FINER)) {
TIMER_LOGGER.logp(Level.FINER, Timer.class.getName(),
"addNotification",
if (TIMER_LOGGER.isLoggable(Level.TRACE)) {
TIMER_LOGGER.log(Level.TRACE,
"update timer notification to add with:" +
"\n\tNotification date = " + date);
}
@ -486,7 +478,7 @@ public class Timer extends NotificationBroadcasterSupport
obj[ALARM_CLOCK_INDEX] = (Object)alarmClock;
obj[FIXED_RATE_INDEX] = Boolean.valueOf(fixedRate);
if (TIMER_LOGGER.isLoggable(Level.FINER)) {
if (TIMER_LOGGER.isLoggable(Level.TRACE)) {
StringBuilder strb = new StringBuilder()
.append("adding timer notification:\n\t")
.append("Notification source = ")
@ -503,8 +495,7 @@ public class Timer extends NotificationBroadcasterSupport
.append(nbOccurences)
.append("\n\tNotification executes at fixed rate = ")
.append(fixedRate);
TIMER_LOGGER.logp(Level.FINER, Timer.class.getName(),
"addNotification", strb.toString());
TIMER_LOGGER.log(Level.TRACE, strb::toString);
}
timerTable.put(notifID, obj);
@ -522,8 +513,7 @@ public class Timer extends NotificationBroadcasterSupport
}
}
TIMER_LOGGER.logp(Level.FINER, Timer.class.getName(),
"addNotification", "timer notification added");
TIMER_LOGGER.log(Level.TRACE, "timer notification added");
return notifID;
}
@ -677,7 +667,7 @@ public class Timer extends NotificationBroadcasterSupport
// Remove the timer notification from the timer table.
//
if (TIMER_LOGGER.isLoggable(Level.FINER)) {
if (TIMER_LOGGER.isLoggable(Level.TRACE)) {
StringBuilder strb = new StringBuilder()
.append("removing timer notification:")
.append("\n\tNotification source = ")
@ -694,14 +684,12 @@ public class Timer extends NotificationBroadcasterSupport
.append(obj[TIMER_NB_OCCUR_INDEX])
.append("\n\tNotification executes at fixed rate = ")
.append(obj[FIXED_RATE_INDEX]);
TIMER_LOGGER.logp(Level.FINER, Timer.class.getName(),
"removeNotification", strb.toString());
TIMER_LOGGER.log(Level.TRACE, strb::toString);
}
timerTable.remove(id);
TIMER_LOGGER.logp(Level.FINER, Timer.class.getName(),
"removeNotification", "timer notification removed");
TIMER_LOGGER.log(Level.TRACE, "timer notification removed");
}
/**
@ -752,19 +740,16 @@ public class Timer extends NotificationBroadcasterSupport
}
// Remove all the timer notifications from the timer table.
TIMER_LOGGER.logp(Level.FINER, Timer.class.getName(),
"removeAllNotifications", "removing all timer notifications");
TIMER_LOGGER.log(Level.TRACE, "removing all timer notifications");
timerTable.clear();
TIMER_LOGGER.logp(Level.FINER, Timer.class.getName(),
"removeAllNotifications", "all timer notifications removed");
TIMER_LOGGER.log(Level.TRACE, "all timer notifications removed");
// Reset the counterID.
//
counterID = 0;
TIMER_LOGGER.logp(Level.FINER, Timer.class.getName(),
"removeAllNotifications", "timer notification counter ID reset");
TIMER_LOGGER.log(Level.TRACE, "timer notification counter ID reset");
}
// GETTERS AND SETTERS
@ -1021,7 +1006,7 @@ public class Timer extends NotificationBroadcasterSupport
while ( (currentDate.after(date)) && (timerTable.containsKey(notifID)) ) {
if (currentFlag == true) {
if (TIMER_LOGGER.isLoggable(Level.FINER)) {
if (TIMER_LOGGER.isLoggable(Level.TRACE)) {
StringBuilder strb = new StringBuilder()
.append("sending past timer notification:")
.append("\n\tNotification source = ")
@ -1038,13 +1023,11 @@ public class Timer extends NotificationBroadcasterSupport
.append(obj[TIMER_NB_OCCUR_INDEX])
.append("\n\tNotification executes at fixed rate = ")
.append(obj[FIXED_RATE_INDEX]);
TIMER_LOGGER.logp(Level.FINER, Timer.class.getName(),
"sendPastNotifications", strb.toString());
TIMER_LOGGER.log(Level.TRACE, strb::toString);
}
sendNotification(date, notif);
TIMER_LOGGER.logp(Level.FINER, Timer.class.getName(),
"sendPastNotifications", "past timer notification sent");
TIMER_LOGGER.log(Level.TRACE, "past timer notification sent");
}
// Update the date and the number of occurrences of the timer notification.
@ -1107,7 +1090,7 @@ public class Timer extends NotificationBroadcasterSupport
timer.schedule(alarmClock, alarmClock.timeout);
}
}
if (TIMER_LOGGER.isLoggable(Level.FINER)) {
if (TIMER_LOGGER.isLoggable(Level.TRACE)) {
TimerNotification notif = (TimerNotification)obj[TIMER_NOTIF_INDEX];
StringBuilder strb = new StringBuilder()
.append("update timer notification with:")
@ -1125,8 +1108,7 @@ public class Timer extends NotificationBroadcasterSupport
.append(nbOccurences)
.append("\n\tNotification executes at fixed rate = ")
.append(fixedRate);
TIMER_LOGGER.logp(Level.FINER, Timer.class.getName(),
"updateTimerTable", strb.toString());
TIMER_LOGGER.log(Level.TRACE, strb::toString);
}
}
else {
@ -1211,7 +1193,7 @@ public class Timer extends NotificationBroadcasterSupport
*/
void sendNotification(Date timeStamp, TimerNotification notification) {
if (TIMER_LOGGER.isLoggable(Level.FINER)) {
if (TIMER_LOGGER.isLoggable(Level.TRACE)) {
StringBuilder strb = new StringBuilder()
.append("sending timer notification:")
.append("\n\tNotification source = ")
@ -1222,8 +1204,7 @@ public class Timer extends NotificationBroadcasterSupport
.append(notification.getNotificationID())
.append("\n\tNotification date = ")
.append(timeStamp);
TIMER_LOGGER.logp(Level.FINER, Timer.class.getName(),
"sendNotification", strb.toString());
TIMER_LOGGER.log(Level.TRACE, strb::toString);
}
long curSeqNumber;
synchronized(this) {
@ -1236,7 +1217,6 @@ public class Timer extends NotificationBroadcasterSupport
this.sendNotification((TimerNotification)notification.cloneTimerNotification());
}
TIMER_LOGGER.logp(Level.FINER, Timer.class.getName(),
"sendNotification", "timer notification sent");
TIMER_LOGGER.log(Level.TRACE, "timer notification sent");
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 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
@ -26,7 +26,7 @@
package javax.management.timer;
import java.util.Date;
import java.util.logging.Level;
import java.lang.System.Logger.Level;
import static com.sun.jmx.defaults.JmxProperties.TIMER_LOGGER;
/**
@ -73,7 +73,7 @@ class TimerAlarmClock extends java.util.TimerTask {
TimerAlarmClockNotification notif = new TimerAlarmClockNotification(this);
listener.notifyAlarmClock(notif);
} catch (Exception e) {
TIMER_LOGGER.logp(Level.FINEST, Timer.class.getName(), "run",
TIMER_LOGGER.log(Level.TRACE,
"Got unexpected exception when sending a notification", e);
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, 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,7 +31,6 @@
*/
module java.management {
requires transitive java.rmi;
requires java.logging;
requires java.naming;
exports java.lang.management;
@ -55,4 +54,3 @@ module java.management {
provides javax.security.auth.spi.LoginModule
with com.sun.jmx.remote.security.FileLoginModule;
}

View File

@ -73,7 +73,6 @@ import java.util.ResourceBundle;
import java.util.Set;
import java.util.TreeSet;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;
import java.util.jar.JarEntry;
@ -395,25 +394,30 @@ public class JmodTask {
// create jmod with temporary name to avoid it being examined
// when scanning the module path
Path target = options.jmodFile;
Path tempTarget = Files.createTempFile(target.getFileName().toString(), ".tmp");
Path tempTarget = jmodTempFilePath(target);
try {
try (JmodOutputStream jos = JmodOutputStream.newOutputStream(tempTarget)) {
jmod.write(jos);
}
Files.move(tempTarget, target);
} catch (Exception e) {
if (Files.exists(tempTarget)) {
try {
Files.delete(tempTarget);
} catch (IOException ioe) {
e.addSuppressed(ioe);
}
try {
Files.deleteIfExists(tempTarget);
} catch (IOException ioe) {
e.addSuppressed(ioe);
}
throw e;
}
return true;
}
/*
* Create a JMOD .tmp file for the given target JMOD file
*/
private static Path jmodTempFilePath(Path target) throws IOException {
return target.resolveSibling("." + target.getFileName() + ".tmp");
}
private class JmodFileWriter {
final List<Path> cmds = options.cmds;
final List<Path> libs = options.libs;
@ -908,7 +912,7 @@ public class JmodTask {
throws IOException
{
Path target = moduleToPath(name);
Path tempTarget = Files.createTempFile(target.getFileName().toString(), ".tmp");
Path tempTarget = jmodTempFilePath(target);
try {
if (target.getFileName().toString().endsWith(".jmod")) {
updateJmodFile(target, tempTarget, moduleHashes);
@ -916,12 +920,10 @@ public class JmodTask {
updateModularJar(target, tempTarget, moduleHashes);
}
} catch (IOException|RuntimeException e) {
if (Files.exists(tempTarget)) {
try {
Files.delete(tempTarget);
} catch (IOException ioe) {
e.addSuppressed(ioe);
}
try {
Files.deleteIfExists(tempTarget);
} catch (IOException ioe) {
e.addSuppressed(ioe);
}
throw e;
}

View File

@ -65,9 +65,8 @@ public class NTDomainPrincipal implements Principal, java.io.Serializable {
public NTDomainPrincipal(String name) {
if (name == null) {
java.text.MessageFormat form = new java.text.MessageFormat
(sun.security.util.ResourcesMgr.getString
("invalid.null.input.value",
"sun.security.util.AuthResources"));
(sun.security.util.ResourcesMgr.getAuthResourceString
("invalid.null.input.value"));
Object[] source = {"name"};
throw new NullPointerException(form.format(source));
}
@ -92,9 +91,8 @@ public class NTDomainPrincipal implements Principal, java.io.Serializable {
*/
public String toString() {
java.text.MessageFormat form = new java.text.MessageFormat
(sun.security.util.ResourcesMgr.getString
("NTDomainPrincipal.name",
"sun.security.util.AuthResources"));
(sun.security.util.ResourcesMgr.getAuthResourceString
("NTDomainPrincipal.name"));
Object[] source = {name};
return form.format(source);
}

View File

@ -61,9 +61,8 @@ public class NTNumericCredential {
*/
public String toString() {
java.text.MessageFormat form = new java.text.MessageFormat
(sun.security.util.ResourcesMgr.getString
("NTNumericCredential.name",
"sun.security.util.AuthResources"));
(sun.security.util.ResourcesMgr.getAuthResourceString
("NTNumericCredential.name"));
Object[] source = {Long.toString(impersonationToken)};
return form.format(source);
}

View File

@ -70,17 +70,15 @@ public class NTSid implements Principal, java.io.Serializable {
public NTSid (String stringSid) {
if (stringSid == null) {
java.text.MessageFormat form = new java.text.MessageFormat
(sun.security.util.ResourcesMgr.getString
("invalid.null.input.value",
"sun.security.util.AuthResources"));
(sun.security.util.ResourcesMgr.getAuthResourceString
("invalid.null.input.value"));
Object[] source = {"stringSid"};
throw new NullPointerException(form.format(source));
}
if (stringSid.length() == 0) {
throw new IllegalArgumentException
(sun.security.util.ResourcesMgr.getString
("Invalid.NTSid.value",
"sun.security.util.AuthResources"));
(sun.security.util.ResourcesMgr.getAuthResourceString
("Invalid.NTSid.value"));
}
sid = new String(stringSid);
}
@ -101,9 +99,8 @@ public class NTSid implements Principal, java.io.Serializable {
*/
public String toString() {
java.text.MessageFormat form = new java.text.MessageFormat
(sun.security.util.ResourcesMgr.getString
("NTSid.name",
"sun.security.util.AuthResources"));
(sun.security.util.ResourcesMgr.getAuthResourceString
("NTSid.name"));
Object[] source = {sid};
return form.format(source);
}

View File

@ -68,9 +68,8 @@ public class NTSidDomainPrincipal extends NTSid {
*/
public String toString() {
java.text.MessageFormat form = new java.text.MessageFormat
(sun.security.util.ResourcesMgr.getString
("NTSidDomainPrincipal.name",
"sun.security.util.AuthResources"));
(sun.security.util.ResourcesMgr.getAuthResourceString
("NTSidDomainPrincipal.name"));
Object[] source = {getName()};
return form.format(source);
}

View File

@ -63,9 +63,8 @@ public class NTSidGroupPrincipal extends NTSid {
*/
public String toString() {
java.text.MessageFormat form = new java.text.MessageFormat
(sun.security.util.ResourcesMgr.getString
("NTSidGroupPrincipal.name",
"sun.security.util.AuthResources"));
(sun.security.util.ResourcesMgr.getAuthResourceString
("NTSidGroupPrincipal.name"));
Object[] source = {getName()};
return form.format(source);
}

Some files were not shown because too many files have changed in this diff Show More