mirror of
https://github.com/openjdk/jdk.git
synced 2026-03-02 04:00:16 +00:00
Merge
This commit is contained in:
commit
ce1ecfe492
2
.hgtags
2
.hgtags
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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@
|
||||
|
||||
@ -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}"
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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=""
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -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);
|
||||
}
|
||||
|
||||
@ -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() {
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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
|
||||
*
|
||||
|
||||
@ -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("#");
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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.
|
||||
*/
|
||||
|
||||
@ -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(";"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1 @@
|
||||
<dummy />
|
||||
@ -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 ********** */
|
||||
|
||||
141
jaxp/test/javax/xml/jaxp/libs/jaxp/library/JarUtils.java
Normal file
141
jaxp/test/javax/xml/jaxp/libs/jaxp/library/JarUtils.java
Normal 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, '/');
|
||||
}
|
||||
}
|
||||
177
jaxp/test/javax/xml/jaxp/libs/jaxp/library/SimpleHttpServer.java
Normal file
177
jaxp/test/javax/xml/jaxp/libs/jaxp/library/SimpleHttpServer.java
Normal 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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -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}
|
||||
};
|
||||
}
|
||||
}
|
||||
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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]");
|
||||
|
||||
@ -0,0 +1,3 @@
|
||||
Manifest-Version: 1.0
|
||||
Created-By: 9-ea (Oracle Corporation)
|
||||
|
||||
@ -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>
|
||||
@ -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>
|
||||
@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -395,3 +395,4 @@ c41140100bf1e5c10c7b8f3bde91c16eff7485f5 jdk-9+147
|
||||
71e198ef3839045e829a879af1d709be16ab0f88 jdk-9+150
|
||||
d27bab22ff62823902d93d1d35ca397cfd50d059 jdk-9+151
|
||||
a20f2cf90762673e1bc4980fd6597e70a2578045 jdk-9+152
|
||||
1c4411322327aea3f91011ec3977a12a05b09629 jdk-9+153
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
@ -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";
|
||||
|
||||
@ -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 {
|
||||
}
|
||||
@ -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");
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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.*";
|
||||
};
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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());
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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";
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -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;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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
Loading…
x
Reference in New Issue
Block a user