--- a/.hgtags Fri Oct 31 09:37:17 2014 -0700
+++ b/.hgtags Fri Oct 31 18:18:58 2014 +0000
@@ -279,3 +279,4 @@
9618201c5df28a460631577fad1f61e96f775c34 jdk9-b34
a137992d750c72f6f944f341aa19b0d0d96afe0c jdk9-b35
41df50e7303daf73c0d661ef601c4fe250915de5 jdk9-b36
+b409bc51bc23cfd51f2bd04ea919ec83535af9d0 jdk9-b37
--- a/.hgtags-top-repo Fri Oct 31 09:37:17 2014 -0700
+++ b/.hgtags-top-repo Fri Oct 31 18:18:58 2014 +0000
@@ -279,3 +279,4 @@
087b23f35631e68e950496a36fce8ccca612966a jdk9-b34
c173ba994245380fb11ef077d1e59823386840eb jdk9-b35
201d4e235d597a25a2d3ee1404394789ba386119 jdk9-b36
+723a67b0c442391447b1d8aad8b249d06d1032e8 jdk9-b37
--- a/common/autoconf/flags.m4 Fri Oct 31 09:37:17 2014 -0700
+++ b/common/autoconf/flags.m4 Fri Oct 31 18:18:58 2014 +0000
@@ -136,8 +136,8 @@
SYSROOT_CFLAGS="-isysroot \"$SYSROOT\" -iframework\"$SYSROOT/System/Library/Frameworks\""
SYSROOT_LDFLAGS=$SYSROOT_CFLAGS
elif test "x$TOOLCHAIN_TYPE" = xgcc; then
- SYSROOT_CFLAGS="--sysroot=\"$SYSROOT\""
- SYSROOT_LDFLAGS="--sysroot=\"$SYSROOT\""
+ SYSROOT_CFLAGS="--sysroot=$SYSROOT"
+ SYSROOT_LDFLAGS="--sysroot=$SYSROOT"
elif test "x$TOOLCHAIN_TYPE" = xclang; then
SYSROOT_CFLAGS="-isysroot \"$SYSROOT\""
SYSROOT_LDFLAGS="-isysroot \"$SYSROOT\""
--- a/common/autoconf/generated-configure.sh Fri Oct 31 09:37:17 2014 -0700
+++ b/common/autoconf/generated-configure.sh Fri Oct 31 18:18:58 2014 +0000
@@ -4328,7 +4328,7 @@
#CUSTOM_AUTOCONF_INCLUDE
# Do not change or remove the following line, it is needed for consistency checks:
-DATE_WHEN_GENERATED=1413533532
+DATE_WHEN_GENERATED=1414663067
###############################################################################
#
@@ -41681,8 +41681,8 @@
SYSROOT_CFLAGS="-isysroot \"$SYSROOT\" -iframework\"$SYSROOT/System/Library/Frameworks\""
SYSROOT_LDFLAGS=$SYSROOT_CFLAGS
elif test "x$TOOLCHAIN_TYPE" = xgcc; then
- SYSROOT_CFLAGS="--sysroot=\"$SYSROOT\""
- SYSROOT_LDFLAGS="--sysroot=\"$SYSROOT\""
+ SYSROOT_CFLAGS="--sysroot=$SYSROOT"
+ SYSROOT_LDFLAGS="--sysroot=$SYSROOT"
elif test "x$TOOLCHAIN_TYPE" = xclang; then
SYSROOT_CFLAGS="-isysroot \"$SYSROOT\""
SYSROOT_LDFLAGS="-isysroot \"$SYSROOT\""
@@ -44037,17 +44037,6 @@
-R$OPENWIN_HOME/lib$OPENJDK_TARGET_CPU_ISADIR"
fi
- #
- # Weird Sol10 something check...TODO change to try compile
- #
- if test "x${OPENJDK_TARGET_OS}" = xsolaris; then
- if test "`uname -r`" = "5.10"; then
- if test "`${EGREP} -c XLinearGradient ${OPENWIN_HOME}/share/include/X11/extensions/Xrender.h`" = "0"; then
- X_CFLAGS="${X_CFLAGS} -DSOLARIS10_NO_XRENDER_STRUCTS"
- fi
- fi
- fi
-
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -44055,7 +44044,7 @@
ac_compiler_gnu=$ac_cv_c_compiler_gnu
OLD_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS $X_CFLAGS"
+ CFLAGS="$CFLAGS $SYSROOT_CFLAGS $X_CFLAGS"
# Need to include Xlib.h and Xutil.h to avoid "present but cannot be compiled" warnings on Solaris 10
for ac_header in X11/extensions/shape.h X11/extensions/Xrender.h X11/extensions/XTest.h X11/Intrinsic.h
@@ -44079,6 +44068,31 @@
done
+ # If XLinearGradient isn't available in Xrender.h, signal that it needs to be
+ # defined in libawt_xawt.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if XlinearGradient is defined in Xrender.h" >&5
+$as_echo_n "checking if XlinearGradient is defined in Xrender.h... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <X11/extensions/Xrender.h>
+int
+main ()
+{
+XLinearGradient x;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ X_CFLAGS="$X_CFLAGS -DSOLARIS10_NO_XRENDER_STRUCTS"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
CFLAGS="$OLD_CFLAGS"
ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
--- a/common/autoconf/libraries.m4 Fri Oct 31 09:37:17 2014 -0700
+++ b/common/autoconf/libraries.m4 Fri Oct 31 18:18:58 2014 +0000
@@ -139,20 +139,9 @@
-R$OPENWIN_HOME/lib$OPENJDK_TARGET_CPU_ISADIR"
fi
- #
- # Weird Sol10 something check...TODO change to try compile
- #
- if test "x${OPENJDK_TARGET_OS}" = xsolaris; then
- if test "`uname -r`" = "5.10"; then
- if test "`${EGREP} -c XLinearGradient ${OPENWIN_HOME}/share/include/X11/extensions/Xrender.h`" = "0"; then
- X_CFLAGS="${X_CFLAGS} -DSOLARIS10_NO_XRENDER_STRUCTS"
- fi
- fi
- fi
-
AC_LANG_PUSH(C)
OLD_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS $X_CFLAGS"
+ CFLAGS="$CFLAGS $SYSROOT_CFLAGS $X_CFLAGS"
# Need to include Xlib.h and Xutil.h to avoid "present but cannot be compiled" warnings on Solaris 10
AC_CHECK_HEADERS([X11/extensions/shape.h X11/extensions/Xrender.h X11/extensions/XTest.h X11/Intrinsic.h],
@@ -164,6 +153,16 @@
]
)
+ # If XLinearGradient isn't available in Xrender.h, signal that it needs to be
+ # defined in libawt_xawt.
+ AC_MSG_CHECKING([if XlinearGradient is defined in Xrender.h])
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],
+ [[XLinearGradient x;]])],
+ [AC_MSG_RESULT([yes])],
+ [AC_MSG_RESULT([no])
+ X_CFLAGS="$X_CFLAGS -DSOLARIS10_NO_XRENDER_STRUCTS"])
+
CFLAGS="$OLD_CFLAGS"
AC_LANG_POP(C)
--- a/corba/.hgtags Fri Oct 31 09:37:17 2014 -0700
+++ b/corba/.hgtags Fri Oct 31 18:18:58 2014 +0000
@@ -279,3 +279,4 @@
24a0bad5910f775bb4002d1dacf8b3af87c63cd8 jdk9-b34
9bc2dbd3dfb8c9fa88e00056b8b93a81ee6d306e jdk9-b35
ffd90c81d4ef9d94d880fc852e2fc482ecd9b374 jdk9-b36
+7e9add74ad50841fb39dae75db56374aefa1de4c jdk9-b37
--- a/hotspot/.hgtags Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/.hgtags Fri Oct 31 18:18:58 2014 +0000
@@ -439,3 +439,4 @@
821164b0131a47ca065697c7d27d8f215e608c8d jdk9-b34
438cb613151c4bd290bb732697517cba1cafcb04 jdk9-b35
464ab653fbb17eb518d8ef60f8df301de7ef00d0 jdk9-b36
+b1c2dd843f247a1db19e1e85eb62ca405f72dc26 jdk9-b37
--- a/hotspot/make/solaris/makefiles/vm.make Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/make/solaris/makefiles/vm.make Fri Oct 31 18:18:58 2014 +0000
@@ -143,7 +143,7 @@
LIBS += -lsocket -lsched -ldl $(LIBM) -lthread -lc -ldemangle
endif # sparcWorks
-LIBS += -lkstat -lpicl
+LIBS += -lkstat
# By default, link the *.o into the library, not the executable.
LINK_INTO$(LINK_INTO) = LIBJVM
--- a/hotspot/src/cpu/x86/vm/vm_version_x86.cpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/cpu/x86/vm/vm_version_x86.cpp Fri Oct 31 18:18:58 2014 +0000
@@ -865,14 +865,19 @@
if (supports_bmi1()) {
// tzcnt does not require VEX prefix
if (FLAG_IS_DEFAULT(UseCountTrailingZerosInstruction)) {
- UseCountTrailingZerosInstruction = true;
+ if (!UseBMI1Instructions && !FLAG_IS_DEFAULT(UseBMI1Instructions)) {
+ // Don't use tzcnt if BMI1 is switched off on command line.
+ UseCountTrailingZerosInstruction = false;
+ } else {
+ UseCountTrailingZerosInstruction = true;
+ }
}
} else if (UseCountTrailingZerosInstruction) {
warning("tzcnt instruction is not available on this CPU");
FLAG_SET_DEFAULT(UseCountTrailingZerosInstruction, false);
}
- // BMI instructions use an encoding with VEX prefix.
+ // BMI instructions (except tzcnt) use an encoding with VEX prefix.
// VEX prefix is generated only when AVX > 0.
if (supports_bmi1() && supports_avx()) {
if (FLAG_IS_DEFAULT(UseBMI1Instructions)) {
--- a/hotspot/src/os_cpu/solaris_sparc/vm/vm_version_solaris_sparc.cpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/os_cpu/solaris_sparc/vm/vm_version_solaris_sparc.cpp Fri Oct 31 18:18:58 2014 +0000
@@ -33,18 +33,51 @@
#include <sys/systeminfo.h>
#include <kstat.h>
#include <picl.h>
+#include <dlfcn.h>
+#include <link.h>
extern "C" static int PICL_get_l1_data_cache_line_size_helper(picl_nodehdl_t nodeh, void *result);
extern "C" static int PICL_get_l2_cache_line_size_helper(picl_nodehdl_t nodeh, void *result);
+// Functions from the library we need (signatures should match those in picl.h)
+extern "C" {
+ typedef int (*picl_initialize_func_t)(void);
+ typedef int (*picl_shutdown_func_t)(void);
+ typedef int (*picl_get_root_func_t)(picl_nodehdl_t *nodehandle);
+ typedef int (*picl_walk_tree_by_class_func_t)(picl_nodehdl_t rooth,
+ const char *classname, void *c_args,
+ int (*callback_fn)(picl_nodehdl_t hdl, void *args));
+ typedef int (*picl_get_prop_by_name_func_t)(picl_nodehdl_t nodeh, const char *nm,
+ picl_prophdl_t *ph);
+ typedef int (*picl_get_propval_func_t)(picl_prophdl_t proph, void *valbuf, size_t sz);
+ typedef int (*picl_get_propinfo_func_t)(picl_prophdl_t proph, picl_propinfo_t *pi);
+}
+
class PICL {
+ // Pointers to functions in the library
+ picl_initialize_func_t _picl_initialize;
+ picl_shutdown_func_t _picl_shutdown;
+ picl_get_root_func_t _picl_get_root;
+ picl_walk_tree_by_class_func_t _picl_walk_tree_by_class;
+ picl_get_prop_by_name_func_t _picl_get_prop_by_name;
+ picl_get_propval_func_t _picl_get_propval;
+ picl_get_propinfo_func_t _picl_get_propinfo;
+ // Handle to the library that is returned by dlopen
+ void *_dl_handle;
+
+ bool open_library();
+ void close_library();
+
+ template<typename FuncType> bool bind(FuncType& func, const char* name);
+ bool bind_library_functions();
+
// Get a value of the integer property. The value in the tree can be either 32 or 64 bit
// depending on the platform. The result is converted to int.
- static int get_int_property(picl_nodehdl_t nodeh, const char* name, int* result) {
+ int get_int_property(picl_nodehdl_t nodeh, const char* name, int* result) {
picl_propinfo_t pinfo;
picl_prophdl_t proph;
- if (picl_get_prop_by_name(nodeh, name, &proph) != PICL_SUCCESS ||
- picl_get_propinfo(proph, &pinfo) != PICL_SUCCESS) {
+ if (_picl_get_prop_by_name(nodeh, name, &proph) != PICL_SUCCESS ||
+ _picl_get_propinfo(proph, &pinfo) != PICL_SUCCESS) {
return PICL_FAILURE;
}
@@ -54,13 +87,13 @@
}
if (pinfo.size == sizeof(int64_t)) {
int64_t val;
- if (picl_get_propval(proph, &val, sizeof(int64_t)) != PICL_SUCCESS) {
+ if (_picl_get_propval(proph, &val, sizeof(int64_t)) != PICL_SUCCESS) {
return PICL_FAILURE;
}
*result = static_cast<int>(val);
} else if (pinfo.size == sizeof(int32_t)) {
int32_t val;
- if (picl_get_propval(proph, &val, sizeof(int32_t)) != PICL_SUCCESS) {
+ if (_picl_get_propval(proph, &val, sizeof(int32_t)) != PICL_SUCCESS) {
return PICL_FAILURE;
}
*result = static_cast<int>(val);
@@ -74,6 +107,7 @@
// Visitor and a state machine that visits integer properties and verifies that the
// values are the same. Stores the unique value observed.
class UniqueValueVisitor {
+ PICL *_picl;
enum {
INITIAL, // Start state, no assignments happened
ASSIGNED, // Assigned a value
@@ -81,7 +115,7 @@
} _state;
int _value;
public:
- UniqueValueVisitor() : _state(INITIAL) { }
+ UniqueValueVisitor(PICL* picl) : _picl(picl), _state(INITIAL) { }
int value() {
assert(_state == ASSIGNED, "Precondition");
return _value;
@@ -98,9 +132,10 @@
static int visit(picl_nodehdl_t nodeh, const char* name, void *arg) {
UniqueValueVisitor *state = static_cast<UniqueValueVisitor*>(arg);
+ PICL* picl = state->_picl;
assert(!state->is_inconsistent(), "Precondition");
int curr;
- if (PICL::get_int_property(nodeh, name, &curr) == PICL_SUCCESS) {
+ if (picl->get_int_property(nodeh, name, &curr) == PICL_SUCCESS) {
if (!state->is_assigned()) { // first iteration
state->set_value(curr);
} else if (curr != state->value()) { // following iterations
@@ -124,32 +159,36 @@
return UniqueValueVisitor::visit(nodeh, "l2-cache-line-size", state);
}
- PICL() : _L1_data_cache_line_size(0), _L2_cache_line_size(0) {
- if (picl_initialize() == PICL_SUCCESS) {
+ PICL() : _L1_data_cache_line_size(0), _L2_cache_line_size(0), _dl_handle(NULL) {
+ if (!open_library()) {
+ return;
+ }
+ if (_picl_initialize() == PICL_SUCCESS) {
picl_nodehdl_t rooth;
- if (picl_get_root(&rooth) == PICL_SUCCESS) {
- UniqueValueVisitor L1_state;
+ if (_picl_get_root(&rooth) == PICL_SUCCESS) {
+ UniqueValueVisitor L1_state(this);
// Visit all "cpu" class instances
- picl_walk_tree_by_class(rooth, "cpu", &L1_state, PICL_get_l1_data_cache_line_size_helper);
+ _picl_walk_tree_by_class(rooth, "cpu", &L1_state, PICL_get_l1_data_cache_line_size_helper);
if (L1_state.is_initial()) { // Still initial, iteration found no values
// Try walk all "core" class instances, it might be a Fujitsu machine
- picl_walk_tree_by_class(rooth, "core", &L1_state, PICL_get_l1_data_cache_line_size_helper);
+ _picl_walk_tree_by_class(rooth, "core", &L1_state, PICL_get_l1_data_cache_line_size_helper);
}
if (L1_state.is_assigned()) { // Is there a value?
_L1_data_cache_line_size = L1_state.value();
}
- UniqueValueVisitor L2_state;
- picl_walk_tree_by_class(rooth, "cpu", &L2_state, PICL_get_l2_cache_line_size_helper);
+ UniqueValueVisitor L2_state(this);
+ _picl_walk_tree_by_class(rooth, "cpu", &L2_state, PICL_get_l2_cache_line_size_helper);
if (L2_state.is_initial()) {
- picl_walk_tree_by_class(rooth, "core", &L2_state, PICL_get_l2_cache_line_size_helper);
+ _picl_walk_tree_by_class(rooth, "core", &L2_state, PICL_get_l2_cache_line_size_helper);
}
if (L2_state.is_assigned()) {
_L2_cache_line_size = L2_state.value();
}
}
- picl_shutdown();
+ _picl_shutdown();
}
+ close_library();
}
unsigned int L1_data_cache_line_size() const { return _L1_data_cache_line_size; }
@@ -163,6 +202,43 @@
return PICL::get_l2_cache_line_size(nodeh, result);
}
+template<typename FuncType>
+bool PICL::bind(FuncType& func, const char* name) {
+ func = reinterpret_cast<FuncType>(dlsym(_dl_handle, name));
+ return func != NULL;
+}
+
+bool PICL::bind_library_functions() {
+ assert(_dl_handle != NULL, "library should be open");
+ return bind(_picl_initialize, "picl_initialize" ) &&
+ bind(_picl_shutdown, "picl_shutdown" ) &&
+ bind(_picl_get_root, "picl_get_root" ) &&
+ bind(_picl_walk_tree_by_class, "picl_walk_tree_by_class") &&
+ bind(_picl_get_prop_by_name, "picl_get_prop_by_name" ) &&
+ bind(_picl_get_propval, "picl_get_propval" ) &&
+ bind(_picl_get_propinfo, "picl_get_propinfo" );
+}
+
+bool PICL::open_library() {
+ _dl_handle = dlopen("libpicl.so.1", RTLD_LAZY);
+ if (_dl_handle == NULL) {
+ warning("PICL (libpicl.so.1) is missing. Performance will not be optimal.");
+ return false;
+ }
+ if (!bind_library_functions()) {
+ assert(false, "unexpected PICL API change");
+ close_library();
+ return false;
+ }
+ return true;
+}
+
+void PICL::close_library() {
+ assert(_dl_handle != NULL, "library should be open");
+ dlclose(_dl_handle);
+ _dl_handle = NULL;
+}
+
// We need to keep these here as long as we have to build on Solaris
// versions before 10.
#ifndef SI_ARCHITECTURE_32
--- a/hotspot/src/share/vm/ci/ciEnv.cpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/ci/ciEnv.cpp Fri Oct 31 18:18:58 2014 +0000
@@ -1093,9 +1093,8 @@
// JVMTI -- compiled method notification (must be done outside lock)
nm->post_compiled_method_load_event();
} else {
- // The CodeCache is full. Print out warning and disable compilation.
+ // The CodeCache is full.
record_failure("code cache is full");
- CompileBroker::handle_full_code_cache(CodeCache::get_code_blob_type(comp_level));
}
}
--- a/hotspot/src/share/vm/code/codeBlob.cpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/code/codeBlob.cpp Fri Oct 31 18:18:58 2014 +0000
@@ -229,8 +229,8 @@
return blob;
}
-void* BufferBlob::operator new(size_t s, unsigned size, bool is_critical) throw() {
- return CodeCache::allocate(size, CodeBlobType::NonNMethod, is_critical);
+void* BufferBlob::operator new(size_t s, unsigned size) throw() {
+ return CodeCache::allocate(size, CodeBlobType::NonNMethod);
}
void BufferBlob::free(BufferBlob *blob) {
@@ -260,10 +260,7 @@
unsigned int size = allocation_size(cb, sizeof(AdapterBlob));
{
MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
- // The parameter 'true' indicates a critical memory allocation.
- // This means that CodeCacheMinimumFreeSpace is used, if necessary
- const bool is_critical = true;
- blob = new (size, is_critical) AdapterBlob(size, cb);
+ blob = new (size) AdapterBlob(size, cb);
}
// Track memory usage statistic after releasing CodeCache_lock
MemoryService::track_code_cache_memory_usage();
@@ -285,10 +282,7 @@
size += round_to(buffer_size, oopSize);
{
MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
- // The parameter 'true' indicates a critical memory allocation.
- // This means that CodeCacheMinimumFreeSpace is used, if necessary
- const bool is_critical = true;
- blob = new (size, is_critical) MethodHandlesAdapterBlob(size);
+ blob = new (size) MethodHandlesAdapterBlob(size);
}
// Track memory usage statistic after releasing CodeCache_lock
MemoryService::track_code_cache_memory_usage();
@@ -336,14 +330,14 @@
void* RuntimeStub::operator new(size_t s, unsigned size) throw() {
- void* p = CodeCache::allocate(size, CodeBlobType::NonNMethod, true);
+ void* p = CodeCache::allocate(size, CodeBlobType::NonNMethod);
if (!p) fatal("Initial size of CodeCache is too small");
return p;
}
// operator new shared by all singletons:
void* SingletonBlob::operator new(size_t s, unsigned size) throw() {
- void* p = CodeCache::allocate(size, CodeBlobType::NonNMethod, true);
+ void* p = CodeCache::allocate(size, CodeBlobType::NonNMethod);
if (!p) fatal("Initial size of CodeCache is too small");
return p;
}
--- a/hotspot/src/share/vm/code/codeBlob.hpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/code/codeBlob.hpp Fri Oct 31 18:18:58 2014 +0000
@@ -221,7 +221,7 @@
BufferBlob(const char* name, int size);
BufferBlob(const char* name, int size, CodeBuffer* cb);
- void* operator new(size_t s, unsigned size, bool is_critical = false) throw();
+ void* operator new(size_t s, unsigned size) throw();
public:
// Creation
--- a/hotspot/src/share/vm/code/codeCache.cpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/code/codeCache.cpp Fri Oct 31 18:18:58 2014 +0000
@@ -44,6 +44,7 @@
#include "runtime/icache.hpp"
#include "runtime/java.hpp"
#include "runtime/mutexLocker.hpp"
+#include "runtime/sweeper.hpp"
#include "runtime/compilationPolicy.hpp"
#include "services/memoryService.hpp"
#include "trace/tracing.hpp"
@@ -192,16 +193,16 @@
}
// Make sure we have enough space for VM internal code
- uint min_code_cache_size = (CodeCacheMinimumUseSpace DEBUG_ONLY(* 3)) + CodeCacheMinimumFreeSpace;
+ uint min_code_cache_size = CodeCacheMinimumUseSpace DEBUG_ONLY(* 3);
if (NonNMethodCodeHeapSize < (min_code_cache_size + code_buffers_size)) {
vm_exit_during_initialization("Not enough space in non-nmethod code heap to run VM.");
}
guarantee(NonProfiledCodeHeapSize + ProfiledCodeHeapSize + NonNMethodCodeHeapSize <= ReservedCodeCacheSize, "Size check");
// Align reserved sizes of CodeHeaps
- size_t non_method_size = ReservedCodeSpace::allocation_align_size_up(NonNMethodCodeHeapSize);
- size_t profiled_size = ReservedCodeSpace::allocation_align_size_up(ProfiledCodeHeapSize);
- size_t non_profiled_size = ReservedCodeSpace::allocation_align_size_up(NonProfiledCodeHeapSize);
+ size_t non_method_size = ReservedCodeSpace::allocation_align_size_up(NonNMethodCodeHeapSize);
+ size_t profiled_size = ReservedCodeSpace::allocation_align_size_up(ProfiledCodeHeapSize);
+ size_t non_profiled_size = ReservedCodeSpace::allocation_align_size_up(NonProfiledCodeHeapSize);
// Compute initial sizes of CodeHeaps
size_t init_non_method_size = MIN2(InitialCodeCacheSize, non_method_size);
@@ -267,6 +268,22 @@
}
}
+const char* CodeCache::get_code_heap_flag_name(int code_blob_type) {
+ switch(code_blob_type) {
+ case CodeBlobType::NonNMethod:
+ return "NonNMethodCodeHeapSize";
+ break;
+ case CodeBlobType::MethodNonProfiled:
+ return "NonProfiledCodeHeapSize";
+ break;
+ case CodeBlobType::MethodProfiled:
+ return "ProfiledCodeHeapSize";
+ break;
+ }
+ ShouldNotReachHere();
+ return NULL;
+}
+
void CodeCache::add_heap(ReservedSpace rs, const char* name, size_t size_initial, int code_blob_type) {
// Check if heap is needed
if (!heap_available(code_blob_type)) {
@@ -332,14 +349,18 @@
return next_blob(get_code_heap(cb), cb);
}
-CodeBlob* CodeCache::allocate(int size, int code_blob_type, bool is_critical) {
- // Do not seize the CodeCache lock here--if the caller has not
- // already done so, we are going to lose bigtime, since the code
- // cache will contain a garbage CodeBlob until the caller can
- // run the constructor for the CodeBlob subclass he is busy
- // instantiating.
+/**
+ * Do not seize the CodeCache lock here--if the caller has not
+ * already done so, we are going to lose bigtime, since the code
+ * cache will contain a garbage CodeBlob until the caller can
+ * run the constructor for the CodeBlob subclass he is busy
+ * instantiating.
+ */
+CodeBlob* CodeCache::allocate(int size, int code_blob_type) {
+ // Possibly wakes up the sweeper thread.
+ NMethodSweeper::notify(code_blob_type);
assert_locked_or_safepoint(CodeCache_lock);
- assert(size > 0, "allocation request must be reasonable");
+ assert(size > 0, err_msg_res("Code cache allocation request must be > 0 but is %d", size));
if (size <= 0) {
return NULL;
}
@@ -350,14 +371,18 @@
assert(heap != NULL, "heap is null");
while (true) {
- cb = (CodeBlob*)heap->allocate(size, is_critical);
+ cb = (CodeBlob*)heap->allocate(size);
if (cb != NULL) break;
if (!heap->expand_by(CodeCacheExpansionSize)) {
// Expansion failed
if (SegmentedCodeCache && (code_blob_type == CodeBlobType::NonNMethod)) {
- // Fallback solution: Store non-nmethod code in the non-profiled code heap
- return allocate(size, CodeBlobType::MethodNonProfiled, is_critical);
+ // Fallback solution: Store non-nmethod code in the non-profiled code heap.
+ // Note that at in the sweeper, we check the reverse_free_ratio of the non-profiled
+ // code heap and force stack scanning if less than 10% if the code heap are free.
+ return allocate(size, CodeBlobType::MethodNonProfiled);
}
+ MutexUnlockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
+ CompileBroker::handle_full_code_cache(code_blob_type);
return NULL;
}
if (PrintCodeCacheExtension) {
@@ -755,19 +780,6 @@
}
/**
- * Returns true if a CodeHeap is full and sets code_blob_type accordingly.
- */
-bool CodeCache::is_full(int* code_blob_type) {
- FOR_ALL_HEAPS(heap) {
- if ((*heap)->unallocated_capacity() < CodeCacheMinimumFreeSpace) {
- *code_blob_type = (*heap)->code_blob_type();
- return true;
- }
- }
- return false;
-}
-
-/**
* Returns the reverse free ratio. E.g., if 25% (1/4) of the code heap
* is free, reverse_free_ratio() returns 4.
*/
@@ -776,9 +788,13 @@
if (heap == NULL) {
return 0;
}
- double unallocated_capacity = (double)(heap->unallocated_capacity() - CodeCacheMinimumFreeSpace);
+
+ double unallocated_capacity = MAX2((double)heap->unallocated_capacity(), 1.0); // Avoid division by 0;
double max_capacity = (double)heap->max_capacity();
- return max_capacity / unallocated_capacity;
+ double result = max_capacity / unallocated_capacity;
+ assert (max_capacity >= unallocated_capacity, "Must be");
+ assert (result >= 1.0, err_msg_res("reverse_free_ratio must be at least 1. It is %f", result));
+ return result;
}
size_t CodeCache::bytes_allocated_in_freelists() {
@@ -1011,9 +1027,8 @@
// Not yet reported for this heap, report
heap->report_full();
if (SegmentedCodeCache) {
- warning("%s is full. Compiler has been disabled.", CodeCache::get_code_heap_name(code_blob_type));
- warning("Try increasing the code heap size using -XX:%s=",
- (code_blob_type == CodeBlobType::MethodNonProfiled) ? "NonProfiledCodeHeapSize" : "ProfiledCodeHeapSize");
+ warning("%s is full. Compiler has been disabled.", get_code_heap_name(code_blob_type));
+ warning("Try increasing the code heap size using -XX:%s=", get_code_heap_flag_name(code_blob_type));
} else {
warning("CodeCache is full. Compiler has been disabled.");
warning("Try increasing the code cache size using -XX:ReservedCodeCacheSize=");
--- a/hotspot/src/share/vm/code/codeCache.hpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/code/codeCache.hpp Fri Oct 31 18:18:58 2014 +0000
@@ -100,6 +100,8 @@
static void add_heap(ReservedSpace rs, const char* name, size_t size_initial, int code_blob_type);
static CodeHeap* get_code_heap(CodeBlob* cb); // Returns the CodeHeap for the given CodeBlob
static CodeHeap* get_code_heap(int code_blob_type); // Returns the CodeHeap for the given CodeBlobType
+ // Returns the name of the VM option to set the size of the corresponding CodeHeap
+ static const char* get_code_heap_flag_name(int code_blob_type);
static bool heap_available(int code_blob_type); // Returns true if an own CodeHeap for the given CodeBlobType is available
static ReservedCodeSpace reserve_heap_memory(size_t size); // Reserves one continuous chunk of memory for the CodeHeaps
@@ -118,16 +120,16 @@
static void initialize();
// Allocation/administration
- static CodeBlob* allocate(int size, int code_blob_type, bool is_critical = false); // allocates a new CodeBlob
- static void commit(CodeBlob* cb); // called when the allocated CodeBlob has been filled
- static int alignment_unit(); // guaranteed alignment of all CodeBlobs
- static int alignment_offset(); // guaranteed offset of first CodeBlob byte within alignment unit (i.e., allocation header)
- static void free(CodeBlob* cb); // frees a CodeBlob
- static bool contains(void *p); // returns whether p is included
- static void blobs_do(void f(CodeBlob* cb)); // iterates over all CodeBlobs
- static void blobs_do(CodeBlobClosure* f); // iterates over all CodeBlobs
- static void nmethods_do(void f(nmethod* nm)); // iterates over all nmethods
- static void alive_nmethods_do(void f(nmethod* nm)); // iterates over all alive nmethods
+ static CodeBlob* allocate(int size, int code_blob_type); // allocates a new CodeBlob
+ static void commit(CodeBlob* cb); // called when the allocated CodeBlob has been filled
+ static int alignment_unit(); // guaranteed alignment of all CodeBlobs
+ static int alignment_offset(); // guaranteed offset of first CodeBlob byte within alignment unit (i.e., allocation header)
+ static void free(CodeBlob* cb); // frees a CodeBlob
+ static bool contains(void *p); // returns whether p is included
+ static void blobs_do(void f(CodeBlob* cb)); // iterates over all CodeBlobs
+ static void blobs_do(CodeBlobClosure* f); // iterates over all CodeBlobs
+ static void nmethods_do(void f(nmethod* nm)); // iterates over all nmethods
+ static void alive_nmethods_do(void f(nmethod* nm)); // iterates over all alive nmethods
// Lookup
static CodeBlob* find_blob(void* start); // Returns the CodeBlob containing the given address
@@ -180,7 +182,6 @@
static size_t unallocated_capacity();
static size_t max_capacity();
- static bool is_full(int* code_blob_type);
static double reverse_free_ratio(int code_blob_type);
static bool needs_cache_clean() { return _needs_cache_clean; }
--- a/hotspot/src/share/vm/code/nmethod.cpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/code/nmethod.cpp Fri Oct 31 18:18:58 2014 +0000
@@ -804,10 +804,7 @@
#endif // def HAVE_DTRACE_H
void* nmethod::operator new(size_t size, int nmethod_size, int comp_level) throw () {
- // With a SegmentedCodeCache, nmethods are allocated on separate heaps and therefore do not share memory
- // with critical CodeBlobs. We define the allocation as critical to make sure all code heap memory is used.
- bool is_critical = SegmentedCodeCache;
- return CodeCache::allocate(nmethod_size, CodeCache::get_code_blob_type(comp_level), is_critical);
+ return CodeCache::allocate(nmethod_size, CodeCache::get_code_blob_type(comp_level));
}
nmethod::nmethod(
--- a/hotspot/src/share/vm/code/vtableStubs.cpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/code/vtableStubs.cpp Fri Oct 31 18:18:58 2014 +0000
@@ -63,7 +63,6 @@
// If changing the name, update the other file accordingly.
BufferBlob* blob = BufferBlob::create("vtable chunks", bytes);
if (blob == NULL) {
- CompileBroker::handle_full_code_cache(CodeBlobType::NonNMethod);
return NULL;
}
_chunk = blob->content_begin();
--- a/hotspot/src/share/vm/compiler/compileBroker.cpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/compiler/compileBroker.cpp Fri Oct 31 18:18:58 2014 +0000
@@ -156,8 +156,6 @@
CompileQueue* CompileBroker::_c2_compile_queue = NULL;
CompileQueue* CompileBroker::_c1_compile_queue = NULL;
-GrowableArray<CompilerThread*>* CompileBroker::_compiler_threads = NULL;
-
class CompilationLog : public StringEventLog {
public:
@@ -657,13 +655,10 @@
lock()->notify_all();
}
-// ------------------------------------------------------------------
-// CompileQueue::get
-//
-// Get the next CompileTask from a CompileQueue
+/**
+ * Get the next CompileTask from a CompileQueue
+ */
CompileTask* CompileQueue::get() {
- NMethodSweeper::possibly_sweep();
-
MutexLocker locker(lock());
// If _first is NULL we have no more compile jobs. There are two reasons for
// having no compile jobs: First, we compiled everything we wanted. Second,
@@ -676,35 +671,16 @@
return NULL;
}
- if (UseCodeCacheFlushing && !CompileBroker::should_compile_new_jobs()) {
- // Wait a certain amount of time to possibly do another sweep.
- // We must wait until stack scanning has happened so that we can
- // transition a method's state from 'not_entrant' to 'zombie'.
- long wait_time = NmethodSweepCheckInterval * 1000;
- if (FLAG_IS_DEFAULT(NmethodSweepCheckInterval)) {
- // Only one thread at a time can do sweeping. Scale the
- // wait time according to the number of compiler threads.
- // As a result, the next sweep is likely to happen every 100ms
- // with an arbitrary number of threads that do sweeping.
- wait_time = 100 * CICompilerCount;
- }
- bool timeout = lock()->wait(!Mutex::_no_safepoint_check_flag, wait_time);
- if (timeout) {
- MutexUnlocker ul(lock());
- NMethodSweeper::possibly_sweep();
- }
- } else {
- // If there are no compilation tasks and we can compile new jobs
- // (i.e., there is enough free space in the code cache) there is
- // no need to invoke the sweeper. As a result, the hotness of methods
- // remains unchanged. This behavior is desired, since we want to keep
- // the stable state, i.e., we do not want to evict methods from the
- // code cache if it is unnecessary.
- // We need a timed wait here, since compiler threads can exit if compilation
- // is disabled forever. We use 5 seconds wait time; the exiting of compiler threads
- // is not critical and we do not want idle compiler threads to wake up too often.
- lock()->wait(!Mutex::_no_safepoint_check_flag, 5*1000);
- }
+ // If there are no compilation tasks and we can compile new jobs
+ // (i.e., there is enough free space in the code cache) there is
+ // no need to invoke the sweeper. As a result, the hotness of methods
+ // remains unchanged. This behavior is desired, since we want to keep
+ // the stable state, i.e., we do not want to evict methods from the
+ // code cache if it is unnecessary.
+ // We need a timed wait here, since compiler threads can exit if compilation
+ // is disabled forever. We use 5 seconds wait time; the exiting of compiler threads
+ // is not critical and we do not want idle compiler threads to wake up too often.
+ lock()->wait(!Mutex::_no_safepoint_check_flag, 5*1000);
}
if (CompileBroker::is_compilation_disabled_forever()) {
@@ -894,8 +870,8 @@
_compilers[1] = new SharkCompiler();
#endif // SHARK
- // Start the CompilerThreads
- init_compiler_threads(c1_count, c2_count);
+ // Start the compiler thread(s) and the sweeper thread
+ init_compiler_sweeper_threads(c1_count, c2_count);
// totalTime performance counter is always created as it is required
// by the implementation of java.lang.management.CompilationMBean.
{
@@ -999,13 +975,10 @@
}
-CompilerThread* CompileBroker::make_compiler_thread(const char* name, CompileQueue* queue, CompilerCounters* counters,
- AbstractCompiler* comp, TRAPS) {
- CompilerThread* compiler_thread = NULL;
-
- Klass* k =
- SystemDictionary::resolve_or_fail(vmSymbols::java_lang_Thread(),
- true, CHECK_0);
+JavaThread* CompileBroker::make_thread(const char* name, CompileQueue* queue, CompilerCounters* counters,
+ AbstractCompiler* comp, bool compiler_thread, TRAPS) {
+ JavaThread* thread = NULL;
+ Klass* k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_Thread(), true, CHECK_0);
instanceKlassHandle klass (THREAD, k);
instanceHandle thread_oop = klass->allocate_instance_handle(CHECK_0);
Handle string = java_lang_String::create_from_str(name, CHECK_0);
@@ -1023,7 +996,11 @@
{
MutexLocker mu(Threads_lock, THREAD);
- compiler_thread = new CompilerThread(queue, counters);
+ if (compiler_thread) {
+ thread = new CompilerThread(queue, counters);
+ } else {
+ thread = new CodeCacheSweeperThread();
+ }
// At this point the new CompilerThread data-races with this startup
// thread (which I believe is the primoridal thread and NOT the VM
// thread). This means Java bytecodes being executed at startup can
@@ -1036,12 +1013,12 @@
// in that case. However, since this must work and we do not allow
// exceptions anyway, check and abort if this fails.
- if (compiler_thread == NULL || compiler_thread->osthread() == NULL){
+ if (thread == NULL || thread->osthread() == NULL) {
vm_exit_during_initialization("java.lang.OutOfMemoryError",
os::native_thread_creation_failed_msg());
}
- java_lang_Thread::set_thread(thread_oop(), compiler_thread);
+ java_lang_Thread::set_thread(thread_oop(), thread);
// Note that this only sets the JavaThread _priority field, which by
// definition is limited to Java priorities and not OS priorities.
@@ -1062,24 +1039,26 @@
native_prio = os::java_to_os_priority[NearMaxPriority];
}
}
- os::set_native_priority(compiler_thread, native_prio);
+ os::set_native_priority(thread, native_prio);
java_lang_Thread::set_daemon(thread_oop());
- compiler_thread->set_threadObj(thread_oop());
- compiler_thread->set_compiler(comp);
- Threads::add(compiler_thread);
- Thread::start(compiler_thread);
+ thread->set_threadObj(thread_oop());
+ if (compiler_thread) {
+ thread->as_CompilerThread()->set_compiler(comp);
+ }
+ Threads::add(thread);
+ Thread::start(thread);
}
// Let go of Threads_lock before yielding
os::naked_yield(); // make sure that the compiler thread is started early (especially helpful on SOLARIS)
- return compiler_thread;
+ return thread;
}
-void CompileBroker::init_compiler_threads(int c1_compiler_count, int c2_compiler_count) {
+void CompileBroker::init_compiler_sweeper_threads(int c1_compiler_count, int c2_compiler_count) {
EXCEPTION_MARK;
#if !defined(ZERO) && !defined(SHARK)
assert(c2_compiler_count > 0 || c1_compiler_count > 0, "No compilers?");
@@ -1096,17 +1075,14 @@
int compiler_count = c1_compiler_count + c2_compiler_count;
- _compiler_threads =
- new (ResourceObj::C_HEAP, mtCompiler) GrowableArray<CompilerThread*>(compiler_count, true);
-
char name_buffer[256];
+ const bool compiler_thread = true;
for (int i = 0; i < c2_compiler_count; i++) {
// Create a name for our thread.
sprintf(name_buffer, "C2 CompilerThread%d", i);
CompilerCounters* counters = new CompilerCounters("compilerThread", i, CHECK);
// Shark and C2
- CompilerThread* new_thread = make_compiler_thread(name_buffer, _c2_compile_queue, counters, _compilers[1], CHECK);
- _compiler_threads->append(new_thread);
+ make_thread(name_buffer, _c2_compile_queue, counters, _compilers[1], compiler_thread, CHECK);
}
for (int i = c2_compiler_count; i < compiler_count; i++) {
@@ -1114,13 +1090,17 @@
sprintf(name_buffer, "C1 CompilerThread%d", i);
CompilerCounters* counters = new CompilerCounters("compilerThread", i, CHECK);
// C1
- CompilerThread* new_thread = make_compiler_thread(name_buffer, _c1_compile_queue, counters, _compilers[0], CHECK);
- _compiler_threads->append(new_thread);
+ make_thread(name_buffer, _c1_compile_queue, counters, _compilers[0], compiler_thread, CHECK);
}
if (UsePerfData) {
PerfDataManager::create_constant(SUN_CI, "threads", PerfData::U_Bytes, compiler_count, CHECK);
}
+
+ if (MethodFlushing) {
+ // Initialize the sweeper thread
+ make_thread("Sweeper thread", NULL, NULL, NULL, false, CHECK);
+ }
}
@@ -1767,13 +1747,6 @@
// We need this HandleMark to avoid leaking VM handles.
HandleMark hm(thread);
- // Check if the CodeCache is full
- int code_blob_type = 0;
- if (CodeCache::is_full(&code_blob_type)) {
- // The CodeHeap for code_blob_type is really full
- handle_full_code_cache(code_blob_type);
- }
-
CompileTask* task = queue->get();
if (task == NULL) {
continue;
@@ -1781,8 +1754,9 @@
// Give compiler threads an extra quanta. They tend to be bursty and
// this helps the compiler to finish up the job.
- if( CompilerThreadHintNoPreempt )
+ if (CompilerThreadHintNoPreempt) {
os::hint_no_preempt();
+ }
// trace per thread time and compile statistics
CompilerCounters* counters = ((CompilerThread*)thread)->counters();
@@ -2094,8 +2068,10 @@
}
/**
- * The CodeCache is full. Print out warning and disable compilation
- * or try code cache cleaning so compilation can continue later.
+ * The CodeCache is full. Print warning and disable compilation.
+ * Schedule code cache cleaning so compilation can continue later.
+ * This function needs to be called only from CodeCache::allocate(),
+ * since we currently handle a full code cache uniformly.
*/
void CompileBroker::handle_full_code_cache(int code_blob_type) {
UseInterpreter = true;
@@ -2127,10 +2103,6 @@
if (CompileBroker::set_should_compile_new_jobs(CompileBroker::stop_compilation)) {
NMethodSweeper::log_sweep("disable_compiler");
}
- // Switch to 'vm_state'. This ensures that possibly_sweep() can be called
- // without having to consider the state in which the current thread is.
- ThreadInVMfromUnknown in_vm;
- NMethodSweeper::possibly_sweep();
} else {
disable_compilation_forever();
}
--- a/hotspot/src/share/vm/compiler/compileBroker.hpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/compiler/compileBroker.hpp Fri Oct 31 18:18:58 2014 +0000
@@ -290,8 +290,6 @@
static CompileQueue* _c2_compile_queue;
static CompileQueue* _c1_compile_queue;
- static GrowableArray<CompilerThread*>* _compiler_threads;
-
// performance counters
static PerfCounter* _perf_total_compilation;
static PerfCounter* _perf_native_compilation;
@@ -339,8 +337,8 @@
static volatile jint _print_compilation_warning;
- static CompilerThread* make_compiler_thread(const char* name, CompileQueue* queue, CompilerCounters* counters, AbstractCompiler* comp, TRAPS);
- static void init_compiler_threads(int c1_compiler_count, int c2_compiler_count);
+ static JavaThread* make_thread(const char* name, CompileQueue* queue, CompilerCounters* counters, AbstractCompiler* comp, bool compiler_thread, TRAPS);
+ static void init_compiler_sweeper_threads(int c1_compiler_count, int c2_compiler_count);
static bool compilation_is_complete (methodHandle method, int osr_bci, int comp_level);
static bool compilation_is_prohibited(methodHandle method, int osr_bci, int comp_level);
static bool is_compile_blocking();
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Fri Oct 31 18:18:58 2014 +0000
@@ -127,41 +127,6 @@
};
-class ClearLoggedCardTableEntryClosure: public CardTableEntryClosure {
- size_t _num_processed;
- CardTableModRefBS* _ctbs;
- int _histo[256];
-
- public:
- ClearLoggedCardTableEntryClosure() :
- _num_processed(0), _ctbs(G1CollectedHeap::heap()->g1_barrier_set())
- {
- for (int i = 0; i < 256; i++) _histo[i] = 0;
- }
-
- bool do_card_ptr(jbyte* card_ptr, uint worker_i) {
- unsigned char* ujb = (unsigned char*)card_ptr;
- int ind = (int)(*ujb);
- _histo[ind]++;
-
- *card_ptr = (jbyte)CardTableModRefBS::clean_card_val();
- _num_processed++;
-
- return true;
- }
-
- size_t num_processed() { return _num_processed; }
-
- void print_histo() {
- gclog_or_tty->print_cr("Card table value histogram:");
- for (int i = 0; i < 256; i++) {
- if (_histo[i] != 0) {
- gclog_or_tty->print_cr(" %d: %d", i, _histo[i]);
- }
- }
- }
-};
-
class RedirtyLoggedCardTableEntryClosure : public CardTableEntryClosure {
private:
size_t _num_processed;
@@ -475,48 +440,6 @@
return !hr->is_humongous();
}
-void G1CollectedHeap::check_ct_logs_at_safepoint() {
- DirtyCardQueueSet& dcqs = JavaThread::dirty_card_queue_set();
- CardTableModRefBS* ct_bs = g1_barrier_set();
-
- // Count the dirty cards at the start.
- CountNonCleanMemRegionClosure count1(this);
- ct_bs->mod_card_iterate(&count1);
- int orig_count = count1.n();
-
- // First clear the logged cards.
- ClearLoggedCardTableEntryClosure clear;
- dcqs.apply_closure_to_all_completed_buffers(&clear);
- dcqs.iterate_closure_all_threads(&clear, false);
- clear.print_histo();
-
- // Now ensure that there's no dirty cards.
- CountNonCleanMemRegionClosure count2(this);
- ct_bs->mod_card_iterate(&count2);
- if (count2.n() != 0) {
- gclog_or_tty->print_cr("Card table has %d entries; %d originally",
- count2.n(), orig_count);
- }
- guarantee(count2.n() == 0, "Card table should be clean.");
-
- RedirtyLoggedCardTableEntryClosure redirty;
- dcqs.apply_closure_to_all_completed_buffers(&redirty);
- dcqs.iterate_closure_all_threads(&redirty, false);
- gclog_or_tty->print_cr("Log entries = %d, dirty cards = %d.",
- clear.num_processed(), orig_count);
- guarantee(redirty.num_processed() == clear.num_processed(),
- err_msg("Redirtied "SIZE_FORMAT" cards, bug cleared "SIZE_FORMAT,
- redirty.num_processed(), clear.num_processed()));
-
- CountNonCleanMemRegionClosure count3(this);
- ct_bs->mod_card_iterate(&count3);
- if (count3.n() != orig_count) {
- gclog_or_tty->print_cr("Should have restored them all: orig = %d, final = %d.",
- orig_count, count3.n());
- guarantee(count3.n() >= orig_count, "Should have restored them all.");
- }
-}
-
// Private class members.
G1CollectedHeap* G1CollectedHeap::_g1h;
@@ -5760,14 +5683,10 @@
// not copied during the pause.
process_discovered_references(n_workers);
- // Weak root processing.
- {
+ if (G1StringDedup::is_enabled()) {
G1STWIsAliveClosure is_alive(this);
G1KeepAliveClosure keep_alive(this);
- JNIHandles::weak_oops_do(&is_alive, &keep_alive);
- if (G1StringDedup::is_enabled()) {
- G1StringDedup::unlink_or_oops_do(&is_alive, &keep_alive);
- }
+ G1StringDedup::unlink_or_oops_do(&is_alive, &keep_alive);
}
_allocator->release_gc_alloc_regions(n_workers, evacuation_info);
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp Fri Oct 31 18:18:58 2014 +0000
@@ -797,9 +797,6 @@
// The closure used to refine a single card.
RefineCardTableEntryClosure* _refine_cte_cl;
- // A function to check the consistency of dirty card logs.
- void check_ct_logs_at_safepoint();
-
// A DirtyCardQueueSet that is used to hold cards that contain
// references into the current collection set. This is used to
// update the remembered sets of the regions in the collection
--- a/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/interpreter/interpreterRuntime.cpp Fri Oct 31 18:18:58 2014 +0000
@@ -1077,7 +1077,6 @@
address SignatureHandlerLibrary::set_handler_blob() {
BufferBlob* handler_blob = BufferBlob::create("native signature handlers", blob_size);
if (handler_blob == NULL) {
- CompileBroker::handle_full_code_cache(CodeBlobType::NonNMethod);
return NULL;
}
address handler = handler_blob->code_begin();
--- a/hotspot/src/share/vm/memory/heap.cpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/memory/heap.cpp Fri Oct 31 18:18:58 2014 +0000
@@ -171,13 +171,13 @@
}
-void* CodeHeap::allocate(size_t instance_size, bool is_critical) {
+void* CodeHeap::allocate(size_t instance_size) {
size_t number_of_segments = size_to_segments(instance_size + header_size());
assert(segments_to_size(number_of_segments) >= sizeof(FreeBlock), "not enough room for FreeList");
// First check if we can satisfy request from freelist
NOT_PRODUCT(verify());
- HeapBlock* block = search_freelist(number_of_segments, is_critical);
+ HeapBlock* block = search_freelist(number_of_segments);
NOT_PRODUCT(verify());
if (block != NULL) {
@@ -191,15 +191,6 @@
// Ensure minimum size for allocation to the heap.
number_of_segments = MAX2((int)CodeCacheMinBlockLength, (int)number_of_segments);
- if (!is_critical) {
- // Make sure the allocation fits in the unallocated heap without using
- // the CodeCacheMimimumFreeSpace that is reserved for critical allocations.
- if (segments_to_size(number_of_segments) > (heap_unallocated_capacity() - CodeCacheMinimumFreeSpace)) {
- // Fail allocation
- return NULL;
- }
- }
-
if (_next_segment + number_of_segments <= _number_of_committed_segments) {
mark_segmap_as_used(_next_segment, _next_segment + number_of_segments);
HeapBlock* b = block_at(_next_segment);
@@ -427,24 +418,17 @@
* Search freelist for an entry on the list with the best fit.
* @return NULL, if no one was found
*/
-FreeBlock* CodeHeap::search_freelist(size_t length, bool is_critical) {
+FreeBlock* CodeHeap::search_freelist(size_t length) {
FreeBlock* found_block = NULL;
FreeBlock* found_prev = NULL;
size_t found_length = 0;
FreeBlock* prev = NULL;
FreeBlock* cur = _freelist;
- const size_t critical_boundary = (size_t)high_boundary() - CodeCacheMinimumFreeSpace;
// Search for first block that fits
while(cur != NULL) {
if (cur->length() >= length) {
- // Non critical allocations are not allowed to use the last part of the code heap.
- // Make sure the end of the allocation doesn't cross into the last part of the code heap.
- if (!is_critical && (((size_t)cur + length) > critical_boundary)) {
- // The freelist is sorted by address - if one fails, all consecutive will also fail.
- break;
- }
// Remember block, its previous element, and its length
found_block = cur;
found_prev = prev;
--- a/hotspot/src/share/vm/memory/heap.hpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/memory/heap.hpp Fri Oct 31 18:18:58 2014 +0000
@@ -120,7 +120,7 @@
// Toplevel freelist management
void add_to_freelist(HeapBlock* b);
- FreeBlock* search_freelist(size_t length, bool is_critical);
+ FreeBlock* search_freelist(size_t length);
// Iteration helpers
void* next_free(HeapBlock* b) const;
@@ -140,8 +140,8 @@
bool expand_by(size_t size); // expands committed memory by size
// Memory allocation
- void* allocate (size_t size, bool is_critical); // allocates a block of size or returns NULL
- void deallocate(void* p); // deallocates a block
+ void* allocate (size_t size); // Allocate 'size' bytes in the code cache or return NULL
+ void deallocate(void* p); // Deallocate memory
// Attributes
char* low_boundary() const { return _memory.low_boundary (); }
--- a/hotspot/src/share/vm/oops/instanceKlass.cpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/oops/instanceKlass.cpp Fri Oct 31 18:18:58 2014 +0000
@@ -2792,19 +2792,18 @@
// On-stack replacement stuff
void InstanceKlass::add_osr_nmethod(nmethod* n) {
// only one compilation can be active
- NEEDS_CLEANUP
- // This is a short non-blocking critical region, so the no safepoint check is ok.
- OsrList_lock->lock_without_safepoint_check();
- assert(n->is_osr_method(), "wrong kind of nmethod");
- n->set_osr_link(osr_nmethods_head());
- set_osr_nmethods_head(n);
- // Raise the highest osr level if necessary
- if (TieredCompilation) {
- Method* m = n->method();
- m->set_highest_osr_comp_level(MAX2(m->highest_osr_comp_level(), n->comp_level()));
+ {
+ // This is a short non-blocking critical region, so the no safepoint check is ok.
+ MutexLockerEx ml(OsrList_lock, Mutex::_no_safepoint_check_flag);
+ assert(n->is_osr_method(), "wrong kind of nmethod");
+ n->set_osr_link(osr_nmethods_head());
+ set_osr_nmethods_head(n);
+ // Raise the highest osr level if necessary
+ if (TieredCompilation) {
+ Method* m = n->method();
+ m->set_highest_osr_comp_level(MAX2(m->highest_osr_comp_level(), n->comp_level()));
+ }
}
- // Remember to unlock again
- OsrList_lock->unlock();
// Get rid of the osr methods for the same bci that have lower levels.
if (TieredCompilation) {
@@ -2820,7 +2819,7 @@
void InstanceKlass::remove_osr_nmethod(nmethod* n) {
// This is a short non-blocking critical region, so the no safepoint check is ok.
- OsrList_lock->lock_without_safepoint_check();
+ MutexLockerEx ml(OsrList_lock, Mutex::_no_safepoint_check_flag);
assert(n->is_osr_method(), "wrong kind of nmethod");
nmethod* last = NULL;
nmethod* cur = osr_nmethods_head();
@@ -2857,13 +2856,27 @@
}
m->set_highest_osr_comp_level(max_level);
}
- // Remember to unlock again
- OsrList_lock->unlock();
+}
+
+int InstanceKlass::mark_osr_nmethods(const Method* m) {
+ // This is a short non-blocking critical region, so the no safepoint check is ok.
+ MutexLockerEx ml(OsrList_lock, Mutex::_no_safepoint_check_flag);
+ nmethod* osr = osr_nmethods_head();
+ int found = 0;
+ while (osr != NULL) {
+ assert(osr->is_osr_method(), "wrong kind of nmethod found in chain");
+ if (osr->method() == m) {
+ osr->mark_for_deoptimization();
+ found++;
+ }
+ osr = osr->osr_link();
+ }
+ return found;
}
nmethod* InstanceKlass::lookup_osr_nmethod(const Method* m, int bci, int comp_level, bool match_level) const {
// This is a short non-blocking critical region, so the no safepoint check is ok.
- OsrList_lock->lock_without_safepoint_check();
+ MutexLockerEx ml(OsrList_lock, Mutex::_no_safepoint_check_flag);
nmethod* osr = osr_nmethods_head();
nmethod* best = NULL;
while (osr != NULL) {
@@ -2879,14 +2892,12 @@
if (match_level) {
if (osr->comp_level() == comp_level) {
// Found a match - return it.
- OsrList_lock->unlock();
return osr;
}
} else {
if (best == NULL || (osr->comp_level() > best->comp_level())) {
if (osr->comp_level() == CompLevel_highest_tier) {
// Found the best possible - return it.
- OsrList_lock->unlock();
return osr;
}
best = osr;
@@ -2895,7 +2906,6 @@
}
osr = osr->osr_link();
}
- OsrList_lock->unlock();
if (best != NULL && best->comp_level() >= comp_level && match_level == false) {
return best;
}
--- a/hotspot/src/share/vm/oops/instanceKlass.hpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/oops/instanceKlass.hpp Fri Oct 31 18:18:58 2014 +0000
@@ -754,6 +754,7 @@
void set_osr_nmethods_head(nmethod* h) { _osr_nmethods_head = h; };
void add_osr_nmethod(nmethod* n);
void remove_osr_nmethod(nmethod* n);
+ int mark_osr_nmethods(const Method* m);
nmethod* lookup_osr_nmethod(const Method* m, int bci, int level, bool match_level) const;
// Breakpoint support (see methods on Method* for details)
--- a/hotspot/src/share/vm/oops/method.hpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/oops/method.hpp Fri Oct 31 18:18:58 2014 +0000
@@ -813,6 +813,10 @@
return method_holder()->lookup_osr_nmethod(this, InvocationEntryBci, level, match_level) != NULL;
}
+ int mark_osr_nmethods() {
+ return method_holder()->mark_osr_nmethods(this);
+ }
+
nmethod* lookup_osr_nmethod_for(int bci, int level, bool match_level) {
return method_holder()->lookup_osr_nmethod(this, bci, level, match_level);
}
--- a/hotspot/src/share/vm/oops/objArrayOop.hpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/oops/objArrayOop.hpp Fri Oct 31 18:18:58 2014 +0000
@@ -45,9 +45,10 @@
private:
// Give size of objArrayOop in HeapWords minus the header
static int array_size(int length) {
- const int OopsPerHeapWord = HeapWordSize/heapOopSize;
+ const uint OopsPerHeapWord = HeapWordSize/heapOopSize;
assert(OopsPerHeapWord >= 1 && (HeapWordSize % heapOopSize == 0),
"Else the following (new) computation would be in error");
+ uint res = ((uint)length + OopsPerHeapWord - 1)/OopsPerHeapWord;
#ifdef ASSERT
// The old code is left in for sanity-checking; it'll
// go away pretty soon. XXX
@@ -55,16 +56,15 @@
// oop->length() * HeapWordsPerOop;
// With narrowOops, HeapWordsPerOop is 1/2 or equal 0 as an integer.
// The oop elements are aligned up to wordSize
- const int HeapWordsPerOop = heapOopSize/HeapWordSize;
- int old_res;
+ const uint HeapWordsPerOop = heapOopSize/HeapWordSize;
+ uint old_res;
if (HeapWordsPerOop > 0) {
old_res = length * HeapWordsPerOop;
} else {
- old_res = align_size_up(length, OopsPerHeapWord)/OopsPerHeapWord;
+ old_res = align_size_up((uint)length, OopsPerHeapWord)/OopsPerHeapWord;
}
+ assert(res == old_res, "Inconsistency between old and new.");
#endif // ASSERT
- int res = ((uint)length + OopsPerHeapWord - 1)/OopsPerHeapWord;
- assert(res == old_res, "Inconsistency between old and new.");
return res;
}
--- a/hotspot/src/share/vm/oops/typeArrayOop.hpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/oops/typeArrayOop.hpp Fri Oct 31 18:18:58 2014 +0000
@@ -150,7 +150,7 @@
DEBUG_ONLY(BasicType etype = Klass::layout_helper_element_type(lh));
assert(length <= arrayOopDesc::max_array_length(etype), "no overflow");
- julong size_in_bytes = length;
+ julong size_in_bytes = (juint)length;
size_in_bytes <<= element_shift;
size_in_bytes += instance_header_size;
julong size_in_words = ((size_in_bytes + (HeapWordSize-1)) >> LogHeapWordSize);
--- a/hotspot/src/share/vm/opto/c2_globals.hpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/opto/c2_globals.hpp Fri Oct 31 18:18:58 2014 +0000
@@ -476,6 +476,9 @@
product(bool, DoEscapeAnalysis, true, \
"Perform escape analysis") \
\
+ product(double, EscapeAnalysisTimeout, 20. DEBUG_ONLY(+40.), \
+ "Abort EA when it reaches time limit (in sec)") \
+ \
develop(bool, ExitEscapeAnalysisOnTimeout, true, \
"Exit or throw assert in EA when it reaches time limit") \
\
--- a/hotspot/src/share/vm/opto/callnode.cpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/opto/callnode.cpp Fri Oct 31 18:18:58 2014 +0000
@@ -939,7 +939,8 @@
#ifndef PRODUCT
if (!(call->req() > TypeFunc::Parms &&
call->in(TypeFunc::Parms) != NULL &&
- call->in(TypeFunc::Parms)->is_Con())) {
+ call->in(TypeFunc::Parms)->is_Con() &&
+ call->in(TypeFunc::Parms)->bottom_type()->isa_int())) {
assert(in_dump() != 0, "OK if dumping");
tty->print("[bad uncommon trap]");
return 0;
--- a/hotspot/src/share/vm/opto/coalesce.cpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/opto/coalesce.cpp Fri Oct 31 18:18:58 2014 +0000
@@ -281,9 +281,11 @@
Block *pred = _phc._cfg.get_block_for_node(b->pred(j));
Node *copy;
assert(!m->is_Con() || m->is_Mach(), "all Con must be Mach");
- // Rematerialize constants instead of copying them
- if( m->is_Mach() && m->as_Mach()->is_Con() &&
- m->as_Mach()->rematerialize() ) {
+ // Rematerialize constants instead of copying them.
+ // We do this only for immediate constants, we avoid constant table loads
+ // because that will unsafely extend the live range of the constant table base.
+ if (m->is_Mach() && m->as_Mach()->is_Con() && !m->as_Mach()->is_MachConstant() &&
+ m->as_Mach()->rematerialize()) {
copy = m->clone();
// Insert the copy in the predecessor basic block
pred->add_inst(copy);
@@ -317,8 +319,8 @@
assert(!m->is_Con() || m->is_Mach(), "all Con must be Mach");
// At this point it is unsafe to extend live ranges (6550579).
// Rematerialize only constants as we do for Phi above.
- if(m->is_Mach() && m->as_Mach()->is_Con() &&
- m->as_Mach()->rematerialize()) {
+ if (m->is_Mach() && m->as_Mach()->is_Con() && !m->as_Mach()->is_MachConstant() &&
+ m->as_Mach()->rematerialize()) {
copy = m->clone();
// Insert the copy in the basic block, just before us
b->insert_node(copy, l++);
--- a/hotspot/src/share/vm/opto/compile.cpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/opto/compile.cpp Fri Oct 31 18:18:58 2014 +0000
@@ -535,7 +535,6 @@
if (scratch_buffer_blob() == NULL) {
// Let CompilerBroker disable further compilations.
record_failure("Not enough space for scratch buffer in CodeCache");
- CompileBroker::handle_full_code_cache(CodeBlobType::NonNMethod);
return;
}
}
--- a/hotspot/src/share/vm/opto/escape.cpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/opto/escape.cpp Fri Oct 31 18:18:58 2014 +0000
@@ -38,6 +38,8 @@
ConnectionGraph::ConnectionGraph(Compile * C, PhaseIterGVN *igvn) :
_nodes(C->comp_arena(), C->unique(), C->unique(), NULL),
+ _in_worklist(C->comp_arena()),
+ _next_pidx(0),
_collecting(true),
_verify(false),
_compile(C),
@@ -125,13 +127,19 @@
if (C->root() != NULL) {
ideal_nodes.push(C->root());
}
+ // Processed ideal nodes are unique on ideal_nodes list
+ // but several ideal nodes are mapped to the phantom_obj.
+ // To avoid duplicated entries on the following worklists
+ // add the phantom_obj only once to them.
+ ptnodes_worklist.append(phantom_obj);
+ java_objects_worklist.append(phantom_obj);
for( uint next = 0; next < ideal_nodes.size(); ++next ) {
Node* n = ideal_nodes.at(next);
// Create PointsTo nodes and add them to Connection Graph. Called
// only once per ideal node since ideal_nodes is Unique_Node list.
add_node_to_connection_graph(n, &delayed_worklist);
PointsToNode* ptn = ptnode_adr(n->_idx);
- if (ptn != NULL) {
+ if (ptn != NULL && ptn != phantom_obj) {
ptnodes_worklist.append(ptn);
if (ptn->is_JavaObject()) {
java_objects_worklist.append(ptn->as_JavaObject());
@@ -415,7 +423,7 @@
}
case Op_CreateEx: {
// assume that all exception objects globally escape
- add_java_object(n, PointsToNode::GlobalEscape);
+ map_ideal_node(n, phantom_obj);
break;
}
case Op_LoadKlass:
@@ -1074,13 +1082,8 @@
// on graph complexity. Observed 8 passes in jvm2008 compiler.compiler.
// Set limit to 20 to catch situation when something did go wrong and
// bailout Escape Analysis.
- // Also limit build time to 30 sec (60 in debug VM).
+ // Also limit build time to 20 sec (60 in debug VM), EscapeAnalysisTimeout flag.
#define CG_BUILD_ITER_LIMIT 20
-#ifdef ASSERT
-#define CG_BUILD_TIME_LIMIT 60.0
-#else
-#define CG_BUILD_TIME_LIMIT 30.0
-#endif
// Propagate GlobalEscape and ArgEscape escape states and check that
// we still have non-escaping objects. The method pushs on _worklist
@@ -1091,12 +1094,13 @@
// Now propagate references to all JavaObject nodes.
int java_objects_length = java_objects_worklist.length();
elapsedTimer time;
+ bool timeout = false;
int new_edges = 1;
int iterations = 0;
do {
while ((new_edges > 0) &&
- (iterations++ < CG_BUILD_ITER_LIMIT) &&
- (time.seconds() < CG_BUILD_TIME_LIMIT)) {
+ (iterations++ < CG_BUILD_ITER_LIMIT)) {
+ double start_time = time.seconds();
time.start();
new_edges = 0;
// Propagate references to phantom_object for nodes pushed on _worklist
@@ -1105,7 +1109,26 @@
for (int next = 0; next < java_objects_length; ++next) {
JavaObjectNode* ptn = java_objects_worklist.at(next);
new_edges += add_java_object_edges(ptn, true);
+
+#define SAMPLE_SIZE 4
+ if ((next % SAMPLE_SIZE) == 0) {
+ // Each 4 iterations calculate how much time it will take
+ // to complete graph construction.
+ time.stop();
+ double stop_time = time.seconds();
+ double time_per_iter = (stop_time - start_time) / (double)SAMPLE_SIZE;
+ double time_until_end = time_per_iter * (double)(java_objects_length - next);
+ if ((start_time + time_until_end) >= EscapeAnalysisTimeout) {
+ timeout = true;
+ break; // Timeout
+ }
+ start_time = stop_time;
+ time.start();
+ }
+#undef SAMPLE_SIZE
+
}
+ if (timeout) break;
if (new_edges > 0) {
// Update escape states on each iteration if graph was updated.
if (!find_non_escaped_objects(ptnodes_worklist, non_escaped_worklist)) {
@@ -1113,9 +1136,12 @@
}
}
time.stop();
+ if (time.seconds() >= EscapeAnalysisTimeout) {
+ timeout = true;
+ break;
+ }
}
- if ((iterations < CG_BUILD_ITER_LIMIT) &&
- (time.seconds() < CG_BUILD_TIME_LIMIT)) {
+ if ((iterations < CG_BUILD_ITER_LIMIT) && !timeout) {
time.start();
// Find fields which have unknown value.
int fields_length = oop_fields_worklist.length();
@@ -1128,18 +1154,21 @@
}
}
time.stop();
+ if (time.seconds() >= EscapeAnalysisTimeout) {
+ timeout = true;
+ break;
+ }
} else {
new_edges = 0; // Bailout
}
} while (new_edges > 0);
// Bailout if passed limits.
- if ((iterations >= CG_BUILD_ITER_LIMIT) ||
- (time.seconds() >= CG_BUILD_TIME_LIMIT)) {
+ if ((iterations >= CG_BUILD_ITER_LIMIT) || timeout) {
Compile* C = _compile;
if (C->log() != NULL) {
C->log()->begin_elem("connectionGraph_bailout reason='reached ");
- C->log()->text("%s", (iterations >= CG_BUILD_ITER_LIMIT) ? "iterations" : "time");
+ C->log()->text("%s", timeout ? "time" : "iterations");
C->log()->end_elem(" limit'");
}
assert(ExitEscapeAnalysisOnTimeout, err_msg_res("infinite EA connection graph build (%f sec, %d iterations) with %d nodes and worklist size %d",
@@ -1156,7 +1185,6 @@
#endif
#undef CG_BUILD_ITER_LIMIT
-#undef CG_BUILD_TIME_LIMIT
// Find fields initialized by NULL for non-escaping Allocations.
int non_escaped_length = non_escaped_worklist.length();
@@ -1280,8 +1308,8 @@
}
}
}
- while(_worklist.length() > 0) {
- PointsToNode* use = _worklist.pop();
+ for (int l = 0; l < _worklist.length(); l++) {
+ PointsToNode* use = _worklist.at(l);
if (PointsToNode::is_base_use(use)) {
// Add reference from jobj to field and from field to jobj (field's base).
use = PointsToNode::get_use_node(use)->as_Field();
@@ -1328,6 +1356,8 @@
add_field_uses_to_worklist(use->as_Field());
}
}
+ _worklist.clear();
+ _in_worklist.Reset();
return new_edges;
}
@@ -1906,7 +1936,7 @@
return;
}
Compile* C = _compile;
- ptadr = new (C->comp_arena()) LocalVarNode(C, n, es);
+ ptadr = new (C->comp_arena()) LocalVarNode(this, n, es);
_nodes.at_put(n->_idx, ptadr);
}
@@ -1917,7 +1947,7 @@
return;
}
Compile* C = _compile;
- ptadr = new (C->comp_arena()) JavaObjectNode(C, n, es);
+ ptadr = new (C->comp_arena()) JavaObjectNode(this, n, es);
_nodes.at_put(n->_idx, ptadr);
}
@@ -1933,7 +1963,7 @@
es = PointsToNode::GlobalEscape;
}
Compile* C = _compile;
- FieldNode* field = new (C->comp_arena()) FieldNode(C, n, es, offset, is_oop);
+ FieldNode* field = new (C->comp_arena()) FieldNode(this, n, es, offset, is_oop);
_nodes.at_put(n->_idx, field);
}
@@ -1947,7 +1977,7 @@
return;
}
Compile* C = _compile;
- ptadr = new (C->comp_arena()) ArraycopyNode(C, n, es);
+ ptadr = new (C->comp_arena()) ArraycopyNode(this, n, es);
_nodes.at_put(n->_idx, ptadr);
// Add edge from arraycopy node to source object.
(void)add_edge(ptadr, src);
--- a/hotspot/src/share/vm/opto/escape.hpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/opto/escape.hpp Fri Oct 31 18:18:58 2014 +0000
@@ -125,6 +125,8 @@
class FieldNode;
class ArraycopyNode;
+class ConnectionGraph;
+
// ConnectionGraph nodes
class PointsToNode : public ResourceObj {
GrowableArray<PointsToNode*> _edges; // List of nodes this node points to
@@ -137,6 +139,7 @@
Node* const _node; // Ideal node corresponding to this PointsTo node.
const int _idx; // Cached ideal node's _idx
+ const uint _pidx; // Index of this node
public:
typedef enum {
@@ -165,17 +168,9 @@
} NodeFlags;
- PointsToNode(Compile *C, Node* n, EscapeState es, NodeType type):
- _edges(C->comp_arena(), 2, 0, NULL),
- _uses (C->comp_arena(), 2, 0, NULL),
- _node(n),
- _idx(n->_idx),
- _type((u1)type),
- _escape((u1)es),
- _fields_escape((u1)es),
- _flags(ScalarReplaceable) {
- assert(n != NULL && es != UnknownEscape, "sanity");
- }
+ inline PointsToNode(ConnectionGraph* CG, Node* n, EscapeState es, NodeType type);
+
+ uint pidx() const { return _pidx; }
Node* ideal_node() const { return _node; }
int idx() const { return _idx; }
@@ -243,14 +238,14 @@
class LocalVarNode: public PointsToNode {
public:
- LocalVarNode(Compile *C, Node* n, EscapeState es):
- PointsToNode(C, n, es, LocalVar) {}
+ LocalVarNode(ConnectionGraph *CG, Node* n, EscapeState es):
+ PointsToNode(CG, n, es, LocalVar) {}
};
class JavaObjectNode: public PointsToNode {
public:
- JavaObjectNode(Compile *C, Node* n, EscapeState es):
- PointsToNode(C, n, es, JavaObject) {
+ JavaObjectNode(ConnectionGraph *CG, Node* n, EscapeState es):
+ PointsToNode(CG, n, es, JavaObject) {
if (es > NoEscape)
set_scalar_replaceable(false);
}
@@ -262,8 +257,8 @@
const bool _is_oop; // Field points to object
bool _has_unknown_base; // Has phantom_object base
public:
- FieldNode(Compile *C, Node* n, EscapeState es, int offs, bool is_oop):
- PointsToNode(C, n, es, Field),
+ FieldNode(ConnectionGraph *CG, Node* n, EscapeState es, int offs, bool is_oop):
+ PointsToNode(CG, n, es, Field),
_offset(offs), _is_oop(is_oop),
_has_unknown_base(false) {}
@@ -284,8 +279,8 @@
class ArraycopyNode: public PointsToNode {
public:
- ArraycopyNode(Compile *C, Node* n, EscapeState es):
- PointsToNode(C, n, es, Arraycopy) {}
+ ArraycopyNode(ConnectionGraph *CG, Node* n, EscapeState es):
+ PointsToNode(CG, n, es, Arraycopy) {}
};
// Iterators for PointsTo node's edges:
@@ -323,11 +318,14 @@
class ConnectionGraph: public ResourceObj {
+ friend class PointsToNode;
private:
GrowableArray<PointsToNode*> _nodes; // Map from ideal nodes to
// ConnectionGraph nodes.
GrowableArray<PointsToNode*> _worklist; // Nodes to be processed
+ VectorSet _in_worklist;
+ uint _next_pidx;
bool _collecting; // Indicates whether escape information
// is still being collected. If false,
@@ -353,6 +351,8 @@
}
uint nodes_size() const { return _nodes.length(); }
+ uint next_pidx() { return _next_pidx++; }
+
// Add nodes to ConnectionGraph.
void add_local_var(Node* n, PointsToNode::EscapeState es);
void add_java_object(Node* n, PointsToNode::EscapeState es);
@@ -396,15 +396,26 @@
int add_java_object_edges(JavaObjectNode* jobj, bool populate_worklist);
// Put node on worklist if it is (or was) not there.
- void add_to_worklist(PointsToNode* pt) {
- _worklist.push(pt);
- return;
+ inline void add_to_worklist(PointsToNode* pt) {
+ PointsToNode* ptf = pt;
+ uint pidx_bias = 0;
+ if (PointsToNode::is_base_use(pt)) {
+ // Create a separate entry in _in_worklist for a marked base edge
+ // because _worklist may have an entry for a normal edge pointing
+ // to the same node. To separate them use _next_pidx as bias.
+ ptf = PointsToNode::get_use_node(pt)->as_Field();
+ pidx_bias = _next_pidx;
+ }
+ if (!_in_worklist.test_set(ptf->pidx() + pidx_bias)) {
+ _worklist.append(pt);
+ }
}
// Put on worklist all uses of this node.
- void add_uses_to_worklist(PointsToNode* pt) {
- for (UseIterator i(pt); i.has_next(); i.next())
- _worklist.push(i.get());
+ inline void add_uses_to_worklist(PointsToNode* pt) {
+ for (UseIterator i(pt); i.has_next(); i.next()) {
+ add_to_worklist(i.get());
+ }
}
// Put on worklist all field's uses and related field nodes.
@@ -517,8 +528,8 @@
}
// Helper functions
bool is_oop_field(Node* n, int offset, bool* unsafe);
- static Node* get_addp_base(Node *addp);
- static Node* find_second_addp(Node* addp, Node* n);
+ static Node* get_addp_base(Node *addp);
+ static Node* find_second_addp(Node* addp, Node* n);
// offset of a field reference
int address_offset(Node* adr, PhaseTransform *phase);
@@ -587,4 +598,17 @@
#endif
};
+inline PointsToNode::PointsToNode(ConnectionGraph *CG, Node* n, EscapeState es, NodeType type):
+ _edges(CG->_compile->comp_arena(), 2, 0, NULL),
+ _uses (CG->_compile->comp_arena(), 2, 0, NULL),
+ _node(n),
+ _idx(n->_idx),
+ _pidx(CG->next_pidx()),
+ _type((u1)type),
+ _escape((u1)es),
+ _fields_escape((u1)es),
+ _flags(ScalarReplaceable) {
+ assert(n != NULL && es != UnknownEscape, "sanity");
+}
+
#endif // SHARE_VM_OPTO_ESCAPE_HPP
--- a/hotspot/src/share/vm/opto/memnode.cpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/opto/memnode.cpp Fri Oct 31 18:18:58 2014 +0000
@@ -1257,6 +1257,16 @@
result = new ConvI2LNode(phase->transform(result));
}
#endif
+ // Boxing/unboxing can be done from signed & unsigned loads (e.g. LoadUB -> ... -> LoadB pair).
+ // Need to preserve unboxing load type if it is unsigned.
+ switch(this->Opcode()) {
+ case Op_LoadUB:
+ result = new AndINode(phase->transform(result), phase->intcon(0xFF));
+ break;
+ case Op_LoadUS:
+ result = new AndINode(phase->transform(result), phase->intcon(0xFFFF));
+ break;
+ }
return result;
}
}
--- a/hotspot/src/share/vm/opto/output.cpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/opto/output.cpp Fri Oct 31 18:18:58 2014 +0000
@@ -1166,7 +1166,6 @@
// Have we run out of code space?
if ((cb->blob() == NULL) || (!CompileBroker::should_compile_new_jobs())) {
C->record_failure("CodeCache is full");
- CompileBroker::handle_full_code_cache(CodeBlobType::NonNMethod);
return NULL;
}
// Configure the code buffer.
@@ -1491,7 +1490,6 @@
cb->insts()->maybe_expand_to_ensure_remaining(MAX_inst_size);
if ((cb->blob() == NULL) || (!CompileBroker::should_compile_new_jobs())) {
C->record_failure("CodeCache is full");
- CompileBroker::handle_full_code_cache(CodeBlobType::NonNMethod);
return;
}
@@ -1648,7 +1646,6 @@
// One last check for failed CodeBuffer::expand:
if ((cb->blob() == NULL) || (!CompileBroker::should_compile_new_jobs())) {
C->record_failure("CodeCache is full");
- CompileBroker::handle_full_code_cache(CodeBlobType::NonNMethod);
return;
}
--- a/hotspot/src/share/vm/prims/methodHandles.cpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/prims/methodHandles.cpp Fri Oct 31 18:18:58 2014 +0000
@@ -36,6 +36,7 @@
#include "runtime/reflection.hpp"
#include "runtime/signature.hpp"
#include "runtime/stubRoutines.hpp"
+#include "utilities/exceptions.hpp"
/*
@@ -55,26 +56,30 @@
bool MethodHandles::_enabled = false; // set true after successful native linkage
MethodHandlesAdapterBlob* MethodHandles::_adapter_code = NULL;
-//------------------------------------------------------------------------------
-// MethodHandles::generate_adapters
-//
-void MethodHandles::generate_adapters() {
- if (SystemDictionary::MethodHandle_klass() == NULL) return;
+
+/**
+ * Generates method handle adapters. Returns 'false' if memory allocation
+ * failed and true otherwise.
+ */
+bool MethodHandles::generate_adapters() {
+ if (SystemDictionary::MethodHandle_klass() == NULL) {
+ return true;
+ }
assert(_adapter_code == NULL, "generate only once");
ResourceMark rm;
TraceTime timer("MethodHandles adapters generation", TraceStartupTime);
_adapter_code = MethodHandlesAdapterBlob::create(adapter_code_size);
- if (_adapter_code == NULL)
- vm_exit_out_of_memory(adapter_code_size, OOM_MALLOC_ERROR,
- "CodeCache: no room for MethodHandles adapters");
- {
- CodeBuffer code(_adapter_code);
- MethodHandlesAdapterGenerator g(&code);
- g.generate();
- code.log_section_sizes("MethodHandlesAdapterBlob");
+ if (_adapter_code == NULL) {
+ return false;
}
+
+ CodeBuffer code(_adapter_code);
+ MethodHandlesAdapterGenerator g(&code);
+ g.generate();
+ code.log_section_sizes("MethodHandlesAdapterBlob");
+ return true;
}
//------------------------------------------------------------------------------
@@ -1401,7 +1406,9 @@
}
if (enable_MH) {
- MethodHandles::generate_adapters();
+ if (MethodHandles::generate_adapters() == false) {
+ THROW_MSG(vmSymbols::java_lang_VirtualMachineError(), "Out of space in CodeCache for method handle adapters");
+ }
MethodHandles::set_enabled(true);
}
}
--- a/hotspot/src/share/vm/prims/methodHandles.hpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/prims/methodHandles.hpp Fri Oct 31 18:18:58 2014 +0000
@@ -69,7 +69,7 @@
enum { _suppress_defc = 1, _suppress_name = 2, _suppress_type = 4 };
// Generate MethodHandles adapters.
- static void generate_adapters();
+ static bool generate_adapters();
// Called from MethodHandlesAdapterGenerator.
static address generate_method_handle_interpreter_entry(MacroAssembler* _masm, vmIntrinsics::ID iid);
--- a/hotspot/src/share/vm/prims/whitebox.cpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/prims/whitebox.cpp Fri Oct 31 18:18:58 2014 +0000
@@ -386,19 +386,10 @@
CHECK_JNI_EXCEPTION_(env, result);
MutexLockerEx mu(Compile_lock);
methodHandle mh(THREAD, Method::checked_resolve_jmethod_id(jmid));
- nmethod* code;
if (is_osr) {
- int bci = InvocationEntryBci;
- while ((code = mh->lookup_osr_nmethod_for(bci, CompLevel_none, false)) != NULL) {
- code->mark_for_deoptimization();
- ++result;
- bci = code->osr_entry_bci() + 1;
- }
- } else {
- code = mh->code();
- }
- if (code != NULL) {
- code->mark_for_deoptimization();
+ result += mh->mark_osr_nmethods();
+ } else if (mh->code() != NULL) {
+ mh->code()->mark_for_deoptimization();
++result;
}
result += CodeCache::mark_for_deoptimization(mh());
@@ -566,13 +557,13 @@
WB_END
template <typename T>
-static bool GetVMFlag(JavaThread* thread, JNIEnv* env, jstring name, T* value, bool (*TAt)(const char*, T*)) {
+static bool GetVMFlag(JavaThread* thread, JNIEnv* env, jstring name, T* value, bool (*TAt)(const char*, T*, bool, bool)) {
if (name == NULL) {
return false;
}
ThreadToNativeFromVM ttnfv(thread); // can't be in VM when we call JNI
const char* flag_name = env->GetStringUTFChars(name, NULL);
- bool result = (*TAt)(flag_name, value);
+ bool result = (*TAt)(flag_name, value, true, true);
env->ReleaseStringUTFChars(name, flag_name);
return result;
}
@@ -619,6 +610,24 @@
return box(thread, env, vmSymbols::java_lang_Double(), vmSymbols::Double_valueOf_signature(), value);
}
+static Flag* getVMFlag(JavaThread* thread, JNIEnv* env, jstring name) {
+ ThreadToNativeFromVM ttnfv(thread); // can't be in VM when we call JNI
+ const char* flag_name = env->GetStringUTFChars(name, NULL);
+ Flag* result = Flag::find_flag(flag_name, strlen(flag_name), true, true);
+ env->ReleaseStringUTFChars(name, flag_name);
+ return result;
+}
+
+WB_ENTRY(jboolean, WB_IsConstantVMFlag(JNIEnv* env, jobject o, jstring name))
+ Flag* flag = getVMFlag(thread, env, name);
+ return (flag != NULL) && flag->is_constant_in_binary();
+WB_END
+
+WB_ENTRY(jboolean, WB_IsLockedVMFlag(JNIEnv* env, jobject o, jstring name))
+ Flag* flag = getVMFlag(thread, env, name);
+ return (flag != NULL) && !(flag->is_unlocked() || flag->is_unlocker());
+WB_END
+
WB_ENTRY(jobject, WB_GetBooleanVMFlag(JNIEnv* env, jobject o, jstring name))
bool result;
if (GetVMFlag <bool> (thread, env, name, &result, &CommandLineFlags::boolAt)) {
@@ -1018,6 +1027,8 @@
CC"(Ljava/lang/reflect/Executable;II)Z", (void*)&WB_EnqueueMethodForCompilation},
{CC"clearMethodState",
CC"(Ljava/lang/reflect/Executable;)V", (void*)&WB_ClearMethodState},
+ {CC"isConstantVMFlag", CC"(Ljava/lang/String;)Z", (void*)&WB_IsConstantVMFlag},
+ {CC"isLockedVMFlag", CC"(Ljava/lang/String;)Z", (void*)&WB_IsLockedVMFlag},
{CC"setBooleanVMFlag", CC"(Ljava/lang/String;Z)V",(void*)&WB_SetBooleanVMFlag},
{CC"setIntxVMFlag", CC"(Ljava/lang/String;J)V",(void*)&WB_SetIntxVMFlag},
{CC"setUintxVMFlag", CC"(Ljava/lang/String;J)V",(void*)&WB_SetUintxVMFlag},
--- a/hotspot/src/share/vm/runtime/arguments.cpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/runtime/arguments.cpp Fri Oct 31 18:18:58 2014 +0000
@@ -306,6 +306,9 @@
{ "ReflectionWrapResolutionErrors",JDK_Version::jdk(9), JDK_Version::jdk(10) },
{ "VerifyReflectionBytecodes", JDK_Version::jdk(9), JDK_Version::jdk(10) },
{ "AutoShutdownNMT", JDK_Version::jdk(9), JDK_Version::jdk(10) },
+ { "NmethodSweepFraction", JDK_Version::jdk(9), JDK_Version::jdk(10) },
+ { "NmethodSweepCheckInterval", JDK_Version::jdk(9), JDK_Version::jdk(10) },
+ { "CodeCacheMinimumFreeSpace", JDK_Version::jdk(9), JDK_Version::jdk(10) },
#ifndef ZERO
{ "UseFastAccessorMethods", JDK_Version::jdk(9), JDK_Version::jdk(10) },
{ "UseFastEmptyMethods", JDK_Version::jdk(9), JDK_Version::jdk(10) },
@@ -2528,7 +2531,7 @@
// Check lower bounds of the code cache
// Template Interpreter code is approximately 3X larger in debug builds.
- uint min_code_cache_size = (CodeCacheMinimumUseSpace DEBUG_ONLY(* 3)) + CodeCacheMinimumFreeSpace;
+ uint min_code_cache_size = CodeCacheMinimumUseSpace DEBUG_ONLY(* 3);
if (InitialCodeCacheSize < (uintx)os::vm_page_size()) {
jio_fprintf(defaultStream::error_stream(),
"Invalid InitialCodeCacheSize=%dK. Must be at least %dK.\n", InitialCodeCacheSize/K,
@@ -2564,10 +2567,11 @@
status = false;
}
- status &= verify_interval(NmethodSweepFraction, 1, ReservedCodeCacheSize/K, "NmethodSweepFraction");
status &= verify_interval(NmethodSweepActivity, 0, 2000, "NmethodSweepActivity");
status &= verify_interval(CodeCacheMinBlockLength, 1, 100, "CodeCacheMinBlockLength");
status &= verify_interval(CodeCacheSegmentSize, 1, 1024, "CodeCacheSegmentSize");
+ status &= verify_interval(StartAggressiveSweepingAt, 0, 100, "StartAggressiveSweepingAt");
+
int min_number_of_compiler_threads = get_min_number_of_compiler_threads();
// The default CICompilerCount's value is CI_COMPILER_COUNT.
@@ -3992,12 +3996,6 @@
#endif
#endif
- // Set NmethodSweepFraction after the size of the code cache is adapted (in case of tiered)
- if (FLAG_IS_DEFAULT(NmethodSweepFraction)) {
- FLAG_SET_DEFAULT(NmethodSweepFraction, 1 + ReservedCodeCacheSize / (16 * M));
- }
-
-
// Set heap size based on available physical memory
set_heap_size();
@@ -4065,13 +4063,6 @@
}
#ifndef PRODUCT
- if (CompileTheWorld) {
- // Force NmethodSweeper to sweep whole CodeCache each time.
- if (FLAG_IS_DEFAULT(NmethodSweepFraction)) {
- NmethodSweepFraction = 1;
- }
- }
-
if (!LogVMOutput && FLAG_IS_DEFAULT(LogVMOutput)) {
if (use_vm_log()) {
LogVMOutput = true;
--- a/hotspot/src/share/vm/runtime/globals.cpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/runtime/globals.cpp Fri Oct 31 18:18:58 2014 +0000
@@ -634,8 +634,8 @@
e.commit();
}
-bool CommandLineFlags::boolAt(const char* name, size_t len, bool* value) {
- Flag* result = Flag::find_flag(name, len);
+bool CommandLineFlags::boolAt(const char* name, size_t len, bool* value, bool allow_locked, bool return_flag) {
+ Flag* result = Flag::find_flag(name, len, allow_locked, return_flag);
if (result == NULL) return false;
if (!result->is_bool()) return false;
*value = result->get_bool();
@@ -662,8 +662,8 @@
faddr->set_origin(origin);
}
-bool CommandLineFlags::intxAt(const char* name, size_t len, intx* value) {
- Flag* result = Flag::find_flag(name, len);
+bool CommandLineFlags::intxAt(const char* name, size_t len, intx* value, bool allow_locked, bool return_flag) {
+ Flag* result = Flag::find_flag(name, len, allow_locked, return_flag);
if (result == NULL) return false;
if (!result->is_intx()) return false;
*value = result->get_intx();
@@ -690,8 +690,8 @@
faddr->set_origin(origin);
}
-bool CommandLineFlags::uintxAt(const char* name, size_t len, uintx* value) {
- Flag* result = Flag::find_flag(name, len);
+bool CommandLineFlags::uintxAt(const char* name, size_t len, uintx* value, bool allow_locked, bool return_flag) {
+ Flag* result = Flag::find_flag(name, len, allow_locked, return_flag);
if (result == NULL) return false;
if (!result->is_uintx()) return false;
*value = result->get_uintx();
@@ -718,8 +718,8 @@
faddr->set_origin(origin);
}
-bool CommandLineFlags::uint64_tAt(const char* name, size_t len, uint64_t* value) {
- Flag* result = Flag::find_flag(name, len);
+bool CommandLineFlags::uint64_tAt(const char* name, size_t len, uint64_t* value, bool allow_locked, bool return_flag) {
+ Flag* result = Flag::find_flag(name, len, allow_locked, return_flag);
if (result == NULL) return false;
if (!result->is_uint64_t()) return false;
*value = result->get_uint64_t();
@@ -746,8 +746,8 @@
faddr->set_origin(origin);
}
-bool CommandLineFlags::size_tAt(const char* name, size_t len, size_t* value) {
- Flag* result = Flag::find_flag(name, len);
+bool CommandLineFlags::size_tAt(const char* name, size_t len, size_t* value, bool allow_locked, bool return_flag) {
+ Flag* result = Flag::find_flag(name, len, allow_locked, return_flag);
if (result == NULL) return false;
if (!result->is_size_t()) return false;
*value = result->get_size_t();
@@ -774,8 +774,8 @@
faddr->set_origin(origin);
}
-bool CommandLineFlags::doubleAt(const char* name, size_t len, double* value) {
- Flag* result = Flag::find_flag(name, len);
+bool CommandLineFlags::doubleAt(const char* name, size_t len, double* value, bool allow_locked, bool return_flag) {
+ Flag* result = Flag::find_flag(name, len, allow_locked, return_flag);
if (result == NULL) return false;
if (!result->is_double()) return false;
*value = result->get_double();
@@ -802,8 +802,8 @@
faddr->set_origin(origin);
}
-bool CommandLineFlags::ccstrAt(const char* name, size_t len, ccstr* value) {
- Flag* result = Flag::find_flag(name, len);
+bool CommandLineFlags::ccstrAt(const char* name, size_t len, ccstr* value, bool allow_locked, bool return_flag) {
+ Flag* result = Flag::find_flag(name, len, allow_locked, return_flag);
if (result == NULL) return false;
if (!result->is_ccstr()) return false;
*value = result->get_ccstr();
--- a/hotspot/src/share/vm/runtime/globals.hpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/runtime/globals.hpp Fri Oct 31 18:18:58 2014 +0000
@@ -379,38 +379,38 @@
class CommandLineFlags {
public:
- static bool boolAt(const char* name, size_t len, bool* value);
- static bool boolAt(const char* name, bool* value) { return boolAt(name, strlen(name), value); }
+ static bool boolAt(const char* name, size_t len, bool* value, bool allow_locked = false, bool return_flag = false);
+ static bool boolAt(const char* name, bool* value, bool allow_locked = false, bool return_flag = false) { return boolAt(name, strlen(name), value, allow_locked, return_flag); }
static bool boolAtPut(const char* name, size_t len, bool* value, Flag::Flags origin);
static bool boolAtPut(const char* name, bool* value, Flag::Flags origin) { return boolAtPut(name, strlen(name), value, origin); }
- static bool intxAt(const char* name, size_t len, intx* value);
- static bool intxAt(const char* name, intx* value) { return intxAt(name, strlen(name), value); }
+ static bool intxAt(const char* name, size_t len, intx* value, bool allow_locked = false, bool return_flag = false);
+ static bool intxAt(const char* name, intx* value, bool allow_locked = false, bool return_flag = false) { return intxAt(name, strlen(name), value, allow_locked, return_flag); }
static bool intxAtPut(const char* name, size_t len, intx* value, Flag::Flags origin);
static bool intxAtPut(const char* name, intx* value, Flag::Flags origin) { return intxAtPut(name, strlen(name), value, origin); }
- static bool uintxAt(const char* name, size_t len, uintx* value);
- static bool uintxAt(const char* name, uintx* value) { return uintxAt(name, strlen(name), value); }
+ static bool uintxAt(const char* name, size_t len, uintx* value, bool allow_locked = false, bool return_flag = false);
+ static bool uintxAt(const char* name, uintx* value, bool allow_locked = false, bool return_flag = false) { return uintxAt(name, strlen(name), value, allow_locked, return_flag); }
static bool uintxAtPut(const char* name, size_t len, uintx* value, Flag::Flags origin);
static bool uintxAtPut(const char* name, uintx* value, Flag::Flags origin) { return uintxAtPut(name, strlen(name), value, origin); }
- static bool size_tAt(const char* name, size_t len, size_t* value);
- static bool size_tAt(const char* name, size_t* value) { return size_tAt(name, strlen(name), value); }
+ static bool size_tAt(const char* name, size_t len, size_t* value, bool allow_locked = false, bool return_flag = false);
+ static bool size_tAt(const char* name, size_t* value, bool allow_locked = false, bool return_flag = false) { return size_tAt(name, strlen(name), value, allow_locked, return_flag); }
static bool size_tAtPut(const char* name, size_t len, size_t* value, Flag::Flags origin);
static bool size_tAtPut(const char* name, size_t* value, Flag::Flags origin) { return size_tAtPut(name, strlen(name), value, origin); }
- static bool uint64_tAt(const char* name, size_t len, uint64_t* value);
- static bool uint64_tAt(const char* name, uint64_t* value) { return uint64_tAt(name, strlen(name), value); }
+ static bool uint64_tAt(const char* name, size_t len, uint64_t* value, bool allow_locked = false, bool return_flag = false);
+ static bool uint64_tAt(const char* name, uint64_t* value, bool allow_locked = false, bool return_flag = false) { return uint64_tAt(name, strlen(name), value, allow_locked, return_flag); }
static bool uint64_tAtPut(const char* name, size_t len, uint64_t* value, Flag::Flags origin);
static bool uint64_tAtPut(const char* name, uint64_t* value, Flag::Flags origin) { return uint64_tAtPut(name, strlen(name), value, origin); }
- static bool doubleAt(const char* name, size_t len, double* value);
- static bool doubleAt(const char* name, double* value) { return doubleAt(name, strlen(name), value); }
+ static bool doubleAt(const char* name, size_t len, double* value, bool allow_locked = false, bool return_flag = false);
+ static bool doubleAt(const char* name, double* value, bool allow_locked = false, bool return_flag = false) { return doubleAt(name, strlen(name), value, allow_locked, return_flag); }
static bool doubleAtPut(const char* name, size_t len, double* value, Flag::Flags origin);
static bool doubleAtPut(const char* name, double* value, Flag::Flags origin) { return doubleAtPut(name, strlen(name), value, origin); }
- static bool ccstrAt(const char* name, size_t len, ccstr* value);
- static bool ccstrAt(const char* name, ccstr* value) { return ccstrAt(name, strlen(name), value); }
+ static bool ccstrAt(const char* name, size_t len, ccstr* value, bool allow_locked = false, bool return_flag = false);
+ static bool ccstrAt(const char* name, ccstr* value, bool allow_locked = false, bool return_flag = false) { return ccstrAt(name, strlen(name), value, allow_locked, return_flag); }
// Contract: Flag will make private copy of the incoming value.
// Outgoing value is always malloc-ed, and caller MUST call free.
static bool ccstrAtPut(const char* name, size_t len, ccstr* value, Flag::Flags origin);
@@ -2984,12 +2984,6 @@
product(intx, SafepointTimeoutDelay, 10000, \
"Delay in milliseconds for option SafepointTimeout") \
\
- product(intx, NmethodSweepFraction, 16, \
- "Number of invocations of sweeper to cover all nmethods") \
- \
- product(intx, NmethodSweepCheckInterval, 5, \
- "Compilers wake up every n seconds to possibly sweep nmethods") \
- \
product(intx, NmethodSweepActivity, 10, \
"Removes cold nmethods from code cache if > 0. Higher values " \
"result in more aggressive sweeping") \
@@ -3378,9 +3372,6 @@
product_pd(uintx, NonNMethodCodeHeapSize, \
"Size of code heap with non-nmethods (in bytes)") \
\
- product(uintx, CodeCacheMinimumFreeSpace, 500*K, \
- "When less than X space left, we stop compiling") \
- \
product_pd(uintx, CodeCacheExpansionSize, \
"Code cache expansion size (in bytes)") \
\
@@ -3393,6 +3384,11 @@
product(bool, UseCodeCacheFlushing, true, \
"Remove cold/old nmethods from the code cache") \
\
+ product(uintx, StartAggressiveSweepingAt, 10, \
+ "Start aggressive sweeping if X[%] of the code cache is free." \
+ "Segmented code cache: X[%] of the non-profiled heap." \
+ "Non-segmented code cache: X[%] of the total code cache") \
+ \
/* interpreter debugging */ \
develop(intx, BinarySwitchThreshold, 5, \
"Minimal number of lookupswitch entries for rewriting to binary " \
--- a/hotspot/src/share/vm/runtime/mutexLocker.cpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/runtime/mutexLocker.cpp Fri Oct 31 18:18:58 2014 +0000
@@ -61,7 +61,7 @@
Mutex* StringTable_lock = NULL;
Monitor* StringDedupQueue_lock = NULL;
Mutex* StringDedupTable_lock = NULL;
-Mutex* CodeCache_lock = NULL;
+Monitor* CodeCache_lock = NULL;
Mutex* MethodData_lock = NULL;
Mutex* RetData_lock = NULL;
Monitor* VMOperationQueue_lock = NULL;
@@ -205,7 +205,7 @@
}
def(ParGCRareEvent_lock , Mutex , leaf , true );
def(DerivedPointerTableGC_lock , Mutex, leaf, true );
- def(CodeCache_lock , Mutex , special, true );
+ def(CodeCache_lock , Monitor, special, true );
def(Interrupt_lock , Monitor, special, true ); // used for interrupt processing
def(RawMonitor_lock , Mutex, special, true );
def(OopMapCacheAlloc_lock , Mutex, leaf, true ); // used for oop_map_cache allocation.
--- a/hotspot/src/share/vm/runtime/mutexLocker.hpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/runtime/mutexLocker.hpp Fri Oct 31 18:18:58 2014 +0000
@@ -53,7 +53,7 @@
extern Mutex* StringTable_lock; // a lock on the interned string table
extern Monitor* StringDedupQueue_lock; // a lock on the string deduplication queue
extern Mutex* StringDedupTable_lock; // a lock on the string deduplication table
-extern Mutex* CodeCache_lock; // a lock on the CodeCache, rank is special, use MutexLockerEx
+extern Monitor* CodeCache_lock; // a lock on the CodeCache, rank is special, use MutexLockerEx
extern Mutex* MethodData_lock; // a lock on installation of method data
extern Mutex* RetData_lock; // a lock on installation of RetData inside method data
extern Mutex* DerivedPointerTableGC_lock; // a lock to protect the derived pointer table
--- a/hotspot/src/share/vm/runtime/sharedRuntime.cpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/runtime/sharedRuntime.cpp Fri Oct 31 18:18:58 2014 +0000
@@ -2421,8 +2421,6 @@
// CodeCache is full, disable compilation
// Ought to log this but compile log is only per compile thread
// and we're some non descript Java thread.
- MutexUnlocker mu(AdapterHandlerLibrary_lock);
- CompileBroker::handle_full_code_cache(CodeBlobType::NonNMethod);
return NULL; // Out of CodeCache space
}
entry->relocate(new_adapter->content_begin());
@@ -2594,9 +2592,6 @@
CompileTask::print_compilation(tty, nm, method->is_static() ? "(static)" : "");
}
nm->post_compiled_method_load_event();
- } else {
- // CodeCache is full, disable compilation
- CompileBroker::handle_full_code_cache(CodeBlobType::MethodNonProfiled);
}
}
--- a/hotspot/src/share/vm/runtime/sweeper.cpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/runtime/sweeper.cpp Fri Oct 31 18:18:58 2014 +0000
@@ -52,7 +52,6 @@
class SweeperRecord {
public:
int traversal;
- int invocation;
int compile_id;
long traversal_mark;
int state;
@@ -62,10 +61,9 @@
int line;
void print() {
- tty->print_cr("traversal = %d invocation = %d compile_id = %d %s uep = " PTR_FORMAT " vep = "
+ tty->print_cr("traversal = %d compile_id = %d %s uep = " PTR_FORMAT " vep = "
PTR_FORMAT " state = %d traversal_mark %d line = %d",
traversal,
- invocation,
compile_id,
kind == NULL ? "" : kind,
uep,
@@ -117,7 +115,6 @@
if (_records != NULL) {
_records[_sweep_index].traversal = _traversals;
_records[_sweep_index].traversal_mark = nm->_stack_traversal_mark;
- _records[_sweep_index].invocation = _sweep_fractions_left;
_records[_sweep_index].compile_id = nm->compile_id();
_records[_sweep_index].kind = nm->compile_kind();
_records[_sweep_index].state = nm->_state;
@@ -127,6 +124,14 @@
_sweep_index = (_sweep_index + 1) % SweeperLogEntries;
}
}
+
+void NMethodSweeper::init_sweeper_log() {
+ if (LogSweeper && _records == NULL) {
+ // Create the ring buffer for the logging code
+ _records = NEW_C_HEAP_ARRAY(SweeperRecord, SweeperLogEntries, mtGC);
+ memset(_records, 0, sizeof(SweeperRecord) * SweeperLogEntries);
+ }
+}
#else
#define SWEEP(nm)
#endif
@@ -142,8 +147,6 @@
int NMethodSweeper::_marked_for_reclamation_count = 0; // Nof. nmethods marked for reclaim in current sweep
volatile bool NMethodSweeper::_should_sweep = true; // Indicates if we should invoke the sweeper
-volatile int NMethodSweeper::_sweep_fractions_left = 0; // Nof. invocations left until we are completed with this pass
-volatile int NMethodSweeper::_sweep_started = 0; // Flag to control conc sweeper
volatile int NMethodSweeper::_bytes_changed = 0; // Counts the total nmethod size if the nmethod changed from:
// 1) alive -> not_entrant
// 2) not_entrant -> zombie
@@ -190,13 +193,15 @@
}
return _hotness_counter_reset_val;
}
-bool NMethodSweeper::sweep_in_progress() {
- return !_current.end();
+bool NMethodSweeper::wait_for_stack_scanning() {
+ return _current.end();
}
-// Scans the stacks of all Java threads and marks activations of not-entrant methods.
-// No need to synchronize access, since 'mark_active_nmethods' is always executed at a
-// safepoint.
+/**
+ * Scans the stacks of all Java threads and marks activations of not-entrant methods.
+ * No need to synchronize access, since 'mark_active_nmethods' is always executed at a
+ * safepoint.
+ */
void NMethodSweeper::mark_active_nmethods() {
assert(SafepointSynchronize::is_at_safepoint(), "must be executed at a safepoint");
// If we do not want to reclaim not-entrant or zombie methods there is no need
@@ -210,9 +215,8 @@
// Check for restart
assert(CodeCache::find_blob_unsafe(_current.method()) == _current.method(), "Sweeper nmethod cached state invalid");
- if (!sweep_in_progress()) {
+ if (wait_for_stack_scanning()) {
_seen = 0;
- _sweep_fractions_left = NmethodSweepFraction;
_current = NMethodIterator();
// Initialize to first nmethod
_current.next();
@@ -231,6 +235,64 @@
OrderAccess::storestore();
}
+
+/**
+ * This function triggers a VM operation that does stack scanning of active
+ * methods. Stack scanning is mandatory for the sweeper to make progress.
+ */
+void NMethodSweeper::do_stack_scanning() {
+ assert(!CodeCache_lock->owned_by_self(), "just checking");
+ if (wait_for_stack_scanning()) {
+ VM_MarkActiveNMethods op;
+ VMThread::execute(&op);
+ _should_sweep = true;
+ }
+}
+
+void NMethodSweeper::sweeper_loop() {
+ bool timeout;
+ while (true) {
+ {
+ ThreadBlockInVM tbivm(JavaThread::current());
+ MutexLockerEx waiter(CodeCache_lock, Mutex::_no_safepoint_check_flag);
+ const long wait_time = 60*60*24 * 1000;
+ timeout = CodeCache_lock->wait(Mutex::_no_safepoint_check_flag, wait_time);
+ }
+ if (!timeout) {
+ possibly_sweep();
+ }
+ }
+}
+
+/**
+ * Wakes up the sweeper thread to possibly sweep.
+ */
+void NMethodSweeper::notify(int code_blob_type) {
+ // Makes sure that we do not invoke the sweeper too often during startup.
+ double start_threshold = 100.0 / (double)StartAggressiveSweepingAt;
+ double aggressive_sweep_threshold = MIN2(start_threshold, 1.1);
+ if (CodeCache::reverse_free_ratio(code_blob_type) >= aggressive_sweep_threshold) {
+ assert_locked_or_safepoint(CodeCache_lock);
+ CodeCache_lock->notify();
+ }
+}
+
+/**
+ * Handle a safepoint request
+ */
+void NMethodSweeper::handle_safepoint_request() {
+ if (SafepointSynchronize::is_synchronizing()) {
+ if (PrintMethodFlushing && Verbose) {
+ tty->print_cr("### Sweep at %d out of %d, yielding to safepoint", _seen, CodeCache::nof_nmethods());
+ }
+ MutexUnlockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
+
+ JavaThread* thread = JavaThread::current();
+ ThreadBlockInVM tbivm(thread);
+ thread->java_suspend_self();
+ }
+}
+
/**
* This function invokes the sweeper if at least one of the three conditions is met:
* (1) The code cache is getting full
@@ -239,11 +301,6 @@
*/
void NMethodSweeper::possibly_sweep() {
assert(JavaThread::current()->thread_state() == _thread_in_vm, "must run in vm mode");
- // Only compiler threads are allowed to sweep
- if (!MethodFlushing || !sweep_in_progress() || !Thread::current()->is_Compiler_thread()) {
- return;
- }
-
// If there was no state change while nmethod sweeping, 'should_sweep' will be false.
// This is one of the two places where should_sweep can be set to true. The general
// idea is as follows: If there is enough free space in the code cache, there is no
@@ -280,46 +337,37 @@
}
}
- if (_should_sweep && _sweep_fractions_left > 0) {
- // Only one thread at a time will sweep
- jint old = Atomic::cmpxchg( 1, &_sweep_started, 0 );
- if (old != 0) {
- return;
- }
-#ifdef ASSERT
- if (LogSweeper && _records == NULL) {
- // Create the ring buffer for the logging code
- _records = NEW_C_HEAP_ARRAY(SweeperRecord, SweeperLogEntries, mtGC);
- memset(_records, 0, sizeof(SweeperRecord) * SweeperLogEntries);
- }
-#endif
+ // Force stack scanning if there is only 10% free space in the code cache.
+ // We force stack scanning only non-profiled code heap gets full, since critical
+ // allocation go to the non-profiled heap and we must be make sure that there is
+ // enough space.
+ double free_percent = 1 / CodeCache::reverse_free_ratio(CodeBlobType::MethodNonProfiled) * 100;
+ if (free_percent <= StartAggressiveSweepingAt) {
+ do_stack_scanning();
+ }
- if (_sweep_fractions_left > 0) {
- sweep_code_cache();
- _sweep_fractions_left--;
- }
+ if (_should_sweep) {
+ init_sweeper_log();
+ sweep_code_cache();
+ }
- // We are done with sweeping the code cache once.
- if (_sweep_fractions_left == 0) {
- _total_nof_code_cache_sweeps++;
- _last_sweep = _time_counter;
- // Reset flag; temporarily disables sweeper
- _should_sweep = false;
- // If there was enough state change, 'possibly_enable_sweeper()'
- // sets '_should_sweep' to true
- possibly_enable_sweeper();
- // Reset _bytes_changed only if there was enough state change. _bytes_changed
- // can further increase by calls to 'report_state_change'.
- if (_should_sweep) {
- _bytes_changed = 0;
- }
- }
- // Release work, because another compiler thread could continue.
- OrderAccess::release_store((int*)&_sweep_started, 0);
+ // We are done with sweeping the code cache once.
+ _total_nof_code_cache_sweeps++;
+ _last_sweep = _time_counter;
+ // Reset flag; temporarily disables sweeper
+ _should_sweep = false;
+ // If there was enough state change, 'possibly_enable_sweeper()'
+ // sets '_should_sweep' to true
+ possibly_enable_sweeper();
+ // Reset _bytes_changed only if there was enough state change. _bytes_changed
+ // can further increase by calls to 'report_state_change'.
+ if (_should_sweep) {
+ _bytes_changed = 0;
}
}
void NMethodSweeper::sweep_code_cache() {
+ ResourceMark rm;
Ticks sweep_start_counter = Ticks::now();
_flushed_count = 0;
@@ -327,25 +375,10 @@
_marked_for_reclamation_count = 0;
if (PrintMethodFlushing && Verbose) {
- tty->print_cr("### Sweep at %d out of %d. Invocations left: %d", _seen, CodeCache::nof_nmethods(), _sweep_fractions_left);
- }
-
- if (!CompileBroker::should_compile_new_jobs()) {
- // If we have turned off compilations we might as well do full sweeps
- // in order to reach the clean state faster. Otherwise the sleeping compiler
- // threads will slow down sweeping.
- _sweep_fractions_left = 1;
+ tty->print_cr("### Sweep at %d out of %d", _seen, CodeCache::nof_nmethods());
}
- // We want to visit all nmethods after NmethodSweepFraction
- // invocations so divide the remaining number of nmethods by the
- // remaining number of invocations. This is only an estimate since
- // the number of nmethods changes during the sweep so the final
- // stage must iterate until it there are no more nmethods.
- int todo = (CodeCache::nof_nmethods() - _seen) / _sweep_fractions_left;
int swept_count = 0;
-
-
assert(!SafepointSynchronize::is_at_safepoint(), "should not be in safepoint when we get here");
assert(!CodeCache_lock->owned_by_self(), "just checking");
@@ -354,19 +387,9 @@
MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
// The last invocation iterates until there are no more nmethods
- while ((swept_count < todo || _sweep_fractions_left == 1) && !_current.end()) {
+ while (!_current.end()) {
swept_count++;
- if (SafepointSynchronize::is_synchronizing()) { // Safepoint request
- if (PrintMethodFlushing && Verbose) {
- tty->print_cr("### Sweep at %d out of %d, invocation: %d, yielding to safepoint", _seen, CodeCache::nof_nmethods(), _sweep_fractions_left);
- }
- MutexUnlockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
-
- assert(Thread::current()->is_Java_thread(), "should be java thread");
- JavaThread* thread = (JavaThread*)Thread::current();
- ThreadBlockInVM tbivm(thread);
- thread->java_suspend_self();
- }
+ handle_safepoint_request();
// Since we will give up the CodeCache_lock, always skip ahead
// to the next nmethod. Other blobs can be deleted by other
// threads but nmethods are only reclaimed by the sweeper.
@@ -382,7 +405,7 @@
}
}
- assert(_sweep_fractions_left > 1 || _current.end(), "must have scanned the whole cache");
+ assert(_current.end(), "must have scanned the whole cache");
const Ticks sweep_end_counter = Ticks::now();
const Tickspan sweep_time = sweep_end_counter - sweep_start_counter;
@@ -397,7 +420,6 @@
event.set_starttime(sweep_start_counter);
event.set_endtime(sweep_end_counter);
event.set_sweepIndex(_traversals);
- event.set_sweepFractionIndex(NmethodSweepFraction - _sweep_fractions_left + 1);
event.set_sweptCount(swept_count);
event.set_flushedCount(_flushed_count);
event.set_markedCount(_marked_for_reclamation_count);
@@ -407,15 +429,12 @@
#ifdef ASSERT
if(PrintMethodFlushing) {
- tty->print_cr("### sweeper: sweep time(%d): "
- INT64_FORMAT, _sweep_fractions_left, (jlong)sweep_time.value());
+ tty->print_cr("### sweeper: sweep time(%d): ", (jlong)sweep_time.value());
}
#endif
- if (_sweep_fractions_left == 1) {
- _peak_sweep_time = MAX2(_peak_sweep_time, _total_time_this_sweep);
- log_sweep("finished");
- }
+ _peak_sweep_time = MAX2(_peak_sweep_time, _total_time_this_sweep);
+ log_sweep("finished");
// Sweeper is the only case where memory is released, check here if it
// is time to restart the compiler. Only checking if there is a certain
@@ -459,10 +478,12 @@
class NMethodMarker: public StackObj {
private:
- CompilerThread* _thread;
+ CodeCacheSweeperThread* _thread;
public:
NMethodMarker(nmethod* nm) {
- _thread = CompilerThread::current();
+ JavaThread* current = JavaThread::current();
+ assert (current->is_Code_cache_sweeper_thread(), "Must be");
+ _thread = (CodeCacheSweeperThread*)JavaThread::current();
if (!nm->is_zombie() && !nm->is_unloaded()) {
// Only expose live nmethods for scanning
_thread->set_scanned_nmethod(nm);
@@ -473,7 +494,7 @@
}
};
-void NMethodSweeper::release_nmethod(nmethod *nm) {
+void NMethodSweeper::release_nmethod(nmethod* nm) {
// Clean up any CompiledICHolders
{
ResourceMark rm;
@@ -490,7 +511,7 @@
nm->flush();
}
-int NMethodSweeper::process_nmethod(nmethod *nm) {
+int NMethodSweeper::process_nmethod(nmethod* nm) {
assert(!CodeCache_lock->owned_by_self(), "just checking");
int freed_memory = 0;
--- a/hotspot/src/share/vm/runtime/sweeper.hpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/runtime/sweeper.hpp Fri Oct 31 18:18:58 2014 +0000
@@ -49,9 +49,7 @@
// remove the nmethod, all inline caches (IC) that point to the the nmethod must be
// cleared. After that, the nmethod can be evicted from the code cache. Each nmethod's
// state change happens during separate sweeps. It may take at least 3 sweeps before an
-// nmethod's space is freed. Sweeping is currently done by compiler threads between
-// compilations or at least each 5 sec (NmethodSweepCheckInterval) when the code cache
-// is full.
+// nmethod's space is freed.
class NMethodSweeper : public AllStatic {
static long _traversals; // Stack scan count, also sweep ID.
@@ -64,7 +62,6 @@
static int _zombified_count; // Nof. nmethods made zombie in current sweep
static int _marked_for_reclamation_count; // Nof. nmethods marked for reclaim in current sweep
- static volatile int _sweep_fractions_left; // Nof. invocations left until we are completed with this pass
static volatile int _sweep_started; // Flag to control conc sweeper
static volatile bool _should_sweep; // Indicates if we should invoke the sweeper
static volatile int _bytes_changed; // Counts the total nmethod size if the nmethod changed from:
@@ -85,8 +82,12 @@
static int process_nmethod(nmethod *nm);
static void release_nmethod(nmethod* nm);
- static bool sweep_in_progress();
+ static void init_sweeper_log() NOT_DEBUG_RETURN;
+ static bool wait_for_stack_scanning();
static void sweep_code_cache();
+ static void handle_safepoint_request();
+ static void do_stack_scanning();
+ static void possibly_sweep();
public:
static long traversal_count() { return _traversals; }
@@ -106,7 +107,8 @@
#endif
static void mark_active_nmethods(); // Invoked at the end of each safepoint
- static void possibly_sweep(); // Compiler threads call this to sweep
+ static void sweeper_loop();
+ static void notify(int code_blob_type); // Possibly start the sweeper thread.
static int hotness_counter_reset_val();
static void report_state_change(nmethod* nm);
--- a/hotspot/src/share/vm/runtime/thread.cpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/runtime/thread.cpp Fri Oct 31 18:18:58 2014 +0000
@@ -66,6 +66,7 @@
#include "runtime/sharedRuntime.hpp"
#include "runtime/statSampler.hpp"
#include "runtime/stubRoutines.hpp"
+#include "runtime/sweeper.hpp"
#include "runtime/task.hpp"
#include "runtime/thread.inline.hpp"
#include "runtime/threadCritical.hpp"
@@ -1553,6 +1554,7 @@
// Remove this ifdef when C1 is ported to the compiler interface.
static void compiler_thread_entry(JavaThread* thread, TRAPS);
+static void sweeper_thread_entry(JavaThread* thread, TRAPS);
JavaThread::JavaThread(ThreadFunction entry_point, size_t stack_sz) :
Thread()
@@ -3172,6 +3174,10 @@
CompileBroker::compiler_thread_loop();
}
+static void sweeper_thread_entry(JavaThread* thread, TRAPS) {
+ NMethodSweeper::sweeper_loop();
+}
+
// Create a CompilerThread
CompilerThread::CompilerThread(CompileQueue* queue,
CompilerCounters* counters)
@@ -3182,7 +3188,6 @@
_queue = queue;
_counters = counters;
_buffer_blob = NULL;
- _scanned_nmethod = NULL;
_compiler = NULL;
#ifndef PRODUCT
@@ -3190,7 +3195,12 @@
#endif
}
-void CompilerThread::oops_do(OopClosure* f, CLDClosure* cld_f, CodeBlobClosure* cf) {
+// Create sweeper thread
+CodeCacheSweeperThread::CodeCacheSweeperThread()
+: JavaThread(&sweeper_thread_entry) {
+ _scanned_nmethod = NULL;
+}
+void CodeCacheSweeperThread::oops_do(OopClosure* f, CLDClosure* cld_f, CodeBlobClosure* cf) {
JavaThread::oops_do(f, cld_f, cf);
if (_scanned_nmethod != NULL && cf != NULL) {
// Safepoints can occur when the sweeper is scanning an nmethod so
--- a/hotspot/src/share/vm/runtime/thread.hpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/runtime/thread.hpp Fri Oct 31 18:18:58 2014 +0000
@@ -311,6 +311,7 @@
virtual bool is_VM_thread() const { return false; }
virtual bool is_Java_thread() const { return false; }
virtual bool is_Compiler_thread() const { return false; }
+ virtual bool is_Code_cache_sweeper_thread() const { return false; }
virtual bool is_hidden_from_external_view() const { return false; }
virtual bool is_jvmti_agent_thread() const { return false; }
// True iff the thread can perform GC operations at a safepoint.
@@ -1755,6 +1756,27 @@
return (CompilerThread*)this;
}
+// Dedicated thread to sweep the code cache
+class CodeCacheSweeperThread : public JavaThread {
+ nmethod* _scanned_nmethod; // nmethod being scanned by the sweeper
+ public:
+ CodeCacheSweeperThread();
+ // Track the nmethod currently being scanned by the sweeper
+ void set_scanned_nmethod(nmethod* nm) {
+ assert(_scanned_nmethod == NULL || nm == NULL, "should reset to NULL before writing a new value");
+ _scanned_nmethod = nm;
+ }
+
+ // Hide sweeper thread from external view.
+ bool is_hidden_from_external_view() const { return true; }
+
+ bool is_Code_cache_sweeper_thread() const { return true; }
+ // GC support
+ // Apply "f->do_oop" to all root oops in "this".
+ // Apply "cf->do_code_blob" (if !NULL) to all code blobs active in frames
+ void oops_do(OopClosure* f, CLDClosure* cld_f, CodeBlobClosure* cf);
+};
+
// A thread used for Compilation.
class CompilerThread : public JavaThread {
friend class VMStructs;
@@ -1767,7 +1789,6 @@
CompileQueue* _queue;
BufferBlob* _buffer_blob;
- nmethod* _scanned_nmethod; // nmethod being scanned by the sweeper
AbstractCompiler* _compiler;
public:
@@ -1801,28 +1822,17 @@
_log = log;
}
- // GC support
- // Apply "f->do_oop" to all root oops in "this".
- // Apply "cf->do_code_blob" (if !NULL) to all code blobs active in frames
- void oops_do(OopClosure* f, CLDClosure* cld_f, CodeBlobClosure* cf);
-
#ifndef PRODUCT
private:
IdealGraphPrinter *_ideal_graph_printer;
public:
- IdealGraphPrinter *ideal_graph_printer() { return _ideal_graph_printer; }
- void set_ideal_graph_printer(IdealGraphPrinter *n) { _ideal_graph_printer = n; }
+ IdealGraphPrinter *ideal_graph_printer() { return _ideal_graph_printer; }
+ void set_ideal_graph_printer(IdealGraphPrinter *n) { _ideal_graph_printer = n; }
#endif
// Get/set the thread's current task
- CompileTask* task() { return _task; }
- void set_task(CompileTask* task) { _task = task; }
-
- // Track the nmethod currently being scanned by the sweeper
- void set_scanned_nmethod(nmethod* nm) {
- assert(_scanned_nmethod == NULL || nm == NULL, "should reset to NULL before writing a new value");
- _scanned_nmethod = nm;
- }
+ CompileTask* task() { return _task; }
+ void set_task(CompileTask* task) { _task = task; }
};
inline CompilerThread* CompilerThread::current() {
--- a/hotspot/src/share/vm/runtime/vm_operations.cpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/runtime/vm_operations.cpp Fri Oct 31 18:18:58 2014 +0000
@@ -111,6 +111,9 @@
CodeCache::make_marked_nmethods_zombies();
}
+void VM_MarkActiveNMethods::doit() {
+ NMethodSweeper::mark_active_nmethods();
+}
VM_DeoptimizeFrame::VM_DeoptimizeFrame(JavaThread* thread, intptr_t* id) {
_thread = thread;
--- a/hotspot/src/share/vm/runtime/vm_operations.hpp Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/runtime/vm_operations.hpp Fri Oct 31 18:18:58 2014 +0000
@@ -100,6 +100,7 @@
template(RotateGCLog) \
template(WhiteBoxOperation) \
template(ClassLoaderStatsOperation) \
+ template(MarkActiveNMethods) \
template(PrintCompileQueue) \
template(PrintCodeList) \
template(PrintCodeCache) \
@@ -252,6 +253,13 @@
bool allow_nested_vm_operations() const { return true; }
};
+class VM_MarkActiveNMethods: public VM_Operation {
+ public:
+ VM_MarkActiveNMethods() {}
+ VMOp_Type type() const { return VMOp_MarkActiveNMethods; }
+ void doit();
+ bool allow_nested_vm_operations() const { return true; }
+};
// Deopt helper that can deoptimize frames in threads other than the
// current thread. Only used through Deoptimization::deoptimize_frame.
--- a/hotspot/src/share/vm/trace/trace.xml Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/src/share/vm/trace/trace.xml Fri Oct 31 18:18:58 2014 +0000
@@ -383,7 +383,6 @@
<event id="SweepCodeCache" path="vm/code_sweeper/sweep" label="Sweep Code Cache"
has_thread="true" is_requestable="false" is_constant="false">
<value type="INTEGER" field="sweepIndex" label="Sweep Index" relation="SWEEP_ID"/>
- <value type="USHORT" field="sweepFractionIndex" label="Fraction Index"/>
<value type="UINT" field="sweptCount" label="Methods Swept"/>
<value type="UINT" field="flushedCount" label="Methods Flushed"/>
<value type="UINT" field="markedCount" label="Methods Reclaimed"/>
--- a/hotspot/test/TEST.groups Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/test/TEST.groups Fri Oct 31 18:18:58 2014 +0000
@@ -198,7 +198,8 @@
# Tests that require compact2 API's
#
-needs_compact2 =
+needs_compact2 = \
+ compiler/jsr292/CreatesInterfaceDotEqualsCallInfo.java
# All tests that run on the most minimal configuration: Minimal VM on Compact 1
compact1_minimal = \
@@ -443,6 +444,7 @@
compiler/arraycopy/TestMissingControl.java \
compiler/ciReplay/TestVM_no_comp_level.sh \
compiler/classUnloading/anonymousClass/TestAnonymousClassUnloading.java \
+ compiler/codecache/CheckSegmentedCodeCache.java \
compiler/codecache/CheckUpperLimit.java \
compiler/codegen/ \
compiler/cpuflags/RestoreMXCSR.java \
@@ -479,7 +481,6 @@
compiler/intrinsics/unsafe/UnsafeGetAddressTest.java \
compiler/jsr292/ConcurrentClassLoadingTest.java \
compiler/jsr292/CreatesInterfaceDotEqualsCallInfo.java \
- compiler/jsr292/CreatesInterfaceDotEqualsCallInfo.java \
compiler/loopopts/TestLogSum.java \
compiler/macronodes/TestEliminateAllocationPhi.java \
compiler/membars/TestMemBarAcquire.java \
@@ -602,3 +603,14 @@
:hotspot_gc \
:hotspot_runtime \
:hotspot_serviceability
+
+#All tests that depends on nashorn extension.
+#
+needs_nashorn = \
+ compiler/jsr292/CreatesInterfaceDotEqualsCallInfo.java
+
+#All tests that do not depends on nashorn extension
+#
+not_needs_nashorn = \
+ :jdk \
+ -:needs_nashorh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/EliminateAutoBox/UnsignedLoads.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. 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.
+ */
+
+/*
+ * @test
+ * @library /testlibrary
+ * @run main/othervm -Xbatch -XX:+EliminateAutoBox
+ * -XX:CompileOnly=::valueOf,::byteValue,::shortValue,::testUnsignedByte,::testUnsignedShort
+ * UnsignedLoads
+ */
+import static com.oracle.java.testlibrary.Asserts.assertEQ;
+
+public class UnsignedLoads {
+ public static int testUnsignedByte() {
+ byte[] bytes = new byte[] {-1};
+ int res = 0;
+ for (int i = 0; i < 100000; i++) {
+ for (Byte b : bytes) {
+ res = b & 0xff;
+ }
+ }
+ return res;
+ }
+
+ public static int testUnsignedShort() {
+ int res = 0;
+ short[] shorts = new short[] {-1};
+ for (int i = 0; i < 100000; i++) {
+ for (Short s : shorts) {
+ res = s & 0xffff;
+ }
+ }
+ return res;
+ }
+
+ public static void main(String[] args) {
+ assertEQ(testUnsignedByte(), 255);
+ assertEQ(testUnsignedShort(), 65535);
+ System.out.println("TEST PASSED");
+ }
+}
--- a/hotspot/test/compiler/codecache/CheckSegmentedCodeCache.java Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/test/compiler/codecache/CheckSegmentedCodeCache.java Fri Oct 31 18:18:58 2014 +0000
@@ -22,15 +22,20 @@
*/
import com.oracle.java.testlibrary.*;
+import sun.hotspot.WhiteBox;
/*
* @test CheckSegmentedCodeCache
* @bug 8015774
+ * @library /testlibrary /testlibrary/whitebox
* @summary "Checks VM options related to the segmented code cache"
- * @library /testlibrary
- * @run main/othervm CheckSegmentedCodeCache
+ * @build CheckSegmentedCodeCache
+ * @run main ClassFileInstaller sun.hotspot.WhiteBox
+ * sun.hotspot.WhiteBox$WhiteBoxPermission
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI CheckSegmentedCodeCache
*/
public class CheckSegmentedCodeCache {
+ private static final WhiteBox WHITE_BOX = WhiteBox.getWhiteBox();
// Code heap names
private static final String NON_METHOD = "CodeHeap 'non-nmethods'";
private static final String PROFILED = "CodeHeap 'profiled nmethods'";
@@ -133,8 +138,11 @@
failsWith(pb, "Invalid code heap sizes");
// Fails if not enough space for VM internal code
+ long minUseSpace = WHITE_BOX.getUintxVMFlag("CodeCacheMinimumUseSpace");
+ // minimum size: CodeCacheMinimumUseSpace DEBUG_ONLY(* 3)
+ long minSize = (Platform.isDebugBuild() ? 3 : 1) * minUseSpace;
pb = ProcessTools.createJavaProcessBuilder("-XX:+SegmentedCodeCache",
- "-XX:ReservedCodeCacheSize=1700K",
+ "-XX:ReservedCodeCacheSize=" + minSize,
"-XX:InitialCodeCacheSize=100K");
failsWith(pb, "Not enough space in non-nmethod code heap to run VM");
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/debug/TraceIterativeGVN.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. 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.
+ */
+
+/*
+ * @test
+ * @run main/othervm -Xbatch -XX:-TieredCompilation
+ * -XX:+IgnoreUnrecognizedVMOptions -XX:+TraceIterativeGVN
+ * TraceIterativeGVN
+ */
+public class TraceIterativeGVN {
+ public static void main(String[] args) {
+ for (int i = 0; i < 100_000; i++) {
+ Byte.valueOf((byte)0);
+ }
+ System.out.println("TEST PASSED");
+ }
+}
--- a/hotspot/test/compiler/exceptions/CatchInlineExceptions.java Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/test/compiler/exceptions/CatchInlineExceptions.java Fri Oct 31 18:18:58 2014 +0000
@@ -70,7 +70,7 @@
if (counter1 != 0) {
throw new RuntimeException("Failed: counter1(" + counter1 + ") != 0");
}
- if (counter2 != counter) {
+ if (counter2 != counter0) {
throw new RuntimeException("Failed: counter2(" + counter2 + ") != counter0(" + counter0 + ")");
}
if (counter2 != counter) {
--- a/hotspot/test/compiler/intrinsics/bmi/TestAndnI.java Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/test/compiler/intrinsics/bmi/TestAndnI.java Fri Oct 31 18:18:58 2014 +0000
@@ -41,14 +41,14 @@
public static void main(String args[]) throws Throwable {
if (!CPUInfo.hasFeature("bmi1")) {
- System.out.println("CPU does not support bmi1 feature. "+
- "Test skipped.");
- return;
+ System.out.println("INFO: CPU does not support bmi1 feature.");
}
BMITestRunner.runTests(AndnIExpr.class, args,
+ "-XX:+IgnoreUnrecognizedVMOptions",
"-XX:+UseBMI1Instructions");
BMITestRunner.runTests(AndnICommutativeExpr.class, args,
+ "-XX:+IgnoreUnrecognizedVMOptions",
"-XX:+UseBMI1Instructions");
}
--- a/hotspot/test/compiler/intrinsics/bmi/TestAndnL.java Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/test/compiler/intrinsics/bmi/TestAndnL.java Fri Oct 31 18:18:58 2014 +0000
@@ -41,14 +41,14 @@
public static void main(String args[]) throws Throwable {
if (!CPUInfo.hasFeature("bmi1")) {
- System.out.println("CPU does not support bmi1 feature. " +
- "Test skipped.");
- return;
+ System.out.println("INFO: CPU does not support bmi1 feature.");
}
BMITestRunner.runTests(AndnLExpr.class, args,
+ "-XX:+IgnoreUnrecognizedVMOptions",
"-XX:+UseBMI1Instructions");
BMITestRunner.runTests(AndnLCommutativeExpr.class, args,
+ "-XX:+IgnoreUnrecognizedVMOptions",
"-XX:+UseBMI1Instructions");
}
--- a/hotspot/test/compiler/intrinsics/bmi/TestBlsiI.java Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/test/compiler/intrinsics/bmi/TestBlsiI.java Fri Oct 31 18:18:58 2014 +0000
@@ -41,14 +41,14 @@
public static void main(String args[]) throws Throwable {
if (!CPUInfo.hasFeature("bmi1")) {
- System.out.println("CPU does not support bmi1 feature. " +
- "Test skipped.");
- return;
+ System.out.println("INFO: CPU does not support bmi1 feature.");
}
BMITestRunner.runTests(BlsiIExpr.class, args,
+ "-XX:+IgnoreUnrecognizedVMOptions",
"-XX:+UseBMI1Instructions");
BMITestRunner.runTests(BlsiICommutativeExpr.class, args,
+ "-XX:+IgnoreUnrecognizedVMOptions",
"-XX:+UseBMI1Instructions");
}
--- a/hotspot/test/compiler/intrinsics/bmi/TestBlsiL.java Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/test/compiler/intrinsics/bmi/TestBlsiL.java Fri Oct 31 18:18:58 2014 +0000
@@ -41,14 +41,14 @@
public static void main(String args[]) throws Throwable {
if (!CPUInfo.hasFeature("bmi1")) {
- System.out.println("CPU does not support bmi1 feature. " +
- "Test skipped.");
- return;
+ System.out.println("INFO: CPU does not support bmi1 feature.");
}
BMITestRunner.runTests(BlsiLExpr.class, args,
+ "-XX:+IgnoreUnrecognizedVMOptions",
"-XX:+UseBMI1Instructions");
BMITestRunner.runTests(BlsiLCommutativeExpr.class, args,
+ "-XX:+IgnoreUnrecognizedVMOptions",
"-XX:+UseBMI1Instructions");
}
--- a/hotspot/test/compiler/intrinsics/bmi/TestBlsmskI.java Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/test/compiler/intrinsics/bmi/TestBlsmskI.java Fri Oct 31 18:18:58 2014 +0000
@@ -41,14 +41,14 @@
public static void main(String args[]) throws Throwable {
if (!CPUInfo.hasFeature("bmi1")) {
- System.out.println("CPU does not support bmi1 feature. " +
- "Test skipped.");
- return;
+ System.out.println("INFO: CPU does not support bmi1 feature.");
}
BMITestRunner.runTests(BlsmskIExpr.class, args,
+ "-XX:+IgnoreUnrecognizedVMOptions",
"-XX:+UseBMI1Instructions");
BMITestRunner.runTests(BlsmskICommutativeExpr.class, args,
+ "-XX:+IgnoreUnrecognizedVMOptions",
"-XX:+UseBMI1Instructions");
}
--- a/hotspot/test/compiler/intrinsics/bmi/TestBlsmskL.java Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/test/compiler/intrinsics/bmi/TestBlsmskL.java Fri Oct 31 18:18:58 2014 +0000
@@ -41,14 +41,14 @@
public static void main(String args[]) throws Throwable {
if (!CPUInfo.hasFeature("bmi1")) {
- System.out.println("CPU does not support bmi1 feature. " +
- "Test skipped.");
- return;
+ System.out.println("INFO: CPU does not support bmi1 feature.");
}
BMITestRunner.runTests(BlsmskLExpr.class, args,
+ "-XX:+IgnoreUnrecognizedVMOptions",
"-XX:+UseBMI1Instructions");
BMITestRunner.runTests(BlsmskLCommutativeExpr.class, args,
+ "-XX:+IgnoreUnrecognizedVMOptions",
"-XX:+UseBMI1Instructions");
}
--- a/hotspot/test/compiler/intrinsics/bmi/TestBlsrI.java Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/test/compiler/intrinsics/bmi/TestBlsrI.java Fri Oct 31 18:18:58 2014 +0000
@@ -41,14 +41,14 @@
public static void main(String args[]) throws Throwable {
if (!CPUInfo.hasFeature("bmi1")) {
- System.out.println("CPU does not support bmi1 feature. " +
- "Test skipped.");
- return;
+ System.out.println("INFO: CPU does not support bmi1 feature.");
}
BMITestRunner.runTests(BlsrIExpr.class, args,
+ "-XX:+IgnoreUnrecognizedVMOptions",
"-XX:+UseBMI1Instructions");
BMITestRunner.runTests(BlsrICommutativeExpr.class, args,
+ "-XX:+IgnoreUnrecognizedVMOptions",
"-XX:+UseBMI1Instructions");
}
--- a/hotspot/test/compiler/intrinsics/bmi/TestBlsrL.java Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/test/compiler/intrinsics/bmi/TestBlsrL.java Fri Oct 31 18:18:58 2014 +0000
@@ -41,14 +41,14 @@
public static void main(String args[]) throws Throwable {
if (!CPUInfo.hasFeature("bmi1")) {
- System.out.println("CPU does not support bmi1 feature. " +
- "Test skipped.");
- return;
+ System.out.println("INFO: CPU does not support bmi1 feature.");
}
BMITestRunner.runTests(BlsrLExpr.class, args,
+ "-XX:+IgnoreUnrecognizedVMOptions",
"-XX:+UseBMI1Instructions");
BMITestRunner.runTests(BlsrLCommutativeExpr.class, args,
+ "-XX:+IgnoreUnrecognizedVMOptions",
"-XX:+UseBMI1Instructions");
}
--- a/hotspot/test/compiler/intrinsics/bmi/TestLzcntI.java Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/test/compiler/intrinsics/bmi/TestLzcntI.java Fri Oct 31 18:18:58 2014 +0000
@@ -41,12 +41,11 @@
public static void main(String args[]) throws Throwable {
if (!CPUInfo.hasFeature("lzcnt")) {
- System.out.println("CPU does not support lzcnt feature. " +
- "Test skipped.");
- return;
+ System.out.println("INFO: CPU does not support lzcnt feature.");
}
BMITestRunner.runTests(LzcntIExpr.class, args,
+ "-XX:+IgnoreUnrecognizedVMOptions",
"-XX:+UseCountLeadingZerosInstruction");
}
--- a/hotspot/test/compiler/intrinsics/bmi/TestLzcntL.java Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/test/compiler/intrinsics/bmi/TestLzcntL.java Fri Oct 31 18:18:58 2014 +0000
@@ -41,12 +41,11 @@
public static void main(String args[]) throws Throwable {
if (!CPUInfo.hasFeature("lzcnt")) {
- System.out.println("CPU does not support lzcnt feature. " +
- "Test skipped.");
- return;
+ System.out.println("INFO: CPU does not support lzcnt feature.");
}
BMITestRunner.runTests(LzcntLExpr.class, args,
+ "-XX:+IgnoreUnrecognizedVMOptions",
"-XX:+UseCountLeadingZerosInstruction");
}
--- a/hotspot/test/compiler/intrinsics/bmi/TestTzcntI.java Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/test/compiler/intrinsics/bmi/TestTzcntI.java Fri Oct 31 18:18:58 2014 +0000
@@ -41,12 +41,11 @@
public static void main(String args[]) throws Throwable {
if (!CPUInfo.hasFeature("bmi1")) {
- System.out.println("CPU does not support bmi1 feature. " +
- "Test skipped.");
- return;
+ System.out.println("INFO: CPU does not support bmi1 feature.");
}
BMITestRunner.runTests(TzcntIExpr.class, args,
+ "-XX:+IgnoreUnrecognizedVMOptions",
"-XX:+UseCountTrailingZerosInstruction");
}
--- a/hotspot/test/compiler/intrinsics/bmi/TestTzcntL.java Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/test/compiler/intrinsics/bmi/TestTzcntL.java Fri Oct 31 18:18:58 2014 +0000
@@ -41,12 +41,11 @@
public static void main(String args[]) throws Throwable {
if (!CPUInfo.hasFeature("bmi1")) {
- System.out.println("CPU does not support bmi1 feature. " +
- "Test skipped.");
- return;
+ System.out.println("INFO: CPU does not support bmi1 feature.");
}
BMITestRunner.runTests(TzcntLExpr.class, args,
+ "-XX:+IgnoreUnrecognizedVMOptions",
"-XX:+UseCountTrailingZerosInstruction");
}
--- a/hotspot/test/compiler/startup/SmallCodeCacheStartup.java Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/test/compiler/startup/SmallCodeCacheStartup.java Fri Oct 31 18:18:58 2014 +0000
@@ -27,10 +27,20 @@
* @summary Test ensures that there is no crash if there is not enough ReservedCodeacacheSize
* to initialize all compiler threads. The option -Xcomp gives the VM more time to
* to trigger the old bug.
- * @run main/othervm -XX:ReservedCodeCacheSize=3m -XX:CICompilerCount=64 -Xcomp SmallCodeCacheStartup
+ * @library /testlibrary
*/
+import com.oracle.java.testlibrary.*;
+
public class SmallCodeCacheStartup {
public static void main(String[] args) throws Exception {
+ try {
+ ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-XX:ReservedCodeCacheSize=3m",
+ "-XX:CICompilerCount=64",
+ "-Xcomp",
+ "SmallCodeCacheStartup");
+ pb.start();
+ } catch (VirtualMachineError e) {}
+
System.out.println("TEST PASSED");
}
}
--- a/hotspot/test/compiler/whitebox/CompilerWhiteBoxTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/test/compiler/whitebox/CompilerWhiteBoxTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -73,8 +73,6 @@
protected static final int THRESHOLD;
/** invocation count to trigger OSR compilation */
protected static final long BACKEDGE_THRESHOLD;
- /** invocation count to warm up method before triggering OSR compilation */
- protected static final long OSR_WARMUP = 2000;
/** Value of {@code java.vm.info} (interpreted|mixed|comp mode) */
protected static final String MODE = System.getProperty("java.vm.info");
@@ -197,7 +195,6 @@
* is compiled, or if {@linkplain #method} has zero
* compilation level.
*/
-
protected final void checkNotCompiled(int compLevel) {
if (WHITE_BOX.isMethodQueuedForCompilation(method)) {
throw new RuntimeException(method + " must not be in queue");
@@ -218,24 +215,30 @@
* compilation level.
*/
protected final void checkNotCompiled() {
- if (WHITE_BOX.isMethodCompiled(method, false)) {
- throw new RuntimeException(method + " must be not compiled");
- }
- if (WHITE_BOX.getMethodCompilationLevel(method, false) != 0) {
- throw new RuntimeException(method + " comp_level must be == 0");
- }
- checkNotOsrCompiled();
+ checkNotCompiled(true);
+ checkNotCompiled(false);
}
- protected final void checkNotOsrCompiled() {
+ /**
+ * Checks, that {@linkplain #method} is not (OSR-)compiled.
+ *
+ * @param isOsr Check for OSR compilation if true
+ * @throws RuntimeException if {@linkplain #method} is in compiler queue or
+ * is compiled, or if {@linkplain #method} has zero
+ * compilation level.
+ */
+ protected final void checkNotCompiled(boolean isOsr) {
+ waitBackgroundCompilation();
if (WHITE_BOX.isMethodQueuedForCompilation(method)) {
throw new RuntimeException(method + " must not be in queue");
}
- if (WHITE_BOX.isMethodCompiled(method, true)) {
- throw new RuntimeException(method + " must be not osr_compiled");
+ if (WHITE_BOX.isMethodCompiled(method, isOsr)) {
+ throw new RuntimeException(method + " must not be " +
+ (isOsr ? "osr_" : "") + "compiled");
}
- if (WHITE_BOX.getMethodCompilationLevel(method, true) != 0) {
- throw new RuntimeException(method + " osr_comp_level must be == 0");
+ if (WHITE_BOX.getMethodCompilationLevel(method, isOsr) != 0) {
+ throw new RuntimeException(method + (isOsr ? " osr_" : " ") +
+ "comp_level must be == 0");
}
}
@@ -498,8 +501,7 @@
= new Callable<Integer>() {
@Override
public Integer call() throws Exception {
- int result = warmup(OSR_CONSTRUCTOR);
- return result + new Helper(null, CompilerWhiteBoxTest.BACKEDGE_THRESHOLD).hashCode();
+ return new Helper(null, CompilerWhiteBoxTest.BACKEDGE_THRESHOLD).hashCode();
}
};
@@ -509,8 +511,7 @@
@Override
public Integer call() throws Exception {
- int result = warmup(OSR_METHOD);
- return result + helper.osrMethod(CompilerWhiteBoxTest.BACKEDGE_THRESHOLD);
+ return helper.osrMethod(CompilerWhiteBoxTest.BACKEDGE_THRESHOLD);
}
};
@@ -518,66 +519,10 @@
= new Callable<Integer>() {
@Override
public Integer call() throws Exception {
- int result = warmup(OSR_STATIC);
- return result + osrStaticMethod(CompilerWhiteBoxTest.BACKEDGE_THRESHOLD);
+ return osrStaticMethod(CompilerWhiteBoxTest.BACKEDGE_THRESHOLD);
}
};
- /**
- * Deoptimizes all non-osr versions of the given executable after
- * compilation finished.
- *
- * @param e Executable
- * @throws Exception
- */
- private static void waitAndDeoptimize(Executable e) throws Exception {
- CompilerWhiteBoxTest.waitBackgroundCompilation(e);
- if (WhiteBox.getWhiteBox().isMethodQueuedForCompilation(e)) {
- throw new RuntimeException(e + " must not be in queue");
- }
- // Deoptimize non-osr versions of executable
- WhiteBox.getWhiteBox().deoptimizeMethod(e, false);
- }
-
- /**
- * Executes the method multiple times to make sure we have
- * enough profiling information before triggering an OSR
- * compilation. Otherwise the C2 compiler may add uncommon traps.
- *
- * @param m Method to be executed
- * @return Number of times the method was executed
- * @throws Exception
- */
- private static int warmup(Method m) throws Exception {
- Helper helper = new Helper();
- int result = 0;
- for (long i = 0; i < CompilerWhiteBoxTest.OSR_WARMUP; ++i) {
- result += (int)m.invoke(helper, 1);
- }
- // Deoptimize non-osr versions
- waitAndDeoptimize(m);
- return result;
- }
-
- /**
- * Executes the constructor multiple times to make sure we
- * have enough profiling information before triggering an OSR
- * compilation. Otherwise the C2 compiler may add uncommon traps.
- *
- * @param c Constructor to be executed
- * @return Number of times the constructor was executed
- * @throws Exception
- */
- private static int warmup(Constructor c) throws Exception {
- int result = 0;
- for (long i = 0; i < CompilerWhiteBoxTest.OSR_WARMUP; ++i) {
- result += c.newInstance(null, 1).hashCode();
- }
- // Deoptimize non-osr versions
- waitAndDeoptimize(c);
- return result;
- }
-
private static final Constructor CONSTRUCTOR;
private static final Constructor OSR_CONSTRUCTOR;
private static final Method METHOD;
@@ -622,16 +567,83 @@
return 42;
}
- private static int osrStaticMethod(long limit) {
+ /**
+ * Deoptimizes all non-osr versions of the given executable after
+ * compilation finished.
+ *
+ * @param e Executable
+ * @throws Exception
+ */
+ private static void waitAndDeoptimize(Executable e) {
+ CompilerWhiteBoxTest.waitBackgroundCompilation(e);
+ if (WhiteBox.getWhiteBox().isMethodQueuedForCompilation(e)) {
+ throw new RuntimeException(e + " must not be in queue");
+ }
+ // Deoptimize non-osr versions of executable
+ WhiteBox.getWhiteBox().deoptimizeMethod(e, false);
+ }
+
+ /**
+ * Executes the method multiple times to make sure we have
+ * enough profiling information before triggering an OSR
+ * compilation. Otherwise the C2 compiler may add uncommon traps.
+ *
+ * @param m Method to be executed
+ * @return Number of times the method was executed
+ * @throws Exception
+ */
+ private static int warmup(Method m) throws Exception {
+ waitAndDeoptimize(m);
+ Helper helper = new Helper();
int result = 0;
+ for (long i = 0; i < CompilerWhiteBoxTest.THRESHOLD; ++i) {
+ result += (int)m.invoke(helper, 1);
+ }
+ // Wait to make sure OSR compilation is not blocked by
+ // non-OSR compilation in the compile queue
+ CompilerWhiteBoxTest.waitBackgroundCompilation(m);
+ return result;
+ }
+
+ /**
+ * Executes the constructor multiple times to make sure we
+ * have enough profiling information before triggering an OSR
+ * compilation. Otherwise the C2 compiler may add uncommon traps.
+ *
+ * @param c Constructor to be executed
+ * @return Number of times the constructor was executed
+ * @throws Exception
+ */
+ private static int warmup(Constructor c) throws Exception {
+ waitAndDeoptimize(c);
+ int result = 0;
+ for (long i = 0; i < CompilerWhiteBoxTest.THRESHOLD; ++i) {
+ result += c.newInstance(null, 1).hashCode();
+ }
+ // Wait to make sure OSR compilation is not blocked by
+ // non-OSR compilation in the compile queue
+ CompilerWhiteBoxTest.waitBackgroundCompilation(c);
+ return result;
+ }
+
+ private static int osrStaticMethod(long limit) throws Exception {
+ int result = 0;
+ if (limit != 1) {
+ result = warmup(OSR_STATIC);
+ }
+ // Trigger osr compilation
for (long i = 0; i < limit; ++i) {
result += staticMethod();
}
return result;
}
- private int osrMethod(long limit) {
+ private int osrMethod(long limit) throws Exception {
int result = 0;
+ if (limit != 1) {
+ result = warmup(OSR_METHOD);
+ }
+ // Trigger osr compilation
for (long i = 0; i < limit; ++i) {
result += method();
}
@@ -646,8 +658,12 @@
}
// for OSR constructor test case
- private Helper(Object o, long limit) {
+ private Helper(Object o, long limit) throws Exception {
int result = 0;
+ if (limit != 1) {
+ result = warmup(OSR_CONSTRUCTOR);
+ }
+ // Trigger osr compilation
for (long i = 0; i < limit; ++i) {
result += method();
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/whitebox/DeoptimizeMultipleOSRTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,95 @@
+/*
+ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import sun.hotspot.WhiteBox;
+import java.lang.reflect.Executable;
+import java.lang.reflect.Method;
+
+/*
+ * @test DeoptimizeMultipleOSRTest
+ * @bug 8061817
+ * @library /testlibrary /testlibrary/whitebox
+ * @build DeoptimizeMultipleOSRTest
+ * @run main ClassFileInstaller sun.hotspot.WhiteBox
+ * sun.hotspot.WhiteBox$WhiteBoxPermission
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:CompileCommand=compileonly,DeoptimizeMultipleOSRTest::triggerOSR DeoptimizeMultipleOSRTest
+ * @summary testing of WB::deoptimizeMethod()
+ */
+public class DeoptimizeMultipleOSRTest {
+ private static final WhiteBox WHITE_BOX = WhiteBox.getWhiteBox();
+ private static final long BACKEDGE_THRESHOLD = 150000;
+ private Method method;
+ private int counter = 0;
+
+ public static void main(String[] args) throws Exception {
+ DeoptimizeMultipleOSRTest test = new DeoptimizeMultipleOSRTest();
+ test.test();
+ }
+
+ /**
+ * Triggers two different OSR compilations for the same method and
+ * checks if WhiteBox.deoptimizeMethod() deoptimizes both.
+ *
+ * @throws Exception
+ */
+ public void test() throws Exception {
+ method = DeoptimizeMultipleOSRTest.class.getDeclaredMethod("triggerOSR", boolean.class, long.class);
+ // Trigger two OSR compiled versions
+ triggerOSR(true, BACKEDGE_THRESHOLD);
+ triggerOSR(false, BACKEDGE_THRESHOLD);
+ // Wait for compilation
+ CompilerWhiteBoxTest.waitBackgroundCompilation(method);
+ // Deoptimize
+ WHITE_BOX.deoptimizeMethod(method, true);
+ if (WHITE_BOX.isMethodCompiled(method, true)) {
+ throw new AssertionError("Not all OSR compiled versions were deoptimized");
+ }
+ }
+
+ /**
+ * Triggers OSR compilations by executing loops.
+ *
+ * @param first Determines which loop to execute
+ * @param limit The number of loop iterations
+ */
+ public void triggerOSR(boolean first, long limit) {
+ if (limit != 1) {
+ // Warmup method to avoid uncommon traps
+ for (int i = 0; i < limit; ++i) {
+ triggerOSR(first, 1);
+ }
+ CompilerWhiteBoxTest.waitBackgroundCompilation(method);
+ }
+ if (first) {
+ // Trigger OSR compilation 1
+ for (int i = 0; i < limit; ++i) {
+ counter++;
+ }
+ } else {
+ // Trigger OSR compilation 2
+ for (int i = 0; i < limit; ++i) {
+ counter++;
+ }
+ }
+ }
+}
--- a/hotspot/test/compiler/whitebox/MakeMethodNotCompilableTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/test/compiler/whitebox/MakeMethodNotCompilableTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -132,14 +132,15 @@
throw new RuntimeException(method
+ " is not compilable after clearMethodState()");
}
-
+ // Make method not (OSR-)compilable (depending on testCase.isOsr())
makeNotCompilable();
if (isCompilable()) {
throw new RuntimeException(method + " must be not compilable");
}
-
+ // Try to (OSR-)compile method
compile();
- checkNotOsrCompiled();
+ // Method should not be (OSR-)compiled
+ checkNotCompiled(testCase.isOsr());
if (isCompilable()) {
throw new RuntimeException(method + " must be not compilable");
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/gc/arguments/TestUseNUMAInterleaving.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * @test TestUseNUMAInterleaving
+ * @summary Tests that UseNUMAInterleaving enabled for all collectors by
+ * ergonomics, on all platforms when UseNUMA feature is enabled.
+ * @bug 8059614
+ * @key gc
+ * @library /testlibrary
+ * @run driver TestUseNUMAInterleaving
+ */
+import com.oracle.java.testlibrary.ProcessTools;
+import com.oracle.java.testlibrary.OutputAnalyzer;
+
+public class TestUseNUMAInterleaving {
+
+ public static void main(String[] args) throws Exception {
+ String[] vmargs = new String[]{
+ "-XX:+UseNUMA",
+ "-XX:+PrintFlagsFinal",
+ "-version"
+ };
+ ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, vmargs);
+ OutputAnalyzer output = new OutputAnalyzer(pb.start());
+
+ boolean isNUMAEnabled
+ = Boolean.parseBoolean(output.firstMatch(NUMA_FLAG_PATTERN, 1));
+
+ if (isNUMAEnabled) {
+ output.shouldMatch("\\bUseNUMAInterleaving\\b.*?=.*?true");
+ System.out.println(output.getStdout());
+ } else {
+ System.out.println(output.firstMatch(NUMA_FLAG_PATTERN));
+ System.out.println(output.firstMatch(NUMA_FLAG_PATTERN, 1));
+ }
+ }
+
+ private static final String NUMA_FLAG_PATTERN = "\\bUseNUMA\\b.*?=.*?([a-z]+)";
+}
--- a/hotspot/test/gc/g1/TestHumongousCodeCacheRoots.java Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/test/gc/g1/TestHumongousCodeCacheRoots.java Fri Oct 31 18:18:58 2014 +0000
@@ -135,7 +135,6 @@
"-XX:+UnlockDiagnosticVMOptions",
"-XX:InitiatingHeapOccupancyPercent=1", // strong code root marking
"-XX:+G1VerifyHeapRegionCodeRoots", "-XX:+VerifyAfterGC", // make sure that verification is run
- "-XX:NmethodSweepFraction=1", "-XX:NmethodSweepCheckInterval=1", // make the code cache sweep more predictable
};
runTest("-client", baseArguments);
runTest("-server", baseArguments);
--- a/hotspot/test/serviceability/dcmd/compiler/CompilerQueueTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/test/serviceability/dcmd/compiler/CompilerQueueTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -27,6 +27,7 @@
* @library ..
* @build DcmdUtil CompilerQueueTest
* @run main CompilerQueueTest
+ * @run main/othervm -XX:-TieredCompilation CompilerQueueTest
* @run main/othervm -Xint CompilerQueueTest
* @summary Test of diagnostic command Compiler.queue
*/
@@ -87,7 +88,9 @@
}
private static void validateMethodLine(String str) throws Exception {
- String name = str.substring(19);
+ // Skip until package/class name begins. Trim to remove whitespace that
+ // may differ.
+ String name = str.substring(14).trim();
int sep = name.indexOf("::");
if (sep == -1) {
throw new Exception("Failed dcmd queue, didn't find separator :: in: " + name);
--- a/hotspot/test/testlibrary/whitebox/sun/hotspot/WhiteBox.java Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/test/testlibrary/whitebox/sun/hotspot/WhiteBox.java Fri Oct 31 18:18:58 2014 +0000
@@ -179,6 +179,8 @@
public native void printRegionInfo(int context);
// VM flags
+ public native boolean isConstantVMFlag(String name);
+ public native boolean isLockedVMFlag(String name);
public native void setBooleanVMFlag(String name, boolean value);
public native void setIntxVMFlag(String name, long value);
public native void setUintxVMFlag(String name, long value);
--- a/hotspot/test/testlibrary_tests/whitebox/vm_flags/BooleanTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/test/testlibrary_tests/whitebox/vm_flags/BooleanTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -43,6 +43,7 @@
private static final Boolean[] TESTS = {true, false, true, true, false};
private static final String TEST_NAME = "BooleanTest";
private static final String FLAG_NAME = "PrintCompilation";
+ private static final String FLAG_DEBUG_NAME = "SafepointALot";
private static final String METHOD = TEST_NAME + "::method";
private static final String METHOD1 = METHOD + "1";
private static final String METHOD2 = METHOD + "2";
@@ -54,6 +55,7 @@
VmFlagTest.WHITE_BOX::getBooleanVMFlag);
testFunctional(false);
testFunctional(true);
+ VmFlagTest.runTest(FLAG_DEBUG_NAME, VmFlagTest.WHITE_BOX::getBooleanVMFlag);
} else {
boolean value = Boolean.valueOf(args[0]);
method1();
--- a/hotspot/test/testlibrary_tests/whitebox/vm_flags/IntxTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/test/testlibrary_tests/whitebox/vm_flags/IntxTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -35,6 +35,7 @@
public class IntxTest {
private static final String FLAG_NAME = "OnStackReplacePercentage";
+ private static final String FLAG_DEBUG_NAME = "InlineFrequencyCount";
private static final Long[] TESTS = {0L, 100L, -1L,
(long) Integer.MAX_VALUE, (long) Integer.MIN_VALUE};
@@ -42,6 +43,7 @@
VmFlagTest.runTest(FLAG_NAME, TESTS,
VmFlagTest.WHITE_BOX::setIntxVMFlag,
VmFlagTest.WHITE_BOX::getIntxVMFlag);
+ VmFlagTest.runTest(FLAG_DEBUG_NAME, VmFlagTest.WHITE_BOX::getIntxVMFlag);
}
}
--- a/hotspot/test/testlibrary_tests/whitebox/vm_flags/StringTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/test/testlibrary_tests/whitebox/vm_flags/StringTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -35,12 +35,14 @@
public class StringTest {
private static final String FLAG_NAME = "CompileOnly";
+ private static final String FLAG_DEBUG_NAME = "SuppressErrorAt";
private static final String[] TESTS = {"StringTest::*", ""};
public static void main(String[] args) throws Exception {
VmFlagTest.runTest(FLAG_NAME, TESTS,
VmFlagTest.WHITE_BOX::setStringVMFlag,
VmFlagTest.WHITE_BOX::getStringVMFlag);
+ VmFlagTest.runTest(FLAG_DEBUG_NAME, VmFlagTest.WHITE_BOX::getStringVMFlag);
}
}
--- a/hotspot/test/testlibrary_tests/whitebox/vm_flags/UintxTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/test/testlibrary_tests/whitebox/vm_flags/UintxTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -36,6 +36,7 @@
public class UintxTest {
private static final String FLAG_NAME = "VerifyGCStartAt";
+ private static final String FLAG_DEBUG_NAME = "CodeCacheMinimumUseSpace";
private static final Long[] TESTS = {0L, 100L, (long) Integer.MAX_VALUE,
(1L << 32L) - 1L, 1L << 32L};
private static final Long[] EXPECTED_64 = TESTS;
@@ -47,6 +48,7 @@
Platform.is64bit() ? EXPECTED_64 : EXPECTED_32,
VmFlagTest.WHITE_BOX::setUintxVMFlag,
VmFlagTest.WHITE_BOX::getUintxVMFlag);
+ VmFlagTest.runTest(FLAG_DEBUG_NAME, VmFlagTest.WHITE_BOX::getUintxVMFlag);
}
}
--- a/hotspot/test/testlibrary_tests/whitebox/vm_flags/VmFlagTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/hotspot/test/testlibrary_tests/whitebox/vm_flags/VmFlagTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -37,16 +37,18 @@
private final BiConsumer<T, T> test;
private final BiConsumer<String, T> set;
private final Function<String, T> get;
+ private final boolean isPositive;
protected VmFlagTest(String flagName, BiConsumer<String, T> set,
Function<String, T> get, boolean isPositive) {
this.flagName = flagName;
this.set = set;
this.get = get;
+ this.isPositive = isPositive;
if (isPositive) {
- test = this::testPositive;
+ test = this::testWritePositive;
} else {
- test = this::testNegative;
+ test = this::testWriteNegative;
}
}
@@ -63,6 +65,10 @@
runTest(existentFlag, tests, tests, set, get);
}
+ protected static <T> void runTest(String existentFlag, Function<String, T> get) {
+ runTest(existentFlag, null, null, null, get);
+ }
+
protected static <T> void runTest(String existentFlag, T[] tests,
T[] results, BiConsumer<String, T> set, Function<String, T> get) {
if (existentFlag != null) {
@@ -72,13 +78,23 @@
}
public final void test(T[] tests, T[] results) {
- Asserts.assertEQ(tests.length, results.length, "[TESTBUG] tests.length != results.length");
- for (int i = 0, n = tests.length ; i < n; ++i) {
- test.accept(tests[i], results[i]);
+ if (isPositive) {
+ testRead();
+ }
+ if (tests != null) {
+ Asserts.assertEQ(tests.length, results.length, "[TESTBUG] tests.length != results.length");
+ for (int i = 0, n = tests.length ; i < n; ++i) {
+ test.accept(tests[i], results[i]);
+ }
}
}
protected String getVMOptionAsString() {
+ if (WHITE_BOX.isConstantVMFlag(flagName) || WHITE_BOX.isLockedVMFlag(flagName)) {
+ // JMM cannot access debug flags in product builds or locked flags,
+ // use whitebox methods to get such flags value.
+ return asString(getValue());
+ }
HotSpotDiagnosticMXBean diagnostic
= ManagementFactoryHelper.getDiagnosticMXBean();
VMOption tmp;
@@ -90,18 +106,24 @@
return tmp == null ? null : tmp.getValue();
}
- private void testPositive(T value, T expected) {
- String oldValue = getVMOptionAsString();
- Asserts.assertEQ(oldValue, asString(getValue()));
- Asserts.assertEQ(oldValue, asString(WHITE_BOX.getVMFlag(flagName)));
- setNewValue(value);
- String newValue = getVMOptionAsString();
- Asserts.assertEQ(newValue, asString(expected));
- Asserts.assertEQ(newValue, asString(getValue()));
- Asserts.assertEQ(newValue, asString(WHITE_BOX.getVMFlag(flagName)));
+ private String testRead() {
+ String value = getVMOptionAsString();
+ Asserts.assertNotNull(value);
+ Asserts.assertEQ(value, asString(getValue()));
+ Asserts.assertEQ(value, asString(WHITE_BOX.getVMFlag(flagName)));
+ return value;
}
- private void testNegative(T value, T expected) {
+ private void testWritePositive(T value, T expected) {
+ setNewValue(value);
+ String newValue = testRead();
+ Asserts.assertEQ(newValue, asString(expected));
+ }
+
+ private void testWriteNegative(T value, T expected) {
+ // Should always return false for non-existing flags
+ Asserts.assertFalse(WHITE_BOX.isConstantVMFlag(flagName));
+ Asserts.assertFalse(WHITE_BOX.isLockedVMFlag(flagName));
String oldValue = getVMOptionAsString();
Asserts.assertEQ(oldValue, asString(getValue()));
Asserts.assertEQ(oldValue, asString(WHITE_BOX.getVMFlag(flagName)));
@@ -114,4 +136,3 @@
return value == null ? null : "" + value;
}
}
-
--- a/jaxp/.hgtags Fri Oct 31 09:37:17 2014 -0700
+++ b/jaxp/.hgtags Fri Oct 31 18:18:58 2014 +0000
@@ -279,3 +279,4 @@
6b343b9b7a7008f5f699a2d99881163cab7a2986 jdk9-b34
b9370464572fc663a38956047aa612d6e7854c3d jdk9-b35
61b4c9acaa58e482db6601ec5dc4fc3d2d8dbb55 jdk9-b36
+48e4ec70cc1c8651e4a0324d91f193c4edd83af9 jdk9-b37
--- a/jaxp/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/io/UTF8Reader.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jaxp/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/io/UTF8Reader.java Fri Oct 31 18:18:58 2014 +0000
@@ -529,6 +529,16 @@
invalidByte(4, 4, b2);
}
+ // check if output buffer is large enough to hold 2 surrogate chars
+ if (out + 1 >= ch.length) {
+ fBuffer[0] = (byte)b0;
+ fBuffer[1] = (byte)b1;
+ fBuffer[2] = (byte)b2;
+ fBuffer[3] = (byte)b3;
+ fOffset = 4;
+ return out - offset;
+ }
+
// decode bytes into surrogate characters
int uuuuu = ((b0 << 2) & 0x001C) | ((b1 >> 4) & 0x0003);
if (uuuuu > 0x10) {
--- a/jaxws/.hgtags Fri Oct 31 09:37:17 2014 -0700
+++ b/jaxws/.hgtags Fri Oct 31 18:18:58 2014 +0000
@@ -282,3 +282,4 @@
28ea43d925f1e5250976097a2977dd3e66e11f0b jdk9-b34
afe0c89e2edbdfb1a7ceff3d9b3ff46c4186202f jdk9-b35
84803c3be7f79d29c7dc40749d7743675f64107a jdk9-b36
+90de6ecbff46386a3f9d6f7ca876e7aa6381f50a jdk9-b37
--- a/jdk/.hgtags Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/.hgtags Fri Oct 31 18:18:58 2014 +0000
@@ -279,3 +279,4 @@
21568031434d7a9dbb0cc6516cc3183d349c2253 jdk9-b34
e549291a0227031310fa91c574891f892d27f959 jdk9-b35
cdcf2e599e42935c2d1d19a24bb19e808aeb43b5 jdk9-b36
+27c3345d6dce39a22c262f30bb1f0e0b00c3709e jdk9-b37
--- a/jdk/make/copy/Copy-java.base.gmk Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/make/copy/Copy-java.base.gmk Fri Oct 31 18:18:58 2014 +0000
@@ -48,22 +48,6 @@
################################################################################
-CALENDARS_SRC := $(JDK_TOPDIR)/src/java.base/share/conf
-
-$(LIB_DST_DIR)/calendars.properties: $(CALENDARS_SRC)/calendars.properties
- $(call install-file)
-
-BASE_CONF_FILES += $(LIB_DST_DIR)/calendars.properties
-
-$(LIB_DST_DIR)/hijrah-config-umalqura.properties: $(CALENDARS_SRC)/hijrah-config-umalqura.properties
- $(MKDIR) -p $(@D)
- $(RM) $@
- $(CP) $< $@
-
-BASE_CONF_FILES += $(LIB_DST_DIR)/hijrah-config-umalqura.properties
-
-################################################################################
-
ifneq ($(findstring $(OPENJDK_TARGET_OS), windows aix),)
TZMAPPINGS_SRC := $(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS)/conf
--- a/jdk/make/copy/Copy-java.desktop.gmk Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/make/copy/Copy-java.desktop.gmk Fri Oct 31 18:18:58 2014 +0000
@@ -67,8 +67,11 @@
FREETYPE_TARGET_LIB := $(JDK_OUTPUTDIR)/lib$(OPENJDK_TARGET_CPU_LIBDIR)/$(call SHARED_LIBRARY,freetype).6
endif
+ # We can't use $(install-file) in this rule because it preserves symbolic links and
+ # libfreetype.so is usually a symbolic link to something like libfreetype.so.6 on Unix.
$(FREETYPE_TARGET_LIB): $(FREETYPE_BUNDLE_LIB_PATH)/$(call SHARED_LIBRARY,freetype)
- $(install-file)
+ $(MKDIR) -p $(@D)
+ $(CP) $< $@
ifeq ($(OPENJDK_BUILD_OS), windows)
$(CHMOD) +rx $@
endif
--- a/jdk/make/data/tzdata/VERSION Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/make/data/tzdata/VERSION Fri Oct 31 18:18:58 2014 +0000
@@ -21,4 +21,4 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
-tzdata2014g
+tzdata2014i
--- a/jdk/make/data/tzdata/africa Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/make/data/tzdata/africa Fri Oct 31 18:18:58 2014 +0000
@@ -133,23 +133,13 @@
# See Africa/Lagos.
# Botswana
-# From Paul Eggert (2013-02-21):
-# Milne says they were regulated by the Cape Town Signal in 1899;
-# assume they switched to 2:00 when Cape Town did.
-# Zone NAME GMTOFF RULES FORMAT [UNTIL]
-Zone Africa/Gaborone 1:43:40 - LMT 1885
- 1:30 - SAST 1903 Mar
- 2:00 - CAT 1943 Sep 19 2:00
- 2:00 1:00 CAST 1944 Mar 19 2:00
- 2:00 - CAT
+# See Africa/Maputo.
# Burkina Faso
# See Africa/Abidjan.
# Burundi
-# Zone NAME GMTOFF RULES FORMAT [UNTIL]
-Zone Africa/Bujumbura 1:57:28 - LMT 1890
- 2:00 - CAT
+# See Africa/Maputo.
# Cameroon
# See Africa/Lagos.
@@ -184,10 +174,7 @@
3:00 - EAT
# Democratic Republic of the Congo
-# Zone NAME GMTOFF RULES FORMAT [UNTIL]
-Zone Africa/Lubumbashi 1:49:52 - LMT 1897 Nov 9
- 2:00 - CAT
-# The above is for the eastern part; see Africa/Lagos for the western part.
+# See Africa/Lagos for the western part and Africa/Maputo for the eastern.
# Republic of the Congo
# See Africa/Lagos.
@@ -339,7 +326,7 @@
# Egypt is to change back to Daylight system on May 15
# http://english.ahram.org.eg/NewsContent/1/64/100735/Egypt/Politics-/Egypts-government-to-reapply-daylight-saving-time-.aspx
-# From Gunther Vermier (2015-05-13):
+# From Gunther Vermier (2014-05-13):
# our Egypt office confirms that the change will be at 15 May "midnight" (24:00)
# From Imed Chihi (2014-06-04):
@@ -489,11 +476,7 @@
3:00 - EAT
# Lesotho
-# Zone NAME GMTOFF RULES FORMAT [UNTIL]
-Zone Africa/Maseru 1:50:00 - LMT 1903 Mar
- 2:00 - SAST 1943 Sep 19 2:00
- 2:00 1:00 SAST 1944 Mar 19 2:00
- 2:00 - SAST
+# See Africa/Johannesburg.
# Liberia
# From Paul Eggert (2006-03-22):
@@ -575,9 +558,7 @@
3:00 - EAT
# Malawi
-# Zone NAME GMTOFF RULES FORMAT [UNTIL]
-Zone Africa/Blantyre 2:20:00 - LMT 1903 Mar
- 2:00 - CAT
+# See Africa/Maputo.
# Mali
# Mauritania
@@ -987,6 +968,13 @@
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Africa/Maputo 2:10:20 - LMT 1903 Mar
2:00 - CAT
+Link Africa/Maputo Africa/Blantyre # Malawi
+Link Africa/Maputo Africa/Bujumbura # Burundi
+Link Africa/Maputo Africa/Gaborone # Botswana
+Link Africa/Maputo Africa/Harare # Zimbabwe
+Link Africa/Maputo Africa/Kigali # Rwanda
+Link Africa/Maputo Africa/Lubumbashi # E Dem. Rep. of Congo
+Link Africa/Maputo Africa/Lusaka # Zambia
# Namibia
# The 1994-04-03 transition is from Shanks & Pottenger.
@@ -1054,9 +1042,7 @@
# Tromelin - inhabited until at least 1958
# Rwanda
-# Zone NAME GMTOFF RULES FORMAT [UNTIL]
-Zone Africa/Kigali 2:00:16 - LMT 1935 Jun
- 2:00 - CAT
+# See Africa/Maputo.
# St Helena
# See Africa/Abidjan.
@@ -1100,6 +1086,9 @@
Zone Africa/Johannesburg 1:52:00 - LMT 1892 Feb 8
1:30 - SAST 1903 Mar
2:00 SA SAST
+Link Africa/Johannesburg Africa/Maseru # Lesotho
+Link Africa/Johannesburg Africa/Mbabane # Swaziland
+#
# Marion and Prince Edward Is
# scientific station since 1947
# no information
@@ -1127,9 +1116,7 @@
Link Africa/Khartoum Africa/Juba
# Swaziland
-# Zone NAME GMTOFF RULES FORMAT [UNTIL]
-Zone Africa/Mbabane 2:04:24 - LMT 1903 Mar
- 2:00 - SAST
+# See Africa/Johannesburg.
# Tanzania
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
@@ -1250,11 +1237,5 @@
3:00 - EAT
# Zambia
-# Zone NAME GMTOFF RULES FORMAT [UNTIL]
-Zone Africa/Lusaka 1:53:08 - LMT 1903 Mar
- 2:00 - CAT
-
# Zimbabwe
-# Zone NAME GMTOFF RULES FORMAT [UNTIL]
-Zone Africa/Harare 2:04:12 - LMT 1903 Mar
- 2:00 - CAT
+# See Africa/Maputo.
--- a/jdk/make/data/tzdata/asia Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/make/data/tzdata/asia Fri Oct 31 18:18:58 2014 +0000
@@ -70,10 +70,11 @@
# 3:30 IRST IRDT Iran
# 4:00 GST Gulf*
# 5:30 IST India
-# 7:00 ICT Indochina*
+# 7:00 ICT Indochina, most times and locations*
# 7:00 WIB west Indonesia (Waktu Indonesia Barat)
# 8:00 WITA central Indonesia (Waktu Indonesia Tengah)
# 8:00 CST China
+# 8:00 IDT Indochina, 1943-45, 1947-55, 1960-75 (some locations)*
# 8:00 JWST Western Standard Time (Japan, 1896/1937)*
# 9:00 JCST Central Standard Time (Japan, 1896/1937)
# 9:00 WIT east Indonesia (Waktu Indonesia Timur)
@@ -294,12 +295,8 @@
6:30 - MMT # Myanmar Time
# Cambodia
-# Zone NAME GMTOFF RULES FORMAT [UNTIL]
-Zone Asia/Phnom_Penh 6:59:40 - LMT 1906 Jun 9
- 7:06:20 - SMT 1911 Mar 11 0:01 # Saigon MT?
- 7:00 - ICT 1912 May
- 8:00 - ICT 1931 May
- 7:00 - ICT
+# See Asia/Bangkok.
+
# China
@@ -916,6 +913,10 @@
# Indonesia
#
+# From Paul Eggert (2014-09-06):
+# The 1876 Report of the Secretary of the [US] Navy, p 306 says that Batavia
+# civil time was 7:07:12.5; round to even for Jakarta.
+#
# From Gwillim Law (2001-05-28), overriding Shanks & Pottenger:
# http://www.sumatera-inc.com/go_to_invest/about_indonesia.asp#standtime
# says that Indonesia's time zones changed on 1988-01-01. Looking at some
@@ -1733,12 +1734,8 @@
3:00 - AST
# Laos
-# Zone NAME GMTOFF RULES FORMAT [UNTIL]
-Zone Asia/Vientiane 6:50:24 - LMT 1906 Jun 9 # or Viangchan
- 7:06:20 - SMT 1911 Mar 11 0:01 # Saigon MT?
- 7:00 - ICT 1912 May
- 8:00 - ICT 1931 May
- 7:00 - ICT
+# See Asia/Bangkok.
+
# Lebanon
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
@@ -2751,6 +2748,8 @@
Zone Asia/Bangkok 6:42:04 - LMT 1880
6:42:04 - BMT 1920 Apr # Bangkok Mean Time
7:00 - ICT
+Link Asia/Bangkok Asia/Phnom_Penh # Cambodia
+Link Asia/Bangkok Asia/Vientiane # Laos
# Turkmenistan
# From Shanks & Pottenger.
@@ -2788,22 +2787,65 @@
# Vietnam
-# From Paul Eggert (2013-02-21):
+# From Paul Eggert (2014-10-04):
# Milne gives 7:16:56 for the meridian of Saigon in 1899, as being
# used in Lower Laos, Cambodia, and Annam. But this is quite a ways
# from Saigon's location. For now, ignore this and stick with Shanks
-# and Pottenger.
+# and Pottenger for LMT before 1906.
# From Arthur David Olson (2008-03-18):
# The English-language name of Vietnam's most populous city is "Ho Chi Minh
# City"; use Ho_Chi_Minh below to avoid a name of more than 14 characters.
-# From Shanks & Pottenger:
+# From Paul Eggert (2014-10-21) after a heads-up from Trần Ngọc Quân:
+# Trần Tiến Bình's authoritative book "Lịch Việt Nam: thế kỷ XX-XXI (1901-2100)"
+# (Nhà xuất bản Văn Hoá - Thông Tin, Hanoi, 2005), pp 49-50,
+# is quoted verbatim in:
+# http://www.thoigian.com.vn/?mPage=P80D01
+# is translated by Brian Inglis in:
+# http://mm.icann.org/pipermail/tz/2014-October/021654.html
+# and is the basis for the information below.
+#
+# The 1906 transition was effective July 1 and standardized Indochina to
+# Phù Liễn Observatory, legally 104 deg. 17'17" east of Paris.
+# It's unclear whether this meant legal Paris Mean Time (00:09:21) or
+# the Paris Meridian (2 deg. 20'14.03" E); the former yields 07:06:30.1333...
+# and the latter 07:06:29.333... so either way it rounds to 07:06:30,
+# which is used below even though the modern-day Phù Liễn Observatory
+# is closer to 07:06:31. Abbreviate Phù Liễn Mean Time as PLMT.
+#
+# The following transitions occurred in Indochina in general (before 1954)
+# and in South Vietnam in particular (after 1954):
+# To 07:00 on 1911-05-01.
+# To 08:00 on 1942-12-31 at 23:00.
+# To 09:00 in 1945-03-14 at 23:00.
+# To 07:00 on 1945-09-02 in Vietnam.
+# To 08:00 on 1947-04-01 in French-controlled Indochina.
+# To 07:00 on 1955-07-01 in South Vietnam.
+# To 08:00 on 1959-12-31 at 23:00 in South Vietnam.
+# To 07:00 on 1975-06-13 in South Vietnam.
+#
+# Trần cites the following sources; it's unclear which supplied the info above.
+#
+# Hoàng Xuân Hãn: "Lịch và lịch Việt Nam". Tập san Khoa học Xã hội,
+# No. 9, Paris, February 1982.
+#
+# Lê Thành Lân: "Lịch và niên biểu lịch sử hai mươi thế kỷ (0001-2010)",
+# NXB Thống kê, Hanoi, 2000.
+#
+# Lê Thành Lân: "Lịch hai thế kỷ (1802-2010) và các lịch vĩnh cửu",
+# NXB Thuận Hoá, Huế, 1995.
+
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
-Zone Asia/Ho_Chi_Minh 7:06:40 - LMT 1906 Jun 9
- 7:06:20 - SMT 1911 Mar 11 0:01 # Saigon MT?
- 7:00 - ICT 1912 May
- 8:00 - ICT 1931 May
+Zone Asia/Ho_Chi_Minh 7:06:40 - LMT 1906 Jul 1
+ 7:06:30 - PLMT 1911 May 1
+ 7:00 - ICT 1942 Dec 31 23:00
+ 8:00 - IDT 1945 Mar 14 23:00
+ 9:00 - JST 1945 Sep 2
+ 7:00 - ICT 1947 Apr 1
+ 8:00 - IDT 1955 Jul 1
+ 7:00 - ICT 1959 Dec 31 23:00
+ 8:00 - IDT 1975 Jun 13
7:00 - ICT
# Yemen
--- a/jdk/make/data/tzdata/australasia Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/make/data/tzdata/australasia Fri Oct 31 18:18:58 2014 +0000
@@ -354,20 +354,27 @@
# Fiji will end DST on 2014-01-19 02:00:
# http://www.fiji.gov.fj/Media-Center/Press-Releases/DAYLIGHT-SAVINGS-TO-END-THIS-MONTH-%281%29.aspx
-# From Paul Eggert (2014-01-10):
-# For now, guess that Fiji springs forward the Sunday before the fourth
-# Monday in October, and springs back the penultimate Sunday in January.
-# This is ad hoc, but matches recent practice.
+# From Ken Rylander (2014-10-20):
+# DST will start Nov. 2 this year.
+# http://www.fiji.gov.fj/Media-Center/Press-Releases/DAYLIGHT-SAVING-STARTS-ON-SUNDAY,-NOVEMBER-2ND.aspx
+
+# From Paul Eggert (2014-10-20):
+# For now, guess DST from 02:00 the first Sunday in November to
+# 03:00 the first Sunday on or after January 18. Although ad hoc, it
+# matches this year's plan and seems more likely to match future
+# practice than guessing no DST.
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 S
Rule Fiji 1999 2000 - Feb lastSun 3:00 0 -
Rule Fiji 2009 only - Nov 29 2:00 1:00 S
Rule Fiji 2010 only - Mar lastSun 3:00 0 -
-Rule Fiji 2010 max - Oct Sun>=21 2:00 1:00 S
+Rule Fiji 2010 2013 - Oct Sun>=21 2:00 1:00 S
Rule Fiji 2011 only - Mar Sun>=1 3:00 0 -
Rule Fiji 2012 2013 - Jan Sun>=18 3:00 0 -
-Rule Fiji 2014 max - Jan Sun>=18 2:00 0 -
+Rule Fiji 2014 only - Jan Sun>=18 2:00 0 -
+Rule Fiji 2014 max - Nov Sun>=1 2:00 1:00 S
+Rule Fiji 2015 max - Jan Sun>=18 3:00 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Pacific/Fiji 11:55:44 - LMT 1915 Oct 26 # Suva
12:00 Fiji FJ%sT # Fiji Time
@@ -542,6 +549,30 @@
Zone Pacific/Port_Moresby 9:48:40 - LMT 1880
9:48:32 - PMMT 1895 # Port Moresby Mean Time
10:00 - PGT # Papua New Guinea Time
+#
+# From Paul Eggert (2014-10-13):
+# Base the Bougainville entry on the Arawa-Kieta region, which appears to have
+# the most people even though it was devastated in the Bougainville Civil War.
+#
+# Although Shanks gives 1942-03-15 / 1943-11-01 for JST, these dates
+# are apparently rough guesswork from the starts of military campaigns.
+# The World War II entries below are instead based on Arawa-Kieta.
+# The Japanese occupied Kieta in July 1942,
+# according to the Pacific War Online Encyclopedia
+# http://pwencycl.kgbudge.com/B/o/Bougainville.htm
+# and seem to have controlled it until their 1945-08-21 surrender.
+#
+# The Autonomous Region of Bougainville plans to switch from UTC+10 to UTC+11
+# on 2014-12-28 at 02:00. They call UTC+11 "Bougainville Standard Time";
+# abbreviate this as BST. See:
+# http://www.bougainville24.com/bougainville-issues/bougainville-gets-own-timezone/
+#
+Zone Pacific/Bougainville 10:22:16 - LMT 1880
+ 9:48:32 - PMMT 1895
+ 10:00 - PGT 1942 Jul
+ 9:00 - JST 1945 Aug 21
+ 10:00 - PGT 2014 Dec 28 2:00
+ 11:00 - BST
# Pitcairn
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
@@ -826,6 +857,7 @@
# 10:00 AEST AEDT Eastern Australia
# 10:00 ChST Chamorro
# 10:30 LHST LHDT Lord Howe*
+# 11:00 BST Bougainville*
# 11:30 NZMT NZST New Zealand through 1945
# 12:00 NZST NZDT New Zealand 1946-present
# 12:15 CHAST Chatham through 1945*
--- a/jdk/make/data/tzdata/europe Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/make/data/tzdata/europe Fri Oct 31 18:18:58 2014 +0000
@@ -91,10 +91,11 @@
# 0:00 WET WEST WEMT Western Europe
# 0:19:32.13 AMT NST Amsterdam, Netherlands Summer (1835-1937)*
# 0:20 NET NEST Netherlands (1937-1940)*
+# 1:00 BST British Standard (1968-1971)
# 1:00 CET CEST CEMT Central Europe
# 1:00:14 SET Swedish (1879-1899)*
# 2:00 EET EEST Eastern Europe
-# 3:00 FET Further-eastern Europe*
+# 3:00 FET Further-eastern Europe (2011-2014)*
# 3:00 MSK MSD MSM* Moscow
# From Peter Ilieve (1994-12-04),
@@ -746,6 +747,13 @@
# http://www.belta.by/ru/all_news/society/V-Belarusi-otmenjaetsja-perexod-na-sezonnoe-vremja_i_572952.html
# http://naviny.by/rubrics/society/2011/09/16/ic_articles_116_175144/
# http://news.tut.by/society/250578.html
+#
+# From Alexander Bokovoy (2014-10-09):
+# Belarussian government decided against changing to winter time....
+# http://eng.belta.by/all_news/society/Belarus-decides-against-adjusting-time-in-Russias-wake_i_76335.html
+# From Paul Eggert (2014-10-08):
+# Hence Belarus can share time zone abbreviations with Moscow again.
+#
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Europe/Minsk 1:50:16 - LMT 1880
1:50 - MMT 1924 May 2 # Minsk Mean Time
@@ -758,7 +766,8 @@
2:00 - EET 1992 Mar 29 0:00s
2:00 1:00 EEST 1992 Sep 27 0:00s
2:00 Russia EE%sT 2011 Mar 27 2:00s
- 3:00 - FET
+ 3:00 - FET 2014 Oct 26 1:00s
+ 3:00 - MSK
# Belgium
#
@@ -2524,7 +2533,7 @@
# The Kemerovo region will remain at UTC+7 through the 2014-10-26 change, thus
# realigning itself with KRAT.
-Zone Asia/Novokuznetsk 5:48:48 - NMT 1920 Jan 6
+Zone Asia/Novokuznetsk 5:48:48 - LMT 1924 May 1
6:00 - KRAT 1930 Jun 21 # Krasnoyarsk Time
7:00 Russia KRA%sT 1991 Mar 31 2:00s
6:00 Russia KRA%sT 1992 Jan 19 2:00s
--- a/jdk/make/data/tzdata/northamerica Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/make/data/tzdata/northamerica Fri Oct 31 18:18:58 2014 +0000
@@ -300,6 +300,12 @@
# time zone, but we do go by the Eastern time zone because so many people work
# in Columbus."
+# From Paul Eggert (2014-09-06):
+# Monthly Notices of the Royal Astronomical Society 44, 4 (1884-02-08), 208
+# says that New York City Hall time was 3 minutes 58.4 seconds fast of
+# Eastern time (i.e., -4:56:01.6) just before the 1883 switch. Round to the
+# nearest second.
+
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
Rule NYC 1920 only - Mar lastSun 2:00 1:00 D
Rule NYC 1920 only - Oct lastSun 2:00 0 S
@@ -1118,17 +1124,16 @@
# An amendment to the Interpretation Act was registered on February 19/2007....
# http://action.attavik.ca/home/justice-gn/attach/2007/gaz02part2.pdf
-# From Paul Eggert (2006-04-25):
+# From Paul Eggert (2014-10-18):
# H. David Matthews and Mary Vincent's map
# "It's about TIME", _Canadian Geographic_ (September-October 1998)
-# http://www.canadiangeographic.ca/Magazine/SO98/geomap.asp
+# http://www.canadiangeographic.ca/Magazine/SO98/alacarte.asp
# contains detailed boundaries for regions observing nonstandard
# time and daylight saving time arrangements in Canada circa 1998.
#
-# INMS, the Institute for National Measurement Standards in Ottawa, has
-# information about standard and daylight saving time zones in Canada.
-# http://inms-ienm.nrc-cnrc.gc.ca/en/time_services/daylight_saving_e.php
-# (updated periodically).
+# National Research Council Canada maintains info about time zones and DST.
+# http://www.nrc-cnrc.gc.ca/eng/services/time/time_zones.html
+# http://www.nrc-cnrc.gc.ca/eng/services/time/faq/index.html#Q5
# Its unofficial information is often taken from Matthews and Vincent.
# From Paul Eggert (2006-06-27):
@@ -1993,10 +1998,7 @@
# [Also see <http://www.nunatsiaq.com/nunavut/nvt10309_06.html> (2001-03-09).]
# From Gwillim Law (2005-05-21):
-# According to maps at
-# http://inms-ienm.nrc-cnrc.gc.ca/images/time_services/TZ01SWE.jpg
-# http://inms-ienm.nrc-cnrc.gc.ca/images/time_services/TZ01SSE.jpg
-# (both dated 2003), and
+# According to ...
# http://www.canadiangeographic.ca/Magazine/SO98/geomap.asp
# (from a 1998 Canadian Geographic article), the de facto and de jure time
# for Southampton Island (at the north end of Hudson Bay) is UTC-5 all year
@@ -2005,9 +2007,11 @@
# predates the creation of Nunavut, it probably goes back many years....
# The Inuktitut name of Coral Harbour is Sallit, but it's rarely used.
#
-# From Paul Eggert (2005-07-26):
+# From Paul Eggert (2014-10-17):
# For lack of better information, assume that Southampton Island observed
-# daylight saving only during wartime.
+# daylight saving only during wartime. Gwillim Law's email also
+# mentioned maps now maintained by National Research Council Canada;
+# see above for an up-to-date link.
# From Chris Walton (2007-03-01):
# ... the community of Resolute (located on Cornwallis Island in
@@ -3008,10 +3012,21 @@
# Shanks & Pottenger give -5:07:12, but Milne records -5:07:10.41 from an
# unspecified official document, and says "This time is used throughout the
# island". Go with Milne. Round to the nearest second as required by zic.
+#
+# Shanks & Pottenger give April 28 for the 1974 spring-forward transition, but
+# Lance Neita writes that Prime Minister Michael Manley decreed it January 5.
+# Assume Neita meant Jan 6 02:00, the same as the US. Neita also writes that
+# Manley's supporters associated this act with Manley's nickname "Joshua"
+# (recall that in the Bible the sun stood still at Joshua's request),
+# and with the Rod of Correction which Manley said he had received from
+# Haile Selassie, Emperor of Ethiopia. See:
+# Neita L. The politician in all of us. Jamaica Observer 2014-09-20
+# http://www.jamaicaobserver.com/columns/The-politician-in-all-of-us_17573647
+#
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone America/Jamaica -5:07:11 - LMT 1890 # Kingston
-5:07:11 - KMT 1912 Feb # Kingston Mean Time
- -5:00 - EST 1974 Apr 28 2:00
+ -5:00 - EST 1974
-5:00 US E%sT 1984
-5:00 - EST
--- a/jdk/make/data/tzdata/zone.tab Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/make/data/tzdata/zone.tab Fri Oct 31 18:18:58 2014 +0000
@@ -330,7 +330,8 @@
PF -1732-14934 Pacific/Tahiti Society Islands
PF -0900-13930 Pacific/Marquesas Marquesas Islands
PF -2308-13457 Pacific/Gambier Gambier Islands
-PG -0930+14710 Pacific/Port_Moresby
+PG -0930+14710 Pacific/Port_Moresby most locations
+PG -0613+15534 Pacific/Bougainville Bougainville
PH +1435+12100 Asia/Manila
PK +2452+06703 Asia/Karachi
PL +5215+02100 Europe/Warsaw
--- a/jdk/make/mapfiles/libjava/mapfile-vers Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/make/mapfiles/libjava/mapfile-vers Fri Oct 31 18:18:58 2014 +0000
@@ -75,6 +75,7 @@
Java_java_io_FileDescriptor_initIDs;
Java_java_io_FileDescriptor_sync;
+ Java_java_io_FileDescriptor_getAppend;
Java_java_io_FileInputStream_available;
Java_java_io_FileInputStream_close0;
Java_java_io_FileInputStream_initIDs;
--- a/jdk/make/profile-includes.txt Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/make/profile-includes.txt Fri Oct 31 18:18:58 2014 +0000
@@ -54,14 +54,12 @@
$(OPENJDK_TARGET_CPU_LEGACY_LIB)/server/$(LIBRARY_PREFIX)jvm$(SHARED_LIBRARY_SUFFIX) \
$(OPENJDK_TARGET_CPU_LEGACY_LIB)/server/$(LIBRARY_PREFIX)jvm.diz \
$(OPENJDK_TARGET_CPU_LEGACY_LIB)/server/Xusage.txt \
- calendars.properties \
classlist \
ext/localedata.jar \
ext/meta-index \
ext/sunec.jar \
ext/sunjce_provider.jar \
ext/sunpkcs11.jar \
- hijrah-config-umalqura.properties \
jce.jar \
jsse.jar \
logging.properties \
--- a/jdk/src/java.base/share/classes/java/io/File.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/share/classes/java/io/File.java Fri Oct 31 18:18:58 2014 +0000
@@ -1588,7 +1588,7 @@
/**
* A convenience method to set the owner's read permission for this abstract
* pathname. On some platforms it may be possible to start the Java virtual
- * machine with special privileges that allow it to read files that that are
+ * machine with special privileges that allow it to read files that are
* marked as unreadable.
*
* <p>An invocation of this method of the form <tt>file.setReadable(arg)</tt>
--- a/jdk/src/java.base/share/classes/java/io/FileOutputStream.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/share/classes/java/io/FileOutputStream.java Fri Oct 31 18:18:58 2014 +0000
@@ -26,6 +26,8 @@
package java.io;
import java.nio.channels.FileChannel;
+import sun.misc.SharedSecrets;
+import sun.misc.JavaIOFileDescriptorAccess;
import sun.nio.ch.FileChannelImpl;
@@ -53,16 +55,17 @@
class FileOutputStream extends OutputStream
{
/**
+ * Access to FileDescriptor internals.
+ */
+ private static final JavaIOFileDescriptorAccess fdAccess =
+ SharedSecrets.getJavaIOFileDescriptorAccess();
+
+ /**
* The system dependent file descriptor.
*/
private final FileDescriptor fd;
/**
- * True if the file is opened for append.
- */
- private final boolean append;
-
- /**
* The associated channel, initialized lazily.
*/
private FileChannel channel;
@@ -207,7 +210,6 @@
}
this.fd = new FileDescriptor();
fd.attach(this);
- this.append = append;
this.path = name;
open(name, append);
@@ -245,7 +247,6 @@
security.checkWrite(fdObj);
}
this.fd = fdObj;
- this.append = false;
this.path = null;
fd.attach(this);
@@ -287,7 +288,7 @@
* @exception IOException if an I/O error occurs.
*/
public void write(int b) throws IOException {
- write(b, append);
+ write(b, fdAccess.getAppend(fd));
}
/**
@@ -310,7 +311,7 @@
* @exception IOException if an I/O error occurs.
*/
public void write(byte b[]) throws IOException {
- writeBytes(b, 0, b.length, append);
+ writeBytes(b, 0, b.length, fdAccess.getAppend(fd));
}
/**
@@ -323,7 +324,7 @@
* @exception IOException if an I/O error occurs.
*/
public void write(byte b[], int off, int len) throws IOException {
- writeBytes(b, off, len, append);
+ writeBytes(b, off, len, fdAccess.getAppend(fd));
}
/**
@@ -395,7 +396,7 @@
public FileChannel getChannel() {
synchronized (this) {
if (channel == null) {
- channel = FileChannelImpl.open(fd, path, false, true, append, this);
+ channel = FileChannelImpl.open(fd, path, false, true, this);
}
return channel;
}
--- a/jdk/src/java.base/share/classes/java/lang/invoke/DelegatingMethodHandle.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/share/classes/java/lang/invoke/DelegatingMethodHandle.java Fri Oct 31 18:18:58 2014 +0000
@@ -44,6 +44,10 @@
super(type, chooseDelegatingForm(target));
}
+ protected DelegatingMethodHandle(MethodType type, LambdaForm form) {
+ super(type, form);
+ }
+
/** Define this to extract the delegated target which supplies the invocation behavior. */
abstract protected MethodHandle getTarget();
@@ -88,14 +92,31 @@
return makeReinvokerForm(target, MethodTypeForm.LF_DELEGATE, DelegatingMethodHandle.class, NF_getTarget);
}
+ static LambdaForm makeReinvokerForm(MethodHandle target,
+ int whichCache,
+ Object constraint,
+ NamedFunction getTargetFn) {
+ String debugString;
+ switch(whichCache) {
+ case MethodTypeForm.LF_REBIND: debugString = "BMH.reinvoke"; break;
+ case MethodTypeForm.LF_DELEGATE: debugString = "MH.delegate"; break;
+ default: debugString = "MH.reinvoke"; break;
+ }
+ // No pre-action needed.
+ return makeReinvokerForm(target, whichCache, constraint, debugString, true, getTargetFn, null);
+ }
/** Create a LF which simply reinvokes a target of the given basic type. */
static LambdaForm makeReinvokerForm(MethodHandle target,
int whichCache,
Object constraint,
- NamedFunction getTargetFn) {
+ String debugString,
+ boolean forceInline,
+ NamedFunction getTargetFn,
+ NamedFunction preActionFn) {
MethodType mtype = target.type().basicType();
boolean customized = (whichCache < 0 ||
mtype.parameterSlotCount() > MethodType.MAX_MH_INVOKER_ARITY);
+ boolean hasPreAction = (preActionFn != null);
LambdaForm form;
if (!customized) {
form = mtype.form().cachedLambdaForm(whichCache);
@@ -105,12 +126,16 @@
final int ARG_BASE = 1;
final int ARG_LIMIT = ARG_BASE + mtype.parameterCount();
int nameCursor = ARG_LIMIT;
+ final int PRE_ACTION = hasPreAction ? nameCursor++ : -1;
final int NEXT_MH = customized ? -1 : nameCursor++;
final int REINVOKE = nameCursor++;
LambdaForm.Name[] names = LambdaForm.arguments(nameCursor - ARG_LIMIT, mtype.invokerType());
assert(names.length == nameCursor);
names[THIS_DMH] = names[THIS_DMH].withConstraint(constraint);
Object[] targetArgs;
+ if (hasPreAction) {
+ names[PRE_ACTION] = new LambdaForm.Name(preActionFn, names[THIS_DMH]);
+ }
if (customized) {
targetArgs = Arrays.copyOfRange(names, ARG_BASE, ARG_LIMIT, Object[].class);
names[REINVOKE] = new LambdaForm.Name(target, targetArgs); // the invoker is the target itself
@@ -120,20 +145,14 @@
targetArgs[0] = names[NEXT_MH]; // overwrite this MH with next MH
names[REINVOKE] = new LambdaForm.Name(mtype, targetArgs);
}
- String debugString;
- switch(whichCache) {
- case MethodTypeForm.LF_REBIND: debugString = "BMH.reinvoke"; break;
- case MethodTypeForm.LF_DELEGATE: debugString = "MH.delegate"; break;
- default: debugString = "MH.reinvoke"; break;
- }
- form = new LambdaForm(debugString, ARG_LIMIT, names);
+ form = new LambdaForm(debugString, ARG_LIMIT, names, forceInline);
if (!customized) {
form = mtype.form().setCachedLambdaForm(whichCache, form);
}
return form;
}
- private static final NamedFunction NF_getTarget;
+ static final NamedFunction NF_getTarget;
static {
try {
NF_getTarget = new NamedFunction(DelegatingMethodHandle.class
--- a/jdk/src/java.base/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java Fri Oct 31 18:18:58 2014 +0000
@@ -628,8 +628,13 @@
// Mark this method as a compiled LambdaForm
mv.visitAnnotation("Ljava/lang/invoke/LambdaForm$Compiled;", true);
- // Force inlining of this invoker method.
- mv.visitAnnotation("Ljava/lang/invoke/ForceInline;", true);
+ if (lambdaForm.forceInline) {
+ // Force inlining of this invoker method.
+ mv.visitAnnotation("Ljava/lang/invoke/ForceInline;", true);
+ } else {
+ mv.visitAnnotation("Ljava/lang/invoke/DontInline;", true);
+ }
+
// iterate over the form's names, generating bytecode instructions for each
// start iterating at the first name following the arguments
--- a/jdk/src/java.base/share/classes/java/lang/invoke/LambdaForm.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/share/classes/java/lang/invoke/LambdaForm.java Fri Oct 31 18:18:58 2014 +0000
@@ -119,6 +119,7 @@
class LambdaForm {
final int arity;
final int result;
+ final boolean forceInline;
@Stable final Name[] names;
final String debugName;
MemberName vmentry; // low-level behavior, or null if not yet prepared
@@ -243,11 +244,16 @@
LambdaForm(String debugName,
int arity, Name[] names, int result) {
+ this(debugName, arity, names, result, true);
+ }
+ LambdaForm(String debugName,
+ int arity, Name[] names, int result, boolean forceInline) {
assert(namesOK(arity, names));
this.arity = arity;
this.result = fixResult(result, names);
this.names = names.clone();
this.debugName = fixDebugName(debugName);
+ this.forceInline = forceInline;
int maxOutArity = normalize();
if (maxOutArity > MethodType.MAX_MH_INVOKER_ARITY) {
// Cannot use LF interpreter on very high arity expressions.
@@ -255,17 +261,23 @@
compileToBytecode();
}
}
-
LambdaForm(String debugName,
int arity, Name[] names) {
- this(debugName,
- arity, names, LAST_RESULT);
+ this(debugName, arity, names, LAST_RESULT, true);
}
-
+ LambdaForm(String debugName,
+ int arity, Name[] names, boolean forceInline) {
+ this(debugName, arity, names, LAST_RESULT, forceInline);
+ }
LambdaForm(String debugName,
Name[] formals, Name[] temps, Name result) {
this(debugName,
- formals.length, buildNames(formals, temps, result), LAST_RESULT);
+ formals.length, buildNames(formals, temps, result), LAST_RESULT, true);
+ }
+ LambdaForm(String debugName,
+ Name[] formals, Name[] temps, Name result, boolean forceInline) {
+ this(debugName,
+ formals.length, buildNames(formals, temps, result), LAST_RESULT, forceInline);
}
private static Name[] buildNames(Name[] formals, Name[] temps, Name result) {
@@ -279,6 +291,10 @@
}
private LambdaForm(String sig) {
+ this(sig, true);
+ }
+
+ private LambdaForm(String sig, boolean forceInline) {
// Make a blank lambda form, which returns a constant zero or null.
// It is used as a template for managing the invocation of similar forms that are non-empty.
// Called only from getPreparedForm.
@@ -287,6 +303,7 @@
this.result = (signatureReturn(sig) == V_TYPE ? -1 : arity);
this.names = buildEmptyNames(arity, sig);
this.debugName = "LF.zero";
+ this.forceInline = forceInline;
assert(nameRefsAreLegal());
assert(isEmpty());
assert(sig.equals(basicTypeSignature())) : sig + " != " + basicTypeSignature();
--- a/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandle.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandle.java Fri Oct 31 18:18:58 2014 +0000
@@ -1438,10 +1438,9 @@
/*non-public*/
void updateForm(LambdaForm newForm) {
if (form == newForm) return;
- assert(this instanceof DirectMethodHandle && this.internalMemberName().isStatic());
- // ISSUE: Should we have a memory fence here?
+ newForm.prepare(); // as in MethodHandle.<init>
UNSAFE.putObject(this, FORM_OFFSET, newForm);
- this.form.prepare(); // as in MethodHandle.<init>
+ UNSAFE.fullFence();
}
private static final long FORM_OFFSET;
--- a/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandleImpl.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandleImpl.java Fri Oct 31 18:18:58 2014 +0000
@@ -30,6 +30,7 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
+import java.util.function.Function;
import sun.invoke.empty.Empty;
import sun.invoke.util.ValueConversions;
@@ -713,10 +714,11 @@
LambdaForm form = makeGuardWithTestForm(basicType);
BoundMethodHandle.SpeciesData data = BoundMethodHandle.speciesData_LLL();
BoundMethodHandle mh;
+
try {
mh = (BoundMethodHandle)
data.constructor().invokeBasic(type, form,
- (Object) test, (Object) target, (Object) fallback);
+ (Object) test, (Object) profile(target), (Object) profile(fallback));
} catch (Throwable ex) {
throw uncaughtException(ex);
}
@@ -724,6 +726,129 @@
return mh;
}
+
+ static
+ MethodHandle profile(MethodHandle target) {
+ if (DONT_INLINE_THRESHOLD >= 0) {
+ return makeBlockInlningWrapper(target);
+ } else {
+ return target;
+ }
+ }
+
+ /**
+ * Block inlining during JIT-compilation of a target method handle if it hasn't been invoked enough times.
+ * Corresponding LambdaForm has @DontInline when compiled into bytecode.
+ */
+ static
+ MethodHandle makeBlockInlningWrapper(MethodHandle target) {
+ LambdaForm lform = PRODUCE_BLOCK_INLINING_FORM.apply(target);
+ return new CountingWrapper(target, lform,
+ PRODUCE_BLOCK_INLINING_FORM, PRODUCE_REINVOKER_FORM,
+ DONT_INLINE_THRESHOLD);
+ }
+
+ /** Constructs reinvoker lambda form which block inlining during JIT-compilation for a particular method handle */
+ private static final Function<MethodHandle, LambdaForm> PRODUCE_BLOCK_INLINING_FORM = new Function<MethodHandle, LambdaForm>() {
+ @Override
+ public LambdaForm apply(MethodHandle target) {
+ return DelegatingMethodHandle.makeReinvokerForm(target,
+ MethodTypeForm.LF_DELEGATE_BLOCK_INLINING, CountingWrapper.class, "reinvoker.dontInline", false,
+ DelegatingMethodHandle.NF_getTarget, CountingWrapper.NF_maybeStopCounting);
+ }
+ };
+
+ /** Constructs simple reinvoker lambda form for a particular method handle */
+ private static final Function<MethodHandle, LambdaForm> PRODUCE_REINVOKER_FORM = new Function<MethodHandle, LambdaForm>() {
+ @Override
+ public LambdaForm apply(MethodHandle target) {
+ return DelegatingMethodHandle.makeReinvokerForm(target,
+ MethodTypeForm.LF_DELEGATE, DelegatingMethodHandle.class, DelegatingMethodHandle.NF_getTarget);
+ }
+ };
+
+ /**
+ * Counting method handle. It has 2 states: counting and non-counting.
+ * It is in counting state for the first n invocations and then transitions to non-counting state.
+ * Behavior in counting and non-counting states is determined by lambda forms produced by
+ * countingFormProducer & nonCountingFormProducer respectively.
+ */
+ static class CountingWrapper extends DelegatingMethodHandle {
+ private final MethodHandle target;
+ private int count;
+ private Function<MethodHandle, LambdaForm> countingFormProducer;
+ private Function<MethodHandle, LambdaForm> nonCountingFormProducer;
+ private volatile boolean isCounting;
+
+ private CountingWrapper(MethodHandle target, LambdaForm lform,
+ Function<MethodHandle, LambdaForm> countingFromProducer,
+ Function<MethodHandle, LambdaForm> nonCountingFormProducer,
+ int count) {
+ super(target.type(), lform);
+ this.target = target;
+ this.count = count;
+ this.countingFormProducer = countingFromProducer;
+ this.nonCountingFormProducer = nonCountingFormProducer;
+ this.isCounting = (count > 0);
+ }
+
+ @Hidden
+ @Override
+ protected MethodHandle getTarget() {
+ return target;
+ }
+
+ @Override
+ public MethodHandle asTypeUncached(MethodType newType) {
+ MethodHandle newTarget = target.asType(newType);
+ MethodHandle wrapper;
+ if (isCounting) {
+ LambdaForm lform;
+ lform = countingFormProducer.apply(target);
+ wrapper = new CountingWrapper(newTarget, lform, countingFormProducer, nonCountingFormProducer, DONT_INLINE_THRESHOLD);
+ } else {
+ wrapper = newTarget; // no need for a counting wrapper anymore
+ }
+ return (asTypeCache = wrapper);
+ }
+
+ boolean countDown() {
+ if (count <= 0) {
+ // Try to limit number of updates. MethodHandle.updateForm() doesn't guarantee LF update visibility.
+ if (isCounting) {
+ isCounting = false;
+ return true;
+ } else {
+ return false;
+ }
+ } else {
+ --count;
+ return false;
+ }
+ }
+
+ @Hidden
+ static void maybeStopCounting(Object o1) {
+ CountingWrapper wrapper = (CountingWrapper) o1;
+ if (wrapper.countDown()) {
+ // Reached invocation threshold. Replace counting behavior with a non-counting one.
+ LambdaForm lform = wrapper.nonCountingFormProducer.apply(wrapper.target);
+ lform.compileToBytecode(); // speed up warmup by avoiding LF interpretation again after transition
+ wrapper.updateForm(lform);
+ }
+ }
+
+ static final NamedFunction NF_maybeStopCounting;
+ static {
+ Class<?> THIS_CLASS = CountingWrapper.class;
+ try {
+ NF_maybeStopCounting = new NamedFunction(THIS_CLASS.getDeclaredMethod("maybeStopCounting", Object.class));
+ } catch (ReflectiveOperationException ex) {
+ throw newInternalError(ex);
+ }
+ }
+ }
+
static
LambdaForm makeGuardWithTestForm(MethodType basicType) {
LambdaForm lform = basicType.form().cachedLambdaForm(MethodTypeForm.LF_GWT);
--- a/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandleStatics.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandleStatics.java Fri Oct 31 18:18:58 2014 +0000
@@ -47,10 +47,11 @@
static final boolean TRACE_METHOD_LINKAGE;
static final boolean USE_LAMBDA_FORM_EDITOR;
static final int COMPILE_THRESHOLD;
+ static final int DONT_INLINE_THRESHOLD;
static final int PROFILE_LEVEL;
static {
- final Object[] values = { false, false, false, false, false, null, null };
+ final Object[] values = new Object[8];
AccessController.doPrivileged(new PrivilegedAction<Void>() {
public Void run() {
values[0] = Boolean.getBoolean("java.lang.invoke.MethodHandle.DEBUG_NAMES");
@@ -59,7 +60,8 @@
values[3] = Boolean.getBoolean("java.lang.invoke.MethodHandle.TRACE_METHOD_LINKAGE");
values[4] = Boolean.getBoolean("java.lang.invoke.MethodHandle.USE_LF_EDITOR");
values[5] = Integer.getInteger("java.lang.invoke.MethodHandle.COMPILE_THRESHOLD", 30);
- values[6] = Integer.getInteger("java.lang.invoke.MethodHandle.PROFILE_LEVEL", 0);
+ values[6] = Integer.getInteger("java.lang.invoke.MethodHandle.DONT_INLINE_THRESHOLD", 30);
+ values[7] = Integer.getInteger("java.lang.invoke.MethodHandle.PROFILE_LEVEL", 0);
return null;
}
});
@@ -69,7 +71,8 @@
TRACE_METHOD_LINKAGE = (Boolean) values[3];
USE_LAMBDA_FORM_EDITOR = (Boolean) values[4];
COMPILE_THRESHOLD = (Integer) values[5];
- PROFILE_LEVEL = (Integer) values[6];
+ DONT_INLINE_THRESHOLD = (Integer) values[6];
+ PROFILE_LEVEL = (Integer) values[7];
}
/** Tell if any of the debugging switches are turned on.
--- a/jdk/src/java.base/share/classes/java/lang/invoke/MethodTypeForm.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/share/classes/java/lang/invoke/MethodTypeForm.java Fri Oct 31 18:18:58 2014 +0000
@@ -63,24 +63,25 @@
final @Stable LambdaForm[] lambdaForms;
// Indexes into lambdaForms:
static final int
- LF_INVVIRTUAL = 0, // DMH invokeVirtual
- LF_INVSTATIC = 1,
- LF_INVSPECIAL = 2,
- LF_NEWINVSPECIAL = 3,
- LF_INVINTERFACE = 4,
- LF_INVSTATIC_INIT = 5, // DMH invokeStatic with <clinit> barrier
- LF_INTERPRET = 6, // LF interpreter
- LF_REBIND = 7, // BoundMethodHandle
- LF_DELEGATE = 8, // DelegatingMethodHandle
- LF_EX_LINKER = 9, // invokeExact_MT (for invokehandle)
- LF_EX_INVOKER = 10, // MHs.invokeExact
- LF_GEN_LINKER = 11, // generic invoke_MT (for invokehandle)
- LF_GEN_INVOKER = 12, // generic MHs.invoke
- LF_CS_LINKER = 13, // linkToCallSite_CS
- LF_MH_LINKER = 14, // linkToCallSite_MH
- LF_GWC = 15, // guardWithCatch (catchException)
- LF_GWT = 16, // guardWithTest
- LF_LIMIT = 17;
+ LF_INVVIRTUAL = 0, // DMH invokeVirtual
+ LF_INVSTATIC = 1,
+ LF_INVSPECIAL = 2,
+ LF_NEWINVSPECIAL = 3,
+ LF_INVINTERFACE = 4,
+ LF_INVSTATIC_INIT = 5, // DMH invokeStatic with <clinit> barrier
+ LF_INTERPRET = 6, // LF interpreter
+ LF_REBIND = 7, // BoundMethodHandle
+ LF_DELEGATE = 8, // DelegatingMethodHandle
+ LF_DELEGATE_BLOCK_INLINING = 9, // Counting DelegatingMethodHandle w/ @DontInline
+ LF_EX_LINKER = 10, // invokeExact_MT (for invokehandle)
+ LF_EX_INVOKER = 11, // MHs.invokeExact
+ LF_GEN_LINKER = 12, // generic invoke_MT (for invokehandle)
+ LF_GEN_INVOKER = 13, // generic MHs.invoke
+ LF_CS_LINKER = 14, // linkToCallSite_CS
+ LF_MH_LINKER = 15, // linkToCallSite_MH
+ LF_GWC = 16, // guardWithCatch (catchException)
+ LF_GWT = 17, // guardWithTest
+ LF_LIMIT = 18;
/** Return the type corresponding uniquely (1-1) to this MT-form.
* It might have any primitive returns or arguments, but will have no references except Object.
--- a/jdk/src/java.base/share/classes/java/nio/Buffer.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/share/classes/java/nio/Buffer.java Fri Oct 31 18:18:58 2014 +0000
@@ -239,7 +239,7 @@
* @throws IllegalArgumentException
* If the preconditions on <tt>newPosition</tt> do not hold
*/
- public final Buffer position(int newPosition) {
+ public Buffer position(int newPosition) {
if ((newPosition > limit) || (newPosition < 0))
throw new IllegalArgumentException();
position = newPosition;
@@ -270,7 +270,7 @@
* @throws IllegalArgumentException
* If the preconditions on <tt>newLimit</tt> do not hold
*/
- public final Buffer limit(int newLimit) {
+ public Buffer limit(int newLimit) {
if ((newLimit > capacity) || (newLimit < 0))
throw new IllegalArgumentException();
limit = newLimit;
@@ -284,7 +284,7 @@
*
* @return This buffer
*/
- public final Buffer mark() {
+ public Buffer mark() {
mark = position;
return this;
}
@@ -300,7 +300,7 @@
* @throws InvalidMarkException
* If the mark has not been set
*/
- public final Buffer reset() {
+ public Buffer reset() {
int m = mark;
if (m < 0)
throw new InvalidMarkException();
@@ -325,7 +325,7 @@
*
* @return This buffer
*/
- public final Buffer clear() {
+ public Buffer clear() {
position = 0;
limit = capacity;
mark = -1;
@@ -353,7 +353,7 @@
*
* @return This buffer
*/
- public final Buffer flip() {
+ public Buffer flip() {
limit = position;
position = 0;
mark = -1;
@@ -375,7 +375,7 @@
*
* @return This buffer
*/
- public final Buffer rewind() {
+ public Buffer rewind() {
position = 0;
mark = -1;
return this;
--- a/jdk/src/java.base/share/classes/java/nio/MappedByteBuffer.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/share/classes/java/nio/MappedByteBuffer.java Fri Oct 31 18:18:58 2014 +0000
@@ -208,4 +208,76 @@
private native boolean isLoaded0(long address, long length, int pageCount);
private native void load0(long address, long length);
private native void force0(FileDescriptor fd, long address, long length);
+
+ // -- Covariant return type overrides
+
+ /**
+ * {@inheritDoc}
+ * @since 1.9
+ */
+ @Override
+ public final MappedByteBuffer position(int newPosition) {
+ super.position(newPosition);
+ return this;
+ }
+
+ /**
+ * {@inheritDoc}
+ * @since 1.9
+ */
+ @Override
+ public final MappedByteBuffer limit(int newLimit) {
+ super.limit(newLimit);
+ return this;
+ }
+
+ /**
+ * {@inheritDoc}
+ * @since 1.9
+ */
+ @Override
+ public final MappedByteBuffer mark() {
+ super.mark();
+ return this;
+ }
+
+ /**
+ * {@inheritDoc}
+ * @since 1.9
+ */
+ @Override
+ public final MappedByteBuffer reset() {
+ super.reset();
+ return this;
+ }
+
+ /**
+ * {@inheritDoc}
+ * @since 1.9
+ */
+ @Override
+ public final MappedByteBuffer clear() {
+ super.clear();
+ return this;
+ }
+
+ /**
+ * {@inheritDoc}
+ * @since 1.9
+ */
+ @Override
+ public final MappedByteBuffer flip() {
+ super.flip();
+ return this;
+ }
+
+ /**
+ * {@inheritDoc}
+ * @since 1.9
+ */
+ @Override
+ public final MappedByteBuffer rewind() {
+ super.rewind();
+ return this;
+ }
}
--- a/jdk/src/java.base/share/classes/java/nio/X-Buffer.java.template Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/share/classes/java/nio/X-Buffer.java.template Fri Oct 31 18:18:58 2014 +0000
@@ -1025,6 +1025,106 @@
return offset;
}
+ // -- Covariant return type overrides
+
+ /**
+ * {@inheritDoc}
+ * @since 1.9
+ */
+ @Override
+ public
+#if[!byte]
+ final
+#end[!byte]
+ $Type$Buffer position(int newPosition) {
+ super.position(newPosition);
+ return this;
+ }
+
+ /**
+ * {@inheritDoc}
+ * @since 1.9
+ */
+ @Override
+ public
+#if[!byte]
+ final
+#end[!byte]
+ $Type$Buffer limit(int newLimit) {
+ super.limit(newLimit);
+ return this;
+ }
+
+ /**
+ * {@inheritDoc}
+ * @since 1.9
+ */
+ @Override
+ public
+#if[!byte]
+ final
+#end[!byte]
+ $Type$Buffer mark() {
+ super.mark();
+ return this;
+ }
+
+ /**
+ * {@inheritDoc}
+ * @since 1.9
+ */
+ @Override
+ public
+#if[!byte]
+ final
+#end[!byte]
+ $Type$Buffer reset() {
+ super.reset();
+ return this;
+ }
+
+ /**
+ * {@inheritDoc}
+ * @since 1.9
+ */
+ @Override
+ public
+#if[!byte]
+ final
+#end[!byte]
+ $Type$Buffer clear() {
+ super.clear();
+ return this;
+ }
+
+ /**
+ * {@inheritDoc}
+ * @since 1.9
+ */
+ @Override
+ public
+#if[!byte]
+ final
+#end[!byte]
+ $Type$Buffer flip() {
+ super.flip();
+ return this;
+ }
+
+ /**
+ * {@inheritDoc}
+ * @since 1.9
+ */
+ @Override
+ public
+#if[!byte]
+ final
+#end[!byte]
+ $Type$Buffer rewind() {
+ super.rewind();
+ return this;
+ }
+
/**
* Compacts this buffer <i>(optional operation)</i>.
*
--- a/jdk/src/java.base/share/classes/java/nio/file/FileStore.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/share/classes/java/nio/file/FileStore.java Fri Oct 31 18:18:58 2014 +0000
@@ -208,7 +208,7 @@
* @param attribute
* the attribute to read
- * @return the attribute value; {@code null} may be a valid for some
+ * @return the attribute value; {@code null} may be valid for some
* attributes
*
* @throws UnsupportedOperationException
--- a/jdk/src/java.base/share/classes/java/nio/file/attribute/package-info.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/share/classes/java/nio/file/attribute/package-info.java Fri Oct 31 18:18:58 2014 +0000
@@ -51,7 +51,7 @@
* <p> An attribute view provides a read-only or updatable view of the non-opaque
* values, or <em>metadata</em>, associated with objects in a file system.
* The {@link java.nio.file.attribute.FileAttributeView} interface is
- * extended by several other interfaces that views to specific sets of file
+ * extended by several other interfaces that provide views to specific sets of file
* attributes. {@code FileAttributeViews} are selected by invoking the {@link
* java.nio.file.Files#getFileAttributeView} method with a
* <em>type-token</em> to identify the required view. Views can also be identified
--- a/jdk/src/java.base/share/classes/java/time/chrono/HijrahChronology.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/share/classes/java/time/chrono/HijrahChronology.java Fri Oct 31 18:18:58 2014 +0000
@@ -61,13 +61,14 @@
import java.io.File;
import java.io.FileInputStream;
+import java.io.FilePermission;
import java.io.IOException;
import java.io.InputStream;
import java.io.InvalidObjectException;
import java.io.ObjectInputStream;
import java.io.Serializable;
import java.security.AccessController;
-import java.security.PrivilegedActionException;
+import java.security.PrivilegedAction;
import java.time.Clock;
import java.time.DateTimeException;
import java.time.Instant;
@@ -145,29 +146,8 @@
* property resource that defines the {@code ID}, the {@code calendar type},
* the start of the calendar, the alignment with the
* ISO calendar, and the length of each month for a range of years.
- * The variants are identified in the {@code calendars.properties} file.
- * The new properties are prefixed with {@code "calendars.hijrah."}:
- * <table cellpadding="2" border="0" summary="Configuration of Hijrah Calendar Variants">
- * <thead>
- * <tr class="tableSubHeadingColor">
- * <th class="colFirst" align="left">Property Name</th>
- * <th class="colFirst" align="left">Property value</th>
- * <th class="colLast" align="left">Description </th>
- * </tr>
- * </thead>
- * <tbody>
- * <tr class="altColor">
- * <td>calendars.hijrah.{ID}</td>
- * <td>The property resource defining the {@code {ID}} variant</td>
- * <td>The property resource is located with the {@code calendars.properties} file</td>
- * </tr>
- * <tr class="rowColor">
- * <td>calendars.hijrah.{ID}.type</td>
- * <td>The calendar type</td>
- * <td>LDML defines the calendar type names</td>
- * </tr>
- * </tbody>
- * </table>
+ * The variants are loaded by HijrahChronology as a resource from
+ * hijrah-config-<calendar type>.properties.
* <p>
* The Hijrah property resource is a set of properties that describe the calendar.
* The syntax is defined by {@code java.util.Properties#load(Reader)}.
@@ -279,91 +259,41 @@
* Computed by {@link #createEpochMonths}.
*/
private transient int maxYearLength;
- /**
- * A reference to the properties stored in
- * ${java.home}/lib/calendars.properties
- */
- private final transient static Properties calendarProperties;
/**
- * Prefix of property names for Hijrah calendar variants.
+ * Prefix of resource names for Hijrah calendar variants.
*/
- private static final String PROP_PREFIX = "calendar.hijrah.";
- /**
- * Suffix of property names containing the calendar type of a variant.
- */
- private static final String PROP_TYPE_SUFFIX = ".type";
+ private static final String RESOURCE_PREFIX = "hijrah-config-";
/**
- * Static initialization of the predefined calendars found in the
- * lib/calendars.properties file.
+ * Suffix of resource names for Hijrah calendar variants.
+ */
+ private static final String RESOURCE_SUFFIX = ".properties";
+
+ /**
+ * Static initialization of the built-in calendars.
+ * The data is not loaded until it is used.
*/
static {
- try {
- calendarProperties = sun.util.calendar.BaseCalendar.getCalendarProperties();
- } catch (IOException ioe) {
- throw new InternalError("Can't initialize lib/calendars.properties", ioe);
- }
-
- try {
- INSTANCE = new HijrahChronology("Hijrah-umalqura");
- // Register it by its aliases
- AbstractChronology.registerChrono(INSTANCE, "Hijrah");
- AbstractChronology.registerChrono(INSTANCE, "islamic");
- } catch (DateTimeException ex) {
- // Absence of Hijrah calendar is fatal to initializing this class.
- PlatformLogger logger = PlatformLogger.getLogger("java.time.chrono");
- logger.severe("Unable to initialize Hijrah calendar: Hijrah-umalqura", ex);
- throw new RuntimeException("Unable to initialize Hijrah-umalqura calendar", ex.getCause());
- }
- registerVariants();
+ INSTANCE = new HijrahChronology("Hijrah-umalqura", "islamic-umalqura");
+ // Register it by its aliases
+ AbstractChronology.registerChrono(INSTANCE, "Hijrah");
+ AbstractChronology.registerChrono(INSTANCE, "islamic");
}
/**
- * For each Hijrah variant listed, create the HijrahChronology and register it.
- * Exceptions during initialization are logged but otherwise ignored.
+ * Create a HijrahChronology for the named variant and type.
+ *
+ * @param id the id of the calendar
+ * @param calType the typeId of the calendar
+ * @throws IllegalArgumentException if the id or typeId is empty
*/
- private static void registerVariants() {
- for (String name : calendarProperties.stringPropertyNames()) {
- if (name.startsWith(PROP_PREFIX)) {
- String id = name.substring(PROP_PREFIX.length());
- if (id.indexOf('.') >= 0) {
- continue; // no name or not a simple name of a calendar
- }
- if (id.equals(INSTANCE.getId())) {
- continue; // do not duplicate the default
- }
- try {
- // Create and register the variant
- HijrahChronology chrono = new HijrahChronology(id);
- AbstractChronology.registerChrono(chrono);
- } catch (DateTimeException ex) {
- // Log error and continue
- PlatformLogger logger = PlatformLogger.getLogger("java.time.chrono");
- logger.severe("Unable to initialize Hijrah calendar: " + id, ex);
- }
- }
- }
- }
-
- /**
- * Create a HijrahChronology for the named variant.
- * The resource and calendar type are retrieved from properties
- * in the {@code calendars.properties}.
- * The property names are {@code "calendar.hijrah." + id}
- * and {@code "calendar.hijrah." + id + ".type"}
- * @param id the id of the calendar
- * @throws DateTimeException if the calendar type is missing from the properties file.
- * @throws IllegalArgumentException if the id is empty
- */
- private HijrahChronology(String id) throws DateTimeException {
+ private HijrahChronology(String id, String calType) {
if (id.isEmpty()) {
throw new IllegalArgumentException("calendar id is empty");
}
- String propName = PROP_PREFIX + id + PROP_TYPE_SUFFIX;
- String calType = calendarProperties.getProperty(propName);
- if (calType == null || calType.isEmpty()) {
- throw new DateTimeException("calendarType is missing or empty for: " + propName);
+ if (calType.isEmpty()) {
+ throw new IllegalArgumentException("calendar typeId is empty");
}
this.typeId = id;
this.calendarType = calType;
@@ -866,30 +796,26 @@
/**
* Return the configuration properties from the resource.
* <p>
- * The default location of the variant configuration resource is:
+ * The location of the variant configuration resource is:
* <pre>
- * "$java.home/lib/" + resource-name
+ * "/java/time/chrono/hijrah-config-" + calendarType + ".properties"
* </pre>
*
- * @param resource the name of the calendar property resource
+ * @param calendarType the calendarType of the calendar variant
* @return a Properties containing the properties read from the resource.
* @throws Exception if access to the property resource fails
*/
- private static Properties readConfigProperties(final String resource) throws Exception {
- try {
- return AccessController
- .doPrivileged((java.security.PrivilegedExceptionAction<Properties>)
- () -> {
- String libDir = System.getProperty("java.home") + File.separator + "lib";
- File file = new File(libDir, resource);
- Properties props = new Properties();
- try (InputStream is = new FileInputStream(file)) {
- props.load(is);
- }
- return props;
- });
- } catch (PrivilegedActionException pax) {
- throw pax.getException();
+ private Properties readConfigProperties(final String calendarType) throws Exception {
+ String resourceName = RESOURCE_PREFIX + calendarType + RESOURCE_SUFFIX;
+ PrivilegedAction<InputStream> getResourceAction = () -> HijrahChronology.class.getResourceAsStream(resourceName);
+ FilePermission perm = new FilePermission("<<ALL FILES>>", "read");
+ try (InputStream is = AccessController.doPrivileged(getResourceAction, null, perm)) {
+ if (is == null) {
+ throw new RuntimeException("Hijrah calendar resource not found: /java/time/chrono/" + resourceName);
+ }
+ Properties props = new Properties();
+ props.load(is);
+ return props;
}
}
@@ -906,9 +832,7 @@
*/
private void loadCalendarData() {
try {
- String resourceName = calendarProperties.getProperty(PROP_PREFIX + typeId);
- Objects.requireNonNull(resourceName, "Resource missing for calendar: " + PROP_PREFIX + typeId);
- Properties props = readConfigProperties(resourceName);
+ Properties props = readConfigProperties(calendarType);
Map<Integer, int[]> years = new HashMap<>();
int minYear = Integer.MAX_VALUE;
@@ -937,7 +861,7 @@
default:
try {
// Everything else is either a year or invalid
- int year = Integer.valueOf(key);
+ int year = Integer.parseInt(key);
int[] months = parseMonths((String) entry.getValue());
years.put(year, months);
maxYear = Math.max(maxYear, year);
@@ -1045,7 +969,7 @@
}
for (int i = 0; i < 12; i++) {
try {
- months[i] = Integer.valueOf(numbers[i]);
+ months[i] = Integer.parseInt(numbers[i]);
} catch (NumberFormatException nfe) {
throw new IllegalArgumentException("bad key: " + numbers[i]);
}
@@ -1067,9 +991,9 @@
throw new IllegalArgumentException("date must be yyyy-MM-dd");
}
int[] ymd = new int[3];
- ymd[0] = Integer.valueOf(string.substring(0, 4));
- ymd[1] = Integer.valueOf(string.substring(5, 7));
- ymd[2] = Integer.valueOf(string.substring(8, 10));
+ ymd[0] = Integer.parseInt(string, 0, 4, 10);
+ ymd[1] = Integer.parseInt(string, 5, 7, 10);
+ ymd[2] = Integer.parseInt(string, 8, 10, 10);
return ymd;
} catch (NumberFormatException ex) {
throw new IllegalArgumentException("date must be yyyy-MM-dd", ex);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.base/share/classes/java/time/chrono/hijrah-config-islamic-umalqura.properties Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,369 @@
+# Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# This properties file defines a Hijrah calendar variant.
+#
+# Fields:
+#
+# <version> ::= 'version' '=' <version string>
+# <id> ::= 'id' '=' <id string>
+# <type> ::= 'type' '=' <type string>
+# <iso-start> ::= 'iso-start' '=' <start date in the ISO calendar>
+# <year> ::= <yyyy> '=' <nn nn nn nn nn nn nn nn nn nn nn nn>
+#
+# version ... (Required)
+#
+# id ... (Required)
+# Identifies the Java Chronology
+#
+# type ... (Required)
+# Identifies the type of calendar in the standard calendar ID scheme
+# iso-start ... (Required)
+# Specifies the corresponding ISO date to the first Hijrah day
+# in the defined range of dates
+#
+# year ... (Required)
+# Number of days for each month of a Hijrah year
+# * Each line defines a year. The years must be in chronological
+# order and no gap is allowed.
+# * Each line is in the form indicated above. <yyyy> is a Hijrah year and
+# nn is the number of days for a month listed in the order of the months.
+# * Each year must have 12 months.
+# * Each month should be 29 or 30 days long.
+# * There must be one or more space characters between the months.
+#
+
+# Version of this definition
+version=1.8.0_1
+
+# Java chronology ID
+id=Hijrah-umalqura
+
+# Standard calendar type specification
+type=islamic-umalqura
+
+# defines the corresponding ISO date to the earliest Hijrah date
+iso-start=1882-11-12
+
+# 1 2 3 4 5 6 7 8 9 10 11 12
+1300=30 29 30 29 30 29 30 29 30 29 30 29
+1301=30 30 29 30 29 30 29 30 29 30 29 29
+1302=30 30 30 29 30 30 29 29 30 29 29 30
+1303=29 30 30 29 30 30 29 30 29 30 29 29
+1304=29 30 30 29 30 30 30 29 30 29 30 29
+1305=29 29 30 30 29 30 30 29 30 30 29 29
+1306=30 29 30 29 30 29 30 29 30 30 29 30
+1307=29 30 29 30 29 30 29 30 29 30 29 30
+1308=29 30 30 29 30 29 30 29 30 29 29 30
+1309=29 30 30 30 30 29 29 30 29 29 30 29
+1310=30 29 30 30 30 29 30 29 30 29 29 30
+1311=29 30 29 30 30 30 29 30 29 30 29 29
+1312=30 29 30 29 30 30 29 30 30 29 30 29
+1313=29 30 29 30 29 30 29 30 30 30 29 29
+1314=30 30 29 30 29 29 30 29 30 30 29 30
+1315=29 30 30 29 30 29 29 30 29 30 29 30
+1316=29 30 30 30 29 30 29 29 30 29 30 29
+1317=30 29 30 30 29 30 29 30 29 30 29 29
+1318=30 29 30 30 29 30 30 29 30 29 30 29
+1319=29 30 29 30 30 29 30 29 30 30 29 30
+1320=29 30 29 29 30 29 30 29 30 30 30 29
+1321=30 29 30 29 29 30 29 29 30 30 30 30
+1322=29 30 29 30 29 29 29 30 29 30 30 30
+1323=29 30 30 29 30 29 29 29 30 29 30 30
+1324=29 30 30 29 30 29 30 29 29 30 29 30
+1325=30 29 30 29 30 30 29 30 29 30 29 30
+1326=29 29 30 29 30 30 29 30 29 30 30 29
+1327=30 29 29 30 29 30 29 30 30 29 30 30
+1328=29 30 29 29 30 29 29 30 30 30 29 30
+1329=30 29 30 29 29 30 29 29 30 30 29 30
+1330=30 30 29 30 29 29 30 29 29 30 30 29
+1331=30 30 29 30 30 29 29 30 29 30 29 30
+1332=29 30 29 30 30 29 30 29 30 30 29 29
+1333=30 29 29 30 30 29 30 30 29 30 30 29
+1334=29 29 30 29 30 29 30 30 30 29 30 29
+1335=30 29 30 29 29 30 29 30 30 29 30 30
+1336=29 30 29 30 29 29 30 29 30 29 30 30
+1337=30 29 30 29 30 29 29 30 29 30 29 30
+1338=29 30 30 29 30 30 29 29 30 29 30 29
+1339=30 29 30 29 30 30 30 29 30 29 29 30
+1340=29 29 30 29 30 30 30 30 29 30 29 29
+1341=30 29 29 30 29 30 30 30 29 30 30 29
+1342=29 29 30 29 30 29 30 30 29 30 30 29
+1343=30 29 29 30 29 30 29 30 29 30 30 29
+1344=30 29 30 29 30 30 29 29 30 29 30 29
+1345=30 29 30 30 30 29 30 29 29 30 29 29
+1346=30 29 30 30 30 30 29 30 29 29 30 29
+1347=29 30 29 30 30 30 29 30 30 29 29 30
+1348=29 29 30 29 30 30 29 30 30 30 29 29
+1349=30 29 29 30 29 30 30 29 30 30 29 30
+1350=29 30 29 30 29 30 29 29 30 30 29 30
+1351=30 29 30 29 30 29 30 29 29 30 29 30
+1352=30 29 30 30 29 30 29 30 29 29 30 29
+1353=30 29 30 30 30 29 30 29 29 30 29 30
+1354=29 30 29 30 30 29 30 30 29 30 29 29
+1355=30 29 29 30 30 29 30 30 29 30 30 29
+1356=29 30 29 30 29 30 29 30 29 30 30 30
+1357=29 29 30 29 30 29 29 30 29 30 30 30
+1358=29 30 29 30 29 30 29 29 30 29 30 30
+1359=29 30 30 29 30 29 30 29 29 29 30 30
+1360=29 30 30 30 29 30 29 30 29 29 30 29
+1361=30 29 30 30 29 30 30 29 29 30 29 30
+1362=29 30 29 30 29 30 30 29 30 29 30 29
+1363=30 29 30 29 30 29 30 29 30 29 30 30
+1364=29 30 29 30 29 29 30 29 30 29 30 30
+1365=30 30 29 29 30 29 29 30 29 30 29 30
+1366=30 30 29 30 29 30 29 29 30 29 30 29
+1367=30 30 29 30 30 29 30 29 29 30 29 30
+1368=29 30 29 30 30 30 29 29 30 29 30 29
+1369=30 29 30 29 30 30 29 30 29 30 30 29
+1370=30 29 29 30 29 30 29 30 29 30 30 30
+1371=29 30 29 29 30 29 30 29 30 29 30 30
+1372=30 29 29 30 29 30 29 29 30 29 30 30
+1373=30 29 30 29 30 29 30 29 29 30 29 30
+1374=30 29 30 30 29 30 29 30 29 29 30 29
+1375=30 29 30 30 29 30 30 29 30 29 30 29
+1376=29 30 29 30 29 30 30 30 29 30 29 30
+1377=29 29 30 29 29 30 30 30 29 30 30 29
+1378=30 29 29 29 30 29 30 30 29 30 30 30
+1379=29 30 29 29 29 30 29 30 30 29 30 30
+1380=29 30 29 30 29 30 29 30 29 30 29 30
+1381=29 30 29 30 30 29 30 29 30 29 29 30
+1382=29 30 29 30 30 29 30 30 29 30 29 29
+1383=30 29 29 30 30 30 29 30 30 29 30 29
+1384=29 30 29 29 30 30 29 30 30 30 29 30
+1385=29 29 30 29 29 30 30 29 30 30 30 29
+1386=30 29 29 30 29 29 30 30 29 30 30 29
+1387=30 29 30 29 30 29 30 29 30 29 30 29
+1388=30 30 29 30 29 30 29 30 29 30 29 29
+1389=30 30 29 30 30 29 30 30 29 29 30 29
+1390=29 30 29 30 30 30 29 30 29 30 29 30
+1391=29 29 30 29 30 30 29 30 30 29 30 29
+1392=30 29 29 30 29 30 29 30 30 29 30 30
+1393=29 30 29 29 30 29 30 29 30 29 30 30
+1394=30 29 30 29 29 30 29 30 29 30 29 30
+1395=30 29 30 30 29 30 29 29 30 29 29 30
+1396=30 29 30 30 29 30 30 29 29 30 29 29
+1397=30 29 30 30 29 30 30 30 29 29 29 30
+1398=29 30 29 30 30 29 30 30 29 30 29 29
+1399=30 29 30 29 30 29 30 30 29 30 29 30
+1400=30 29 30 29 29 30 29 30 29 30 29 30
+1401=30 30 29 30 29 29 30 29 29 30 29 30
+1402=30 30 30 29 30 29 29 30 29 29 30 29
+1403=30 30 30 29 30 30 29 29 30 29 29 30
+1404=29 30 30 29 30 30 29 30 29 30 29 29
+1405=30 29 30 29 30 30 30 29 30 29 29 30
+1406=30 29 29 30 29 30 30 29 30 29 30 30
+1407=29 30 29 29 30 29 30 29 30 29 30 30
+1408=30 29 30 29 30 29 29 30 29 29 30 30
+1409=30 30 29 30 29 30 29 29 30 29 29 30
+1410=30 30 29 30 30 29 30 29 29 30 29 29
+1411=30 30 29 30 30 29 30 30 29 29 30 29
+1412=30 29 30 29 30 29 30 30 30 29 29 30
+1413=29 30 29 29 30 29 30 30 30 29 30 29
+1414=30 29 30 29 29 30 29 30 30 29 30 30
+1415=29 30 29 30 29 29 30 29 30 29 30 30
+1416=30 29 30 29 30 29 29 30 29 30 29 30
+1417=30 29 30 30 29 29 30 29 30 29 30 29
+1418=30 29 30 30 29 30 29 30 29 30 29 30
+1419=29 30 29 30 29 30 29 30 30 30 29 29
+1420=29 30 29 29 30 29 30 30 30 30 29 30
+1421=29 29 30 29 29 29 30 30 30 30 29 30
+1422=30 29 29 30 29 29 29 30 30 30 29 30
+1423=30 29 30 29 30 29 29 30 29 30 29 30
+1424=30 29 30 30 29 30 29 29 30 29 30 29
+1425=30 29 30 30 29 30 29 30 30 29 30 29
+1426=29 30 29 30 29 30 30 29 30 30 29 30
+1427=29 29 30 29 30 29 30 30 29 30 30 29
+1428=30 29 29 30 29 29 30 30 30 29 30 30
+1429=29 30 29 29 30 29 29 30 30 29 30 30
+1430=29 30 30 29 29 30 29 30 29 30 29 30
+1431=29 30 30 29 30 29 30 29 30 29 29 30
+1432=29 30 30 30 29 30 29 30 29 30 29 29
+1433=30 29 30 30 29 30 30 29 30 29 30 29
+1434=29 30 29 30 29 30 30 29 30 30 29 29
+1435=30 29 30 29 30 29 30 29 30 30 29 30
+1436=29 30 29 30 29 30 29 30 29 30 29 30
+1437=30 29 30 30 29 29 30 29 30 29 29 30
+1438=30 29 30 30 30 29 29 30 29 29 30 29
+1439=30 29 30 30 30 29 30 29 30 29 29 30
+1440=29 30 29 30 30 30 29 30 29 30 29 29
+1441=30 29 30 29 30 30 29 30 30 29 30 29
+1442=29 30 29 30 29 30 29 30 30 29 30 29
+1443=30 29 30 29 30 29 30 29 30 29 30 30
+1444=29 30 29 30 30 29 29 30 29 30 29 30
+1445=29 30 30 30 29 30 29 29 30 29 29 30
+1446=29 30 30 30 29 30 30 29 29 30 29 29
+1447=30 29 30 30 30 29 30 29 30 29 30 29
+1448=29 30 29 30 30 29 30 30 29 30 29 30
+1449=29 29 30 29 30 29 30 30 29 30 30 29
+1450=30 29 30 29 29 30 29 30 29 30 30 29
+1451=30 30 30 29 29 30 29 29 30 30 29 30
+1452=30 29 30 30 29 29 30 29 29 30 29 30
+1453=30 29 30 30 29 30 29 30 29 29 30 29
+1454=30 29 30 30 29 30 30 29 30 29 30 29
+1455=29 30 29 30 30 29 30 29 30 30 29 30
+1456=29 29 30 29 30 29 30 29 30 30 30 29
+1457=30 29 29 30 29 29 30 29 30 30 30 30
+1458=29 30 29 29 30 29 29 30 29 30 30 30
+1459=29 30 30 29 29 30 29 29 30 29 30 30
+1460=29 30 30 29 30 29 30 29 29 30 29 30
+1461=29 30 30 29 30 29 30 29 30 30 29 29
+1462=30 29 30 29 30 30 29 30 29 30 30 29
+1463=29 30 29 30 29 30 29 30 30 30 29 30
+1464=29 30 29 29 30 29 29 30 30 30 29 30
+1465=30 29 30 29 29 30 29 29 30 30 29 30
+1466=30 30 29 30 29 29 29 30 29 30 30 29
+1467=30 30 29 30 30 29 29 30 29 30 29 30
+1468=29 30 29 30 30 29 30 29 30 29 30 29
+1469=29 30 29 30 30 29 30 30 29 30 29 30
+1470=29 29 30 29 30 30 29 30 30 29 30 29
+1471=30 29 29 30 29 30 29 30 30 29 30 30
+1472=29 30 29 29 30 29 30 29 30 30 29 30
+1473=29 30 29 30 30 29 29 30 29 30 29 30
+1474=29 30 30 29 30 30 29 29 30 29 30 29
+1475=29 30 30 29 30 30 30 29 29 30 29 29
+1476=30 29 30 29 30 30 30 29 30 29 30 29
+1477=29 30 29 29 30 30 30 30 29 30 29 30
+1478=29 29 30 29 30 29 30 30 29 30 30 29
+1479=30 29 29 30 29 30 29 30 29 30 30 29
+1480=30 29 30 29 30 29 30 29 30 29 30 29
+1481=30 29 30 30 29 30 29 30 29 30 29 29
+1482=30 29 30 30 30 30 29 30 29 29 30 29
+1483=29 30 29 30 30 30 29 30 30 29 29 30
+1484=29 29 30 29 30 30 30 29 30 29 30 29
+1485=30 29 29 30 29 30 30 29 30 30 29 30
+1486=29 30 29 29 30 29 30 29 30 30 29 30
+1487=30 29 30 29 30 29 29 30 29 30 29 30
+1488=30 29 30 30 29 30 29 29 30 29 30 29
+1489=30 29 30 30 30 29 30 29 29 30 29 30
+1490=29 30 29 30 30 29 30 30 29 29 30 29
+1491=30 29 29 30 30 29 30 30 29 30 29 30
+1492=29 30 29 29 30 30 29 30 29 30 30 29
+1493=30 29 30 29 30 29 29 30 29 30 30 30
+1494=29 30 29 30 29 30 29 29 29 30 30 30
+1495=29 30 30 29 30 29 29 30 29 29 30 30
+1496=29 30 30 30 29 30 29 29 30 29 29 30
+1497=30 29 30 30 29 30 29 30 29 30 29 30
+1498=29 30 29 30 29 30 30 29 30 29 30 29
+1499=30 29 30 29 29 30 30 29 30 29 30 30
+1500=29 30 29 30 29 29 30 29 30 29 30 30
+1501=30 29 30 29 30 29 29 29 30 29 30 30
+1502=30 30 29 30 29 30 29 29 29 30 30 29
+1503=30 30 29 30 30 29 30 29 29 29 30 30
+1504=29 30 29 30 30 30 29 29 30 29 30 29
+1505=30 29 30 29 30 30 29 30 29 30 30 29
+1506=29 30 29 29 30 30 29 30 30 29 30 30
+1507=29 29 30 29 29 30 30 29 30 29 30 30
+1508=30 29 29 30 29 30 29 29 30 29 30 30
+1509=30 29 30 29 30 29 30 29 29 30 29 30
+1510=30 29 30 30 29 30 29 30 29 29 30 29
+1511=30 29 30 30 29 30 30 29 30 29 29 30
+1512=29 30 29 30 29 30 30 30 29 30 29 30
+1513=29 29 29 30 29 30 30 30 29 30 30 29
+1514=30 29 29 29 30 29 30 30 29 30 30 30
+1515=29 29 30 29 29 30 29 30 30 29 30 30
+1516=29 30 29 30 29 29 30 29 30 29 30 30
+1517=29 30 29 30 29 30 30 29 29 30 29 30
+1518=29 30 29 30 30 29 30 30 29 30 29 29
+1519=30 29 29 30 30 30 29 30 30 29 30 29
+1520=29 30 29 29 30 30 30 29 30 30 29 30
+1521=29 29 29 30 29 30 30 29 30 30 29 30
+1522=30 29 29 29 30 29 30 30 29 30 30 29
+1523=30 29 30 29 30 29 30 29 29 30 30 29
+1524=30 30 29 30 29 30 29 30 29 29 30 29
+1525=30 30 29 30 30 29 30 29 30 29 29 30
+1526=29 30 29 30 30 30 29 30 29 30 29 29
+1527=30 29 30 29 30 30 29 30 30 29 30 29
+1528=30 29 29 30 29 30 29 30 30 29 30 30
+1529=29 30 29 29 30 29 30 29 30 29 30 30
+1530=29 30 30 29 29 30 29 30 29 29 30 30
+1531=29 30 30 30 29 29 30 29 30 29 29 30
+1532=29 30 30 30 29 30 30 29 29 29 30 29
+1533=30 29 30 30 30 29 30 29 30 29 29 30
+1534=29 30 29 30 30 29 30 30 29 29 30 29
+1535=30 29 30 29 30 29 30 30 29 30 29 30
+1536=29 30 29 30 29 30 29 30 29 30 29 30
+1537=30 29 30 30 29 29 30 29 29 30 29 30
+1538=30 30 29 30 30 29 29 30 29 29 30 29
+1539=30 30 30 29 30 30 29 29 30 29 29 30
+1540=29 30 30 29 30 30 29 30 29 29 30 29
+1541=30 29 30 29 30 30 30 29 30 29 29 30
+1542=29 30 29 30 29 30 30 29 30 29 30 30
+1543=29 30 29 29 30 29 30 29 30 29 30 30
+1544=30 29 30 29 29 30 29 30 29 30 29 30
+1545=30 30 29 30 29 29 30 29 30 29 29 30
+1546=30 30 29 30 29 30 29 30 29 30 29 29
+1547=30 30 29 30 30 29 30 29 30 29 30 29
+1548=30 29 29 30 30 29 30 30 29 30 29 30
+1549=29 30 29 29 30 29 30 30 30 29 30 29
+1550=30 29 30 29 29 29 30 30 30 29 30 30
+1551=29 30 29 29 30 29 29 30 30 29 30 30
+1552=30 29 30 29 29 30 29 29 30 30 29 30
+1553=30 29 30 29 30 29 30 29 30 29 30 29
+1554=30 29 30 29 30 30 29 30 29 30 29 30
+1555=29 29 30 29 30 30 29 30 30 29 30 29
+1556=30 29 29 30 29 30 29 30 30 30 29 30
+1557=29 30 29 29 29 30 29 30 30 30 30 29
+1558=30 29 30 29 29 29 30 29 30 30 30 29
+1559=30 30 29 29 30 29 29 30 30 29 30 29
+1560=30 30 29 30 29 30 29 30 29 30 29 30
+1561=29 30 30 29 30 29 30 30 29 29 30 29
+1562=29 30 30 29 30 29 30 30 30 29 29 30
+1563=29 30 29 29 30 29 30 30 30 29 30 29
+1564=30 29 30 29 29 30 29 30 30 30 29 30
+1565=29 30 29 30 29 29 30 29 30 30 29 30
+1566=30 29 30 29 30 29 29 30 29 30 29 30
+1567=30 29 30 30 29 30 29 30 29 29 30 29
+1568=30 29 30 30 30 29 30 29 30 29 29 29
+1569=30 29 30 30 30 29 30 30 29 30 29 29
+1570=29 30 29 30 30 29 30 30 30 29 29 30
+1571=29 29 30 29 30 30 29 30 30 29 30 29
+1572=30 29 29 30 29 30 29 30 30 29 30 29
+1573=30 29 30 30 29 30 29 29 30 29 30 29
+1574=30 30 29 30 30 29 30 29 29 30 29 29
+1575=30 30 30 29 30 30 29 30 29 29 29 30
+1576=29 30 30 29 30 30 30 29 30 29 29 29
+1577=30 29 30 30 29 30 30 29 30 29 30 29
+1578=29 30 29 30 29 30 30 29 30 30 29 30
+1579=29 30 29 30 29 29 30 30 29 30 29 30
+1580=29 30 30 29 30 29 29 30 29 30 29 30
+1581=30 30 29 30 29 30 29 29 30 29 30 29
+1582=30 30 29 30 30 29 30 29 30 29 29 29
+1583=30 30 29 30 30 30 29 30 29 30 29 29
+1584=29 30 30 29 30 30 29 30 30 29 30 29
+1585=29 30 29 30 29 30 29 30 30 29 30 30
+1586=29 29 30 29 30 29 29 30 30 30 29 30
+1587=29 30 30 29 29 29 30 29 30 29 30 30
+1588=30 29 30 30 29 29 29 30 29 30 29 30
+1589=30 29 30 30 29 30 29 29 30 29 30 29
+1590=30 29 30 30 30 29 29 30 29 30 29 30
+1591=29 30 29 30 30 29 30 29 30 29 30 29
+1592=30 29 30 29 30 29 30 29 30 30 30 29
+1593=30 29 29 30 29 29 30 29 30 30 30 29
+1594=30 30 29 29 30 29 29 29 30 30 30 30
+1595=29 30 29 30 29 29 30 29 29 30 30 30
+1596=29 30 30 29 30 29 29 30 29 30 29 30
+1597=29 30 30 29 30 29 30 29 30 29 30 29
+1598=30 29 30 29 30 30 29 30 29 30 30 29
+1599=29 30 29 30 29 30 29 30 30 30 29 30
+1600=29 29 30 29 30 29 29 30 30 30 29 30
--- a/jdk/src/java.base/share/classes/java/util/Collection.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/share/classes/java/util/Collection.java Fri Oct 31 18:18:58 2014 +0000
@@ -518,7 +518,7 @@
* <p>The default implementation should be overridden by subclasses that
* can return a more efficient spliterator. In order to
* preserve expected laziness behavior for the {@link #stream()} and
- * {@link #parallelStream()}} methods, spliterators should either have the
+ * {@link #parallelStream()} methods, spliterators should either have the
* characteristic of {@code IMMUTABLE} or {@code CONCURRENT}, or be
* <em><a href="Spliterator.html#binding">late-binding</a></em>.
* If none of these is practical, the overriding class should describe the
--- a/jdk/src/java.base/share/classes/java/util/JapaneseImperialCalendar.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/share/classes/java/util/JapaneseImperialCalendar.java Fri Oct 31 18:18:58 2014 +0000
@@ -97,8 +97,7 @@
*
* This implementation uses
* sun.util.calendar.LocalGregorianCalendar to perform most of the
- * calendar calculations. LocalGregorianCalendar is configurable
- * and reads <JRE_HOME>/lib/calendars.properties at the start-up.
+ * calendar calculations.
*/
/**
--- a/jdk/src/java.base/share/classes/sun/misc/JavaIOFileDescriptorAccess.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/share/classes/sun/misc/JavaIOFileDescriptorAccess.java Fri Oct 31 18:18:58 2014 +0000
@@ -33,6 +33,8 @@
public interface JavaIOFileDescriptorAccess {
public void set(FileDescriptor obj, int fd);
public int get(FileDescriptor fd);
+ public void setAppend(FileDescriptor obj, boolean append);
+ public boolean getAppend(FileDescriptor obj);
// Only valid on Windows
public void setHandle(FileDescriptor obj, long handle);
--- a/jdk/src/java.base/share/classes/sun/nio/ch/FileChannelImpl.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/share/classes/sun/nio/ch/FileChannelImpl.java Fri Oct 31 18:18:58 2014 +0000
@@ -44,6 +44,8 @@
import java.util.List;
import sun.misc.Cleaner;
+import sun.misc.JavaIOFileDescriptorAccess;
+import sun.misc.SharedSecrets;
import sun.security.action.GetPropertyAction;
public class FileChannelImpl
@@ -52,6 +54,10 @@
// Memory allocation size for mapping buffers
private static final long allocationGranularity;
+ // Access to FileDispatcher internals
+ private static final JavaIOFileDescriptorAccess fdAccess =
+ SharedSecrets.getJavaIOFileDescriptorAccess();
+
// Used to make native read and write calls
private final FileDispatcher nd;
@@ -61,7 +67,6 @@
// File access mode (immutable)
private final boolean writable;
private final boolean readable;
- private final boolean append;
// Required to prevent finalization of creating stream (immutable)
private final Object parent;
@@ -77,31 +82,23 @@
private final Object positionLock = new Object();
private FileChannelImpl(FileDescriptor fd, String path, boolean readable,
- boolean writable, boolean append, Object parent)
+ boolean writable, Object parent)
{
this.fd = fd;
this.readable = readable;
this.writable = writable;
- this.append = append;
this.parent = parent;
this.path = path;
- this.nd = new FileDispatcherImpl(append);
+ this.nd = new FileDispatcherImpl();
}
- // Used by FileInputStream.getChannel() and RandomAccessFile.getChannel()
+ // Used by FileInputStream.getChannel(), FileOutputStream.getChannel
+ // and RandomAccessFile.getChannel()
public static FileChannel open(FileDescriptor fd, String path,
boolean readable, boolean writable,
Object parent)
{
- return new FileChannelImpl(fd, path, readable, writable, false, parent);
- }
-
- // Used by FileOutputStream.getChannel
- public static FileChannel open(FileDescriptor fd, String path,
- boolean readable, boolean writable,
- boolean append, Object parent)
- {
- return new FileChannelImpl(fd, path, readable, writable, append, parent);
+ return new FileChannelImpl(fd, path, readable, writable, parent);
}
private void ensureOpen() throws IOException {
@@ -109,7 +106,6 @@
throw new ClosedChannelException();
}
-
// -- Standard channel operations --
protected void implCloseChannel() throws IOException {
@@ -258,6 +254,7 @@
ti = threads.add();
if (!isOpen())
return 0;
+ boolean append = fdAccess.getAppend(fd);
do {
// in append-mode then position is advanced to end before writing
p = (append) ? nd.size(fd) : position0(fd, -1);
@@ -284,7 +281,7 @@
if (!isOpen())
return null;
do {
- p = position0(fd, newPosition);
+ p = position0(fd, newPosition);
} while ((p == IOStatus.INTERRUPTED) && isOpen());
return this;
} finally {
--- a/jdk/src/java.base/share/classes/sun/nio/ch/ServerSocketChannelImpl.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/share/classes/sun/nio/ch/ServerSocketChannelImpl.java Fri Oct 31 18:18:58 2014 +0000
@@ -247,7 +247,7 @@
return null;
thread = NativeThread.current();
for (;;) {
- n = accept0(this.fd, newfd, isaa);
+ n = accept(this.fd, newfd, isaa);
if ((n == IOStatus.INTERRUPTED) && isOpen())
continue;
break;
@@ -410,6 +410,18 @@
return sb.toString();
}
+ /**
+ * Accept a connection on a socket.
+ *
+ * @implNote Wrap native call to allow instrumentation.
+ */
+ private int accept(FileDescriptor ssfd, FileDescriptor newfd,
+ InetSocketAddress[] isaa)
+ throws IOException
+ {
+ return accept0(ssfd, newfd, isaa);
+ }
+
// -- Native methods --
// Accepts a new connection, setting the given file descriptor to refer to
--- a/jdk/src/java.base/share/classes/sun/security/ssl/CipherBox.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/share/classes/sun/security/ssl/CipherBox.java Fri Oct 31 18:18:58 2014 +0000
@@ -560,7 +560,7 @@
+ newLen);
hd.encodeBuffer(
- (ByteBuffer)bb.duplicate().position(pos), System.out);
+ bb.duplicate().position(pos), System.out);
} catch (IOException e) { }
}
@@ -790,7 +790,7 @@
// The padding data should be filled with the padding length value.
int[] results = checkPadding(
- (ByteBuffer)bb.duplicate().position(offset + newLen),
+ bb.duplicate().position(offset + newLen),
(byte)(padLen & 0xFF));
if (protocolVersion.v >= ProtocolVersion.TLS10.v) {
if (results[0] != 0) { // padding data has invalid bytes
--- a/jdk/src/java.base/share/classes/sun/security/ssl/EngineInputRecord.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/share/classes/sun/security/ssl/EngineInputRecord.java Fri Oct 31 18:18:58 2014 +0000
@@ -349,8 +349,7 @@
/*
* Copy data out of buffer, it's ready to go.
*/
- ByteBuffer netBB = (ByteBuffer)
- (ByteBuffer.allocate(len).put(buf, 0, len).flip());
+ ByteBuffer netBB = ByteBuffer.allocate(len).put(buf, 0, len).flip();
engine.writer.putOutboundDataSync(netBB);
}
--- a/jdk/src/java.base/share/classes/sun/security/ssl/EngineOutputRecord.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/share/classes/sun/security/ssl/EngineOutputRecord.java Fri Oct 31 18:18:58 2014 +0000
@@ -113,9 +113,7 @@
/*
* Copy data out of buffer, it's ready to go.
*/
- ByteBuffer netBB = (ByteBuffer)
- ByteBuffer.allocate(len).put(buf, off, len).flip();
-
+ ByteBuffer netBB = ByteBuffer.allocate(len).put(buf, off, len).flip();
writer.putOutboundData(netBB);
}
--- a/jdk/src/java.base/share/classes/sun/util/calendar/CalendarSystem.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/share/classes/sun/util/calendar/CalendarSystem.java Fri Oct 31 18:18:58 2014 +0000
@@ -177,44 +177,6 @@
return (cs == null) ? cal : cs;
}
- /**
- * Returns a {@link Properties} loaded from lib/calendars.properties.
- *
- * @return a {@link Properties} loaded from lib/calendars.properties
- * @throws IOException if an error occurred when reading from the input stream
- * @throws IllegalArgumentException if the input stream contains any malformed
- * Unicode escape sequences
- */
- public static Properties getCalendarProperties() throws IOException {
- Properties calendarProps = null;
- try {
- String homeDir = AccessController.doPrivileged(
- new sun.security.action.GetPropertyAction("java.home"));
- final String fname = homeDir + File.separator + "lib" + File.separator
- + "calendars.properties";
- calendarProps = AccessController.doPrivileged(new PrivilegedExceptionAction<Properties>() {
- @Override
- public Properties run() throws IOException {
- Properties props = new Properties();
- try (FileInputStream fis = new FileInputStream(fname)) {
- props.load(fis);
- }
- return props;
- }
- });
- } catch (PrivilegedActionException e) {
- Throwable cause = e.getCause();
- if (cause instanceof IOException) {
- throw (IOException) cause;
- } else if (cause instanceof IllegalArgumentException) {
- throw (IllegalArgumentException) cause;
- }
- // Should not happen
- throw new InternalError(cause);
- }
- return calendarProps;
- }
-
//////////////////////////////// Calendar API //////////////////////////////////
/**
--- a/jdk/src/java.base/share/classes/sun/util/resources/TimeZoneNames.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/share/classes/sun/util/resources/TimeZoneNames.java Fri Oct 31 18:18:58 2014 +0000
@@ -829,7 +829,7 @@
{"Europe/Madrid", CET},
{"Europe/Malta", CET},
{"Europe/Mariehamn", EET},
- {"Europe/Minsk", FET},
+ {"Europe/Minsk", MSK},
{"Europe/Monaco", CET},
{"Europe/Moscow", MSK},
{"Europe/Nicosia", EET},
@@ -917,6 +917,9 @@
{"PRT", AST},
{"Pacific/Apia", WST_SAMOA},
{"Pacific/Auckland", NZST},
+ {"Pacific/Bougainville", new String[] {"Bougainville Standard Time", "BST",
+ "Bougainville Daylight Time", "BST",
+ "Bougainville Time", "BT"}},
{"Pacific/Chatham", CHAST},
{"Pacific/Chuuk", CHUT},
{"Pacific/Easter", EASTER},
--- a/jdk/src/java.base/share/conf/calendars.properties Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-# Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation. 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.
-#
-
-#
-# Hijrah calendars
-#
-calendar.hijrah.Hijrah-umalqura: hijrah-config-umalqura.properties
-calendar.hijrah.Hijrah-umalqura.type: islamic-umalqura
--- a/jdk/src/java.base/share/conf/hijrah-config-umalqura.properties Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,369 +0,0 @@
-# Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation. Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-# This properties file defines a Hijrah calendar variant.
-#
-# Fields:
-#
-# <version> ::= 'version' '=' <version string>
-# <id> ::= 'id' '=' <id string>
-# <type> ::= 'type' '=' <type string>
-# <iso-start> ::= 'iso-start' '=' <start date in the ISO calendar>
-# <year> ::= <yyyy> '=' <nn nn nn nn nn nn nn nn nn nn nn nn>
-#
-# version ... (Required)
-#
-# id ... (Required)
-# Identifies the Java Chronology
-#
-# type ... (Required)
-# Identifies the type of calendar in the standard calendar ID scheme
-# iso-start ... (Required)
-# Specifies the corresponding ISO date to the first Hijrah day
-# in the defined range of dates
-#
-# year ... (Required)
-# Number of days for each month of a Hijrah year
-# * Each line defines a year. The years must be in chronological
-# order and no gap is allowed.
-# * Each line is in the form indicated above. <yyyy> is a Hijrah year and
-# nn is the number of days for a month listed in the order of the months.
-# * Each year must have 12 months.
-# * Each month should be 29 or 30 days long.
-# * There must be one or more space characters between the months.
-#
-
-# Version of this definition
-version=1.8.0_1
-
-# Java chronology ID
-id=Hijrah-umalqura
-
-# Standard calendar type specification
-type=islamic-umalqura
-
-# defines the corresponding ISO date to the earliest Hijrah date
-iso-start=1882-11-12
-
-# 1 2 3 4 5 6 7 8 9 10 11 12
-1300=30 29 30 29 30 29 30 29 30 29 30 29
-1301=30 30 29 30 29 30 29 30 29 30 29 29
-1302=30 30 30 29 30 30 29 29 30 29 29 30
-1303=29 30 30 29 30 30 29 30 29 30 29 29
-1304=29 30 30 29 30 30 30 29 30 29 30 29
-1305=29 29 30 30 29 30 30 29 30 30 29 29
-1306=30 29 30 29 30 29 30 29 30 30 29 30
-1307=29 30 29 30 29 30 29 30 29 30 29 30
-1308=29 30 30 29 30 29 30 29 30 29 29 30
-1309=29 30 30 30 30 29 29 30 29 29 30 29
-1310=30 29 30 30 30 29 30 29 30 29 29 30
-1311=29 30 29 30 30 30 29 30 29 30 29 29
-1312=30 29 30 29 30 30 29 30 30 29 30 29
-1313=29 30 29 30 29 30 29 30 30 30 29 29
-1314=30 30 29 30 29 29 30 29 30 30 29 30
-1315=29 30 30 29 30 29 29 30 29 30 29 30
-1316=29 30 30 30 29 30 29 29 30 29 30 29
-1317=30 29 30 30 29 30 29 30 29 30 29 29
-1318=30 29 30 30 29 30 30 29 30 29 30 29
-1319=29 30 29 30 30 29 30 29 30 30 29 30
-1320=29 30 29 29 30 29 30 29 30 30 30 29
-1321=30 29 30 29 29 30 29 29 30 30 30 30
-1322=29 30 29 30 29 29 29 30 29 30 30 30
-1323=29 30 30 29 30 29 29 29 30 29 30 30
-1324=29 30 30 29 30 29 30 29 29 30 29 30
-1325=30 29 30 29 30 30 29 30 29 30 29 30
-1326=29 29 30 29 30 30 29 30 29 30 30 29
-1327=30 29 29 30 29 30 29 30 30 29 30 30
-1328=29 30 29 29 30 29 29 30 30 30 29 30
-1329=30 29 30 29 29 30 29 29 30 30 29 30
-1330=30 30 29 30 29 29 30 29 29 30 30 29
-1331=30 30 29 30 30 29 29 30 29 30 29 30
-1332=29 30 29 30 30 29 30 29 30 30 29 29
-1333=30 29 29 30 30 29 30 30 29 30 30 29
-1334=29 29 30 29 30 29 30 30 30 29 30 29
-1335=30 29 30 29 29 30 29 30 30 29 30 30
-1336=29 30 29 30 29 29 30 29 30 29 30 30
-1337=30 29 30 29 30 29 29 30 29 30 29 30
-1338=29 30 30 29 30 30 29 29 30 29 30 29
-1339=30 29 30 29 30 30 30 29 30 29 29 30
-1340=29 29 30 29 30 30 30 30 29 30 29 29
-1341=30 29 29 30 29 30 30 30 29 30 30 29
-1342=29 29 30 29 30 29 30 30 29 30 30 29
-1343=30 29 29 30 29 30 29 30 29 30 30 29
-1344=30 29 30 29 30 30 29 29 30 29 30 29
-1345=30 29 30 30 30 29 30 29 29 30 29 29
-1346=30 29 30 30 30 30 29 30 29 29 30 29
-1347=29 30 29 30 30 30 29 30 30 29 29 30
-1348=29 29 30 29 30 30 29 30 30 30 29 29
-1349=30 29 29 30 29 30 30 29 30 30 29 30
-1350=29 30 29 30 29 30 29 29 30 30 29 30
-1351=30 29 30 29 30 29 30 29 29 30 29 30
-1352=30 29 30 30 29 30 29 30 29 29 30 29
-1353=30 29 30 30 30 29 30 29 29 30 29 30
-1354=29 30 29 30 30 29 30 30 29 30 29 29
-1355=30 29 29 30 30 29 30 30 29 30 30 29
-1356=29 30 29 30 29 30 29 30 29 30 30 30
-1357=29 29 30 29 30 29 29 30 29 30 30 30
-1358=29 30 29 30 29 30 29 29 30 29 30 30
-1359=29 30 30 29 30 29 30 29 29 29 30 30
-1360=29 30 30 30 29 30 29 30 29 29 30 29
-1361=30 29 30 30 29 30 30 29 29 30 29 30
-1362=29 30 29 30 29 30 30 29 30 29 30 29
-1363=30 29 30 29 30 29 30 29 30 29 30 30
-1364=29 30 29 30 29 29 30 29 30 29 30 30
-1365=30 30 29 29 30 29 29 30 29 30 29 30
-1366=30 30 29 30 29 30 29 29 30 29 30 29
-1367=30 30 29 30 30 29 30 29 29 30 29 30
-1368=29 30 29 30 30 30 29 29 30 29 30 29
-1369=30 29 30 29 30 30 29 30 29 30 30 29
-1370=30 29 29 30 29 30 29 30 29 30 30 30
-1371=29 30 29 29 30 29 30 29 30 29 30 30
-1372=30 29 29 30 29 30 29 29 30 29 30 30
-1373=30 29 30 29 30 29 30 29 29 30 29 30
-1374=30 29 30 30 29 30 29 30 29 29 30 29
-1375=30 29 30 30 29 30 30 29 30 29 30 29
-1376=29 30 29 30 29 30 30 30 29 30 29 30
-1377=29 29 30 29 29 30 30 30 29 30 30 29
-1378=30 29 29 29 30 29 30 30 29 30 30 30
-1379=29 30 29 29 29 30 29 30 30 29 30 30
-1380=29 30 29 30 29 30 29 30 29 30 29 30
-1381=29 30 29 30 30 29 30 29 30 29 29 30
-1382=29 30 29 30 30 29 30 30 29 30 29 29
-1383=30 29 29 30 30 30 29 30 30 29 30 29
-1384=29 30 29 29 30 30 29 30 30 30 29 30
-1385=29 29 30 29 29 30 30 29 30 30 30 29
-1386=30 29 29 30 29 29 30 30 29 30 30 29
-1387=30 29 30 29 30 29 30 29 30 29 30 29
-1388=30 30 29 30 29 30 29 30 29 30 29 29
-1389=30 30 29 30 30 29 30 30 29 29 30 29
-1390=29 30 29 30 30 30 29 30 29 30 29 30
-1391=29 29 30 29 30 30 29 30 30 29 30 29
-1392=30 29 29 30 29 30 29 30 30 29 30 30
-1393=29 30 29 29 30 29 30 29 30 29 30 30
-1394=30 29 30 29 29 30 29 30 29 30 29 30
-1395=30 29 30 30 29 30 29 29 30 29 29 30
-1396=30 29 30 30 29 30 30 29 29 30 29 29
-1397=30 29 30 30 29 30 30 30 29 29 29 30
-1398=29 30 29 30 30 29 30 30 29 30 29 29
-1399=30 29 30 29 30 29 30 30 29 30 29 30
-1400=30 29 30 29 29 30 29 30 29 30 29 30
-1401=30 30 29 30 29 29 30 29 29 30 29 30
-1402=30 30 30 29 30 29 29 30 29 29 30 29
-1403=30 30 30 29 30 30 29 29 30 29 29 30
-1404=29 30 30 29 30 30 29 30 29 30 29 29
-1405=30 29 30 29 30 30 30 29 30 29 29 30
-1406=30 29 29 30 29 30 30 29 30 29 30 30
-1407=29 30 29 29 30 29 30 29 30 29 30 30
-1408=30 29 30 29 30 29 29 30 29 29 30 30
-1409=30 30 29 30 29 30 29 29 30 29 29 30
-1410=30 30 29 30 30 29 30 29 29 30 29 29
-1411=30 30 29 30 30 29 30 30 29 29 30 29
-1412=30 29 30 29 30 29 30 30 30 29 29 30
-1413=29 30 29 29 30 29 30 30 30 29 30 29
-1414=30 29 30 29 29 30 29 30 30 29 30 30
-1415=29 30 29 30 29 29 30 29 30 29 30 30
-1416=30 29 30 29 30 29 29 30 29 30 29 30
-1417=30 29 30 30 29 29 30 29 30 29 30 29
-1418=30 29 30 30 29 30 29 30 29 30 29 30
-1419=29 30 29 30 29 30 29 30 30 30 29 29
-1420=29 30 29 29 30 29 30 30 30 30 29 30
-1421=29 29 30 29 29 29 30 30 30 30 29 30
-1422=30 29 29 30 29 29 29 30 30 30 29 30
-1423=30 29 30 29 30 29 29 30 29 30 29 30
-1424=30 29 30 30 29 30 29 29 30 29 30 29
-1425=30 29 30 30 29 30 29 30 30 29 30 29
-1426=29 30 29 30 29 30 30 29 30 30 29 30
-1427=29 29 30 29 30 29 30 30 29 30 30 29
-1428=30 29 29 30 29 29 30 30 30 29 30 30
-1429=29 30 29 29 30 29 29 30 30 29 30 30
-1430=29 30 30 29 29 30 29 30 29 30 29 30
-1431=29 30 30 29 30 29 30 29 30 29 29 30
-1432=29 30 30 30 29 30 29 30 29 30 29 29
-1433=30 29 30 30 29 30 30 29 30 29 30 29
-1434=29 30 29 30 29 30 30 29 30 30 29 29
-1435=30 29 30 29 30 29 30 29 30 30 29 30
-1436=29 30 29 30 29 30 29 30 29 30 29 30
-1437=30 29 30 30 29 29 30 29 30 29 29 30
-1438=30 29 30 30 30 29 29 30 29 29 30 29
-1439=30 29 30 30 30 29 30 29 30 29 29 30
-1440=29 30 29 30 30 30 29 30 29 30 29 29
-1441=30 29 30 29 30 30 29 30 30 29 30 29
-1442=29 30 29 30 29 30 29 30 30 29 30 29
-1443=30 29 30 29 30 29 30 29 30 29 30 30
-1444=29 30 29 30 30 29 29 30 29 30 29 30
-1445=29 30 30 30 29 30 29 29 30 29 29 30
-1446=29 30 30 30 29 30 30 29 29 30 29 29
-1447=30 29 30 30 30 29 30 29 30 29 30 29
-1448=29 30 29 30 30 29 30 30 29 30 29 30
-1449=29 29 30 29 30 29 30 30 29 30 30 29
-1450=30 29 30 29 29 30 29 30 29 30 30 29
-1451=30 30 30 29 29 30 29 29 30 30 29 30
-1452=30 29 30 30 29 29 30 29 29 30 29 30
-1453=30 29 30 30 29 30 29 30 29 29 30 29
-1454=30 29 30 30 29 30 30 29 30 29 30 29
-1455=29 30 29 30 30 29 30 29 30 30 29 30
-1456=29 29 30 29 30 29 30 29 30 30 30 29
-1457=30 29 29 30 29 29 30 29 30 30 30 30
-1458=29 30 29 29 30 29 29 30 29 30 30 30
-1459=29 30 30 29 29 30 29 29 30 29 30 30
-1460=29 30 30 29 30 29 30 29 29 30 29 30
-1461=29 30 30 29 30 29 30 29 30 30 29 29
-1462=30 29 30 29 30 30 29 30 29 30 30 29
-1463=29 30 29 30 29 30 29 30 30 30 29 30
-1464=29 30 29 29 30 29 29 30 30 30 29 30
-1465=30 29 30 29 29 30 29 29 30 30 29 30
-1466=30 30 29 30 29 29 29 30 29 30 30 29
-1467=30 30 29 30 30 29 29 30 29 30 29 30
-1468=29 30 29 30 30 29 30 29 30 29 30 29
-1469=29 30 29 30 30 29 30 30 29 30 29 30
-1470=29 29 30 29 30 30 29 30 30 29 30 29
-1471=30 29 29 30 29 30 29 30 30 29 30 30
-1472=29 30 29 29 30 29 30 29 30 30 29 30
-1473=29 30 29 30 30 29 29 30 29 30 29 30
-1474=29 30 30 29 30 30 29 29 30 29 30 29
-1475=29 30 30 29 30 30 30 29 29 30 29 29
-1476=30 29 30 29 30 30 30 29 30 29 30 29
-1477=29 30 29 29 30 30 30 30 29 30 29 30
-1478=29 29 30 29 30 29 30 30 29 30 30 29
-1479=30 29 29 30 29 30 29 30 29 30 30 29
-1480=30 29 30 29 30 29 30 29 30 29 30 29
-1481=30 29 30 30 29 30 29 30 29 30 29 29
-1482=30 29 30 30 30 30 29 30 29 29 30 29
-1483=29 30 29 30 30 30 29 30 30 29 29 30
-1484=29 29 30 29 30 30 30 29 30 29 30 29
-1485=30 29 29 30 29 30 30 29 30 30 29 30
-1486=29 30 29 29 30 29 30 29 30 30 29 30
-1487=30 29 30 29 30 29 29 30 29 30 29 30
-1488=30 29 30 30 29 30 29 29 30 29 30 29
-1489=30 29 30 30 30 29 30 29 29 30 29 30
-1490=29 30 29 30 30 29 30 30 29 29 30 29
-1491=30 29 29 30 30 29 30 30 29 30 29 30
-1492=29 30 29 29 30 30 29 30 29 30 30 29
-1493=30 29 30 29 30 29 29 30 29 30 30 30
-1494=29 30 29 30 29 30 29 29 29 30 30 30
-1495=29 30 30 29 30 29 29 30 29 29 30 30
-1496=29 30 30 30 29 30 29 29 30 29 29 30
-1497=30 29 30 30 29 30 29 30 29 30 29 30
-1498=29 30 29 30 29 30 30 29 30 29 30 29
-1499=30 29 30 29 29 30 30 29 30 29 30 30
-1500=29 30 29 30 29 29 30 29 30 29 30 30
-1501=30 29 30 29 30 29 29 29 30 29 30 30
-1502=30 30 29 30 29 30 29 29 29 30 30 29
-1503=30 30 29 30 30 29 30 29 29 29 30 30
-1504=29 30 29 30 30 30 29 29 30 29 30 29
-1505=30 29 30 29 30 30 29 30 29 30 30 29
-1506=29 30 29 29 30 30 29 30 30 29 30 30
-1507=29 29 30 29 29 30 30 29 30 29 30 30
-1508=30 29 29 30 29 30 29 29 30 29 30 30
-1509=30 29 30 29 30 29 30 29 29 30 29 30
-1510=30 29 30 30 29 30 29 30 29 29 30 29
-1511=30 29 30 30 29 30 30 29 30 29 29 30
-1512=29 30 29 30 29 30 30 30 29 30 29 30
-1513=29 29 29 30 29 30 30 30 29 30 30 29
-1514=30 29 29 29 30 29 30 30 29 30 30 30
-1515=29 29 30 29 29 30 29 30 30 29 30 30
-1516=29 30 29 30 29 29 30 29 30 29 30 30
-1517=29 30 29 30 29 30 30 29 29 30 29 30
-1518=29 30 29 30 30 29 30 30 29 30 29 29
-1519=30 29 29 30 30 30 29 30 30 29 30 29
-1520=29 30 29 29 30 30 30 29 30 30 29 30
-1521=29 29 29 30 29 30 30 29 30 30 29 30
-1522=30 29 29 29 30 29 30 30 29 30 30 29
-1523=30 29 30 29 30 29 30 29 29 30 30 29
-1524=30 30 29 30 29 30 29 30 29 29 30 29
-1525=30 30 29 30 30 29 30 29 30 29 29 30
-1526=29 30 29 30 30 30 29 30 29 30 29 29
-1527=30 29 30 29 30 30 29 30 30 29 30 29
-1528=30 29 29 30 29 30 29 30 30 29 30 30
-1529=29 30 29 29 30 29 30 29 30 29 30 30
-1530=29 30 30 29 29 30 29 30 29 29 30 30
-1531=29 30 30 30 29 29 30 29 30 29 29 30
-1532=29 30 30 30 29 30 30 29 29 29 30 29
-1533=30 29 30 30 30 29 30 29 30 29 29 30
-1534=29 30 29 30 30 29 30 30 29 29 30 29
-1535=30 29 30 29 30 29 30 30 29 30 29 30
-1536=29 30 29 30 29 30 29 30 29 30 29 30
-1537=30 29 30 30 29 29 30 29 29 30 29 30
-1538=30 30 29 30 30 29 29 30 29 29 30 29
-1539=30 30 30 29 30 30 29 29 30 29 29 30
-1540=29 30 30 29 30 30 29 30 29 29 30 29
-1541=30 29 30 29 30 30 30 29 30 29 29 30
-1542=29 30 29 30 29 30 30 29 30 29 30 30
-1543=29 30 29 29 30 29 30 29 30 29 30 30
-1544=30 29 30 29 29 30 29 30 29 30 29 30
-1545=30 30 29 30 29 29 30 29 30 29 29 30
-1546=30 30 29 30 29 30 29 30 29 30 29 29
-1547=30 30 29 30 30 29 30 29 30 29 30 29
-1548=30 29 29 30 30 29 30 30 29 30 29 30
-1549=29 30 29 29 30 29 30 30 30 29 30 29
-1550=30 29 30 29 29 29 30 30 30 29 30 30
-1551=29 30 29 29 30 29 29 30 30 29 30 30
-1552=30 29 30 29 29 30 29 29 30 30 29 30
-1553=30 29 30 29 30 29 30 29 30 29 30 29
-1554=30 29 30 29 30 30 29 30 29 30 29 30
-1555=29 29 30 29 30 30 29 30 30 29 30 29
-1556=30 29 29 30 29 30 29 30 30 30 29 30
-1557=29 30 29 29 29 30 29 30 30 30 30 29
-1558=30 29 30 29 29 29 30 29 30 30 30 29
-1559=30 30 29 29 30 29 29 30 30 29 30 29
-1560=30 30 29 30 29 30 29 30 29 30 29 30
-1561=29 30 30 29 30 29 30 30 29 29 30 29
-1562=29 30 30 29 30 29 30 30 30 29 29 30
-1563=29 30 29 29 30 29 30 30 30 29 30 29
-1564=30 29 30 29 29 30 29 30 30 30 29 30
-1565=29 30 29 30 29 29 30 29 30 30 29 30
-1566=30 29 30 29 30 29 29 30 29 30 29 30
-1567=30 29 30 30 29 30 29 30 29 29 30 29
-1568=30 29 30 30 30 29 30 29 30 29 29 29
-1569=30 29 30 30 30 29 30 30 29 30 29 29
-1570=29 30 29 30 30 29 30 30 30 29 29 30
-1571=29 29 30 29 30 30 29 30 30 29 30 29
-1572=30 29 29 30 29 30 29 30 30 29 30 29
-1573=30 29 30 30 29 30 29 29 30 29 30 29
-1574=30 30 29 30 30 29 30 29 29 30 29 29
-1575=30 30 30 29 30 30 29 30 29 29 29 30
-1576=29 30 30 29 30 30 30 29 30 29 29 29
-1577=30 29 30 30 29 30 30 29 30 29 30 29
-1578=29 30 29 30 29 30 30 29 30 30 29 30
-1579=29 30 29 30 29 29 30 30 29 30 29 30
-1580=29 30 30 29 30 29 29 30 29 30 29 30
-1581=30 30 29 30 29 30 29 29 30 29 30 29
-1582=30 30 29 30 30 29 30 29 30 29 29 29
-1583=30 30 29 30 30 30 29 30 29 30 29 29
-1584=29 30 30 29 30 30 29 30 30 29 30 29
-1585=29 30 29 30 29 30 29 30 30 29 30 30
-1586=29 29 30 29 30 29 29 30 30 30 29 30
-1587=29 30 30 29 29 29 30 29 30 29 30 30
-1588=30 29 30 30 29 29 29 30 29 30 29 30
-1589=30 29 30 30 29 30 29 29 30 29 30 29
-1590=30 29 30 30 30 29 29 30 29 30 29 30
-1591=29 30 29 30 30 29 30 29 30 29 30 29
-1592=30 29 30 29 30 29 30 29 30 30 30 29
-1593=30 29 29 30 29 29 30 29 30 30 30 29
-1594=30 30 29 29 30 29 29 29 30 30 30 30
-1595=29 30 29 30 29 29 30 29 29 30 30 30
-1596=29 30 30 29 30 29 29 30 29 30 29 30
-1597=29 30 30 29 30 29 30 29 30 29 30 29
-1598=30 29 30 29 30 30 29 30 29 30 30 29
-1599=29 30 29 30 29 30 29 30 30 30 29 30
-1600=29 29 30 29 30 29 29 30 30 30 29 30
--- a/jdk/src/java.base/share/native/libjava/io_util.h Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/share/native/libjava/io_util.h Fri Oct 31 18:18:58 2014 +0000
@@ -28,6 +28,7 @@
extern jfieldID IO_fd_fdID;
extern jfieldID IO_handle_fdID;
+extern jfieldID IO_append_fdID;
#ifdef _ALLBSD_SOURCE
#include <fcntl.h>
--- a/jdk/src/java.base/unix/classes/java/io/FileDescriptor.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/unix/classes/java/io/FileDescriptor.java Fri Oct 31 18:18:58 2014 +0000
@@ -52,15 +52,21 @@
private boolean closed;
/**
+ * true, if file is opened for appending.
+ */
+ private boolean append;
+
+ /**
* Constructs an (invalid) FileDescriptor
* object.
*/
- public /**/ FileDescriptor() {
+ public FileDescriptor() {
fd = -1;
}
- private /* */ FileDescriptor(int fd) {
+ private FileDescriptor(int fd) {
this.fd = fd;
+ this.append = getAppend(fd);
}
/**
@@ -149,6 +155,14 @@
return obj.fd;
}
+ public void setAppend(FileDescriptor obj, boolean append) {
+ obj.append = append;
+ }
+
+ public boolean getAppend(FileDescriptor obj) {
+ return obj.append;
+ }
+
public void setHandle(FileDescriptor obj, long handle) {
throw new UnsupportedOperationException();
}
@@ -160,6 +174,11 @@
);
}
+ /**
+ * Returns true, if the file was opened for appending.
+ */
+ private static native boolean getAppend(int fd);
+
/*
* Package private methods to track referents.
* If multiple streams point to the same FileDescriptor, we cycle
--- a/jdk/src/java.base/unix/classes/sun/nio/ch/FileDispatcherImpl.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/unix/classes/sun/nio/ch/FileDispatcherImpl.java Fri Oct 31 18:18:58 2014 +0000
@@ -35,10 +35,6 @@
init();
}
- FileDispatcherImpl(boolean append) {
- /* append is ignored */
- }
-
FileDispatcherImpl() {
}
--- a/jdk/src/java.base/unix/classes/sun/nio/ch/UnixAsynchronousServerSocketChannelImpl.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/unix/classes/sun/nio/ch/UnixAsynchronousServerSocketChannelImpl.java Fri Oct 31 18:18:58 2014 +0000
@@ -141,7 +141,7 @@
Throwable exc = null;
try {
begin();
- int n = accept0(this.fd, newfd, isaa);
+ int n = accept(this.fd, newfd, isaa);
// spurious wakeup, is this possible?
if (n == IOStatus.UNAVAILABLE) {
@@ -277,7 +277,7 @@
try {
begin();
- int n = accept0(this.fd, newfd, isaa);
+ int n = accept(this.fd, newfd, isaa);
if (n == IOStatus.UNAVAILABLE) {
// need calling context when there is security manager as
@@ -332,6 +332,18 @@
}
}
+ /**
+ * Accept a connection on a socket.
+ *
+ * @implNote Wrap native call to allow instrumentation.
+ */
+ private int accept(FileDescriptor ssfd, FileDescriptor newfd,
+ InetSocketAddress[] isaa)
+ throws IOException
+ {
+ return accept0(ssfd, newfd, isaa);
+ }
+
// -- Native methods --
private static native void initIDs();
--- a/jdk/src/java.base/unix/classes/sun/nio/fs/UnixChannelFactory.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/unix/classes/sun/nio/fs/UnixChannelFactory.java Fri Oct 31 18:18:58 2014 +0000
@@ -134,7 +134,7 @@
throw new IllegalArgumentException("APPEND + TRUNCATE_EXISTING not allowed");
FileDescriptor fdObj = open(dfd, path, pathForPermissionCheck, flags, mode);
- return FileChannelImpl.open(fdObj, path.toString(), flags.read, flags.write, flags.append, null);
+ return FileChannelImpl.open(fdObj, path.toString(), flags.read, flags.write, null);
}
/**
@@ -288,6 +288,7 @@
// create java.io.FileDescriptor
FileDescriptor fdObj = new FileDescriptor();
fdAccess.set(fdObj, fd);
+ fdAccess.setAppend(fdObj, flags.append);
return fdObj;
}
}
--- a/jdk/src/java.base/unix/native/libjava/FileDescriptor_md.c Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/unix/native/libjava/FileDescriptor_md.c Fri Oct 31 18:18:58 2014 +0000
@@ -23,6 +23,9 @@
* questions.
*/
+#include <unistd.h>
+#include <fcntl.h>
+
#include "jvm.h"
#include "io_util_md.h"
@@ -35,6 +38,9 @@
/* field id for jint 'fd' in java.io.FileDescriptor */
jfieldID IO_fd_fdID;
+/* field id for jboolean 'append' in java.io.FileDescriptor */
+jfieldID IO_append_fdID;
+
/**************************************************************
* static methods to store field ID's in initializers
*/
@@ -42,6 +48,7 @@
JNIEXPORT void JNICALL
Java_java_io_FileDescriptor_initIDs(JNIEnv *env, jclass fdClass) {
IO_fd_fdID = (*env)->GetFieldID(env, fdClass, "fd", "I");
+ IO_append_fdID = (*env)->GetFieldID(env, fdClass, "append", "Z");
}
/**************************************************************
@@ -55,3 +62,9 @@
JNU_ThrowByName(env, "java/io/SyncFailedException", "sync failed");
}
}
+
+JNIEXPORT jboolean JNICALL
+Java_java_io_FileDescriptor_getAppend(JNIEnv *env, jclass fdClass, jint fd) {
+ int flags = fcntl(fd, F_GETFL);
+ return ((flags & O_APPEND) == 0) ? JNI_FALSE : JNI_TRUE;
+}
--- a/jdk/src/java.base/unix/native/libjava/io_util_md.c Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/unix/native/libjava/io_util_md.c Fri Oct 31 18:18:58 2014 +0000
@@ -107,7 +107,15 @@
#endif
fd = handleOpen(ps, flags, 0666);
if (fd != -1) {
+ jobject fdobj;
+ jboolean append;
SET_FD(this, fd, fid);
+
+ fdobj = (*env)->GetObjectField(env, this, fid);
+ if (fdobj != NULL) {
+ append = (flags & O_APPEND) == 0 ? JNI_FALSE : JNI_TRUE;
+ (*env)->SetBooleanField(env, fdobj, IO_append_fdID, append);
+ }
} else {
throwFileNotFoundException(env, path);
}
--- a/jdk/src/java.base/windows/classes/java/io/FileDescriptor.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/windows/classes/java/io/FileDescriptor.java Fri Oct 31 18:18:58 2014 +0000
@@ -51,6 +51,11 @@
private boolean closed;
/**
+ * true, if file is opened for appending.
+ */
+ private boolean append;
+
+ /**
* Constructs an (invalid) FileDescriptor
* object.
*/
@@ -75,6 +80,14 @@
return obj.fd;
}
+ public void setAppend(FileDescriptor obj, boolean append) {
+ obj.append = append;
+ }
+
+ public boolean getAppend(FileDescriptor obj) {
+ return obj.append;
+ }
+
public void setHandle(FileDescriptor obj, long handle) {
obj.handle = handle;
}
--- a/jdk/src/java.base/windows/classes/sun/nio/ch/FileDispatcherImpl.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/windows/classes/sun/nio/ch/FileDispatcherImpl.java Fri Oct 31 18:18:58 2014 +0000
@@ -31,22 +31,14 @@
class FileDispatcherImpl extends FileDispatcher
{
+ private static final JavaIOFileDescriptorAccess fdAccess =
+ SharedSecrets.getJavaIOFileDescriptorAccess();
+
static {
IOUtil.load();
}
- /**
- * Indicates if the dispatcher should first advance the file position
- * to the end of file when writing.
- */
- private final boolean append;
-
- FileDispatcherImpl(boolean append) {
- this.append = append;
- }
-
FileDispatcherImpl() {
- this(false);
}
@Override
@@ -71,7 +63,7 @@
}
int write(FileDescriptor fd, long address, int len) throws IOException {
- return write0(fd, address, len, append);
+ return write0(fd, address, len, fdAccess.getAppend(fd));
}
int pwrite(FileDescriptor fd, long address, int len, long position)
@@ -81,7 +73,7 @@
}
long writev(FileDescriptor fd, long address, int len) throws IOException {
- return writev0(fd, address, len, append);
+ return writev0(fd, address, len, fdAccess.getAppend(fd));
}
int force(FileDescriptor fd, boolean metaData) throws IOException {
@@ -112,8 +104,6 @@
FileDescriptor duplicateForMapping(FileDescriptor fd) throws IOException {
// on Windows we need to keep a handle to the file
- JavaIOFileDescriptorAccess fdAccess =
- SharedSecrets.getJavaIOFileDescriptorAccess();
FileDescriptor result = new FileDescriptor();
long handle = duplicateHandle(fdAccess.getHandle(fd));
fdAccess.setHandle(result, handle);
--- a/jdk/src/java.base/windows/classes/sun/nio/fs/WindowsChannelFactory.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/windows/classes/sun/nio/fs/WindowsChannelFactory.java Fri Oct 31 18:18:58 2014 +0000
@@ -160,7 +160,7 @@
throw new IllegalArgumentException("APPEND + TRUNCATE_EXISTING not allowed");
FileDescriptor fdObj = open(pathForWindows, pathToCheck, flags, pSecurityDescriptor);
- return FileChannelImpl.open(fdObj, pathForWindows, flags.read, flags.write, flags.append, null);
+ return FileChannelImpl.open(fdObj, pathForWindows, flags.read, flags.write, null);
}
/**
@@ -339,6 +339,7 @@
// create FileDescriptor and return
FileDescriptor fdObj = new FileDescriptor();
fdAccess.setHandle(fdObj, handle);
+ fdAccess.setAppend(fdObj, flags.append);
return fdObj;
}
}
--- a/jdk/src/java.base/windows/native/libjava/FileDescriptor_md.c Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/windows/native/libjava/FileDescriptor_md.c Fri Oct 31 18:18:58 2014 +0000
@@ -42,6 +42,9 @@
/* field id for jlong 'handle' in java.io.FileDescriptor */
jfieldID IO_handle_fdID;
+/* field id for jboolean 'append' in java.io.FileDescriptor */
+jfieldID IO_append_fdID;
+
/**************************************************************
* static methods to store field IDs in initializers
*/
@@ -50,6 +53,7 @@
Java_java_io_FileDescriptor_initIDs(JNIEnv *env, jclass fdClass) {
CHECK_NULL(IO_fd_fdID = (*env)->GetFieldID(env, fdClass, "fd", "I"));
CHECK_NULL(IO_handle_fdID = (*env)->GetFieldID(env, fdClass, "handle", "J"));
+ CHECK_NULL(IO_append_fdID = (*env)->GetFieldID(env, fdClass, "append", "Z"));
}
JNIEXPORT jlong JNICALL
--- a/jdk/src/java.base/windows/native/libjava/io_util_md.c Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.base/windows/native/libjava/io_util_md.c Fri Oct 31 18:18:58 2014 +0000
@@ -275,7 +275,15 @@
{
FD h = winFileHandleOpen(env, path, flags);
if (h >= 0) {
+ jobject fdobj;
+ jboolean append;
SET_FD(this, h, fid);
+
+ fdobj = (*env)->GetObjectField(env, this, fid);
+ if (fdobj != NULL) {
+ append = (flags & O_APPEND) == 0 ? JNI_FALSE : JNI_TRUE;
+ (*env)->SetBooleanField(env, fdobj, IO_append_fdID, append);
+ }
}
}
--- a/jdk/src/java.desktop/macosx/classes/com/apple/laf/AquaIcon.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.desktop/macosx/classes/com/apple/laf/AquaIcon.java Fri Oct 31 18:18:58 2014 +0000
@@ -62,7 +62,7 @@
if (w <= 0 || h <= 0) return null;
// This could be any kind of icon, so we need to make a buffer for it, draw it and then pass the new image off to appkit.
- final BufferedImage image = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
+ final BufferedImage image = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB_PRE);
final Graphics g = image.getGraphics();
i.paintIcon(null, g, 0, 0);
g.dispose();
--- a/jdk/src/java.desktop/macosx/classes/com/apple/laf/AquaImageFactory.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.desktop/macosx/classes/com/apple/laf/AquaImageFactory.java Fri Oct 31 18:18:58 2014 +0000
@@ -129,7 +129,7 @@
};
final BufferedImage image = new BufferedImage(scaledAlertIconSize,
- scaledAlertIconSize, BufferedImage.TYPE_INT_ARGB);
+ scaledAlertIconSize, BufferedImage.TYPE_INT_ARGB_PRE);
final Graphics g = image.getGraphics();
g.drawImage(background, 0, 0,
scaledAlertIconSize, scaledAlertIconSize, null);
--- a/jdk/src/java.desktop/macosx/classes/com/apple/laf/AquaNativeResources.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.desktop/macosx/classes/com/apple/laf/AquaNativeResources.java Fri Oct 31 18:18:58 2014 +0000
@@ -67,11 +67,12 @@
}
static BufferedImage getRadioButtonSizerImage() {
- final BufferedImage img = new BufferedImage(20, 20, BufferedImage.TYPE_INT_ARGB);
+ final BufferedImage img = new BufferedImage(20, 20, BufferedImage.TYPE_INT_ARGB_PRE);
Graphics g = img.getGraphics();
g.setColor(Color.pink);
g.fillRect(0, 0, 20, 20);
+ g.dispose();
return img;
}
--- a/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java Fri Oct 31 18:18:58 2014 +0000
@@ -676,6 +676,13 @@
@Override // PlatformWindow
public void toFront() {
final long nsWindowPtr = getNSWindowPtr();
+ LWCToolkit lwcToolkit = (LWCToolkit) Toolkit.getDefaultToolkit();
+ Window w = DefaultKeyboardFocusManager.getCurrentKeyboardFocusManager().getActiveWindow();
+ if( w != null
+ && ((LWWindowPeer)w.getPeer()).getPeerType() == LWWindowPeer.PeerType.EMBEDDED_FRAME
+ && !lwcToolkit.isApplicationActive()) {
+ lwcToolkit.activateApplicationIgnoringOtherApps();
+ }
updateFocusabilityForAutoRequestFocus(false);
nativePushNSWindowToFront(nsWindowPtr);
updateFocusabilityForAutoRequestFocus(true);
--- a/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/LWCToolkit.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/LWCToolkit.java Fri Oct 31 18:18:58 2014 +0000
@@ -811,6 +811,11 @@
*/
public static native boolean isEmbedded();
+ /*
+ * Activates application ignoring other apps.
+ */
+ public native void activateApplicationIgnoringOtherApps();
+
/************************
* Native methods section
************************/
--- a/jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/LWCToolkit.m Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/LWCToolkit.m Fri Oct 31 18:18:58 2014 +0000
@@ -606,6 +606,23 @@
return active;
}
+/*
+ * Class: sun_lwawt_macosx_LWCToolkit
+ * Method: activateApplicationIgnoringOtherApps
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_sun_lwawt_macosx_LWCToolkit_activateApplicationIgnoringOtherApps
+(JNIEnv *env, jclass clazz)
+{
+ JNF_COCOA_ENTER(env);
+ [ThreadUtilities performOnMainThreadWaiting:NO block:^(){
+ if(![NSApp isActive]){
+ [NSApp activateIgnoringOtherApps:YES];
+ }
+ }];
+ JNF_COCOA_EXIT(env);
+}
+
/*
* Class: sun_awt_SunToolkit
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/META-INF/services/javax.print.PrintServiceLookup Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,2 @@
+# Provider for Java Print Service
+sun.print.PrintServiceLookupProvider
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/META-INF/services/javax.print.StreamPrintServiceFactory Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,2 @@
+# Provider for Java 2D Stream print services.
+sun.print.PSStreamPrinterFactory
--- a/jdk/src/java.desktop/share/classes/java/awt/Container.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.desktop/share/classes/java/awt/Container.java Fri Oct 31 18:18:58 2014 +0000
@@ -3696,7 +3696,7 @@
private void writeObject(ObjectOutputStream s) throws IOException {
ObjectOutputStream.PutField f = s.putFields();
f.put("ncomponents", component.size());
- f.put("component", getComponentsSync());
+ f.put("component", component.toArray(EMPTY_ARRAY));
f.put("layoutMgr", layoutMgr);
f.put("dispatcher", dispatcher);
f.put("maxSize", maxSize);
--- a/jdk/src/java.desktop/share/classes/java/awt/color/ICC_Profile.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.desktop/share/classes/java/awt/color/ICC_Profile.java Fri Oct 31 18:18:58 2014 +0000
@@ -48,6 +48,7 @@
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
+import java.io.FilePermission;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
@@ -1857,7 +1858,13 @@
* returns null.
*/
private static InputStream getStandardProfileInputStream(String fileName) {
- return PCMM.class.getResourceAsStream("profiles/" + fileName);
+ return AccessController.doPrivileged(
+ new PrivilegedAction<InputStream>() {
+ public InputStream run () {
+ return
+ PCMM.class.getResourceAsStream("profiles/" + fileName);
+ }
+ }, null, new FilePermission("<<ALL FILES>>", "read"));
}
/**
--- a/jdk/src/java.desktop/share/classes/javax/swing/BorderFactory.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.desktop/share/classes/javax/swing/BorderFactory.java Fri Oct 31 18:18:58 2014 +0000
@@ -35,7 +35,7 @@
* possible, this factory will hand out references to shared
* <code>Border</code> instances.
* For further information and examples see
- * <a href="http://docs.oracle.com/javase/tutorial/uiswing/components/border.htmll">How
+ * <a href="http://docs.oracle.com/javase/tutorial/uiswing/components/border.html">How
to Use Borders</a>,
* a section in <em>The Java Tutorial</em>.
*
--- a/jdk/src/java.desktop/share/classes/javax/swing/JComponent.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.desktop/share/classes/javax/swing/JComponent.java Fri Oct 31 18:18:58 2014 +0000
@@ -126,7 +126,7 @@
* that includes double buffering and support for borders.
* For more information see <a
* href="http://www.oracle.com/technetwork/java/painting-140037.html#swing">Painting</a> and
- * <a href="http://docs.oracle.com/javase/tutorial/uiswing/components/border.htmll">How
+ * <a href="http://docs.oracle.com/javase/tutorial/uiswing/components/border.html">How
* to Use Borders</a>,
* both of which are sections in <em>The Java Tutorial</em>.
* </ul>
--- a/jdk/src/java.desktop/share/classes/javax/swing/JInternalFrame.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.desktop/share/classes/javax/swing/JInternalFrame.java Fri Oct 31 18:18:58 2014 +0000
@@ -1141,14 +1141,15 @@
/**
* Sets an image to be displayed in the titlebar of this internal frame (usually
* in the top-left corner).
+ * Some look and feels might not support displaying an icon in the titlebar.
+ *
* This image is not the <code>desktopIcon</code> object, which
* is the image displayed in the <code>JDesktop</code> when
* this internal frame is iconified.
*
* Passing <code>null</code> to this function is valid,
- * but the look and feel
- * can choose the
- * appropriate behavior for that situation, such as displaying no icon
+ * but the look and feel can choose the appropriate behavior
+ * for that situation, such as displaying no icon
* or a default icon for the look and feel.
*
* @param icon the <code>Icon</code> to display in the title bar
--- a/jdk/src/java.desktop/share/classes/javax/swing/JLayer.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.desktop/share/classes/javax/swing/JLayer.java Fri Oct 31 18:18:58 2014 +0000
@@ -325,24 +325,38 @@
}
/**
- * A non-{@code null} border, or non-zero insets, isn't supported, to prevent the geometry
- * of this component from becoming complex enough to inhibit
- * subclassing of {@code LayerUI} class. To create a {@code JLayer} with a border,
- * add it to a {@code JPanel} that has a border.
- * <p>Note: If {@code border} is non-{@code null}, this
- * method will throw an exception as borders are not supported on
- * a {@code JLayer}.
+ * Delegates its functionality to the {@code getView().setBorder(Border)} method,
+ * if the view component is an instance of {@code javax.swing.JComponent},
+ * otherwise this method is a no-op.
*
- * @param border the {@code Border} to set
- * @exception IllegalArgumentException this method is not supported
+ * @param border the border to be rendered for the {@code view} component
+ * @see #getView()
+ * @see javax.swing.JComponent#setBorder(Border)
*/
public void setBorder(Border border) {
- if (border != null) {
- throw new IllegalArgumentException("JLayer.setBorder() not supported");
+ if (view instanceof JComponent) {
+ ((JComponent)view).setBorder(border);
}
}
/**
+ * Delegates its functionality to the {@code getView().getBorder()} method,
+ * if the view component is an instance of {@code javax.swing.JComponent},
+ * otherwise returns {@code null}.
+ *
+ * @return the border object for the {@code view} component
+ * @see #getView()
+ * @see #setBorder
+ * @see javax.swing.JComponent#getBorder()
+ */
+ public Border getBorder() {
+ if (view instanceof JComponent) {
+ return ((JComponent) view).getBorder();
+ }
+ return null;
+ }
+
+ /**
* This method is not supported by {@code JLayer}
* and always throws {@code UnsupportedOperationException}
*
--- a/jdk/src/java.desktop/share/classes/javax/swing/border/Border.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.desktop/share/classes/javax/swing/border/Border.java Fri Oct 31 18:18:58 2014 +0000
@@ -33,7 +33,7 @@
* Interface describing an object capable of rendering a border
* around the edges of a swing component.
* For examples of using borders see
- * <a href="http://docs.oracle.com/javase/tutorial/uiswing/components/border.htmll">How to Use Borders</a>,
+ * <a href="http://docs.oracle.com/javase/tutorial/uiswing/components/border.html">How to Use Borders</a>,
* a section in <em>The Java Tutorial.</em>
* <p>
* In the Swing component set, borders supercede Insets as the
--- a/jdk/src/java.desktop/share/classes/javax/swing/border/package.html Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.desktop/share/classes/javax/swing/border/package.html Fri Oct 31 18:18:58 2014 +0000
@@ -40,10 +40,10 @@
Most of the Swing API is <em>not</em> thread safe.
For details, see
<a
-href="http://java.sun.com/docs/books/tutorial/uiswing/overview/threads.html"
-target="_top">Threads and Swing</a>,
+href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html"
+target="_top">Concurrency in Swing</a>,
a section in
-<em><a href="http://java.sun.com/docs/books/tutorial/"
+<em><a href="http://docs.oracle.com/javase/tutorial/"
target="_top">The Java Tutorial</a></em>.
@@ -51,7 +51,7 @@
For overviews, tutorials, examples, guides, and tool documentation, please see:
<ul>
- <li><a href="http://java.sun.com/docs/books/tutorial/uiswing/misc/border.html"
+ <li><a href="http://docs.oracle.com/javase/tutorial/uiswing/components/border.html"
target="_top">How to Use Borders</a>,
a section in <em>The Java Tutorial</em>
</ul>
--- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicRadioButtonUI.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicRadioButtonUI.java Fri Oct 31 18:18:58 2014 +0000
@@ -33,7 +33,8 @@
import javax.swing.text.View;
import sun.swing.SwingUtilities2;
import sun.awt.AppContext;
-
+import java.util.Enumeration;
+import java.util.HashSet;
/**
* RadioButtonUI implementation for BasicRadioButtonUI
@@ -53,6 +54,8 @@
private final static String propertyPrefix = "RadioButton" + ".";
+ private KeyListener keyListener = null;
+
// ********************************
// Create PLAF
// ********************************
@@ -74,6 +77,7 @@
return radioButtonUI;
}
+ @Override
protected String getPropertyPrefix() {
return propertyPrefix;
}
@@ -81,7 +85,8 @@
// ********************************
// Install PLAF
// ********************************
- protected void installDefaults(AbstractButton b){
+ @Override
+ protected void installDefaults(AbstractButton b) {
super.installDefaults(b);
if(!defaults_initialized) {
icon = UIManager.getIcon(getPropertyPrefix() + "icon");
@@ -92,7 +97,8 @@
// ********************************
// Uninstall PLAF
// ********************************
- protected void uninstallDefaults(AbstractButton b){
+ @Override
+ protected void uninstallDefaults(AbstractButton b) {
super.uninstallDefaults(b);
defaults_initialized = false;
}
@@ -106,6 +112,65 @@
return icon;
}
+ // ********************************
+ // Install Listeners
+ // ********************************
+ @Override
+ protected void installListeners(AbstractButton button) {
+ super.installListeners(button);
+
+ // Only for JRadioButton
+ if (!(button instanceof JRadioButton))
+ return;
+
+ keyListener = createKeyListener();
+ button.addKeyListener(keyListener);
+
+ // Need to get traversal key event
+ button.setFocusTraversalKeysEnabled(false);
+
+ // Map actions to the arrow keys
+ button.getActionMap().put("Previous", new SelectPreviousBtn());
+ button.getActionMap().put("Next", new SelectNextBtn());
+
+ button.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).
+ put(KeyStroke.getKeyStroke("UP"), "Previous");
+ button.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).
+ put(KeyStroke.getKeyStroke("DOWN"), "Next");
+ button.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).
+ put(KeyStroke.getKeyStroke("LEFT"), "Previous");
+ button.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).
+ put(KeyStroke.getKeyStroke("RIGHT"), "Next");
+ }
+
+ // ********************************
+ // UnInstall Listeners
+ // ********************************
+ @Override
+ protected void uninstallListeners(AbstractButton button) {
+ super.uninstallListeners(button);
+
+ // Only for JRadioButton
+ if (!(button instanceof JRadioButton))
+ return;
+
+ // Unmap actions from the arrow keys
+ button.getActionMap().remove("Previous");
+ button.getActionMap().remove("Next");
+ button.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
+ .remove(KeyStroke.getKeyStroke("UP"));
+ button.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
+ .remove(KeyStroke.getKeyStroke("DOWN"));
+ button.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
+ .remove(KeyStroke.getKeyStroke("LEFT"));
+ button.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
+ .remove(KeyStroke.getKeyStroke("RIGHT"));
+
+ if (keyListener != null) {
+ button.removeKeyListener(keyListener);
+ keyListener = null;
+ }
+ }
/* These Dimensions/Rectangles are allocated once for all
* RadioButtonUI.paint() calls. Re-using rectangles
@@ -121,6 +186,7 @@
/**
* paint the radio button
*/
+ @Override
public synchronized void paint(Graphics g, JComponent c) {
AbstractButton b = (AbstractButton) c;
ButtonModel model = b.getModel();
@@ -217,7 +283,7 @@
* @param textRect bounds
* @param size the size of radio button
*/
- protected void paintFocus(Graphics g, Rectangle textRect, Dimension size){
+ protected void paintFocus(Graphics g, Rectangle textRect, Dimension size) {
}
@@ -235,6 +301,7 @@
/**
* The preferred size of the radio button
*/
+ @Override
public Dimension getPreferredSize(JComponent c) {
if(c.getComponentCount() > 0) {
return null;
@@ -280,4 +347,262 @@
height += prefInsets.top + prefInsets.bottom;
return new Dimension(width, height);
}
+
+ /////////////////////////// Private functions ////////////////////////
+ /**
+ * Creates the key listener to handle tab navigation in JRadioButton Group.
+ */
+ private KeyListener createKeyListener() {
+ if (keyListener == null) {
+ keyListener = new KeyHandler();
+ }
+ return keyListener;
+ }
+
+
+ private boolean isValidRadioButtonObj(Object obj) {
+ return ((obj instanceof JRadioButton) &&
+ ((JRadioButton) obj).isVisible() &&
+ ((JRadioButton) obj).isEnabled());
+ }
+
+ /**
+ * Select radio button based on "Previous" or "Next" operation
+ *
+ * @param event, the event object.
+ * @param next, indicate if it's next one
+ */
+ private void selectRadioButton(ActionEvent event, boolean next) {
+ // Get the source of the event.
+ Object eventSrc = event.getSource();
+
+ // Check whether the source is JRadioButton, it so, whether it is visible
+ if (!isValidRadioButtonObj(eventSrc))
+ return;
+
+ ButtonGroupInfo btnGroupInfo = new ButtonGroupInfo((JRadioButton)eventSrc);
+ btnGroupInfo.selectNewButton(next);
+ }
+
+ /////////////////////////// Inner Classes ////////////////////////
+ @SuppressWarnings("serial")
+ private class SelectPreviousBtn extends AbstractAction {
+ public SelectPreviousBtn() {
+ super("Previous");
+ }
+
+ public void actionPerformed(ActionEvent e) {
+ BasicRadioButtonUI.this.selectRadioButton(e, false);
+ }
+ }
+
+ @SuppressWarnings("serial")
+ private class SelectNextBtn extends AbstractAction{
+ public SelectNextBtn() {
+ super("Next");
+ }
+
+ public void actionPerformed(ActionEvent e) {
+ BasicRadioButtonUI.this.selectRadioButton(e, true);
+ }
+ }
+
+ /**
+ * ButtonGroupInfo, used to get related info in button group
+ * for given radio button
+ */
+ private class ButtonGroupInfo {
+
+ JRadioButton activeBtn = null;
+
+ JRadioButton firstBtn = null;
+ JRadioButton lastBtn = null;
+
+ JRadioButton previousBtn = null;
+ JRadioButton nextBtn = null;
+
+ HashSet<JRadioButton> btnsInGroup = null;
+
+ boolean srcFound = false;
+ public ButtonGroupInfo(JRadioButton btn) {
+ activeBtn = btn;
+ btnsInGroup = new HashSet<JRadioButton>();
+ }
+
+ // Check if given object is in the button group
+ boolean containsInGroup(Object obj){
+ return btnsInGroup.contains(obj);
+ }
+
+ // Check if the next object to gain focus belongs
+ // to the button group or not
+ Component getFocusTransferBaseComponent(boolean next){
+ Component focusBaseComp = activeBtn;
+ Window container = SwingUtilities.getWindowAncestor(activeBtn);
+ if (container != null) {
+ FocusTraversalPolicy policy = container.getFocusTraversalPolicy();
+ Component comp = next ? policy.getComponentAfter(container, activeBtn)
+ : policy.getComponentBefore(container, activeBtn);
+
+ // If next component in the button group, use last/first button as base focus
+ // otherwise, use the activeBtn as the base focus
+ if (containsInGroup(comp)) {
+ focusBaseComp = next ? lastBtn : firstBtn;
+ }
+ }
+
+ return focusBaseComp;
+ }
+
+ boolean getButtonGroupInfo() {
+ if (activeBtn == null)
+ return false;
+
+ btnsInGroup.clear();
+
+ // Get the button model from the source.
+ ButtonModel model = activeBtn.getModel();
+ if (!(model instanceof DefaultButtonModel))
+ return false;
+
+ // If the button model is DefaultButtonModel, and use it, otherwise return.
+ DefaultButtonModel bm = (DefaultButtonModel) model;
+
+ // get the ButtonGroup of the button from the button model
+ ButtonGroup group = bm.getGroup();
+ if (group == null)
+ return false;
+
+ // Get all the buttons in the group
+ Enumeration<AbstractButton> e = group.getElements();
+ if (e == null)
+ return false;
+
+ while (e.hasMoreElements()) {
+ AbstractButton curElement = e.nextElement();
+ if (!isValidRadioButtonObj(curElement))
+ continue;
+
+ btnsInGroup.add((JRadioButton) curElement);
+
+ // If firstBtn is not set yet, curElement is that first button
+ if (null == firstBtn)
+ firstBtn = (JRadioButton) curElement;
+
+ if (activeBtn == curElement)
+ srcFound = true;
+ else if (!srcFound) {
+ // The source has not been yet found and the current element
+ // is the last previousBtn
+ previousBtn = (JRadioButton) curElement;
+ } else if (nextBtn == null) {
+ // The source has been found and the current element
+ // is the next valid button of the list
+ nextBtn = (JRadioButton) curElement;
+ }
+
+ // Set new last "valid" JRadioButton of the list
+ lastBtn = (JRadioButton) curElement;
+ }
+
+ return true;
+ }
+
+ /**
+ * Find the new radio button that focus needs to be
+ * moved to in the group, select the button
+ *
+ * @param next, indicate if it's arrow up/left or down/right
+ */
+ void selectNewButton(boolean next) {
+ if (!getButtonGroupInfo())
+ return;
+
+ if (srcFound) {
+ JRadioButton newSelectedBtn = null;
+ if (next) {
+ // Select Next button. Cycle to the first button if the source
+ // button is the last of the group.
+ newSelectedBtn = (null == nextBtn) ? firstBtn : nextBtn;
+ } else {
+ // Select previous button. Cycle to the last button if the source
+ // button is the first button of the group.
+ newSelectedBtn = (null == previousBtn) ? lastBtn : previousBtn;
+ }
+ if (newSelectedBtn != null &&
+ (newSelectedBtn != activeBtn)) {
+ newSelectedBtn.requestFocusInWindow();
+ newSelectedBtn.setSelected(true);
+ }
+ }
+ }
+
+ /**
+ * Find the button group the passed in JRadioButton belongs to, and
+ * move focus to next component of the last button in the group
+ * or previous component of first button
+ *
+ * @param next, indicate if jump to next component or previous
+ */
+ void jumpToNextComponent(boolean next) {
+ if (!getButtonGroupInfo()){
+ // In case the button does not belong to any group, it needs
+ // to be treated as a component
+ if (activeBtn != null){
+ lastBtn = activeBtn;
+ firstBtn = activeBtn;
+ }
+ else
+ return;
+ }
+
+ // Update the component we will use as base to transfer
+ // focus from
+ JComponent compTransferFocusFrom = activeBtn;
+
+ // If next component in the parent window is not in
+ // the button group, current active button will be
+ // base, otherwise, the base will be first or last
+ // button in the button group
+ Component focusBase = getFocusTransferBaseComponent(next);
+ if (focusBase != null){
+ if (next) {
+ KeyboardFocusManager.
+ getCurrentKeyboardFocusManager().focusNextComponent(focusBase);
+ } else {
+ KeyboardFocusManager.
+ getCurrentKeyboardFocusManager().focusPreviousComponent(focusBase);
+ }
+ }
+ }
+ }
+
+ /**
+ * Radiobutton KeyListener
+ */
+ private class KeyHandler implements KeyListener {
+
+ // This listener checks if the key event is a KeyEvent.VK_TAB
+ // or shift + KeyEvent.VK_TAB event on a radio button, consume the event
+ // if so and move the focus to next/previous component
+ public void keyPressed(KeyEvent e) {
+ if (e.getKeyCode() == KeyEvent.VK_TAB) {
+ // Get the source of the event.
+ Object eventSrc = e.getSource();
+
+ // Check whether the source is a visible and enabled JRadioButton
+ if (isValidRadioButtonObj(eventSrc)) {
+ e.consume();
+ ButtonGroupInfo btnGroupInfo = new ButtonGroupInfo((JRadioButton)eventSrc);
+ btnGroupInfo.jumpToNextComponent(!e.isShiftDown());
+ }
+ }
+ }
+
+ public void keyReleased(KeyEvent e) {
+ }
+
+ public void keyTyped(KeyEvent e) {
+ }
+ }
}
--- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicTabbedPaneUI.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicTabbedPaneUI.java Fri Oct 31 18:18:58 2014 +0000
@@ -3249,6 +3249,7 @@
}
}
tabScroller.tabPanel.setPreferredSize(new Dimension(totalWidth, totalHeight));
+ tabScroller.tabPanel.invalidate();
}
}
@@ -3622,6 +3623,7 @@
setFocusIndex(tabPane.getSelectedIndex(), false);
if (scrollableTabLayoutEnabled()) {
+ ensureCurrentLayout();
int index = tabPane.getSelectedIndex();
if (index < rects.length && index != -1) {
tabScroller.tabPanel.scrollRectToVisible(
--- a/jdk/src/java.desktop/share/classes/javax/swing/text/html/HTMLDocument.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.desktop/share/classes/javax/swing/text/html/HTMLDocument.java Fri Oct 31 18:18:58 2014 +0000
@@ -1400,8 +1400,13 @@
Element parent = elem.getParentElement();
if (parent != null) {
+ // If we are going to insert the string into the body
+ // section, it is necessary to set the corrsponding flag.
+ if (HTML.Tag.BODY.name.equals(parent.getName())) {
+ insertInBody = true;
+ }
int offset = elem.getEndOffset();
- if (offset > getLength()) {
+ if (offset > (getLength() + 1)) {
offset--;
}
else if (elem.isLeaf() && getText(offset - 1, 1).
@@ -1409,6 +1414,10 @@
offset--;
}
insertHTML(parent, offset, htmlText, false);
+ // Cleanup the flag, if any.
+ if (insertInBody) {
+ insertInBody = false;
+ }
}
}
}
@@ -1847,6 +1856,11 @@
private static char[] NEWLINE;
/**
+ * Indicates that direct insertion to body section takes place.
+ */
+ private boolean insertInBody = false;
+
+ /**
* I18N property key.
*
* @see AbstractDocument#I18NProperty
@@ -2610,7 +2624,9 @@
// Assume content should be added.
foundInsertTag(false);
foundInsertTag = true;
- inParagraph = impliedP = true;
+ // If content is added directly to the body, it should
+ // be wrapped by p-implied.
+ inParagraph = impliedP = !insertInBody;
}
if (data.length >= 1) {
addContent(data, 0, data.length);
--- a/jdk/src/java.desktop/share/classes/sun/java2d/opengl/OGLBlitLoops.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/opengl/OGLBlitLoops.java Fri Oct 31 18:18:58 2014 +0000
@@ -47,7 +47,7 @@
import static sun.java2d.pipe.BufferedOpCodes.*;
import java.lang.annotation.Native;
-class OGLBlitLoops {
+final class OGLBlitLoops {
static void register() {
Blit blitIntArgbPreToSurface =
@@ -56,7 +56,9 @@
Blit blitIntArgbPreToTexture =
new OGLSwToTextureBlit(SurfaceType.IntArgbPre,
OGLSurfaceData.PF_INT_ARGB_PRE);
-
+ TransformBlit transformBlitIntArgbPreToSurface =
+ new OGLSwToSurfaceTransform(SurfaceType.IntArgbPre,
+ OGLSurfaceData.PF_INT_ARGB_PRE);
GraphicsPrimitive[] primitives = {
// surface->surface ops
new OGLSurfaceToSurfaceBlit(),
@@ -100,7 +102,7 @@
CompositeType.AnyAlpha,
blitIntArgbPreToSurface),
- new OGLAnyCompositeBlit(OGLSurfaceData.OpenGLSurface),
+ new OGLAnyCompositeBlit(),
new OGLSwToSurfaceScale(SurfaceType.IntRgb,
OGLSurfaceData.PF_INT_RGB),
@@ -145,8 +147,9 @@
OGLSurfaceData.PF_BYTE_GRAY),
new OGLSwToSurfaceTransform(SurfaceType.UshortGray,
OGLSurfaceData.PF_USHORT_GRAY),
- new OGLSwToSurfaceTransform(SurfaceType.IntArgbPre,
- OGLSurfaceData.PF_INT_ARGB_PRE),
+ transformBlitIntArgbPreToSurface,
+
+ new OGLGeneralTransformedBlit(transformBlitIntArgbPreToSurface),
// texture->surface ops
new OGLTextureToSurfaceBlit(),
@@ -178,9 +181,6 @@
new OGLGeneralBlit(OGLSurfaceData.OpenGLTexture,
CompositeType.SrcNoEa,
blitIntArgbPreToTexture),
-
- new OGLAnyCompositeBlit(OGLSurfaceData.OpenGLTexture),
-
};
GraphicsPrimitiveMgr.register(primitives);
}
@@ -781,11 +781,11 @@
* This general Blit implementation converts any source surface to an
* intermediate IntArgbPre surface, and then uses the more specific
* IntArgbPre->OpenGLSurface/Texture loop to get the intermediate
- * (premultiplied) surface down to OpenGL.
+ * (premultiplied) surface down to OpenGL using simple blit.
*/
class OGLGeneralBlit extends Blit {
- private Blit performop;
+ private final Blit performop;
private WeakReference<SurfaceData> srcTmp;
OGLGeneralBlit(SurfaceType dstType,
@@ -826,12 +826,56 @@
}
}
-class OGLAnyCompositeBlit extends Blit {
+/**
+ * This general TransformedBlit implementation converts any source surface to an
+ * intermediate IntArgbPre surface, and then uses the more specific
+ * IntArgbPre->OpenGLSurface/Texture loop to get the intermediate
+ * (premultiplied) surface down to OpenGL using simple transformBlit.
+ */
+final class OGLGeneralTransformedBlit extends TransformBlit {
+
+ private final TransformBlit performop;
+ private WeakReference<SurfaceData> srcTmp;
+
+ OGLGeneralTransformedBlit(final TransformBlit performop) {
+ super(SurfaceType.Any, CompositeType.AnyAlpha,
+ OGLSurfaceData.OpenGLSurface);
+ this.performop = performop;
+ }
+
+ @Override
+ public synchronized void Transform(SurfaceData src, SurfaceData dst,
+ Composite comp, Region clip,
+ AffineTransform at, int hint, int srcx,
+ int srcy, int dstx, int dsty, int width,
+ int height){
+ Blit convertsrc = Blit.getFromCache(src.getSurfaceType(),
+ CompositeType.SrcNoEa,
+ SurfaceType.IntArgbPre);
+ // use cached intermediate surface, if available
+ final SurfaceData cachedSrc = srcTmp != null ? srcTmp.get() : null;
+ // convert source to IntArgbPre
+ src = convertFrom(convertsrc, src, srcx, srcy, width, height, cachedSrc,
+ BufferedImage.TYPE_INT_ARGB_PRE);
+
+ // transform IntArgbPre intermediate surface to OpenGL surface
+ performop.Transform(src, dst, comp, clip, at, hint, 0, 0, dstx, dsty,
+ width, height);
+
+ if (src != cachedSrc) {
+ // cache the intermediate surface
+ srcTmp = new WeakReference<>(src);
+ }
+ }
+}
+
+final class OGLAnyCompositeBlit extends Blit {
private WeakReference<SurfaceData> dstTmp;
- public OGLAnyCompositeBlit(SurfaceType dstType) {
- super(SurfaceType.Any, CompositeType.Any, dstType);
+ OGLAnyCompositeBlit() {
+ super(SurfaceType.Any, CompositeType.Any, OGLSurfaceData.OpenGLSurface);
}
+
public synchronized void Blit(SurfaceData src, SurfaceData dst,
Composite comp, Region clip,
int sx, int sy, int dx, int dy,
@@ -848,15 +892,15 @@
cachedDst = dstTmp.get();
}
- // convert source to IntArgbPre
+ // convert destination to IntArgbPre
SurfaceData dstBuffer = convertFrom(convertdst, dst, dx, dy, w, h,
cachedDst, BufferedImage.TYPE_INT_ARGB_PRE);
+ Region bufferClip =
+ clip == null ? null : clip.getTranslatedRegion(-dx, -dy);
Blit performop = Blit.getFromCache(src.getSurfaceType(),
CompositeType.Any, dstBuffer.getSurfaceType());
-
- performop.Blit(src, dstBuffer, comp, clip,
- sx, sy, 0, 0, w, h);
+ performop.Blit(src, dstBuffer, comp, bufferClip, sx, sy, 0, 0, w, h);
if (dstBuffer != cachedDst) {
// cache the intermediate surface
--- a/jdk/src/java.desktop/unix/classes/META-INF/services/javax.print.PrintServiceLookup Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-# Provider for Java Print Service
-sun.print.UnixPrintServiceLookup
--- a/jdk/src/java.desktop/unix/classes/META-INF/services/javax.print.StreamPrintServiceFactory Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-# Provider for Java 2D Stream print services.
-sun.print.PSStreamPrinterFactory
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11/XWM.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11/XWM.java Fri Oct 31 18:18:58 2014 +0000
@@ -595,8 +595,13 @@
return isNetWMName("Mutter") || isNetWMName("GNOME Shell");
}
+ static int awtWMNonReparenting = -1;
static boolean isNonReparentingWM() {
- return (XWM.getWMID() == XWM.COMPIZ_WM || XWM.getWMID() == XWM.LG3D_WM || XWM.getWMID() == XWM.CWM_WM);
+ if (awtWMNonReparenting == -1) {
+ awtWMNonReparenting = (XToolkit.getEnv("_JAVA_AWT_WM_NONREPARENTING") != null) ? 1 : 0;
+ }
+ return (awtWMNonReparenting == 1 || XWM.getWMID() == XWM.COMPIZ_WM
+ || XWM.getWMID() == XWM.LG3D_WM || XWM.getWMID() == XWM.CWM_WM);
}
/*
--- a/jdk/src/java.desktop/unix/classes/sun/print/CUPSPrinter.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.desktop/unix/classes/sun/print/CUPSPrinter.java Fri Oct 31 18:18:58 2014 +0000
@@ -324,8 +324,8 @@
* reported, exec lpstat -d which has all the Apple
* special behaviour for this built in.
*/
- if (UnixPrintServiceLookup.isMac()) {
- printerInfo[0] = UnixPrintServiceLookup.
+ if (PrintServiceLookupProvider.isMac()) {
+ printerInfo[0] = PrintServiceLookupProvider.
getDefaultPrinterNameSysV();
printerInfo[1] = null;
return printerInfo.clone();
--- a/jdk/src/java.desktop/unix/classes/sun/print/IPPPrintService.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.desktop/unix/classes/sun/print/IPPPrintService.java Fri Oct 31 18:18:58 2014 +0000
@@ -1047,7 +1047,7 @@
setting like collation. Therefore, we temporarily exclude
Linux.
*/
- if (!UnixPrintServiceLookup.isLinux()) {
+ if (!PrintServiceLookupProvider.isLinux()) {
catList.add(SheetCollate.class);
}
}
@@ -1641,7 +1641,7 @@
* Mac is using printer-info IPP attribute for its human-readable printer
* name and is also the identifier used in NSPrintInfo:setPrinter.
*/
- if (UnixPrintServiceLookup.isMac()) {
+ if (PrintServiceLookupProvider.isMac()) {
PrintServiceAttributeSet psaSet = this.getAttributes();
if (psaSet != null) {
PrinterInfo pName = (PrinterInfo)psaSet.get(PrinterInfo.class);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/unix/classes/sun/print/PrintServiceLookupProvider.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,964 @@
+/*
+ * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. 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.print;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Vector;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
+import javax.print.DocFlavor;
+import javax.print.MultiDocPrintService;
+import javax.print.PrintService;
+import javax.print.PrintServiceLookup;
+import javax.print.attribute.Attribute;
+import javax.print.attribute.AttributeSet;
+import javax.print.attribute.HashPrintRequestAttributeSet;
+import javax.print.attribute.HashPrintServiceAttributeSet;
+import javax.print.attribute.PrintRequestAttribute;
+import javax.print.attribute.PrintRequestAttributeSet;
+import javax.print.attribute.PrintServiceAttribute;
+import javax.print.attribute.PrintServiceAttributeSet;
+import javax.print.attribute.standard.PrinterName;
+import javax.print.attribute.standard.PrinterURI;
+import java.io.File;
+import java.io.FileReader;
+import java.net.URL;
+import java.nio.file.Files;
+
+/*
+ * Remind: This class uses solaris commands. We also need a linux
+ * version
+ */
+public class PrintServiceLookupProvider extends PrintServiceLookup
+ implements BackgroundServiceLookup, Runnable {
+
+ /* Remind: the current implementation is static, as its assumed
+ * its preferable to minimize creation of PrintService instances.
+ * Later we should add logic to add/remove services on the fly which
+ * will take a hit of needing to regather the list of services.
+ */
+ private String defaultPrinter;
+ private PrintService defaultPrintService;
+ private PrintService[] printServices; /* includes the default printer */
+ private Vector<BackgroundLookupListener> lookupListeners = null;
+ private static String debugPrefix = "PrintServiceLookupProvider>> ";
+ private static boolean pollServices = true;
+ private static final int DEFAULT_MINREFRESH = 120; // 2 minutes
+ private static int minRefreshTime = DEFAULT_MINREFRESH;
+
+
+ static String osname;
+
+ // List of commands used to deal with the printer queues on AIX
+ String[] lpNameComAix = {
+ "/usr/bin/lsallq",
+ "/usr/bin/lpstat -W -p|/usr/bin/expand|/usr/bin/cut -f1 -d' '",
+ "/usr/bin/lpstat -W -d|/usr/bin/expand|/usr/bin/cut -f1 -d' '",
+ "/usr/bin/lpstat -W -v"
+ };
+ private static final int aix_lsallq = 0;
+ private static final int aix_lpstat_p = 1;
+ private static final int aix_lpstat_d = 2;
+ private static final int aix_lpstat_v = 3;
+ private static int aix_defaultPrinterEnumeration = aix_lsallq;
+
+ static {
+ /* The system property "sun.java2d.print.polling"
+ * can be used to force the printing code to poll or not poll
+ * for PrintServices.
+ */
+ String pollStr = java.security.AccessController.doPrivileged(
+ new sun.security.action.GetPropertyAction("sun.java2d.print.polling"));
+
+ if (pollStr != null) {
+ if (pollStr.equalsIgnoreCase("true")) {
+ pollServices = true;
+ } else if (pollStr.equalsIgnoreCase("false")) {
+ pollServices = false;
+ }
+ }
+
+ /* The system property "sun.java2d.print.minRefreshTime"
+ * can be used to specify minimum refresh time (in seconds)
+ * for polling PrintServices. The default is 120.
+ */
+ String refreshTimeStr = java.security.AccessController.doPrivileged(
+ new sun.security.action.GetPropertyAction(
+ "sun.java2d.print.minRefreshTime"));
+
+ if (refreshTimeStr != null) {
+ try {
+ minRefreshTime = (new Integer(refreshTimeStr)).intValue();
+ } catch (NumberFormatException e) {
+ }
+ if (minRefreshTime < DEFAULT_MINREFRESH) {
+ minRefreshTime = DEFAULT_MINREFRESH;
+ }
+ }
+
+ osname = java.security.AccessController.doPrivileged(
+ new sun.security.action.GetPropertyAction("os.name"));
+
+ /* The system property "sun.java2d.print.aix.lpstat"
+ * can be used to force the usage of 'lpstat -p' to enumerate all
+ * printer queues. By default we use 'lsallq', because 'lpstat -p' can
+ * take lots of time if thousands of printers are attached to a server.
+ */
+ if (isAIX()) {
+ String aixPrinterEnumerator = java.security.AccessController.doPrivileged(
+ new sun.security.action.GetPropertyAction("sun.java2d.print.aix.lpstat"));
+
+ if (aixPrinterEnumerator != null) {
+ if (aixPrinterEnumerator.equalsIgnoreCase("lpstat")) {
+ aix_defaultPrinterEnumeration = aix_lpstat_p;
+ } else if (aixPrinterEnumerator.equalsIgnoreCase("lsallq")) {
+ aix_defaultPrinterEnumeration = aix_lsallq;
+ }
+ }
+ }
+ }
+
+ static boolean isMac() {
+ return osname.startsWith("Mac");
+ }
+
+ static boolean isSysV() {
+ return osname.equals("SunOS");
+ }
+
+ static boolean isLinux() {
+ return (osname.equals("Linux"));
+ }
+
+ static boolean isBSD() {
+ return (osname.equals("Linux") ||
+ osname.contains("OS X"));
+ }
+
+ static boolean isAIX() {
+ return osname.equals("AIX");
+ }
+
+ static final int UNINITIALIZED = -1;
+ static final int BSD_LPD = 0;
+ static final int BSD_LPD_NG = 1;
+
+ static int cmdIndex = UNINITIALIZED;
+
+ String[] lpcFirstCom = {
+ "/usr/sbin/lpc status | grep : | sed -ne '1,1 s/://p'",
+ "/usr/sbin/lpc status | grep -E '^[ 0-9a-zA-Z_-]*@' | awk -F'@' '{print $1}'"
+ };
+
+ String[] lpcAllCom = {
+ "/usr/sbin/lpc status all | grep : | sed -e 's/://'",
+ "/usr/sbin/lpc status all | grep -E '^[ 0-9a-zA-Z_-]*@' | awk -F'@' '{print $1}' | sort"
+ };
+
+ String[] lpcNameCom = {
+ "| grep : | sed -ne 's/://p'",
+ "| grep -E '^[ 0-9a-zA-Z_-]*@' | awk -F'@' '{print $1}'"
+ };
+
+
+ static int getBSDCommandIndex() {
+ String command = "/usr/sbin/lpc status all";
+ String[] names = execCmd(command);
+
+ if ((names == null) || (names.length == 0)) {
+ return BSD_LPD_NG;
+ }
+
+ for (int i=0; i<names.length; i++) {
+ if (names[i].indexOf('@') != -1) {
+ return BSD_LPD_NG;
+ }
+ }
+
+ return BSD_LPD;
+ }
+
+
+ public PrintServiceLookupProvider() {
+ // start the printer listener thread
+ if (pollServices) {
+ PrinterChangeListener thr = new PrinterChangeListener();
+ thr.setDaemon(true);
+ thr.start();
+ IPPPrintService.debug_println(debugPrefix+"polling turned on");
+ }
+ }
+
+ /* Want the PrintService which is default print service to have
+ * equality of reference with the equivalent in list of print services
+ * This isn't required by the API and there's a risk doing this will
+ * lead people to assume its guaranteed.
+ */
+ public synchronized PrintService[] getPrintServices() {
+ SecurityManager security = System.getSecurityManager();
+ if (security != null) {
+ security.checkPrintJobAccess();
+ }
+
+ if (printServices == null || !pollServices) {
+ refreshServices();
+ }
+ if (printServices == null) {
+ return new PrintService[0];
+ } else {
+ return printServices.clone();
+ }
+ }
+
+ private int addPrintServiceToList(ArrayList<PrintService> printerList, PrintService ps) {
+ int index = printerList.indexOf(ps);
+ // Check if PrintService with same name is already in the list.
+ if (CUPSPrinter.isCupsRunning() && index != -1) {
+ // Bug in Linux: Duplicate entry of a remote printer
+ // and treats it as local printer but it is returning wrong
+ // information when queried using IPP. Workaround is to remove it.
+ // Even CUPS ignores these entries as shown in lpstat or using
+ // their web configuration.
+ PrinterURI uri = ps.getAttribute(PrinterURI.class);
+ if (uri.getURI().getHost().equals("localhost")) {
+ IPPPrintService.debug_println(debugPrefix+"duplicate PrintService, ignoring the new local printer: "+ps);
+ return index; // Do not add this.
+ }
+ PrintService oldPS = printerList.get(index);
+ uri = oldPS.getAttribute(PrinterURI.class);
+ if (uri.getURI().getHost().equals("localhost")) {
+ IPPPrintService.debug_println(debugPrefix+"duplicate PrintService, removing existing local printer: "+oldPS);
+ printerList.remove(oldPS);
+ } else {
+ return index;
+ }
+ }
+ printerList.add(ps);
+ return (printerList.size() - 1);
+ }
+
+
+ // refreshes "printServices"
+ public synchronized void refreshServices() {
+ /* excludes the default printer */
+ String[] printers = null; // array of printer names
+ String[] printerURIs = null; //array of printer URIs
+
+ try {
+ getDefaultPrintService();
+ } catch (Throwable t) {
+ IPPPrintService.debug_println(debugPrefix+
+ "Exception getting default printer : " + t);
+ }
+ if (CUPSPrinter.isCupsRunning()) {
+ try {
+ printerURIs = CUPSPrinter.getAllPrinters();
+ IPPPrintService.debug_println("CUPS URIs = " + printerURIs);
+ if (printerURIs != null) {
+ for (int p = 0; p < printerURIs.length; p++) {
+ IPPPrintService.debug_println("URI="+printerURIs[p]);
+ }
+ }
+ } catch (Throwable t) {
+ IPPPrintService.debug_println(debugPrefix+
+ "Exception getting all CUPS printers : " + t);
+ }
+ if ((printerURIs != null) && (printerURIs.length > 0)) {
+ printers = new String[printerURIs.length];
+ for (int i=0; i<printerURIs.length; i++) {
+ int lastIndex = printerURIs[i].lastIndexOf("/");
+ printers[i] = printerURIs[i].substring(lastIndex+1);
+ }
+ }
+ } else {
+ if (isMac() || isSysV()) {
+ printers = getAllPrinterNamesSysV();
+ } else if (isAIX()) {
+ printers = getAllPrinterNamesAIX();
+ } else { //BSD
+ printers = getAllPrinterNamesBSD();
+ }
+ }
+
+ if (printers == null) {
+ if (defaultPrintService != null) {
+ printServices = new PrintService[1];
+ printServices[0] = defaultPrintService;
+ } else {
+ printServices = null;
+ }
+ return;
+ }
+
+ ArrayList<PrintService> printerList = new ArrayList<>();
+ int defaultIndex = -1;
+ for (int p=0; p<printers.length; p++) {
+ if (printers[p] == null) {
+ continue;
+ }
+ if ((defaultPrintService != null)
+ && printers[p].equals(getPrinterDestName(defaultPrintService))) {
+ defaultIndex = addPrintServiceToList(printerList, defaultPrintService);
+ } else {
+ if (printServices == null) {
+ IPPPrintService.debug_println(debugPrefix+
+ "total# of printers = "+printers.length);
+
+ if (CUPSPrinter.isCupsRunning()) {
+ try {
+ addPrintServiceToList(printerList,
+ new IPPPrintService(printers[p],
+ printerURIs[p],
+ true));
+ } catch (Exception e) {
+ IPPPrintService.debug_println(debugPrefix+
+ " getAllPrinters Exception "+
+ e);
+
+ }
+ } else {
+ printerList.add(new UnixPrintService(printers[p]));
+ }
+ } else {
+ int j;
+ for (j=0; j<printServices.length; j++) {
+ if (printServices[j] != null) {
+ if (printers[p].equals(getPrinterDestName(printServices[j]))) {
+ printerList.add(printServices[j]);
+ printServices[j] = null;
+ break;
+ }
+ }
+ }
+
+ if (j == printServices.length) { // not found?
+ if (CUPSPrinter.isCupsRunning()) {
+ try {
+ addPrintServiceToList(printerList,
+ new IPPPrintService(printers[p],
+ printerURIs[p],
+ true));
+ } catch (Exception e) {
+ IPPPrintService.debug_println(debugPrefix+
+ " getAllPrinters Exception "+
+ e);
+
+ }
+ } else {
+ printerList.add(new UnixPrintService(printers[p]));
+ }
+ }
+ }
+ }
+ }
+
+ // Look for deleted services and invalidate these
+ if (printServices != null) {
+ for (int j=0; j < printServices.length; j++) {
+ if ((printServices[j] instanceof UnixPrintService) &&
+ (!printServices[j].equals(defaultPrintService))) {
+ ((UnixPrintService)printServices[j]).invalidateService();
+ }
+ }
+ }
+
+ //if defaultService is not found in printerList
+ if (defaultIndex == -1 && defaultPrintService != null) {
+ defaultIndex = addPrintServiceToList(printerList, defaultPrintService);
+ }
+
+ printServices = printerList.toArray(new PrintService[] {});
+
+ // swap default with the first in the list
+ if (defaultIndex > 0) {
+ PrintService saveService = printServices[0];
+ printServices[0] = printServices[defaultIndex];
+ printServices[defaultIndex] = saveService;
+ }
+ }
+
+ private boolean matchesAttributes(PrintService service,
+ PrintServiceAttributeSet attributes) {
+
+ Attribute [] attrs = attributes.toArray();
+ for (int i=0; i<attrs.length; i++) {
+ @SuppressWarnings("unchecked")
+ Attribute serviceAttr
+ = service.getAttribute((Class<PrintServiceAttribute>)attrs[i].getCategory());
+ if (serviceAttr == null || !serviceAttr.equals(attrs[i])) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /* This checks for validity of the printer name before passing as
+ * parameter to a shell command.
+ */
+ private boolean checkPrinterName(String s) {
+ char c;
+
+ for (int i=0; i < s.length(); i++) {
+ c = s.charAt(i);
+ if (Character.isLetterOrDigit(c) ||
+ c == '-' || c == '_' || c == '.' || c == '/') {
+ continue;
+ } else {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /*
+ * Gets the printer name compatible with the list of printers returned by
+ * the system when we query default or all the available printers.
+ */
+ private String getPrinterDestName(PrintService ps) {
+ if (isMac()) {
+ return ((IPPPrintService)ps).getDest();
+ }
+ return ps.getName();
+ }
+
+ /* On a network with many (hundreds) of network printers, it
+ * can save several seconds if you know all you want is a particular
+ * printer, to ask for that printer rather than retrieving all printers.
+ */
+ private PrintService getServiceByName(PrinterName nameAttr) {
+ String name = nameAttr.getValue();
+ if (name == null || name.equals("") || !checkPrinterName(name)) {
+ return null;
+ }
+ /* check if all printers are already available */
+ if (printServices != null) {
+ for (PrintService printService : printServices) {
+ PrinterName printerName = printService.getAttribute(PrinterName.class);
+ if (printerName.getValue().equals(name)) {
+ return printService;
+ }
+ }
+ }
+ /* take CUPS into account first */
+ if (CUPSPrinter.isCupsRunning()) {
+ try {
+ return new IPPPrintService(name,
+ new URL("http://"+
+ CUPSPrinter.getServer()+":"+
+ CUPSPrinter.getPort()+"/"+
+ name));
+ } catch (Exception e) {
+ IPPPrintService.debug_println(debugPrefix+
+ " getServiceByName Exception "+
+ e);
+ }
+ }
+ /* fallback if nothing not having a printer at this point */
+ PrintService printer = null;
+ if (isMac() || isSysV()) {
+ printer = getNamedPrinterNameSysV(name);
+ } else if (isAIX()) {
+ printer = getNamedPrinterNameAIX(name);
+ } else {
+ printer = getNamedPrinterNameBSD(name);
+ }
+ return printer;
+ }
+
+ private PrintService[]
+ getPrintServices(PrintServiceAttributeSet serviceSet) {
+
+ if (serviceSet == null || serviceSet.isEmpty()) {
+ return getPrintServices();
+ }
+
+ /* Typically expect that if a service attribute is specified that
+ * its a printer name and there ought to be only one match.
+ * Directly retrieve that service and confirm
+ * that it meets the other requirements.
+ * If printer name isn't mentioned then go a slow path checking
+ * all printers if they meet the reqiremements.
+ */
+ PrintService[] services;
+ PrinterName name = (PrinterName)serviceSet.get(PrinterName.class);
+ PrintService defService;
+ if (name != null && (defService = getDefaultPrintService()) != null) {
+ /* To avoid execing a unix command see if the client is asking
+ * for the default printer by name, since we already have that
+ * initialised.
+ */
+
+ PrinterName defName = defService.getAttribute(PrinterName.class);
+
+ if (defName != null && name.equals(defName)) {
+ if (matchesAttributes(defService, serviceSet)) {
+ services = new PrintService[1];
+ services[0] = defService;
+ return services;
+ } else {
+ return new PrintService[0];
+ }
+ } else {
+ /* Its not the default service */
+ PrintService service = getServiceByName(name);
+ if (service != null &&
+ matchesAttributes(service, serviceSet)) {
+ services = new PrintService[1];
+ services[0] = service;
+ return services;
+ } else {
+ return new PrintService[0];
+ }
+ }
+ } else {
+ /* specified service attributes don't include a name.*/
+ Vector<PrintService> matchedServices = new Vector<>();
+ services = getPrintServices();
+ for (int i = 0; i< services.length; i++) {
+ if (matchesAttributes(services[i], serviceSet)) {
+ matchedServices.add(services[i]);
+ }
+ }
+ services = new PrintService[matchedServices.size()];
+ for (int i = 0; i< services.length; i++) {
+ services[i] = matchedServices.elementAt(i);
+ }
+ return services;
+ }
+ }
+
+ /*
+ * If service attributes are specified then there must be additional
+ * filtering.
+ */
+ public PrintService[] getPrintServices(DocFlavor flavor,
+ AttributeSet attributes) {
+ SecurityManager security = System.getSecurityManager();
+ if (security != null) {
+ security.checkPrintJobAccess();
+ }
+ PrintRequestAttributeSet requestSet = null;
+ PrintServiceAttributeSet serviceSet = null;
+
+ if (attributes != null && !attributes.isEmpty()) {
+
+ requestSet = new HashPrintRequestAttributeSet();
+ serviceSet = new HashPrintServiceAttributeSet();
+
+ Attribute[] attrs = attributes.toArray();
+ for (int i=0; i<attrs.length; i++) {
+ if (attrs[i] instanceof PrintRequestAttribute) {
+ requestSet.add(attrs[i]);
+ } else if (attrs[i] instanceof PrintServiceAttribute) {
+ serviceSet.add(attrs[i]);
+ }
+ }
+ }
+
+ PrintService[] services = getPrintServices(serviceSet);
+ if (services.length == 0) {
+ return services;
+ }
+
+ if (CUPSPrinter.isCupsRunning()) {
+ ArrayList<PrintService> matchingServices = new ArrayList<>();
+ for (int i=0; i<services.length; i++) {
+ try {
+ if (services[i].
+ getUnsupportedAttributes(flavor, requestSet) == null) {
+ matchingServices.add(services[i]);
+ }
+ } catch (IllegalArgumentException e) {
+ }
+ }
+ services = new PrintService[matchingServices.size()];
+ return matchingServices.toArray(services);
+
+ } else {
+ // We only need to compare 1 PrintService because all
+ // UnixPrintServices are the same anyway. We will not use
+ // default PrintService because it might be null.
+ PrintService service = services[0];
+ if ((flavor == null ||
+ service.isDocFlavorSupported(flavor)) &&
+ service.getUnsupportedAttributes(flavor, requestSet) == null)
+ {
+ return services;
+ } else {
+ return new PrintService[0];
+ }
+ }
+ }
+
+ /*
+ * return empty array as don't support multi docs
+ */
+ public MultiDocPrintService[]
+ getMultiDocPrintServices(DocFlavor[] flavors,
+ AttributeSet attributes) {
+ SecurityManager security = System.getSecurityManager();
+ if (security != null) {
+ security.checkPrintJobAccess();
+ }
+ return new MultiDocPrintService[0];
+ }
+
+
+ public synchronized PrintService getDefaultPrintService() {
+ SecurityManager security = System.getSecurityManager();
+ if (security != null) {
+ security.checkPrintJobAccess();
+ }
+
+ // clear defaultPrintService
+ defaultPrintService = null;
+ String psuri = null;
+
+ IPPPrintService.debug_println("isRunning ? "+
+ (CUPSPrinter.isCupsRunning()));
+ if (CUPSPrinter.isCupsRunning()) {
+ String[] printerInfo = CUPSPrinter.getDefaultPrinter();
+ if (printerInfo != null && printerInfo.length >= 2) {
+ defaultPrinter = printerInfo[0];
+ psuri = printerInfo[1];
+ }
+ } else {
+ if (isMac() || isSysV()) {
+ defaultPrinter = getDefaultPrinterNameSysV();
+ } else if (isAIX()) {
+ defaultPrinter = getDefaultPrinterNameAIX();
+ } else {
+ defaultPrinter = getDefaultPrinterNameBSD();
+ }
+ }
+ if (defaultPrinter == null) {
+ return null;
+ }
+ defaultPrintService = null;
+ if (printServices != null) {
+ for (int j=0; j<printServices.length; j++) {
+ if (defaultPrinter.equals(getPrinterDestName(printServices[j]))) {
+ defaultPrintService = printServices[j];
+ break;
+ }
+ }
+ }
+ if (defaultPrintService == null) {
+ if (CUPSPrinter.isCupsRunning()) {
+ try {
+ PrintService defaultPS;
+ if ((psuri != null) && !psuri.startsWith("file")) {
+ defaultPS = new IPPPrintService(defaultPrinter,
+ psuri, true);
+ } else {
+ defaultPS = new IPPPrintService(defaultPrinter,
+ new URL("http://"+
+ CUPSPrinter.getServer()+":"+
+ CUPSPrinter.getPort()+"/"+
+ defaultPrinter));
+ }
+ defaultPrintService = defaultPS;
+ } catch (Exception e) {
+ }
+ } else {
+ defaultPrintService = new UnixPrintService(defaultPrinter);
+ }
+ }
+
+ return defaultPrintService;
+ }
+
+ public synchronized void
+ getServicesInbackground(BackgroundLookupListener listener) {
+ if (printServices != null) {
+ listener.notifyServices(printServices);
+ } else {
+ if (lookupListeners == null) {
+ lookupListeners = new Vector<>();
+ lookupListeners.add(listener);
+ Thread lookupThread = new Thread(this);
+ lookupThread.start();
+ } else {
+ lookupListeners.add(listener);
+ }
+ }
+ }
+
+ /* This method isn't used in most cases because we rely on code in
+ * javax.print.PrintServiceLookup. This is needed just for the cases
+ * where those interfaces are by-passed.
+ */
+ private PrintService[] copyOf(PrintService[] inArr) {
+ if (inArr == null || inArr.length == 0) {
+ return inArr;
+ } else {
+ PrintService []outArr = new PrintService[inArr.length];
+ System.arraycopy(inArr, 0, outArr, 0, inArr.length);
+ return outArr;
+ }
+ }
+
+ public void run() {
+ PrintService[] services = getPrintServices();
+ synchronized (this) {
+ BackgroundLookupListener listener;
+ for (int i=0; i<lookupListeners.size(); i++) {
+ listener = lookupListeners.elementAt(i);
+ listener.notifyServices(copyOf(services));
+ }
+ lookupListeners = null;
+ }
+ }
+
+ private String getDefaultPrinterNameBSD() {
+ if (cmdIndex == UNINITIALIZED) {
+ cmdIndex = getBSDCommandIndex();
+ }
+ String[] names = execCmd(lpcFirstCom[cmdIndex]);
+ if (names == null || names.length == 0) {
+ return null;
+ }
+
+ if ((cmdIndex==BSD_LPD_NG) &&
+ (names[0].startsWith("missingprinter"))) {
+ return null;
+ }
+ return names[0];
+ }
+
+ private PrintService getNamedPrinterNameBSD(String name) {
+ if (cmdIndex == UNINITIALIZED) {
+ cmdIndex = getBSDCommandIndex();
+ }
+ String command = "/usr/sbin/lpc status " + name + lpcNameCom[cmdIndex];
+ String[] result = execCmd(command);
+
+ if (result == null || !(result[0].equals(name))) {
+ return null;
+ }
+ return new UnixPrintService(name);
+ }
+
+ private String[] getAllPrinterNamesBSD() {
+ if (cmdIndex == UNINITIALIZED) {
+ cmdIndex = getBSDCommandIndex();
+ }
+ String[] names = execCmd(lpcAllCom[cmdIndex]);
+ if (names == null || names.length == 0) {
+ return null;
+ }
+ return names;
+ }
+
+ static String getDefaultPrinterNameSysV() {
+ String defaultPrinter = "lp";
+ String command = "/usr/bin/lpstat -d";
+
+ String [] names = execCmd(command);
+ if (names == null || names.length == 0) {
+ return defaultPrinter;
+ } else {
+ int index = names[0].indexOf(":");
+ if (index == -1 || (names[0].length() <= index+1)) {
+ return null;
+ } else {
+ String name = names[0].substring(index+1).trim();
+ if (name.length() == 0) {
+ return null;
+ } else {
+ return name;
+ }
+ }
+ }
+ }
+
+ private PrintService getNamedPrinterNameSysV(String name) {
+
+ String command = "/usr/bin/lpstat -v " + name;
+ String []result = execCmd(command);
+
+ if (result == null || result[0].indexOf("unknown printer") > 0) {
+ return null;
+ } else {
+ return new UnixPrintService(name);
+ }
+ }
+
+ private String[] getAllPrinterNamesSysV() {
+ String defaultPrinter = "lp";
+ String command = "/usr/bin/lpstat -v|/usr/bin/expand|/usr/bin/cut -f3 -d' ' |/usr/bin/cut -f1 -d':' | /usr/bin/sort";
+
+ String [] names = execCmd(command);
+ ArrayList<String> printerNames = new ArrayList<>();
+ for (int i=0; i < names.length; i++) {
+ if (!names[i].equals("_default") &&
+ !names[i].equals(defaultPrinter) &&
+ !names[i].equals("")) {
+ printerNames.add(names[i]);
+ }
+ }
+ return printerNames.toArray(new String[printerNames.size()]);
+ }
+
+ private String getDefaultPrinterNameAIX() {
+ String[] names = execCmd(lpNameComAix[aix_lpstat_d]);
+ // Remove headers and bogus entries added by remote printers.
+ names = UnixPrintService.filterPrinterNamesAIX(names);
+ if (names == null || names.length != 1) {
+ // No default printer found
+ return null;
+ } else {
+ return names[0];
+ }
+ }
+
+ private PrintService getNamedPrinterNameAIX(String name) {
+ // On AIX there should be no blank after '-v'.
+ String[] result = execCmd(lpNameComAix[aix_lpstat_v] + name);
+ // Remove headers and bogus entries added by remote printers.
+ result = UnixPrintService.filterPrinterNamesAIX(result);
+ if (result == null || result.length != 1) {
+ return null;
+ } else {
+ return new UnixPrintService(name);
+ }
+ }
+
+ private String[] getAllPrinterNamesAIX() {
+ // Determine all printers of the system.
+ String [] names = execCmd(lpNameComAix[aix_defaultPrinterEnumeration]);
+
+ // Remove headers and bogus entries added by remote printers.
+ names = UnixPrintService.filterPrinterNamesAIX(names);
+
+ ArrayList<String> printerNames = new ArrayList<String>();
+ for ( int i=0; i < names.length; i++) {
+ printerNames.add(names[i]);
+ }
+ return printerNames.toArray(new String[printerNames.size()]);
+ }
+
+ static String[] execCmd(final String command) {
+ ArrayList<String> results = null;
+ try {
+ final String[] cmd = new String[3];
+ if (isSysV() || isAIX()) {
+ cmd[0] = "/usr/bin/sh";
+ cmd[1] = "-c";
+ cmd[2] = "env LC_ALL=C " + command;
+ } else {
+ cmd[0] = "/bin/sh";
+ cmd[1] = "-c";
+ cmd[2] = "LC_ALL=C " + command;
+ }
+
+ results = AccessController.doPrivileged(
+ new PrivilegedExceptionAction<ArrayList<String>>() {
+ public ArrayList<String> run() throws IOException {
+
+ Process proc;
+ BufferedReader bufferedReader = null;
+ File f = Files.createTempFile("prn","xc").toFile();
+ cmd[2] = cmd[2]+">"+f.getAbsolutePath();
+
+ proc = Runtime.getRuntime().exec(cmd);
+ try {
+ boolean done = false; // in case of interrupt.
+ while (!done) {
+ try {
+ proc.waitFor();
+ done = true;
+ } catch (InterruptedException e) {
+ }
+ }
+
+ if (proc.exitValue() == 0) {
+ FileReader reader = new FileReader(f);
+ bufferedReader = new BufferedReader(reader);
+ String line;
+ ArrayList<String> results = new ArrayList<>();
+ while ((line = bufferedReader.readLine())
+ != null) {
+ results.add(line);
+ }
+ return results;
+ }
+ } finally {
+ f.delete();
+ // promptly close all streams.
+ if (bufferedReader != null) {
+ bufferedReader.close();
+ }
+ proc.getInputStream().close();
+ proc.getErrorStream().close();
+ proc.getOutputStream().close();
+ }
+ return null;
+ }
+ });
+ } catch (PrivilegedActionException e) {
+ }
+ if (results == null) {
+ return new String[0];
+ } else {
+ return results.toArray(new String[results.size()]);
+ }
+ }
+
+ private class PrinterChangeListener extends Thread {
+
+ public void run() {
+ int refreshSecs;
+ while (true) {
+ try {
+ refreshServices();
+ } catch (Exception se) {
+ IPPPrintService.debug_println(debugPrefix+"Exception in refresh thread.");
+ break;
+ }
+
+ if ((printServices != null) &&
+ (printServices.length > minRefreshTime)) {
+ // compute new refresh time 1 printer = 1 sec
+ refreshSecs = printServices.length;
+ } else {
+ refreshSecs = minRefreshTime;
+ }
+ try {
+ sleep(refreshSecs * 1000);
+ } catch (InterruptedException e) {
+ break;
+ }
+ }
+ }
+ }
+}
--- a/jdk/src/java.desktop/unix/classes/sun/print/UnixPrintJob.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.desktop/unix/classes/sun/print/UnixPrintJob.java Fri Oct 31 18:18:58 2014 +0000
@@ -122,7 +122,7 @@
UnixPrintJob(PrintService service) {
this.service = service;
mDestination = service.getName();
- if (UnixPrintServiceLookup.isMac()) {
+ if (PrintServiceLookupProvider.isMac()) {
mDestination = ((IPPPrintService)service).getDest();
}
mDestType = UnixPrintJob.DESTPRINTER;
@@ -880,7 +880,7 @@
pFlags |= NOSHEET;
ncomps+=1;
}
- if (UnixPrintServiceLookup.osname.equals("SunOS")) {
+ if (PrintServiceLookupProvider.osname.equals("SunOS")) {
ncomps+=1; // lp uses 1 more arg than lpr (make a copy)
execCmd = new String[ncomps];
execCmd[n++] = "/usr/bin/lp";
--- a/jdk/src/java.desktop/unix/classes/sun/print/UnixPrintService.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.desktop/unix/classes/sun/print/UnixPrintService.java Fri Oct 31 18:18:58 2014 +0000
@@ -220,7 +220,7 @@
private PrinterIsAcceptingJobs getPrinterIsAcceptingJobsSysV() {
String command = "/usr/bin/lpstat -a " + printer;
- String results[]= UnixPrintServiceLookup.execCmd(command);
+ String results[]= PrintServiceLookupProvider.execCmd(command);
if (results != null && results.length > 0) {
if (results[0].startsWith(printer + " accepting requests")) {
@@ -244,20 +244,20 @@
}
private PrinterIsAcceptingJobs getPrinterIsAcceptingJobsBSD() {
- if (UnixPrintServiceLookup.cmdIndex ==
- UnixPrintServiceLookup.UNINITIALIZED) {
+ if (PrintServiceLookupProvider.cmdIndex ==
+ PrintServiceLookupProvider.UNINITIALIZED) {
- UnixPrintServiceLookup.cmdIndex =
- UnixPrintServiceLookup.getBSDCommandIndex();
+ PrintServiceLookupProvider.cmdIndex =
+ PrintServiceLookupProvider.getBSDCommandIndex();
}
String command = "/usr/sbin/lpc status " + printer
- + lpcStatusCom[UnixPrintServiceLookup.cmdIndex];
- String results[]= UnixPrintServiceLookup.execCmd(command);
+ + lpcStatusCom[PrintServiceLookupProvider.cmdIndex];
+ String results[]= PrintServiceLookupProvider.execCmd(command);
if (results != null && results.length > 0) {
- if (UnixPrintServiceLookup.cmdIndex ==
- UnixPrintServiceLookup.BSD_LPD_NG) {
+ if (PrintServiceLookupProvider.cmdIndex ==
+ PrintServiceLookupProvider.BSD_LPD_NG) {
if (results[0].startsWith("enabled enabled")) {
return PrinterIsAcceptingJobs.ACCEPTING_JOBS ;
}
@@ -276,7 +276,7 @@
// Filter the list of possible AIX Printers and remove header lines
// and extra lines which have been added for remote printers.
- // 'protected' because this method is also used from UnixPrintServiceLookup.
+ // 'protected' because this method is also used from PrintServiceLookupProvider.
protected static String[] filterPrinterNamesAIX(String[] posPrinters) {
ArrayList<String> printers = new ArrayList<>();
String [] splitPart;
@@ -301,7 +301,7 @@
private PrinterIsAcceptingJobs getPrinterIsAcceptingJobsAIX() {
// On AIX there should not be a blank after '-a'.
String command = "/usr/bin/lpstat -a" + printer;
- String results[]= UnixPrintServiceLookup.execCmd(command);
+ String results[]= PrintServiceLookupProvider.execCmd(command);
// Remove headers and bogus entries added by remote printers.
results = filterPrinterNamesAIX(results);
@@ -320,11 +320,11 @@
}
private PrinterIsAcceptingJobs getPrinterIsAcceptingJobs() {
- if (UnixPrintServiceLookup.isSysV()) {
+ if (PrintServiceLookupProvider.isSysV()) {
return getPrinterIsAcceptingJobsSysV();
- } else if (UnixPrintServiceLookup.isBSD()) {
+ } else if (PrintServiceLookupProvider.isBSD()) {
return getPrinterIsAcceptingJobsBSD();
- } else if (UnixPrintServiceLookup.isAIX()) {
+ } else if (PrintServiceLookupProvider.isAIX()) {
return getPrinterIsAcceptingJobsAIX();
} else {
return PrinterIsAcceptingJobs.ACCEPTING_JOBS;
@@ -351,29 +351,29 @@
private QueuedJobCount getQueuedJobCountSysV() {
String command = "/usr/bin/lpstat -R " + printer;
- String results[]= UnixPrintServiceLookup.execCmd(command);
+ String results[]= PrintServiceLookupProvider.execCmd(command);
int qlen = (results == null) ? 0 : results.length;
return new QueuedJobCount(qlen);
}
private QueuedJobCount getQueuedJobCountBSD() {
- if (UnixPrintServiceLookup.cmdIndex ==
- UnixPrintServiceLookup.UNINITIALIZED) {
+ if (PrintServiceLookupProvider.cmdIndex ==
+ PrintServiceLookupProvider.UNINITIALIZED) {
- UnixPrintServiceLookup.cmdIndex =
- UnixPrintServiceLookup.getBSDCommandIndex();
+ PrintServiceLookupProvider.cmdIndex =
+ PrintServiceLookupProvider.getBSDCommandIndex();
}
int qlen = 0;
String command = "/usr/sbin/lpc status " + printer
- + lpcQueueCom[UnixPrintServiceLookup.cmdIndex];
- String results[] = UnixPrintServiceLookup.execCmd(command);
+ + lpcQueueCom[PrintServiceLookupProvider.cmdIndex];
+ String results[] = PrintServiceLookupProvider.execCmd(command);
if (results != null && results.length > 0) {
String queued;
- if (UnixPrintServiceLookup.cmdIndex ==
- UnixPrintServiceLookup.BSD_LPD_NG) {
+ if (PrintServiceLookupProvider.cmdIndex ==
+ PrintServiceLookupProvider.BSD_LPD_NG) {
queued = results[0];
} else {
queued = results[3].trim();
@@ -396,7 +396,7 @@
private QueuedJobCount getQueuedJobCountAIX() {
// On AIX there should not be a blank after '-a'.
String command = "/usr/bin/lpstat -a" + printer;
- String results[]= UnixPrintServiceLookup.execCmd(command);
+ String results[]= PrintServiceLookupProvider.execCmd(command);
// Remove headers and bogus entries added by remote printers.
results = filterPrinterNamesAIX(results);
@@ -413,11 +413,11 @@
}
private QueuedJobCount getQueuedJobCount() {
- if (UnixPrintServiceLookup.isSysV()) {
+ if (PrintServiceLookupProvider.isSysV()) {
return getQueuedJobCountSysV();
- } else if (UnixPrintServiceLookup.isBSD()) {
+ } else if (PrintServiceLookupProvider.isBSD()) {
return getQueuedJobCountBSD();
- } else if (UnixPrintServiceLookup.isAIX()) {
+ } else if (PrintServiceLookupProvider.isAIX()) {
return getQueuedJobCountAIX();
} else {
return new QueuedJobCount(0);
@@ -468,9 +468,9 @@
}
private PrintServiceAttributeSet getDynamicAttributes() {
- if (UnixPrintServiceLookup.isSysV()) {
+ if (PrintServiceLookupProvider.isSysV()) {
return getSysVServiceAttributes();
- } else if (UnixPrintServiceLookup.isAIX()) {
+ } else if (PrintServiceLookupProvider.isAIX()) {
return getAIXServiceAttributes();
} else {
return getBSDServiceAttributes();
--- a/jdk/src/java.desktop/unix/classes/sun/print/UnixPrintServiceLookup.java Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,964 +0,0 @@
-/*
- * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. 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.print;
-
-import java.io.BufferedReader;
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Vector;
-import java.security.AccessController;
-import java.security.PrivilegedActionException;
-import java.security.PrivilegedExceptionAction;
-import javax.print.DocFlavor;
-import javax.print.MultiDocPrintService;
-import javax.print.PrintService;
-import javax.print.PrintServiceLookup;
-import javax.print.attribute.Attribute;
-import javax.print.attribute.AttributeSet;
-import javax.print.attribute.HashPrintRequestAttributeSet;
-import javax.print.attribute.HashPrintServiceAttributeSet;
-import javax.print.attribute.PrintRequestAttribute;
-import javax.print.attribute.PrintRequestAttributeSet;
-import javax.print.attribute.PrintServiceAttribute;
-import javax.print.attribute.PrintServiceAttributeSet;
-import javax.print.attribute.standard.PrinterName;
-import javax.print.attribute.standard.PrinterURI;
-import java.io.File;
-import java.io.FileReader;
-import java.net.URL;
-import java.nio.file.Files;
-
-/*
- * Remind: This class uses solaris commands. We also need a linux
- * version
- */
-public class UnixPrintServiceLookup extends PrintServiceLookup
- implements BackgroundServiceLookup, Runnable {
-
- /* Remind: the current implementation is static, as its assumed
- * its preferable to minimize creation of PrintService instances.
- * Later we should add logic to add/remove services on the fly which
- * will take a hit of needing to regather the list of services.
- */
- private String defaultPrinter;
- private PrintService defaultPrintService;
- private PrintService[] printServices; /* includes the default printer */
- private Vector<BackgroundLookupListener> lookupListeners = null;
- private static String debugPrefix = "UnixPrintServiceLookup>> ";
- private static boolean pollServices = true;
- private static final int DEFAULT_MINREFRESH = 120; // 2 minutes
- private static int minRefreshTime = DEFAULT_MINREFRESH;
-
-
- static String osname;
-
- // List of commands used to deal with the printer queues on AIX
- String[] lpNameComAix = {
- "/usr/bin/lsallq",
- "/usr/bin/lpstat -W -p|/usr/bin/expand|/usr/bin/cut -f1 -d' '",
- "/usr/bin/lpstat -W -d|/usr/bin/expand|/usr/bin/cut -f1 -d' '",
- "/usr/bin/lpstat -W -v"
- };
- private static final int aix_lsallq = 0;
- private static final int aix_lpstat_p = 1;
- private static final int aix_lpstat_d = 2;
- private static final int aix_lpstat_v = 3;
- private static int aix_defaultPrinterEnumeration = aix_lsallq;
-
- static {
- /* The system property "sun.java2d.print.polling"
- * can be used to force the printing code to poll or not poll
- * for PrintServices.
- */
- String pollStr = java.security.AccessController.doPrivileged(
- new sun.security.action.GetPropertyAction("sun.java2d.print.polling"));
-
- if (pollStr != null) {
- if (pollStr.equalsIgnoreCase("true")) {
- pollServices = true;
- } else if (pollStr.equalsIgnoreCase("false")) {
- pollServices = false;
- }
- }
-
- /* The system property "sun.java2d.print.minRefreshTime"
- * can be used to specify minimum refresh time (in seconds)
- * for polling PrintServices. The default is 120.
- */
- String refreshTimeStr = java.security.AccessController.doPrivileged(
- new sun.security.action.GetPropertyAction(
- "sun.java2d.print.minRefreshTime"));
-
- if (refreshTimeStr != null) {
- try {
- minRefreshTime = (new Integer(refreshTimeStr)).intValue();
- } catch (NumberFormatException e) {
- }
- if (minRefreshTime < DEFAULT_MINREFRESH) {
- minRefreshTime = DEFAULT_MINREFRESH;
- }
- }
-
- osname = java.security.AccessController.doPrivileged(
- new sun.security.action.GetPropertyAction("os.name"));
-
- /* The system property "sun.java2d.print.aix.lpstat"
- * can be used to force the usage of 'lpstat -p' to enumerate all
- * printer queues. By default we use 'lsallq', because 'lpstat -p' can
- * take lots of time if thousands of printers are attached to a server.
- */
- if (isAIX()) {
- String aixPrinterEnumerator = java.security.AccessController.doPrivileged(
- new sun.security.action.GetPropertyAction("sun.java2d.print.aix.lpstat"));
-
- if (aixPrinterEnumerator != null) {
- if (aixPrinterEnumerator.equalsIgnoreCase("lpstat")) {
- aix_defaultPrinterEnumeration = aix_lpstat_p;
- } else if (aixPrinterEnumerator.equalsIgnoreCase("lsallq")) {
- aix_defaultPrinterEnumeration = aix_lsallq;
- }
- }
- }
- }
-
- static boolean isMac() {
- return osname.startsWith("Mac");
- }
-
- static boolean isSysV() {
- return osname.equals("SunOS");
- }
-
- static boolean isLinux() {
- return (osname.equals("Linux"));
- }
-
- static boolean isBSD() {
- return (osname.equals("Linux") ||
- osname.contains("OS X"));
- }
-
- static boolean isAIX() {
- return osname.equals("AIX");
- }
-
- static final int UNINITIALIZED = -1;
- static final int BSD_LPD = 0;
- static final int BSD_LPD_NG = 1;
-
- static int cmdIndex = UNINITIALIZED;
-
- String[] lpcFirstCom = {
- "/usr/sbin/lpc status | grep : | sed -ne '1,1 s/://p'",
- "/usr/sbin/lpc status | grep -E '^[ 0-9a-zA-Z_-]*@' | awk -F'@' '{print $1}'"
- };
-
- String[] lpcAllCom = {
- "/usr/sbin/lpc status all | grep : | sed -e 's/://'",
- "/usr/sbin/lpc status all | grep -E '^[ 0-9a-zA-Z_-]*@' | awk -F'@' '{print $1}' | sort"
- };
-
- String[] lpcNameCom = {
- "| grep : | sed -ne 's/://p'",
- "| grep -E '^[ 0-9a-zA-Z_-]*@' | awk -F'@' '{print $1}'"
- };
-
-
- static int getBSDCommandIndex() {
- String command = "/usr/sbin/lpc status all";
- String[] names = execCmd(command);
-
- if ((names == null) || (names.length == 0)) {
- return BSD_LPD_NG;
- }
-
- for (int i=0; i<names.length; i++) {
- if (names[i].indexOf('@') != -1) {
- return BSD_LPD_NG;
- }
- }
-
- return BSD_LPD;
- }
-
-
- public UnixPrintServiceLookup() {
- // start the printer listener thread
- if (pollServices) {
- PrinterChangeListener thr = new PrinterChangeListener();
- thr.setDaemon(true);
- thr.start();
- IPPPrintService.debug_println(debugPrefix+"polling turned on");
- }
- }
-
- /* Want the PrintService which is default print service to have
- * equality of reference with the equivalent in list of print services
- * This isn't required by the API and there's a risk doing this will
- * lead people to assume its guaranteed.
- */
- public synchronized PrintService[] getPrintServices() {
- SecurityManager security = System.getSecurityManager();
- if (security != null) {
- security.checkPrintJobAccess();
- }
-
- if (printServices == null || !pollServices) {
- refreshServices();
- }
- if (printServices == null) {
- return new PrintService[0];
- } else {
- return printServices.clone();
- }
- }
-
- private int addPrintServiceToList(ArrayList<PrintService> printerList, PrintService ps) {
- int index = printerList.indexOf(ps);
- // Check if PrintService with same name is already in the list.
- if (CUPSPrinter.isCupsRunning() && index != -1) {
- // Bug in Linux: Duplicate entry of a remote printer
- // and treats it as local printer but it is returning wrong
- // information when queried using IPP. Workaround is to remove it.
- // Even CUPS ignores these entries as shown in lpstat or using
- // their web configuration.
- PrinterURI uri = ps.getAttribute(PrinterURI.class);
- if (uri.getURI().getHost().equals("localhost")) {
- IPPPrintService.debug_println(debugPrefix+"duplicate PrintService, ignoring the new local printer: "+ps);
- return index; // Do not add this.
- }
- PrintService oldPS = printerList.get(index);
- uri = oldPS.getAttribute(PrinterURI.class);
- if (uri.getURI().getHost().equals("localhost")) {
- IPPPrintService.debug_println(debugPrefix+"duplicate PrintService, removing existing local printer: "+oldPS);
- printerList.remove(oldPS);
- } else {
- return index;
- }
- }
- printerList.add(ps);
- return (printerList.size() - 1);
- }
-
-
- // refreshes "printServices"
- public synchronized void refreshServices() {
- /* excludes the default printer */
- String[] printers = null; // array of printer names
- String[] printerURIs = null; //array of printer URIs
-
- try {
- getDefaultPrintService();
- } catch (Throwable t) {
- IPPPrintService.debug_println(debugPrefix+
- "Exception getting default printer : " + t);
- }
- if (CUPSPrinter.isCupsRunning()) {
- try {
- printerURIs = CUPSPrinter.getAllPrinters();
- IPPPrintService.debug_println("CUPS URIs = " + printerURIs);
- if (printerURIs != null) {
- for (int p = 0; p < printerURIs.length; p++) {
- IPPPrintService.debug_println("URI="+printerURIs[p]);
- }
- }
- } catch (Throwable t) {
- IPPPrintService.debug_println(debugPrefix+
- "Exception getting all CUPS printers : " + t);
- }
- if ((printerURIs != null) && (printerURIs.length > 0)) {
- printers = new String[printerURIs.length];
- for (int i=0; i<printerURIs.length; i++) {
- int lastIndex = printerURIs[i].lastIndexOf("/");
- printers[i] = printerURIs[i].substring(lastIndex+1);
- }
- }
- } else {
- if (isMac() || isSysV()) {
- printers = getAllPrinterNamesSysV();
- } else if (isAIX()) {
- printers = getAllPrinterNamesAIX();
- } else { //BSD
- printers = getAllPrinterNamesBSD();
- }
- }
-
- if (printers == null) {
- if (defaultPrintService != null) {
- printServices = new PrintService[1];
- printServices[0] = defaultPrintService;
- } else {
- printServices = null;
- }
- return;
- }
-
- ArrayList<PrintService> printerList = new ArrayList<>();
- int defaultIndex = -1;
- for (int p=0; p<printers.length; p++) {
- if (printers[p] == null) {
- continue;
- }
- if ((defaultPrintService != null)
- && printers[p].equals(getPrinterDestName(defaultPrintService))) {
- defaultIndex = addPrintServiceToList(printerList, defaultPrintService);
- } else {
- if (printServices == null) {
- IPPPrintService.debug_println(debugPrefix+
- "total# of printers = "+printers.length);
-
- if (CUPSPrinter.isCupsRunning()) {
- try {
- addPrintServiceToList(printerList,
- new IPPPrintService(printers[p],
- printerURIs[p],
- true));
- } catch (Exception e) {
- IPPPrintService.debug_println(debugPrefix+
- " getAllPrinters Exception "+
- e);
-
- }
- } else {
- printerList.add(new UnixPrintService(printers[p]));
- }
- } else {
- int j;
- for (j=0; j<printServices.length; j++) {
- if (printServices[j] != null) {
- if (printers[p].equals(getPrinterDestName(printServices[j]))) {
- printerList.add(printServices[j]);
- printServices[j] = null;
- break;
- }
- }
- }
-
- if (j == printServices.length) { // not found?
- if (CUPSPrinter.isCupsRunning()) {
- try {
- addPrintServiceToList(printerList,
- new IPPPrintService(printers[p],
- printerURIs[p],
- true));
- } catch (Exception e) {
- IPPPrintService.debug_println(debugPrefix+
- " getAllPrinters Exception "+
- e);
-
- }
- } else {
- printerList.add(new UnixPrintService(printers[p]));
- }
- }
- }
- }
- }
-
- // Look for deleted services and invalidate these
- if (printServices != null) {
- for (int j=0; j < printServices.length; j++) {
- if ((printServices[j] instanceof UnixPrintService) &&
- (!printServices[j].equals(defaultPrintService))) {
- ((UnixPrintService)printServices[j]).invalidateService();
- }
- }
- }
-
- //if defaultService is not found in printerList
- if (defaultIndex == -1 && defaultPrintService != null) {
- defaultIndex = addPrintServiceToList(printerList, defaultPrintService);
- }
-
- printServices = printerList.toArray(new PrintService[] {});
-
- // swap default with the first in the list
- if (defaultIndex > 0) {
- PrintService saveService = printServices[0];
- printServices[0] = printServices[defaultIndex];
- printServices[defaultIndex] = saveService;
- }
- }
-
- private boolean matchesAttributes(PrintService service,
- PrintServiceAttributeSet attributes) {
-
- Attribute [] attrs = attributes.toArray();
- for (int i=0; i<attrs.length; i++) {
- @SuppressWarnings("unchecked")
- Attribute serviceAttr
- = service.getAttribute((Class<PrintServiceAttribute>)attrs[i].getCategory());
- if (serviceAttr == null || !serviceAttr.equals(attrs[i])) {
- return false;
- }
- }
- return true;
- }
-
- /* This checks for validity of the printer name before passing as
- * parameter to a shell command.
- */
- private boolean checkPrinterName(String s) {
- char c;
-
- for (int i=0; i < s.length(); i++) {
- c = s.charAt(i);
- if (Character.isLetterOrDigit(c) ||
- c == '-' || c == '_' || c == '.' || c == '/') {
- continue;
- } else {
- return false;
- }
- }
- return true;
- }
-
- /*
- * Gets the printer name compatible with the list of printers returned by
- * the system when we query default or all the available printers.
- */
- private String getPrinterDestName(PrintService ps) {
- if (isMac()) {
- return ((IPPPrintService)ps).getDest();
- }
- return ps.getName();
- }
-
- /* On a network with many (hundreds) of network printers, it
- * can save several seconds if you know all you want is a particular
- * printer, to ask for that printer rather than retrieving all printers.
- */
- private PrintService getServiceByName(PrinterName nameAttr) {
- String name = nameAttr.getValue();
- if (name == null || name.equals("") || !checkPrinterName(name)) {
- return null;
- }
- /* check if all printers are already available */
- if (printServices != null) {
- for (PrintService printService : printServices) {
- PrinterName printerName = printService.getAttribute(PrinterName.class);
- if (printerName.getValue().equals(name)) {
- return printService;
- }
- }
- }
- /* take CUPS into account first */
- if (CUPSPrinter.isCupsRunning()) {
- try {
- return new IPPPrintService(name,
- new URL("http://"+
- CUPSPrinter.getServer()+":"+
- CUPSPrinter.getPort()+"/"+
- name));
- } catch (Exception e) {
- IPPPrintService.debug_println(debugPrefix+
- " getServiceByName Exception "+
- e);
- }
- }
- /* fallback if nothing not having a printer at this point */
- PrintService printer = null;
- if (isMac() || isSysV()) {
- printer = getNamedPrinterNameSysV(name);
- } else if (isAIX()) {
- printer = getNamedPrinterNameAIX(name);
- } else {
- printer = getNamedPrinterNameBSD(name);
- }
- return printer;
- }
-
- private PrintService[]
- getPrintServices(PrintServiceAttributeSet serviceSet) {
-
- if (serviceSet == null || serviceSet.isEmpty()) {
- return getPrintServices();
- }
-
- /* Typically expect that if a service attribute is specified that
- * its a printer name and there ought to be only one match.
- * Directly retrieve that service and confirm
- * that it meets the other requirements.
- * If printer name isn't mentioned then go a slow path checking
- * all printers if they meet the reqiremements.
- */
- PrintService[] services;
- PrinterName name = (PrinterName)serviceSet.get(PrinterName.class);
- PrintService defService;
- if (name != null && (defService = getDefaultPrintService()) != null) {
- /* To avoid execing a unix command see if the client is asking
- * for the default printer by name, since we already have that
- * initialised.
- */
-
- PrinterName defName = defService.getAttribute(PrinterName.class);
-
- if (defName != null && name.equals(defName)) {
- if (matchesAttributes(defService, serviceSet)) {
- services = new PrintService[1];
- services[0] = defService;
- return services;
- } else {
- return new PrintService[0];
- }
- } else {
- /* Its not the default service */
- PrintService service = getServiceByName(name);
- if (service != null &&
- matchesAttributes(service, serviceSet)) {
- services = new PrintService[1];
- services[0] = service;
- return services;
- } else {
- return new PrintService[0];
- }
- }
- } else {
- /* specified service attributes don't include a name.*/
- Vector<PrintService> matchedServices = new Vector<>();
- services = getPrintServices();
- for (int i = 0; i< services.length; i++) {
- if (matchesAttributes(services[i], serviceSet)) {
- matchedServices.add(services[i]);
- }
- }
- services = new PrintService[matchedServices.size()];
- for (int i = 0; i< services.length; i++) {
- services[i] = matchedServices.elementAt(i);
- }
- return services;
- }
- }
-
- /*
- * If service attributes are specified then there must be additional
- * filtering.
- */
- public PrintService[] getPrintServices(DocFlavor flavor,
- AttributeSet attributes) {
- SecurityManager security = System.getSecurityManager();
- if (security != null) {
- security.checkPrintJobAccess();
- }
- PrintRequestAttributeSet requestSet = null;
- PrintServiceAttributeSet serviceSet = null;
-
- if (attributes != null && !attributes.isEmpty()) {
-
- requestSet = new HashPrintRequestAttributeSet();
- serviceSet = new HashPrintServiceAttributeSet();
-
- Attribute[] attrs = attributes.toArray();
- for (int i=0; i<attrs.length; i++) {
- if (attrs[i] instanceof PrintRequestAttribute) {
- requestSet.add(attrs[i]);
- } else if (attrs[i] instanceof PrintServiceAttribute) {
- serviceSet.add(attrs[i]);
- }
- }
- }
-
- PrintService[] services = getPrintServices(serviceSet);
- if (services.length == 0) {
- return services;
- }
-
- if (CUPSPrinter.isCupsRunning()) {
- ArrayList<PrintService> matchingServices = new ArrayList<>();
- for (int i=0; i<services.length; i++) {
- try {
- if (services[i].
- getUnsupportedAttributes(flavor, requestSet) == null) {
- matchingServices.add(services[i]);
- }
- } catch (IllegalArgumentException e) {
- }
- }
- services = new PrintService[matchingServices.size()];
- return matchingServices.toArray(services);
-
- } else {
- // We only need to compare 1 PrintService because all
- // UnixPrintServices are the same anyway. We will not use
- // default PrintService because it might be null.
- PrintService service = services[0];
- if ((flavor == null ||
- service.isDocFlavorSupported(flavor)) &&
- service.getUnsupportedAttributes(flavor, requestSet) == null)
- {
- return services;
- } else {
- return new PrintService[0];
- }
- }
- }
-
- /*
- * return empty array as don't support multi docs
- */
- public MultiDocPrintService[]
- getMultiDocPrintServices(DocFlavor[] flavors,
- AttributeSet attributes) {
- SecurityManager security = System.getSecurityManager();
- if (security != null) {
- security.checkPrintJobAccess();
- }
- return new MultiDocPrintService[0];
- }
-
-
- public synchronized PrintService getDefaultPrintService() {
- SecurityManager security = System.getSecurityManager();
- if (security != null) {
- security.checkPrintJobAccess();
- }
-
- // clear defaultPrintService
- defaultPrintService = null;
- String psuri = null;
-
- IPPPrintService.debug_println("isRunning ? "+
- (CUPSPrinter.isCupsRunning()));
- if (CUPSPrinter.isCupsRunning()) {
- String[] printerInfo = CUPSPrinter.getDefaultPrinter();
- if (printerInfo != null && printerInfo.length >= 2) {
- defaultPrinter = printerInfo[0];
- psuri = printerInfo[1];
- }
- } else {
- if (isMac() || isSysV()) {
- defaultPrinter = getDefaultPrinterNameSysV();
- } else if (isAIX()) {
- defaultPrinter = getDefaultPrinterNameAIX();
- } else {
- defaultPrinter = getDefaultPrinterNameBSD();
- }
- }
- if (defaultPrinter == null) {
- return null;
- }
- defaultPrintService = null;
- if (printServices != null) {
- for (int j=0; j<printServices.length; j++) {
- if (defaultPrinter.equals(getPrinterDestName(printServices[j]))) {
- defaultPrintService = printServices[j];
- break;
- }
- }
- }
- if (defaultPrintService == null) {
- if (CUPSPrinter.isCupsRunning()) {
- try {
- PrintService defaultPS;
- if ((psuri != null) && !psuri.startsWith("file")) {
- defaultPS = new IPPPrintService(defaultPrinter,
- psuri, true);
- } else {
- defaultPS = new IPPPrintService(defaultPrinter,
- new URL("http://"+
- CUPSPrinter.getServer()+":"+
- CUPSPrinter.getPort()+"/"+
- defaultPrinter));
- }
- defaultPrintService = defaultPS;
- } catch (Exception e) {
- }
- } else {
- defaultPrintService = new UnixPrintService(defaultPrinter);
- }
- }
-
- return defaultPrintService;
- }
-
- public synchronized void
- getServicesInbackground(BackgroundLookupListener listener) {
- if (printServices != null) {
- listener.notifyServices(printServices);
- } else {
- if (lookupListeners == null) {
- lookupListeners = new Vector<>();
- lookupListeners.add(listener);
- Thread lookupThread = new Thread(this);
- lookupThread.start();
- } else {
- lookupListeners.add(listener);
- }
- }
- }
-
- /* This method isn't used in most cases because we rely on code in
- * javax.print.PrintServiceLookup. This is needed just for the cases
- * where those interfaces are by-passed.
- */
- private PrintService[] copyOf(PrintService[] inArr) {
- if (inArr == null || inArr.length == 0) {
- return inArr;
- } else {
- PrintService []outArr = new PrintService[inArr.length];
- System.arraycopy(inArr, 0, outArr, 0, inArr.length);
- return outArr;
- }
- }
-
- public void run() {
- PrintService[] services = getPrintServices();
- synchronized (this) {
- BackgroundLookupListener listener;
- for (int i=0; i<lookupListeners.size(); i++) {
- listener = lookupListeners.elementAt(i);
- listener.notifyServices(copyOf(services));
- }
- lookupListeners = null;
- }
- }
-
- private String getDefaultPrinterNameBSD() {
- if (cmdIndex == UNINITIALIZED) {
- cmdIndex = getBSDCommandIndex();
- }
- String[] names = execCmd(lpcFirstCom[cmdIndex]);
- if (names == null || names.length == 0) {
- return null;
- }
-
- if ((cmdIndex==BSD_LPD_NG) &&
- (names[0].startsWith("missingprinter"))) {
- return null;
- }
- return names[0];
- }
-
- private PrintService getNamedPrinterNameBSD(String name) {
- if (cmdIndex == UNINITIALIZED) {
- cmdIndex = getBSDCommandIndex();
- }
- String command = "/usr/sbin/lpc status " + name + lpcNameCom[cmdIndex];
- String[] result = execCmd(command);
-
- if (result == null || !(result[0].equals(name))) {
- return null;
- }
- return new UnixPrintService(name);
- }
-
- private String[] getAllPrinterNamesBSD() {
- if (cmdIndex == UNINITIALIZED) {
- cmdIndex = getBSDCommandIndex();
- }
- String[] names = execCmd(lpcAllCom[cmdIndex]);
- if (names == null || names.length == 0) {
- return null;
- }
- return names;
- }
-
- static String getDefaultPrinterNameSysV() {
- String defaultPrinter = "lp";
- String command = "/usr/bin/lpstat -d";
-
- String [] names = execCmd(command);
- if (names == null || names.length == 0) {
- return defaultPrinter;
- } else {
- int index = names[0].indexOf(":");
- if (index == -1 || (names[0].length() <= index+1)) {
- return null;
- } else {
- String name = names[0].substring(index+1).trim();
- if (name.length() == 0) {
- return null;
- } else {
- return name;
- }
- }
- }
- }
-
- private PrintService getNamedPrinterNameSysV(String name) {
-
- String command = "/usr/bin/lpstat -v " + name;
- String []result = execCmd(command);
-
- if (result == null || result[0].indexOf("unknown printer") > 0) {
- return null;
- } else {
- return new UnixPrintService(name);
- }
- }
-
- private String[] getAllPrinterNamesSysV() {
- String defaultPrinter = "lp";
- String command = "/usr/bin/lpstat -v|/usr/bin/expand|/usr/bin/cut -f3 -d' ' |/usr/bin/cut -f1 -d':' | /usr/bin/sort";
-
- String [] names = execCmd(command);
- ArrayList<String> printerNames = new ArrayList<>();
- for (int i=0; i < names.length; i++) {
- if (!names[i].equals("_default") &&
- !names[i].equals(defaultPrinter) &&
- !names[i].equals("")) {
- printerNames.add(names[i]);
- }
- }
- return printerNames.toArray(new String[printerNames.size()]);
- }
-
- private String getDefaultPrinterNameAIX() {
- String[] names = execCmd(lpNameComAix[aix_lpstat_d]);
- // Remove headers and bogus entries added by remote printers.
- names = UnixPrintService.filterPrinterNamesAIX(names);
- if (names == null || names.length != 1) {
- // No default printer found
- return null;
- } else {
- return names[0];
- }
- }
-
- private PrintService getNamedPrinterNameAIX(String name) {
- // On AIX there should be no blank after '-v'.
- String[] result = execCmd(lpNameComAix[aix_lpstat_v] + name);
- // Remove headers and bogus entries added by remote printers.
- result = UnixPrintService.filterPrinterNamesAIX(result);
- if (result == null || result.length != 1) {
- return null;
- } else {
- return new UnixPrintService(name);
- }
- }
-
- private String[] getAllPrinterNamesAIX() {
- // Determine all printers of the system.
- String [] names = execCmd(lpNameComAix[aix_defaultPrinterEnumeration]);
-
- // Remove headers and bogus entries added by remote printers.
- names = UnixPrintService.filterPrinterNamesAIX(names);
-
- ArrayList<String> printerNames = new ArrayList<String>();
- for ( int i=0; i < names.length; i++) {
- printerNames.add(names[i]);
- }
- return printerNames.toArray(new String[printerNames.size()]);
- }
-
- static String[] execCmd(final String command) {
- ArrayList<String> results = null;
- try {
- final String[] cmd = new String[3];
- if (isSysV() || isAIX()) {
- cmd[0] = "/usr/bin/sh";
- cmd[1] = "-c";
- cmd[2] = "env LC_ALL=C " + command;
- } else {
- cmd[0] = "/bin/sh";
- cmd[1] = "-c";
- cmd[2] = "LC_ALL=C " + command;
- }
-
- results = AccessController.doPrivileged(
- new PrivilegedExceptionAction<ArrayList<String>>() {
- public ArrayList<String> run() throws IOException {
-
- Process proc;
- BufferedReader bufferedReader = null;
- File f = Files.createTempFile("prn","xc").toFile();
- cmd[2] = cmd[2]+">"+f.getAbsolutePath();
-
- proc = Runtime.getRuntime().exec(cmd);
- try {
- boolean done = false; // in case of interrupt.
- while (!done) {
- try {
- proc.waitFor();
- done = true;
- } catch (InterruptedException e) {
- }
- }
-
- if (proc.exitValue() == 0) {
- FileReader reader = new FileReader(f);
- bufferedReader = new BufferedReader(reader);
- String line;
- ArrayList<String> results = new ArrayList<>();
- while ((line = bufferedReader.readLine())
- != null) {
- results.add(line);
- }
- return results;
- }
- } finally {
- f.delete();
- // promptly close all streams.
- if (bufferedReader != null) {
- bufferedReader.close();
- }
- proc.getInputStream().close();
- proc.getErrorStream().close();
- proc.getOutputStream().close();
- }
- return null;
- }
- });
- } catch (PrivilegedActionException e) {
- }
- if (results == null) {
- return new String[0];
- } else {
- return results.toArray(new String[results.size()]);
- }
- }
-
- private class PrinterChangeListener extends Thread {
-
- public void run() {
- int refreshSecs;
- while (true) {
- try {
- refreshServices();
- } catch (Exception se) {
- IPPPrintService.debug_println(debugPrefix+"Exception in refresh thread.");
- break;
- }
-
- if ((printServices != null) &&
- (printServices.length > minRefreshTime)) {
- // compute new refresh time 1 printer = 1 sec
- refreshSecs = printServices.length;
- } else {
- refreshSecs = minRefreshTime;
- }
- try {
- sleep(refreshSecs * 1000);
- } catch (InterruptedException e) {
- break;
- }
- }
- }
- }
-}
--- a/jdk/src/java.desktop/unix/native/common/java2d/opengl/GLXGraphicsConfig.c Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.desktop/unix/native/common/java2d/opengl/GLXGraphicsConfig.c Fri Oct 31 18:18:58 2014 +0000
@@ -398,8 +398,8 @@
static GLXPbuffer
GLXGC_InitScratchPbuffer(GLXFBConfig fbconfig)
{
- int pbattrlist[] = {GLX_PBUFFER_WIDTH, 1,
- GLX_PBUFFER_HEIGHT, 1,
+ int pbattrlist[] = {GLX_PBUFFER_WIDTH, 4,
+ GLX_PBUFFER_HEIGHT, 4,
GLX_PRESERVED_CONTENTS, GL_FALSE,
0};
--- a/jdk/src/java.desktop/windows/classes/META-INF/services/javax.print.PrintServiceLookup Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-# Provider for Java Print Service
-sun.print.Win32PrintServiceLookup
--- a/jdk/src/java.desktop/windows/classes/META-INF/services/javax.print.StreamPrintServiceFactory Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-# Providers for Java 2D/JPS Stream print services.
-sun.print.PSStreamPrinterFactory
--- a/jdk/src/java.desktop/windows/classes/sun/awt/windows/WPathGraphics.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.desktop/windows/classes/sun/awt/windows/WPathGraphics.java Fri Oct 31 18:18:58 2014 +0000
@@ -1400,7 +1400,9 @@
* The saved device transform is needed as the current transform
* is not likely to be the same.
*/
- deviceClip(savedClip.getPathIterator(savedTransform));
+ if (savedClip != null) {
+ deviceClip(savedClip.getPathIterator(savedTransform));
+ }
/* Scale the bounding rectangle by the scale transform.
* Because the scaling transform has only x and y
--- a/jdk/src/java.desktop/windows/classes/sun/awt/windows/WPrinterJob.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.desktop/windows/classes/sun/awt/windows/WPrinterJob.java Fri Oct 31 18:18:58 2014 +0000
@@ -93,7 +93,7 @@
import sun.print.SunPageSelection;
import sun.print.Win32MediaTray;
import sun.print.Win32PrintService;
-import sun.print.Win32PrintServiceLookup;
+import sun.print.PrintServiceLookupProvider;
import sun.print.ServiceDialog;
import sun.print.DialogOwner;
@@ -454,7 +454,7 @@
// native printer is different !
// we update the current PrintService
try {
- setPrintService(Win32PrintServiceLookup.
+ setPrintService(PrintServiceLookupProvider.
getWin32PrintLUS().
getPrintServiceByName(printerName));
} catch (PrinterException e) {
@@ -628,7 +628,7 @@
String printerName = getNativePrintService();
if (printerName != null) {
- myService = Win32PrintServiceLookup.getWin32PrintLUS().
+ myService = PrintServiceLookupProvider.getWin32PrintLUS().
getPrintServiceByName(printerName);
// no need to call setNativePrintService as this name is
// currently set in native
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/windows/classes/sun/print/PrintServiceLookupProvider.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,349 @@
+/*
+ * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. 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.print;
+
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
+import javax.print.DocFlavor;
+import javax.print.MultiDocPrintService;
+import javax.print.PrintService;
+import javax.print.PrintServiceLookup;
+import javax.print.attribute.Attribute;
+import javax.print.attribute.AttributeSet;
+import javax.print.attribute.HashPrintRequestAttributeSet;
+import javax.print.attribute.HashPrintServiceAttributeSet;
+import javax.print.attribute.PrintRequestAttribute;
+import javax.print.attribute.PrintRequestAttributeSet;
+import javax.print.attribute.PrintServiceAttribute;
+import javax.print.attribute.PrintServiceAttributeSet;
+import javax.print.attribute.standard.PrinterName;
+
+public class PrintServiceLookupProvider extends PrintServiceLookup {
+
+ private String defaultPrinter;
+ private PrintService defaultPrintService;
+ private String[] printers; /* excludes the default printer */
+ private PrintService[] printServices; /* includes the default printer */
+
+ static {
+ java.security.AccessController.doPrivileged(
+ new java.security.PrivilegedAction<Void>() {
+ public Void run() {
+ System.loadLibrary("awt");
+ return null;
+ }
+ });
+ }
+
+ /* The singleton win32 print lookup service.
+ * Code that is aware of this field and wants to use it must first
+ * see if its null, and if so instantiate it by calling a method such as
+ * javax.print.PrintServiceLookup.defaultPrintService() so that the
+ * same instance is stored there.
+ */
+ private static PrintServiceLookupProvider win32PrintLUS;
+
+ /* Think carefully before calling this. Preferably don't call it. */
+ public static PrintServiceLookupProvider getWin32PrintLUS() {
+ if (win32PrintLUS == null) {
+ /* This call is internally synchronized.
+ * When it returns an instance of this class will have
+ * been instantiated - else there's a JDK internal error.
+ */
+ PrintServiceLookup.lookupDefaultPrintService();
+ }
+ return win32PrintLUS;
+ }
+
+ public PrintServiceLookupProvider() {
+
+ if (win32PrintLUS == null) {
+ win32PrintLUS = this;
+
+ String osName = AccessController.doPrivileged(
+ new sun.security.action.GetPropertyAction("os.name"));
+ // There's no capability for Win98 to refresh printers.
+ // See "OpenPrinter" for more info.
+ if (osName != null && osName.startsWith("Windows 98")) {
+ return;
+ }
+ // start the printer listener thread
+ PrinterChangeListener thr = new PrinterChangeListener();
+ thr.setDaemon(true);
+ thr.start();
+ } /* else condition ought to never happen! */
+ }
+
+ /* Want the PrintService which is default print service to have
+ * equality of reference with the equivalent in list of print services
+ * This isn't required by the API and there's a risk doing this will
+ * lead people to assume its guaranteed.
+ */
+ public synchronized PrintService[] getPrintServices() {
+ SecurityManager security = System.getSecurityManager();
+ if (security != null) {
+ security.checkPrintJobAccess();
+ }
+ if (printServices == null) {
+ refreshServices();
+ }
+ return printServices;
+ }
+
+ private synchronized void refreshServices() {
+ printers = getAllPrinterNames();
+ if (printers == null) {
+ // In Windows it is safe to assume no default if printers == null so we
+ // don't get the default.
+ printServices = new PrintService[0];
+ return;
+ }
+
+ PrintService[] newServices = new PrintService[printers.length];
+ PrintService defService = getDefaultPrintService();
+ for (int p = 0; p < printers.length; p++) {
+ if (defService != null &&
+ printers[p].equals(defService.getName())) {
+ newServices[p] = defService;
+ } else {
+ if (printServices == null) {
+ newServices[p] = new Win32PrintService(printers[p]);
+ } else {
+ int j;
+ for (j = 0; j < printServices.length; j++) {
+ if ((printServices[j]!= null) &&
+ (printers[p].equals(printServices[j].getName()))) {
+ newServices[p] = printServices[j];
+ printServices[j] = null;
+ break;
+ }
+ }
+ if (j == printServices.length) {
+ newServices[p] = new Win32PrintService(printers[p]);
+ }
+ }
+ }
+ }
+
+ // Look for deleted services and invalidate these
+ if (printServices != null) {
+ for (int j=0; j < printServices.length; j++) {
+ if ((printServices[j] instanceof Win32PrintService) &&
+ (!printServices[j].equals(defaultPrintService))) {
+ ((Win32PrintService)printServices[j]).invalidateService();
+ }
+ }
+ }
+ printServices = newServices;
+ }
+
+
+ public synchronized PrintService getPrintServiceByName(String name) {
+
+ if (name == null || name.equals("")) {
+ return null;
+ } else {
+ /* getPrintServices() is now very fast. */
+ PrintService[] printServices = getPrintServices();
+ for (int i=0; i<printServices.length; i++) {
+ if (printServices[i].getName().equals(name)) {
+ return printServices[i];
+ }
+ }
+ return null;
+ }
+ }
+
+ @SuppressWarnings("unchecked") // Cast to Class<PrintServiceAttribute>
+ boolean matchingService(PrintService service,
+ PrintServiceAttributeSet serviceSet) {
+ if (serviceSet != null) {
+ Attribute [] attrs = serviceSet.toArray();
+ Attribute serviceAttr;
+ for (int i=0; i<attrs.length; i++) {
+ serviceAttr
+ = service.getAttribute((Class<PrintServiceAttribute>)attrs[i].getCategory());
+ if (serviceAttr == null || !serviceAttr.equals(attrs[i])) {
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+
+ public PrintService[] getPrintServices(DocFlavor flavor,
+ AttributeSet attributes) {
+
+ SecurityManager security = System.getSecurityManager();
+ if (security != null) {
+ security.checkPrintJobAccess();
+ }
+ PrintRequestAttributeSet requestSet = null;
+ PrintServiceAttributeSet serviceSet = null;
+
+ if (attributes != null && !attributes.isEmpty()) {
+
+ requestSet = new HashPrintRequestAttributeSet();
+ serviceSet = new HashPrintServiceAttributeSet();
+
+ Attribute[] attrs = attributes.toArray();
+ for (int i=0; i<attrs.length; i++) {
+ if (attrs[i] instanceof PrintRequestAttribute) {
+ requestSet.add(attrs[i]);
+ } else if (attrs[i] instanceof PrintServiceAttribute) {
+ serviceSet.add(attrs[i]);
+ }
+ }
+ }
+
+ /*
+ * Special case: If client is asking for a particular printer
+ * (by name) then we can save time by getting just that service
+ * to check against the rest of the specified attributes.
+ */
+ PrintService[] services = null;
+ if (serviceSet != null && serviceSet.get(PrinterName.class) != null) {
+ PrinterName name = (PrinterName)serviceSet.get(PrinterName.class);
+ PrintService service = getPrintServiceByName(name.getValue());
+ if (service == null || !matchingService(service, serviceSet)) {
+ services = new PrintService[0];
+ } else {
+ services = new PrintService[1];
+ services[0] = service;
+ }
+ } else {
+ services = getPrintServices();
+ }
+
+ if (services.length == 0) {
+ return services;
+ } else {
+ ArrayList<PrintService> matchingServices = new ArrayList<>();
+ for (int i=0; i<services.length; i++) {
+ try {
+ if (services[i].
+ getUnsupportedAttributes(flavor, requestSet) == null) {
+ matchingServices.add(services[i]);
+ }
+ } catch (IllegalArgumentException e) {
+ }
+ }
+ services = new PrintService[matchingServices.size()];
+ return matchingServices.toArray(services);
+ }
+ }
+
+ /*
+ * return empty array as don't support multi docs
+ */
+ public MultiDocPrintService[]
+ getMultiDocPrintServices(DocFlavor[] flavors,
+ AttributeSet attributes) {
+ SecurityManager security = System.getSecurityManager();
+ if (security != null) {
+ security.checkPrintJobAccess();
+ }
+ return new MultiDocPrintService[0];
+ }
+
+
+ public synchronized PrintService getDefaultPrintService() {
+ SecurityManager security = System.getSecurityManager();
+ if (security != null) {
+ security.checkPrintJobAccess();
+ }
+
+
+ // Windows does not have notification for a change in default
+ // so we always get the latest.
+ defaultPrinter = getDefaultPrinterName();
+ if (defaultPrinter == null) {
+ return null;
+ }
+
+ if ((defaultPrintService != null) &&
+ defaultPrintService.getName().equals(defaultPrinter)) {
+
+ return defaultPrintService;
+ }
+
+ // Not the same as default so proceed to get new PrintService.
+
+ // clear defaultPrintService
+ defaultPrintService = null;
+
+ if (printServices != null) {
+ for (int j=0; j<printServices.length; j++) {
+ if (defaultPrinter.equals(printServices[j].getName())) {
+ defaultPrintService = printServices[j];
+ break;
+ }
+ }
+ }
+
+ if (defaultPrintService == null) {
+ defaultPrintService = new Win32PrintService(defaultPrinter);
+ }
+ return defaultPrintService;
+ }
+
+ class PrinterChangeListener extends Thread {
+ long chgObj;
+ PrinterChangeListener() {
+ chgObj = notifyFirstPrinterChange(null);
+ }
+
+ public void run() {
+ if (chgObj != -1) {
+ while (true) {
+ // wait for configuration to change
+ if (notifyPrinterChange(chgObj) != 0) {
+ try {
+ refreshServices();
+ } catch (SecurityException se) {
+ break;
+ }
+ } else {
+ notifyClosePrinterChange(chgObj);
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ private native String getDefaultPrinterName();
+ private native String[] getAllPrinterNames();
+ private native long notifyFirstPrinterChange(String printer);
+ private native void notifyClosePrinterChange(long chgObj);
+ private native int notifyPrinterChange(long chgObj);
+}
--- a/jdk/src/java.desktop/windows/classes/sun/print/Win32PrintServiceLookup.java Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,349 +0,0 @@
-/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. 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.print;
-
-import java.io.BufferedReader;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.security.AccessController;
-import java.security.PrivilegedActionException;
-import java.security.PrivilegedExceptionAction;
-import javax.print.DocFlavor;
-import javax.print.MultiDocPrintService;
-import javax.print.PrintService;
-import javax.print.PrintServiceLookup;
-import javax.print.attribute.Attribute;
-import javax.print.attribute.AttributeSet;
-import javax.print.attribute.HashPrintRequestAttributeSet;
-import javax.print.attribute.HashPrintServiceAttributeSet;
-import javax.print.attribute.PrintRequestAttribute;
-import javax.print.attribute.PrintRequestAttributeSet;
-import javax.print.attribute.PrintServiceAttribute;
-import javax.print.attribute.PrintServiceAttributeSet;
-import javax.print.attribute.standard.PrinterName;
-
-public class Win32PrintServiceLookup extends PrintServiceLookup {
-
- private String defaultPrinter;
- private PrintService defaultPrintService;
- private String[] printers; /* excludes the default printer */
- private PrintService[] printServices; /* includes the default printer */
-
- static {
- java.security.AccessController.doPrivileged(
- new java.security.PrivilegedAction<Void>() {
- public Void run() {
- System.loadLibrary("awt");
- return null;
- }
- });
- }
-
- /* The singleton win32 print lookup service.
- * Code that is aware of this field and wants to use it must first
- * see if its null, and if so instantiate it by calling a method such as
- * javax.print.PrintServiceLookup.defaultPrintService() so that the
- * same instance is stored there.
- */
- private static Win32PrintServiceLookup win32PrintLUS;
-
- /* Think carefully before calling this. Preferably don't call it. */
- public static Win32PrintServiceLookup getWin32PrintLUS() {
- if (win32PrintLUS == null) {
- /* This call is internally synchronized.
- * When it returns an instance of this class will have
- * been instantiated - else there's a JDK internal error.
- */
- PrintServiceLookup.lookupDefaultPrintService();
- }
- return win32PrintLUS;
- }
-
- public Win32PrintServiceLookup() {
-
- if (win32PrintLUS == null) {
- win32PrintLUS = this;
-
- String osName = AccessController.doPrivileged(
- new sun.security.action.GetPropertyAction("os.name"));
- // There's no capability for Win98 to refresh printers.
- // See "OpenPrinter" for more info.
- if (osName != null && osName.startsWith("Windows 98")) {
- return;
- }
- // start the printer listener thread
- PrinterChangeListener thr = new PrinterChangeListener();
- thr.setDaemon(true);
- thr.start();
- } /* else condition ought to never happen! */
- }
-
- /* Want the PrintService which is default print service to have
- * equality of reference with the equivalent in list of print services
- * This isn't required by the API and there's a risk doing this will
- * lead people to assume its guaranteed.
- */
- public synchronized PrintService[] getPrintServices() {
- SecurityManager security = System.getSecurityManager();
- if (security != null) {
- security.checkPrintJobAccess();
- }
- if (printServices == null) {
- refreshServices();
- }
- return printServices;
- }
-
- private synchronized void refreshServices() {
- printers = getAllPrinterNames();
- if (printers == null) {
- // In Windows it is safe to assume no default if printers == null so we
- // don't get the default.
- printServices = new PrintService[0];
- return;
- }
-
- PrintService[] newServices = new PrintService[printers.length];
- PrintService defService = getDefaultPrintService();
- for (int p = 0; p < printers.length; p++) {
- if (defService != null &&
- printers[p].equals(defService.getName())) {
- newServices[p] = defService;
- } else {
- if (printServices == null) {
- newServices[p] = new Win32PrintService(printers[p]);
- } else {
- int j;
- for (j = 0; j < printServices.length; j++) {
- if ((printServices[j]!= null) &&
- (printers[p].equals(printServices[j].getName()))) {
- newServices[p] = printServices[j];
- printServices[j] = null;
- break;
- }
- }
- if (j == printServices.length) {
- newServices[p] = new Win32PrintService(printers[p]);
- }
- }
- }
- }
-
- // Look for deleted services and invalidate these
- if (printServices != null) {
- for (int j=0; j < printServices.length; j++) {
- if ((printServices[j] instanceof Win32PrintService) &&
- (!printServices[j].equals(defaultPrintService))) {
- ((Win32PrintService)printServices[j]).invalidateService();
- }
- }
- }
- printServices = newServices;
- }
-
-
- public synchronized PrintService getPrintServiceByName(String name) {
-
- if (name == null || name.equals("")) {
- return null;
- } else {
- /* getPrintServices() is now very fast. */
- PrintService[] printServices = getPrintServices();
- for (int i=0; i<printServices.length; i++) {
- if (printServices[i].getName().equals(name)) {
- return printServices[i];
- }
- }
- return null;
- }
- }
-
- @SuppressWarnings("unchecked") // Cast to Class<PrintServiceAttribute>
- boolean matchingService(PrintService service,
- PrintServiceAttributeSet serviceSet) {
- if (serviceSet != null) {
- Attribute [] attrs = serviceSet.toArray();
- Attribute serviceAttr;
- for (int i=0; i<attrs.length; i++) {
- serviceAttr
- = service.getAttribute((Class<PrintServiceAttribute>)attrs[i].getCategory());
- if (serviceAttr == null || !serviceAttr.equals(attrs[i])) {
- return false;
- }
- }
- }
- return true;
- }
-
- public PrintService[] getPrintServices(DocFlavor flavor,
- AttributeSet attributes) {
-
- SecurityManager security = System.getSecurityManager();
- if (security != null) {
- security.checkPrintJobAccess();
- }
- PrintRequestAttributeSet requestSet = null;
- PrintServiceAttributeSet serviceSet = null;
-
- if (attributes != null && !attributes.isEmpty()) {
-
- requestSet = new HashPrintRequestAttributeSet();
- serviceSet = new HashPrintServiceAttributeSet();
-
- Attribute[] attrs = attributes.toArray();
- for (int i=0; i<attrs.length; i++) {
- if (attrs[i] instanceof PrintRequestAttribute) {
- requestSet.add(attrs[i]);
- } else if (attrs[i] instanceof PrintServiceAttribute) {
- serviceSet.add(attrs[i]);
- }
- }
- }
-
- /*
- * Special case: If client is asking for a particular printer
- * (by name) then we can save time by getting just that service
- * to check against the rest of the specified attributes.
- */
- PrintService[] services = null;
- if (serviceSet != null && serviceSet.get(PrinterName.class) != null) {
- PrinterName name = (PrinterName)serviceSet.get(PrinterName.class);
- PrintService service = getPrintServiceByName(name.getValue());
- if (service == null || !matchingService(service, serviceSet)) {
- services = new PrintService[0];
- } else {
- services = new PrintService[1];
- services[0] = service;
- }
- } else {
- services = getPrintServices();
- }
-
- if (services.length == 0) {
- return services;
- } else {
- ArrayList<PrintService> matchingServices = new ArrayList<>();
- for (int i=0; i<services.length; i++) {
- try {
- if (services[i].
- getUnsupportedAttributes(flavor, requestSet) == null) {
- matchingServices.add(services[i]);
- }
- } catch (IllegalArgumentException e) {
- }
- }
- services = new PrintService[matchingServices.size()];
- return matchingServices.toArray(services);
- }
- }
-
- /*
- * return empty array as don't support multi docs
- */
- public MultiDocPrintService[]
- getMultiDocPrintServices(DocFlavor[] flavors,
- AttributeSet attributes) {
- SecurityManager security = System.getSecurityManager();
- if (security != null) {
- security.checkPrintJobAccess();
- }
- return new MultiDocPrintService[0];
- }
-
-
- public synchronized PrintService getDefaultPrintService() {
- SecurityManager security = System.getSecurityManager();
- if (security != null) {
- security.checkPrintJobAccess();
- }
-
-
- // Windows does not have notification for a change in default
- // so we always get the latest.
- defaultPrinter = getDefaultPrinterName();
- if (defaultPrinter == null) {
- return null;
- }
-
- if ((defaultPrintService != null) &&
- defaultPrintService.getName().equals(defaultPrinter)) {
-
- return defaultPrintService;
- }
-
- // Not the same as default so proceed to get new PrintService.
-
- // clear defaultPrintService
- defaultPrintService = null;
-
- if (printServices != null) {
- for (int j=0; j<printServices.length; j++) {
- if (defaultPrinter.equals(printServices[j].getName())) {
- defaultPrintService = printServices[j];
- break;
- }
- }
- }
-
- if (defaultPrintService == null) {
- defaultPrintService = new Win32PrintService(defaultPrinter);
- }
- return defaultPrintService;
- }
-
- class PrinterChangeListener extends Thread {
- long chgObj;
- PrinterChangeListener() {
- chgObj = notifyFirstPrinterChange(null);
- }
-
- public void run() {
- if (chgObj != -1) {
- while (true) {
- // wait for configuration to change
- if (notifyPrinterChange(chgObj) != 0) {
- try {
- refreshServices();
- } catch (SecurityException se) {
- break;
- }
- } else {
- notifyClosePrinterChange(chgObj);
- break;
- }
- }
- }
- }
- }
-
- private native String getDefaultPrinterName();
- private native String[] getAllPrinterNames();
- private native long notifyFirstPrinterChange(String printer);
- private native void notifyClosePrinterChange(long chgObj);
- private native int notifyPrinterChange(long chgObj);
-}
--- a/jdk/src/java.desktop/windows/native/libawt/windows/WPrinterJob.cpp Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.desktop/windows/native/libawt/windows/WPrinterJob.cpp Fri Oct 31 18:18:58 2014 +0000
@@ -68,7 +68,7 @@
extern "C" {
JNIEXPORT jstring JNICALL
-Java_sun_print_Win32PrintServiceLookup_getDefaultPrinterName(JNIEnv *env,
+Java_sun_print_PrintServiceLookupProvider_getDefaultPrinterName(JNIEnv *env,
jobject peer)
{
TRY;
@@ -119,7 +119,7 @@
JNIEXPORT jobjectArray JNICALL
-Java_sun_print_Win32PrintServiceLookup_getAllPrinterNames(JNIEnv *env,
+Java_sun_print_PrintServiceLookupProvider_getAllPrinterNames(JNIEnv *env,
jobject peer)
{
TRY;
@@ -176,7 +176,7 @@
JNIEXPORT jlong JNICALL
-Java_sun_print_Win32PrintServiceLookup_notifyFirstPrinterChange(JNIEnv *env,
+Java_sun_print_PrintServiceLookupProvider_notifyFirstPrinterChange(JNIEnv *env,
jobject peer,
jstring printer) {
HANDLE hPrinter;
@@ -210,7 +210,7 @@
JNIEXPORT void JNICALL
-Java_sun_print_Win32PrintServiceLookup_notifyClosePrinterChange(JNIEnv *env,
+Java_sun_print_PrintServiceLookupProvider_notifyClosePrinterChange(JNIEnv *env,
jobject peer,
jlong chgObject) {
FindClosePrinterChangeNotification((HANDLE)chgObject);
@@ -218,7 +218,7 @@
JNIEXPORT jint JNICALL
-Java_sun_print_Win32PrintServiceLookup_notifyPrinterChange(JNIEnv *env,
+Java_sun_print_PrintServiceLookupProvider_notifyPrinterChange(JNIEnv *env,
jobject peer,
jlong chgObject) {
DWORD dwChange;
--- a/jdk/src/java.desktop/windows/native/libawt/windows/awt_PrintControl.cpp Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.desktop/windows/native/libawt/windows/awt_PrintControl.cpp Fri Oct 31 18:18:58 2014 +0000
@@ -771,6 +771,17 @@
jint maxPage = env->CallIntMethod(printCtrl,
AwtPrintControl::getMaxPageID);
pd.nMaxPage = (maxPage <= (jint)((WORD)-1)) ? (WORD)maxPage : (WORD)-1;
+ // In the event that the application displays the dialog before
+ // installing a Printable, but sets a page range, then max page will be 1
+ // since the default state of a PrinterJob is an empty "Book" Pageable.
+ // Windows pops up an error dialog in such a case which isn't very
+ // forthcoming about the exact problem.
+ // So if we detect this fix up such a problem here.
+ if (pd.nMinPage > pd.nFromPage) pd.nMinPage = pd.nFromPage;
+ if (pd.nMaxPage < pd.nToPage) pd.nMaxPage = pd.nToPage;
+ if (pd.nFromPage > pd.nMinPage || pd.nToPage < pd.nMaxPage) {
+ pd.Flags |= PD_PAGENUMS;
+ }
if (env->CallBooleanMethod(printCtrl,
AwtPrintControl::getDestID)) {
--- a/jdk/src/java.management/share/classes/javax/management/loading/DefaultLoaderRepository.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.management/share/classes/javax/management/loading/DefaultLoaderRepository.java Fri Oct 31 18:18:58 2014 +0000
@@ -47,7 +47,7 @@
* <code>DefaultLoaderRepository</code> be rewritten.</p>
*
* @deprecated Use
- * {@link javax.management.MBeanServer#getClassLoaderRepository()}}
+ * {@link javax.management.MBeanServer#getClassLoaderRepository()}
* instead.
*
* @since 1.5
--- a/jdk/src/java.sql.rowset/share/classes/javax/sql/rowset/RowSetMetaDataImpl.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/java.sql.rowset/share/classes/javax/sql/rowset/RowSetMetaDataImpl.java Fri Oct 31 18:18:58 2014 +0000
@@ -803,8 +803,10 @@
* @throws SQLException if a database access error occurs
* or the given column number is out of bounds
*/
- public boolean isDefinitelyWritable(int columnIndex)
- throws SQLException { return true;}
+ public boolean isDefinitelyWritable(int columnIndex) throws SQLException {
+ checkColRange(columnIndex);
+ return true;
+ }
/**
* Retrieves the fully-qualified name of the class in the Java
--- a/jdk/src/jdk.deploy.osx/macosx/classes/apple/security/KeychainStore.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/jdk.deploy.osx/macosx/classes/apple/security/KeychainStore.java Fri Oct 31 18:18:58 2014 +0000
@@ -140,7 +140,8 @@
* password to recover it.
*
* @param alias the alias name
- * @param password the password for recovering the key
+ * @param password the password for recovering the key. This password is
+ * used internally as the key is exported in a PKCS12 format.
*
* @return the requested key, or null if the given alias does not exist
* or does not identify a <i>key entry</i>.
@@ -155,6 +156,20 @@
{
permissionCheck();
+ // An empty password is rejected by MacOS API, no private key data
+ // is exported. If no password is passed (as is the case when
+ // this implementation is used as browser keystore in various
+ // deployment scenarios like Webstart, JFX and applets), create
+ // a dummy password so MacOS API is happy.
+ if (password == null || password.length == 0) {
+ // Must not be a char array with only a 0, as this is an empty
+ // string.
+ if (random == null) {
+ random = new SecureRandom();
+ }
+ password = Long.toString(random.nextLong()).toCharArray();
+ }
+
Object entry = entries.get(alias.toLowerCase());
if (entry == null || !(entry instanceof KeyEntry)) {
--- a/jdk/src/jdk.localedata/share/classes/sun/util/resources/de/TimeZoneNames_de.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/jdk.localedata/share/classes/sun/util/resources/de/TimeZoneNames_de.java Fri Oct 31 18:18:58 2014 +0000
@@ -829,7 +829,7 @@
{"Europe/Madrid", CET},
{"Europe/Malta", CET},
{"Europe/Mariehamn", EET},
- {"Europe/Minsk", FET},
+ {"Europe/Minsk", MSK},
{"Europe/Monaco", CET},
{"Europe/Moscow", MSK},
{"Europe/Nicosia", EET},
@@ -917,6 +917,9 @@
{"PRT", AST},
{"Pacific/Apia", WST_SAMOA},
{"Pacific/Auckland", NZST},
+ {"Pacific/Bougainville", new String[] {"Bougainville Standard Time", "BST",
+ "Bougainville Daylight Time", "BST",
+ "Bougainville Time", "BT"}},
{"Pacific/Chatham", CHAST},
{"Pacific/Chuuk", CHUT},
{"Pacific/Easter", EASTER},
--- a/jdk/src/jdk.localedata/share/classes/sun/util/resources/es/TimeZoneNames_es.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/jdk.localedata/share/classes/sun/util/resources/es/TimeZoneNames_es.java Fri Oct 31 18:18:58 2014 +0000
@@ -829,7 +829,7 @@
{"Europe/Madrid", CET},
{"Europe/Malta", CET},
{"Europe/Mariehamn", EET},
- {"Europe/Minsk", FET},
+ {"Europe/Minsk", MSK},
{"Europe/Monaco", CET},
{"Europe/Moscow", MSK},
{"Europe/Nicosia", EET},
@@ -917,6 +917,9 @@
{"PRT", AST},
{"Pacific/Apia", WST_SAMOA},
{"Pacific/Auckland", NZST},
+ {"Pacific/Bougainville", new String[] {"Bougainville Standard Time", "BST",
+ "Bougainville Daylight Time", "BST",
+ "Bougainville Time", "BT"}},
{"Pacific/Chatham", CHAST},
{"Pacific/Chuuk", CHUT},
{"Pacific/Easter", EASTER},
--- a/jdk/src/jdk.localedata/share/classes/sun/util/resources/fr/TimeZoneNames_fr.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/jdk.localedata/share/classes/sun/util/resources/fr/TimeZoneNames_fr.java Fri Oct 31 18:18:58 2014 +0000
@@ -829,7 +829,7 @@
{"Europe/Madrid", CET},
{"Europe/Malta", CET},
{"Europe/Mariehamn", EET},
- {"Europe/Minsk", FET},
+ {"Europe/Minsk", MSK},
{"Europe/Monaco", CET},
{"Europe/Moscow", MSK},
{"Europe/Nicosia", EET},
@@ -917,6 +917,9 @@
{"PRT", AST},
{"Pacific/Apia", WST_SAMOA},
{"Pacific/Auckland", NZST},
+ {"Pacific/Bougainville", new String[] {"Bougainville Standard Time", "BST",
+ "Bougainville Daylight Time", "BST",
+ "Bougainville Time", "BT"}},
{"Pacific/Chatham", CHAST},
{"Pacific/Chuuk", CHUT},
{"Pacific/Easter", EASTER},
--- a/jdk/src/jdk.localedata/share/classes/sun/util/resources/it/TimeZoneNames_it.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/jdk.localedata/share/classes/sun/util/resources/it/TimeZoneNames_it.java Fri Oct 31 18:18:58 2014 +0000
@@ -829,7 +829,7 @@
{"Europe/Madrid", CET},
{"Europe/Malta", CET},
{"Europe/Mariehamn", EET},
- {"Europe/Minsk", FET},
+ {"Europe/Minsk", MSK},
{"Europe/Monaco", CET},
{"Europe/Moscow", MSK},
{"Europe/Nicosia", EET},
@@ -917,6 +917,9 @@
{"PRT", AST},
{"Pacific/Apia", WST_SAMOA},
{"Pacific/Auckland", NZST},
+ {"Pacific/Bougainville", new String[] {"Bougainville Standard Time", "BST",
+ "Bougainville Daylight Time", "BST",
+ "Bougainville Time", "BT"}},
{"Pacific/Chatham", CHAST},
{"Pacific/Chuuk", CHUT},
{"Pacific/Easter", EASTER},
--- a/jdk/src/jdk.localedata/share/classes/sun/util/resources/ja/TimeZoneNames_ja.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/jdk.localedata/share/classes/sun/util/resources/ja/TimeZoneNames_ja.java Fri Oct 31 18:18:58 2014 +0000
@@ -829,7 +829,7 @@
{"Europe/Madrid", CET},
{"Europe/Malta", CET},
{"Europe/Mariehamn", EET},
- {"Europe/Minsk", FET},
+ {"Europe/Minsk", MSK},
{"Europe/Monaco", CET},
{"Europe/Moscow", MSK},
{"Europe/Nicosia", EET},
@@ -917,6 +917,9 @@
{"PRT", AST},
{"Pacific/Apia", WST_SAMOA},
{"Pacific/Auckland", NZST},
+ {"Pacific/Bougainville", new String[] {"Bougainville Standard Time", "BST",
+ "Bougainville Daylight Time", "BST",
+ "Bougainville Time", "BT"}},
{"Pacific/Chatham", CHAST},
{"Pacific/Chuuk", CHUT},
{"Pacific/Easter", EASTER},
--- a/jdk/src/jdk.localedata/share/classes/sun/util/resources/ko/TimeZoneNames_ko.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/jdk.localedata/share/classes/sun/util/resources/ko/TimeZoneNames_ko.java Fri Oct 31 18:18:58 2014 +0000
@@ -829,7 +829,7 @@
{"Europe/Madrid", CET},
{"Europe/Malta", CET},
{"Europe/Mariehamn", EET},
- {"Europe/Minsk", FET},
+ {"Europe/Minsk", MSK},
{"Europe/Monaco", CET},
{"Europe/Moscow", MSK},
{"Europe/Nicosia", EET},
@@ -917,6 +917,9 @@
{"PRT", AST},
{"Pacific/Apia", WST_SAMOA},
{"Pacific/Auckland", NZST},
+ {"Pacific/Bougainville", new String[] {"Bougainville Standard Time", "BST",
+ "Bougainville Daylight Time", "BST",
+ "Bougainville Time", "BT"}},
{"Pacific/Chatham", CHAST},
{"Pacific/Chuuk", CHUT},
{"Pacific/Easter", EASTER},
--- a/jdk/src/jdk.localedata/share/classes/sun/util/resources/pt/TimeZoneNames_pt_BR.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/jdk.localedata/share/classes/sun/util/resources/pt/TimeZoneNames_pt_BR.java Fri Oct 31 18:18:58 2014 +0000
@@ -829,7 +829,7 @@
{"Europe/Madrid", CET},
{"Europe/Malta", CET},
{"Europe/Mariehamn", EET},
- {"Europe/Minsk", FET},
+ {"Europe/Minsk", MSK},
{"Europe/Monaco", CET},
{"Europe/Moscow", MSK},
{"Europe/Nicosia", EET},
@@ -917,6 +917,9 @@
{"PRT", AST},
{"Pacific/Apia", WST_SAMOA},
{"Pacific/Auckland", NZST},
+ {"Pacific/Bougainville", new String[] {"Bougainville Standard Time", "BST",
+ "Bougainville Daylight Time", "BST",
+ "Bougainville Time", "BT"}},
{"Pacific/Chatham", CHAST},
{"Pacific/Chuuk", TRUT},
{"Pacific/Easter", EASTER},
--- a/jdk/src/jdk.localedata/share/classes/sun/util/resources/sv/TimeZoneNames_sv.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/jdk.localedata/share/classes/sun/util/resources/sv/TimeZoneNames_sv.java Fri Oct 31 18:18:58 2014 +0000
@@ -829,7 +829,7 @@
{"Europe/Madrid", CET},
{"Europe/Malta", CET},
{"Europe/Mariehamn", EET},
- {"Europe/Minsk", FET},
+ {"Europe/Minsk", MSK},
{"Europe/Monaco", CET},
{"Europe/Moscow", MSK},
{"Europe/Nicosia", EET},
@@ -917,6 +917,9 @@
{"PRT", AST},
{"Pacific/Apia", WST_SAMOA},
{"Pacific/Auckland", NZST},
+ {"Pacific/Bougainville", new String[] {"Bougainville Standard Time", "BST",
+ "Bougainville Daylight Time", "BST",
+ "Bougainville Time", "BT"}},
{"Pacific/Chatham", CHAST},
{"Pacific/Chuuk", CHUT},
{"Pacific/Easter", EASTER},
--- a/jdk/src/jdk.localedata/share/classes/sun/util/resources/zh/TimeZoneNames_zh_CN.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/jdk.localedata/share/classes/sun/util/resources/zh/TimeZoneNames_zh_CN.java Fri Oct 31 18:18:58 2014 +0000
@@ -829,7 +829,7 @@
{"Europe/Madrid", CET},
{"Europe/Malta", CET},
{"Europe/Mariehamn", EET},
- {"Europe/Minsk", FET},
+ {"Europe/Minsk", MSK},
{"Europe/Monaco", CET},
{"Europe/Moscow", MSK},
{"Europe/Nicosia", EET},
@@ -917,6 +917,9 @@
{"PRT", AST},
{"Pacific/Apia", WST_SAMOA},
{"Pacific/Auckland", NZST},
+ {"Pacific/Bougainville", new String[] {"Bougainville Standard Time", "BST",
+ "Bougainville Daylight Time", "BST",
+ "Bougainville Time", "BT"}},
{"Pacific/Chatham", CHAST},
{"Pacific/Chuuk", CHUT},
{"Pacific/Easter", EASTER},
--- a/jdk/src/jdk.localedata/share/classes/sun/util/resources/zh/TimeZoneNames_zh_TW.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/src/jdk.localedata/share/classes/sun/util/resources/zh/TimeZoneNames_zh_TW.java Fri Oct 31 18:18:58 2014 +0000
@@ -831,7 +831,7 @@
{"Europe/Madrid", CET},
{"Europe/Malta", CET},
{"Europe/Mariehamn", EET},
- {"Europe/Minsk", FET},
+ {"Europe/Minsk", MSK},
{"Europe/Monaco", CET},
{"Europe/Moscow", MSK},
{"Europe/Nicosia", EET},
@@ -919,6 +919,9 @@
{"PRT", AST},
{"Pacific/Apia", WST_SAMOA},
{"Pacific/Auckland", NZST},
+ {"Pacific/Bougainville", new String[] {"Bougainville Standard Time", "BST",
+ "Bougainville Daylight Time", "BST",
+ "Bougainville Time", "BT"}},
{"Pacific/Chatham", CHAST},
{"Pacific/Chuuk", CHUT},
{"Pacific/Easter", EASTER},
--- a/jdk/test/ProblemList.txt Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/ProblemList.txt Fri Oct 31 18:18:58 2014 +0000
@@ -200,6 +200,9 @@
# jdk_rmi
+# 7140992
+java/rmi/server/Unreferenced/finiteGCLatency/FiniteGCLatency.java generic-all
+
# 7146541
java/rmi/transport/rapidExportUnexport/RapidExportUnexport.java linux-all
--- a/jdk/test/TEST.ROOT Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/TEST.ROOT Fri Oct 31 18:18:58 2014 +0000
@@ -12,3 +12,6 @@
# Group definitions
groups=TEST.groups [closed/TEST.groups]
+
+# Tests using jtreg 4.1 b10 features
+requiredVersion=4.1 b10
--- a/jdk/test/com/sun/jdi/OptionTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/com/sun/jdi/OptionTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -34,9 +34,11 @@
*/
import java.net.ServerSocket;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
public class OptionTest extends Object {
- private Process subprocess;
+ private static final Pattern TRANSPORT_ERROR_PTRN = Pattern.compile("^ERROR: transport error .+$", Pattern.MULTILINE);
private int subprocessStatus;
private static final String CR = System.getProperty("line.separator");
private static final int BUFFERSIZE = 4096;
@@ -153,7 +155,7 @@
OptionTest myTest = new OptionTest();
String results [] = myTest.run(VMConnection.insertDebuggeeVMOptions(cmds));
if (!(results[RETSTAT].equals("0")) ||
- (results[STDERR].startsWith("ERROR:"))) {
+ (TRANSPORT_ERROR_PTRN.matcher(results[STDERR]).find())) {
throw new Exception("Test failed: jdwp doesn't like " + cmds[1]);
}
}
@@ -179,7 +181,7 @@
OptionTest myTest = new OptionTest();
String results[] = myTest.run(VMConnection.insertDebuggeeVMOptions(cmds));
- if (!results[RETSTAT].equals("0") && results[STDERR].startsWith("ERROR:")) {
+ if (!results[RETSTAT].equals("0") && TRANSPORT_ERROR_PTRN.matcher(results[STDERR]).find()) {
// We got expected error, test passed
}
else {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Container/ContainerAIOOBE/ContainerAIOOBE.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.awt.Button;
+import java.awt.Component;
+import java.awt.Container;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+
+/**
+ * @test
+ * @bug 8059590
+ * @summary ArrayIndexOutOfBoundsException occurs when Container with overridden getComponents() is deserialized.
+ * @author Alexey Ivanov
+ * @run main ContainerAIOOBE
+ */
+public class ContainerAIOOBE {
+
+ public static void main(final String[] args) throws Exception {
+ ZContainer z = new ZContainer();
+ z.add(new Button());
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ ObjectOutputStream oos = new ObjectOutputStream(baos);
+ oos.writeObject(z);
+ oos.flush();
+ oos.close();
+
+ byte[] array = baos.toByteArray();
+ ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(array));
+
+ // Reading the object must not throw ArrayIndexOutOfBoundsException
+ ZContainer zz = (ZContainer) ois.readObject();
+
+ if (zz.getComponentCount() != 1) {
+ throw new Exception("deserialized object must have 1 component");
+ }
+ if (!(zz.getComponent(0) instanceof Button)) {
+ throw new Exception("deserialized object must contain Button component");
+ }
+ if (zz.getComponents().length != 0) {
+ throw new Exception("deserialized object returns non-empty array");
+ }
+ System.out.println("Test passed");
+ }
+
+ static class ZContainer extends Container {
+ public Component[] getComponents() {
+ return new Component[0];
+ }
+ }
+}
--- a/jdk/test/java/awt/GraphicsDevice/CloneConfigsTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/java/awt/GraphicsDevice/CloneConfigsTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 6822057 7124400
+ * @bug 6822057 7124400 8059848
*
* @summary Test verifies that list of supported graphics configurations
* can not be changed via modification of elements of an array
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/color/LoadProfileWithSM.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.awt.color.*;
+
+/*
+ * @test
+ * @bug 8058969
+ * @summary test standard profiles loads with SecurityManager installed.
+ * @run main/othervm LoadProfileWithSM
+ */
+
+public class LoadProfileWithSM {
+
+ public static void main(String[] args) {
+ System.setSecurityManager(new SecurityManager());
+ ICC_Profile profile =
+ ((ICC_ColorSpace)(ColorSpace.getInstance(
+ ColorSpace.CS_GRAY))).getProfile();
+ /* request profile data in order to force profile loading */
+ profile.getData();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/image/DrawImage/IncorrectClipXorModeSW2Surface.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,179 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.awt.Color;
+import java.awt.Graphics2D;
+import java.awt.GraphicsConfiguration;
+import java.awt.GraphicsEnvironment;
+import java.awt.Image;
+import java.awt.Rectangle;
+import java.awt.Shape;
+import java.awt.geom.AffineTransform;
+import java.awt.image.BufferedImage;
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferByte;
+import java.awt.image.DataBufferInt;
+import java.awt.image.DataBufferShort;
+import java.awt.image.VolatileImage;
+import java.io.File;
+import java.io.IOException;
+
+import javax.imageio.ImageIO;
+
+import static java.awt.geom.Rectangle2D.Double;
+
+/**
+ * @test
+ * @bug 8061456
+ * @summary Tests drawing BI to volatile image using different clips + xor mode.
+ * Results of the blit BI to compatibleImage is used for comparison.
+ * @author Sergey Bylokhov
+ */
+public final class IncorrectClipXorModeSW2Surface {
+
+ private static int[] SIZES = {2, 10, 100};
+ private static final Shape[] SHAPES = {
+ new Rectangle(0, 0, 0, 0),
+ new Rectangle(0, 0, 1, 1),
+ new Rectangle(0, 1, 1, 1),
+ new Rectangle(1, 0, 1, 1),
+ new Rectangle(1, 1, 1, 1),
+
+ new Double(0, 0, 0.5, 0.5),
+ new Double(0, 0.5, 0.5, 0.5),
+ new Double(0.5, 0, 0.5, 0.5),
+ new Double(0.5, 0.5, 0.5, 0.5),
+ new Double(0.25, 0.25, 0.5, 0.5),
+ new Double(0, 0.25, 1, 0.5),
+ new Double(0.25, 0, 0.5, 1),
+
+ new Double(.10, .10, .20, .20),
+ new Double(.75, .75, .20, .20),
+ new Double(.75, .10, .20, .20),
+ new Double(.10, .75, .20, .20),
+ };
+
+ public static void main(final String[] args) throws IOException {
+ GraphicsEnvironment ge = GraphicsEnvironment
+ .getLocalGraphicsEnvironment();
+ GraphicsConfiguration gc = ge.getDefaultScreenDevice()
+ .getDefaultConfiguration();
+ AffineTransform at;
+ for (int size : SIZES) {
+ at = AffineTransform.getScaleInstance(size, size);
+ for (Shape clip : SHAPES) {
+ clip = at.createTransformedShape(clip);
+ for (Shape to : SHAPES) {
+ to = at.createTransformedShape(to);
+ // Prepare test images
+ BufferedImage snapshot;
+ BufferedImage bi = getBufferedImage(size);
+ VolatileImage vi = getVolatileImage(gc, size);
+ while (true) {
+ vi.validate(gc);
+ Graphics2D g2d = vi.createGraphics();
+ g2d.setColor(Color.GREEN);
+ g2d.fillRect(0, 0, size, size);
+ g2d.dispose();
+ if (vi.validate(gc) != VolatileImage.IMAGE_OK) {
+ continue;
+ }
+ draw(clip, to, bi, vi);
+ snapshot = vi.getSnapshot();
+ if (vi.contentsLost()) {
+ continue;
+ }
+ break;
+ }
+ // Prepare gold images
+ BufferedImage goldvi = getCompatibleImage(gc, size);
+ BufferedImage goldbi = getBufferedImage(size);
+ draw(clip, to, goldbi, goldvi);
+ validate(snapshot, goldvi);
+ vi.flush();
+ }
+ }
+ }
+ }
+
+ private static void draw(Shape clip, Shape shape, Image from, Image to) {
+ Graphics2D g2d = (Graphics2D) to.getGraphics();
+ g2d.setXORMode(Color.BLACK);
+ g2d.setClip(clip);
+ Rectangle toBounds = shape.getBounds();
+ g2d.drawImage(from, toBounds.x, toBounds.y, toBounds.width,
+ toBounds.height, null);
+ g2d.dispose();
+ }
+
+ private static BufferedImage getBufferedImage(int sw) {
+ final BufferedImage bi = new BufferedImage(sw, sw, BufferedImage.TYPE_INT_ARGB);
+ Graphics2D g2d = bi.createGraphics();
+ g2d.setColor(Color.RED);
+ g2d.fillRect(0, 0, sw, sw);
+ g2d.dispose();
+
+ final DataBuffer db = bi.getRaster().getDataBuffer();
+ if (db instanceof DataBufferInt) {
+ ((DataBufferInt) db).getData();
+ } else if (db instanceof DataBufferShort) {
+ ((DataBufferShort) db).getData();
+ } else if (db instanceof DataBufferByte) {
+ ((DataBufferByte) db).getData();
+ } else {
+ try {
+ bi.setAccelerationPriority(0.0f);
+ } catch (final Throwable ignored) {
+ }
+ }
+ return bi;
+ }
+
+ private static VolatileImage getVolatileImage(GraphicsConfiguration gc,
+ int size) {
+ return gc.createCompatibleVolatileImage(size, size);
+ }
+
+ private static BufferedImage getCompatibleImage(GraphicsConfiguration gc,
+ int size) {
+ BufferedImage image = gc.createCompatibleImage(size, size);
+ Graphics2D g2d = image.createGraphics();
+ g2d.setColor(Color.GREEN);
+ g2d.fillRect(0, 0, size, size);
+ g2d.dispose();
+ return image;
+ }
+
+ private static void validate(BufferedImage bi, BufferedImage goldbi)
+ throws IOException {
+ for (int x = 0; x < bi.getWidth(); ++x) {
+ for (int y = 0; y < bi.getHeight(); ++y) {
+ if (goldbi.getRGB(x, y) != bi.getRGB(x, y)) {
+ ImageIO.write(bi, "png", new File("actual.png"));
+ ImageIO.write(goldbi, "png", new File("expected.png"));
+ throw new RuntimeException("Test failed.");
+ }
+ }
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/image/DrawImage/IncorrectUnmanagedImageSourceOffset.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,150 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.awt.AlphaComposite;
+import java.awt.Color;
+import java.awt.Graphics2D;
+import java.awt.GraphicsConfiguration;
+import java.awt.GraphicsEnvironment;
+import java.awt.Image;
+import java.awt.image.BufferedImage;
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferByte;
+import java.awt.image.DataBufferInt;
+import java.awt.image.DataBufferShort;
+import java.awt.image.VolatileImage;
+import java.io.File;
+import java.io.IOException;
+
+import javax.imageio.ImageIO;
+
+import static java.awt.Transparency.*;
+import static java.awt.image.BufferedImage.*;
+
+/**
+ * @test
+ * @bug 8029253
+ * @summary Tests asymmetric source offsets when unmanaged image is drawn to VI.
+ * Results of the blit to compatibleImage are used for comparison.
+ * @author Sergey Bylokhov
+ */
+public final class IncorrectUnmanagedImageSourceOffset {
+
+ private static final int[] TYPES = {TYPE_INT_RGB, TYPE_INT_ARGB,
+ TYPE_INT_ARGB_PRE, TYPE_INT_BGR,
+ TYPE_3BYTE_BGR, TYPE_4BYTE_ABGR,
+ TYPE_4BYTE_ABGR_PRE,
+ /*TYPE_USHORT_565_RGB,
+ TYPE_USHORT_555_RGB, TYPE_BYTE_GRAY,
+ TYPE_USHORT_GRAY,*/ TYPE_BYTE_BINARY,
+ TYPE_BYTE_INDEXED};
+ private static final int[] TRANSPARENCIES = {OPAQUE, BITMASK, TRANSLUCENT};
+
+ public static void main(final String[] args) throws IOException {
+ for (final int viType : TRANSPARENCIES) {
+ for (final int biType : TYPES) {
+ BufferedImage bi = makeUnmanagedBI(biType);
+ fill(bi);
+ test(bi, viType);
+ }
+ }
+ }
+
+ private static void test(BufferedImage bi, int type)
+ throws IOException {
+ GraphicsEnvironment ge = GraphicsEnvironment
+ .getLocalGraphicsEnvironment();
+ GraphicsConfiguration gc = ge.getDefaultScreenDevice()
+ .getDefaultConfiguration();
+ VolatileImage vi = gc.createCompatibleVolatileImage(511, 255, type);
+ BufferedImage gold = gc.createCompatibleImage(511, 255, type);
+ // draw to compatible Image
+ Graphics2D big = gold.createGraphics();
+ // force scaled blit
+ big.drawImage(bi, 7, 11, 127, 111, 7, 11, 127 * 2, 111, null);
+ big.dispose();
+ // draw to volatile image
+ BufferedImage snapshot;
+ while (true) {
+ vi.validate(gc);
+ if (vi.validate(gc) != VolatileImage.IMAGE_OK) {
+ try {
+ Thread.sleep(100);
+ } catch (final InterruptedException ignored) {
+ }
+ continue;
+ }
+ Graphics2D vig = vi.createGraphics();
+ // force scaled blit
+ vig.drawImage(bi, 7, 11, 127, 111, 7, 11, 127 * 2, 111, null);
+ vig.dispose();
+ snapshot = vi.getSnapshot();
+ if (vi.contentsLost()) {
+ try {
+ Thread.sleep(100);
+ } catch (final InterruptedException ignored) {
+ }
+ continue;
+ }
+ break;
+ }
+ // validate images
+ for (int x = 7; x < 127; ++x) {
+ for (int y = 11; y < 111; ++y) {
+ if (gold.getRGB(x, y) != snapshot.getRGB(x, y)) {
+ ImageIO.write(gold, "png", new File("gold.png"));
+ ImageIO.write(snapshot, "png", new File("bi.png"));
+ throw new RuntimeException("Test failed.");
+ }
+ }
+ }
+ }
+
+ private static BufferedImage makeUnmanagedBI(final int type) {
+ final BufferedImage bi = new BufferedImage(511, 255, type);
+ final DataBuffer db = bi.getRaster().getDataBuffer();
+ if (db instanceof DataBufferInt) {
+ ((DataBufferInt) db).getData();
+ } else if (db instanceof DataBufferShort) {
+ ((DataBufferShort) db).getData();
+ } else if (db instanceof DataBufferByte) {
+ ((DataBufferByte) db).getData();
+ } else {
+ try {
+ bi.setAccelerationPriority(0.0f);
+ } catch (final Throwable ignored) {
+ }
+ }
+ return bi;
+ }
+
+ private static void fill(final Image image) {
+ final Graphics2D graphics = (Graphics2D) image.getGraphics();
+ graphics.setComposite(AlphaComposite.Src);
+ for (int i = 0; i < image.getHeight(null); ++i) {
+ graphics.setColor(new Color(i, 0, 0));
+ graphics.fillRect(0, i, image.getWidth(null), 1);
+ }
+ graphics.dispose();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/image/DrawImage/UnmanagedDrawImagePerformance.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,125 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.awt.AlphaComposite;
+import java.awt.Graphics2D;
+import java.awt.GraphicsConfiguration;
+import java.awt.GraphicsDevice;
+import java.awt.GraphicsEnvironment;
+import java.awt.Image;
+import java.awt.Polygon;
+import java.awt.geom.AffineTransform;
+import java.awt.image.BufferedImage;
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferByte;
+import java.awt.image.DataBufferInt;
+import java.awt.image.DataBufferShort;
+import java.awt.image.VolatileImage;
+
+import static java.awt.Transparency.*;
+import static java.awt.image.BufferedImage.*;
+
+/*
+ * @test
+ * @bug 8029253
+ * @summary Unmanaged images should be drawn fast.
+ * @author Sergey Bylokhov
+ */
+public final class UnmanagedDrawImagePerformance {
+
+ private static final int[] TYPES = {TYPE_INT_RGB, TYPE_INT_ARGB,
+ TYPE_INT_ARGB_PRE, TYPE_INT_BGR,
+ TYPE_3BYTE_BGR, TYPE_4BYTE_ABGR,
+ TYPE_4BYTE_ABGR_PRE,
+ TYPE_USHORT_565_RGB,
+ TYPE_USHORT_555_RGB, TYPE_BYTE_GRAY,
+ TYPE_USHORT_GRAY, TYPE_BYTE_BINARY,
+ TYPE_BYTE_INDEXED};
+ private static final int[] TRANSPARENCIES = {OPAQUE, BITMASK, TRANSLUCENT};
+ private static final int SIZE = 1000;
+ private static final AffineTransform[] TRANSFORMS = {
+ AffineTransform.getScaleInstance(.5, .5),
+ AffineTransform.getScaleInstance(1, 1),
+ AffineTransform.getScaleInstance(2, 2),
+ AffineTransform.getShearInstance(7, 11)};
+
+ public static void main(final String[] args) {
+ for (final AffineTransform atfm : TRANSFORMS) {
+ for (final int viType : TRANSPARENCIES) {
+ for (final int biType : TYPES) {
+ final BufferedImage bi = makeUnmanagedBI(biType);
+ final VolatileImage vi = makeVI(viType);
+ final long time = test(bi, vi, atfm) / 1000000000;
+ if (time > 1) {
+ throw new RuntimeException(String.format(
+ "drawImage is slow: %d seconds", time));
+ }
+ }
+ }
+ }
+ }
+
+ private static long test(Image bi, Image vi, AffineTransform atfm) {
+ final Polygon p = new Polygon();
+ p.addPoint(0, 0);
+ p.addPoint(SIZE, 0);
+ p.addPoint(0, SIZE);
+ p.addPoint(SIZE, SIZE);
+ p.addPoint(0, 0);
+ Graphics2D g2d = (Graphics2D) vi.getGraphics();
+ g2d.clip(p);
+ g2d.transform(atfm);
+ g2d.setComposite(AlphaComposite.SrcOver);
+ final long start = System.nanoTime();
+ g2d.drawImage(bi, 0, 0, null);
+ final long time = System.nanoTime() - start;
+ g2d.dispose();
+ return time;
+ }
+
+ private static VolatileImage makeVI(final int type) {
+ final GraphicsEnvironment ge = GraphicsEnvironment
+ .getLocalGraphicsEnvironment();
+ final GraphicsDevice gd = ge.getDefaultScreenDevice();
+ final GraphicsConfiguration gc = gd.getDefaultConfiguration();
+ return gc.createCompatibleVolatileImage(SIZE, SIZE, type);
+ }
+
+ private static BufferedImage makeUnmanagedBI(final int type) {
+ final BufferedImage img = new BufferedImage(SIZE, SIZE, type);
+ final DataBuffer db = img.getRaster().getDataBuffer();
+ if (db instanceof DataBufferInt) {
+ ((DataBufferInt) db).getData();
+ } else if (db instanceof DataBufferShort) {
+ ((DataBufferShort) db).getData();
+ } else if (db instanceof DataBufferByte) {
+ ((DataBufferByte) db).getData();
+ } else {
+ try {
+ img.setAccelerationPriority(0.0f);
+ } catch (final Throwable ignored) {
+ }
+ }
+ return img;
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/print/PrinterJob/ImagePrinting/NullClipARGB.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * @test
+ * @bug 8061392
+ * @summary Test no NPE when printing transparency with null clip.
+ */
+
+import java.awt.*;
+import java.awt.image.*;
+import java.awt.print.*;
+
+public class NullClipARGB implements Printable {
+
+ public static void main( String[] args ) {
+
+ try {
+ PrinterJob pj = PrinterJob.getPrinterJob();
+ pj.setPrintable(new NullClipARGB());
+ pj.print();
+ } catch (Exception ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ public int print(Graphics g, PageFormat pf, int pageIndex)
+ throws PrinterException{
+
+ if (pageIndex != 0) {
+ return NO_SUCH_PAGE;
+ }
+ Graphics2D g2 = (Graphics2D)g;
+ System.out.println("original clip="+g2.getClip());
+ g2.translate(pf.getImageableX(), pf.getImageableY());
+ g2.rotate(0.2);
+ g2.setClip(null);
+ g2.setColor( Color.BLACK );
+ g2.drawString("This text should be visible through the image", 0, 20);
+ BufferedImage bi = new BufferedImage(100, 100,
+ BufferedImage.TYPE_INT_ARGB );
+ Graphics ig = bi.createGraphics();
+ ig.setColor( new Color( 192, 192, 192, 80 ) );
+ ig.fillRect( 0, 0, 100, 100 );
+ ig.setColor( Color.BLACK );
+ ig.drawRect( 0, 0, 99, 99 );
+ ig.dispose();
+ g2.drawImage(bi, 10, 0, 90, 90, null );
+ g2.translate(100, 100);
+ g2.drawString("This text should also be visible through the image", 0, 20);
+ g2.drawImage(bi, 10, 0, 90, 90, null );
+ return PAGE_EXISTS;
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/print/PrinterJob/PageRangesDlgTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * @test
+ * @bug 8061267
+ * @summary The specified page range should be displayed in the dialog
+ * @run main/manual=yesno PageRangesDlgTest
+ */
+
+import javax.print.*;
+import javax.print.attribute.*;
+import javax.print.attribute.standard.*;
+import java.awt.*;
+import java.awt.print.*;
+
+public class PageRangesDlgTest implements Printable {
+
+ static String[] instr = {
+ "This test is to check that the print dialog displays the specified",
+ "page ranges. You must have a printer installed for this test.",
+ "It is valid only on dialogs which support page ranges",
+ "In each dialog, check that a page range of 2 to 3 is requested",
+ "Optionally press Print instead of Cancel, and verify that the",
+ "correct number/set of pages is printed",
+ };
+
+ public static void main(String args[]) throws Exception {
+ for (int i=0;i<instr.length;i++) {
+ System.out.println(instr[i]);
+ }
+ PrinterJob job = PrinterJob.getPrinterJob();
+ if (job.getPrintService() == null) {
+ System.out.println("No printers. Test cannot continue.");
+ return;
+ }
+ job.setPrintable(new PageRangesDlgTest());
+ PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
+ aset.add(new PageRanges(2,3));
+ if (job.printDialog(aset)) {
+ job.print(aset);
+ }
+
+ job = PrinterJob.getPrinterJob();
+ job.setPrintable(new PageRangesDlgTest());
+ aset.add(DialogTypeSelection.NATIVE);
+ if (job.printDialog()) {
+ job.print();
+ }
+ }
+
+ public int print(Graphics g, PageFormat pf, int pi)
+ throws PrinterException {
+
+ System.out.println("pi="+pi);
+ if (pi >= 5) {
+ return NO_SUCH_PAGE;
+ }
+
+ g.drawString("Page : " + (pi+1), 200, 200);
+
+ return PAGE_EXISTS;
+ }
+}
--- a/jdk/test/java/io/FileDescriptor/Finalize.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/java/io/FileDescriptor/Finalize.java Fri Oct 31 18:18:58 2014 +0000
@@ -245,9 +245,10 @@
* write to fc2 - when fos1 is gc'ed and finalizer is run,
* write to fc2 should not fail
*/
- bb = ByteBuffer.allocateDirect(data.length);
- bb = bb.put(data);
- bb = (ByteBuffer) bb.flip();
+ bb = ByteBuffer.allocateDirect(data.length)
+ .put(data)
+ .flip();
+
ret = fc2.write(bb);
System.out.println("Wrote:" + ret + " bytes to fc2");
fc2.close();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/io/FileDescriptor/RememberAppend.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8023173
+ * @summary FileDescriptor should respect append flag
+ */
+
+import java.io.File;
+import java.io.FileDescriptor;
+import java.io.FileOutputStream;
+
+public class RememberAppend {
+ private static final byte[] bytes = "ABC ".getBytes();
+
+ public static void main(String[] args) throws Throwable {
+ File f = File.createTempFile("tmp.file", null);
+ f.deleteOnExit();
+
+ try (FileOutputStream fos1 = new FileOutputStream(f.getPath(), true)) {
+ fos1.write(bytes);
+ }
+
+ try (FileOutputStream fos1 = new FileOutputStream(f.getPath(), true);
+ FileOutputStream fos2 = new FileOutputStream(fos1.getFD())) {
+ fos2.write(bytes);
+ }
+
+ if (f.length() != 2 * bytes.length) {
+ throw new RuntimeException("Append flag ignored");
+ }
+ }
+}
--- a/jdk/test/java/lang/instrument/DaemonThread/TestDaemonThread.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/java/lang/instrument/DaemonThread/TestDaemonThread.java Fri Oct 31 18:18:58 2014 +0000
@@ -28,7 +28,7 @@
*
* @build jdk.testlibrary.* DummyAgent DummyClass TestDaemonThreadLauncher TestDaemonThread
* @run shell ../MakeJAR3.sh DummyAgent
- * @run main TestDaemonThreadLauncher /timeout=240
+ * @run main/timeout=240 TestDaemonThreadLauncher
*
*/
import java.io.File;
--- a/jdk/test/java/net/URLPermission/URLTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/java/net/URLPermission/URLTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -29,11 +29,11 @@
* @bug 8010464
* @library /lib/testlibrary/
* @build jdk.testlibrary.SimpleSSLContext
- * @run main/othervm/policy=policy.1 URLTest one
+ * @run main/othervm/java.security.policy=policy.1 URLTest one
* @run main/othervm URLTest one
- * @run main/othervm/policy=policy.2 URLTest two
+ * @run main/othervm/java.security.policy=policy.2 URLTest two
* @run main/othervm URLTest two
- * @run main/othervm/policy=policy.3 URLTest three
+ * @run main/othervm/java.security.policy=policy.3 URLTest three
* @run main/othervm URLTest three
*/
--- a/jdk/test/java/net/URLPermission/policy.1 Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/java/net/URLPermission/policy.1 Fri Oct 31 18:18:58 2014 +0000
@@ -37,60 +37,3 @@
permission "java.util.PropertyPermission" "test.src.path", "read";
};
-// Normal permissions that aren't granted when run under jtreg
-grant codeBase "file:${java.home}/lib/ext/ucrypto.jar" {
- permission java.lang.RuntimePermission "accessClassInPackage.sun.security.*";
- permission java.lang.RuntimePermission "accessClassInPackage.sun.nio.ch";
- permission java.lang.RuntimePermission "loadLibrary.j2ucrypto";
- permission java.util.PropertyPermission "*", "read";
- permission java.security.SecurityPermission "putProviderProperty.OracleUcrypto";
- permission java.security.SecurityPermission "clearProviderProperties.OracleUcrypto";
- permission java.security.SecurityPermission "removeProviderProperty.OracleUcrypto";
- permission java.io.FilePermission "${java.home}/lib/security/ucrypto-solaris.cfg", "read";
-};
-
-grant codeBase "file:${java.home}/lib/ext/sunec.jar" {
- permission java.lang.RuntimePermission "accessClassInPackage.sun.security.*";
- permission java.lang.RuntimePermission "loadLibrary.sunec";
- permission java.util.PropertyPermission "*", "read";
- permission java.security.SecurityPermission "putProviderProperty.SunEC";
- permission java.security.SecurityPermission "clearProviderProperties.SunEC";
- permission java.security.SecurityPermission "removeProviderProperty.SunEC";
-};
-
-grant codeBase "file:${java.home}/lib/ext/sunjce_provider.jar" {
- permission java.lang.RuntimePermission "accessClassInPackage.sun.misc";
- permission java.lang.RuntimePermission "accessClassInPackage.sun.security.*";
- permission java.util.PropertyPermission "*", "read";
- permission java.security.SecurityPermission "putProviderProperty.SunJCE";
- permission java.security.SecurityPermission "clearProviderProperties.SunJCE";
- permission java.security.SecurityPermission "removeProviderProperty.SunJCE";
-};
-
-grant codeBase "file:${java.home}/lib/ext/sunpkcs11.jar" {
- permission java.lang.RuntimePermission "accessClassInPackage.sun.security.*";
- permission java.lang.RuntimePermission "accessClassInPackage.sun.nio.ch";
- permission java.lang.RuntimePermission "loadLibrary.j2pkcs11";
- permission java.util.PropertyPermission "*", "read";
- permission java.security.SecurityPermission "putProviderProperty.*";
- permission java.security.SecurityPermission "clearProviderProperties.*";
- permission java.security.SecurityPermission "removeProviderProperty.*";
- permission java.security.SecurityPermission "getProperty.auth.login.defaultCallbackHandler";
- permission java.security.SecurityPermission "authProvider.*";
- // Needed for reading PKCS11 config file and NSS library check
- permission java.io.FilePermission "<<ALL FILES>>", "read";
-};
-
-grant codeBase "file:${java.home}/lib/ext/sunmscapi.jar" {
- Permission java.lang.RuntimePermission "accessClassInPackage.sun.security.*";
- permission java.lang.RuntimePermission "loadLibrary.sunmscapi";
- permission java.util.PropertyPermission "*", "read";
- permission java.security.SecurityPermission "putProviderProperty.SunMSCAPI";
- permission java.security.SecurityPermission "clearProviderProperties.SunMSCAPI";
- permission java.security.SecurityPermission "removeProviderProperty.SunMSCAPI";
-};
-
-grant codeBase "file:${{java.home}}/jre/lib/rt.jar" {
- permission java.security.AllPermission;
-};
-
--- a/jdk/test/java/net/URLPermission/policy.2 Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/java/net/URLPermission/policy.2 Fri Oct 31 18:18:58 2014 +0000
@@ -37,60 +37,3 @@
permission "java.util.PropertyPermission" "test.src.path", "read";
};
-// Normal permissions that aren't granted when run under jtreg
-grant codeBase "file:${java.home}/lib/ext/ucrypto.jar" {
- permission java.lang.RuntimePermission "accessClassInPackage.sun.security.*";
- permission java.lang.RuntimePermission "accessClassInPackage.sun.nio.ch";
- permission java.lang.RuntimePermission "loadLibrary.j2ucrypto";
- permission java.util.PropertyPermission "*", "read";
- permission java.security.SecurityPermission "putProviderProperty.OracleUcrypto";
- permission java.security.SecurityPermission "clearProviderProperties.OracleUcrypto";
- permission java.security.SecurityPermission "removeProviderProperty.OracleUcrypto";
- permission java.io.FilePermission "${java.home}/lib/security/ucrypto-solaris.cfg", "read";
-};
-
-grant codeBase "file:${java.home}/lib/ext/sunec.jar" {
- permission java.lang.RuntimePermission "accessClassInPackage.sun.security.*";
- permission java.lang.RuntimePermission "loadLibrary.sunec";
- permission java.util.PropertyPermission "*", "read";
- permission java.security.SecurityPermission "putProviderProperty.SunEC";
- permission java.security.SecurityPermission "clearProviderProperties.SunEC";
- permission java.security.SecurityPermission "removeProviderProperty.SunEC";
-};
-
-grant codeBase "file:${java.home}/lib/ext/sunjce_provider.jar" {
- permission java.lang.RuntimePermission "accessClassInPackage.sun.misc";
- permission java.lang.RuntimePermission "accessClassInPackage.sun.security.*";
- permission java.util.PropertyPermission "*", "read";
- permission java.security.SecurityPermission "putProviderProperty.SunJCE";
- permission java.security.SecurityPermission "clearProviderProperties.SunJCE";
- permission java.security.SecurityPermission "removeProviderProperty.SunJCE";
-};
-
-grant codeBase "file:${java.home}/lib/ext/sunpkcs11.jar" {
- permission java.lang.RuntimePermission "accessClassInPackage.sun.security.*";
- permission java.lang.RuntimePermission "accessClassInPackage.sun.nio.ch";
- permission java.lang.RuntimePermission "loadLibrary.j2pkcs11";
- permission java.util.PropertyPermission "*", "read";
- permission java.security.SecurityPermission "putProviderProperty.*";
- permission java.security.SecurityPermission "clearProviderProperties.*";
- permission java.security.SecurityPermission "removeProviderProperty.*";
- permission java.security.SecurityPermission "getProperty.auth.login.defaultCallbackHandler";
- permission java.security.SecurityPermission "authProvider.*";
- // Needed for reading PKCS11 config file and NSS library check
- permission java.io.FilePermission "<<ALL FILES>>", "read";
-};
-
-grant codeBase "file:${java.home}/lib/ext/sunmscapi.jar" {
- Permission java.lang.RuntimePermission "accessClassInPackage.sun.security.*";
- permission java.lang.RuntimePermission "loadLibrary.sunmscapi";
- permission java.util.PropertyPermission "*", "read";
- permission java.security.SecurityPermission "putProviderProperty.SunMSCAPI";
- permission java.security.SecurityPermission "clearProviderProperties.SunMSCAPI";
- permission java.security.SecurityPermission "removeProviderProperty.SunMSCAPI";
-};
-
-grant codeBase "file:///export/repos/jdk8/build/linux-x86_64-normal-server-fastdebug/images/j2sdk-image/jre/lib/rt.jar" {
- permission java.security.AllPermission;
-};
-
--- a/jdk/test/java/net/URLPermission/policy.3 Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/java/net/URLPermission/policy.3 Fri Oct 31 18:18:58 2014 +0000
@@ -36,61 +36,3 @@
permission "java.lang.RuntimePermission" "setFactory";
permission "java.util.PropertyPermission" "test.src.path", "read";
};
-
-// Normal permissions that aren't granted when run under jtreg
-grant codeBase "file:${java.home}/lib/ext/ucrypto.jar" {
- permission java.lang.RuntimePermission "accessClassInPackage.sun.security.*";
- permission java.lang.RuntimePermission "accessClassInPackage.sun.nio.ch";
- permission java.lang.RuntimePermission "loadLibrary.j2ucrypto";
- permission java.util.PropertyPermission "*", "read";
- permission java.security.SecurityPermission "putProviderProperty.OracleUcrypto";
- permission java.security.SecurityPermission "clearProviderProperties.OracleUcrypto";
- permission java.security.SecurityPermission "removeProviderProperty.OracleUcrypto";
- permission java.io.FilePermission "${java.home}/lib/security/ucrypto-solaris.cfg", "read";
-};
-
-grant codeBase "file:${java.home}/lib/ext/sunec.jar" {
- permission java.lang.RuntimePermission "accessClassInPackage.sun.security.*";
- permission java.lang.RuntimePermission "loadLibrary.sunec";
- permission java.util.PropertyPermission "*", "read";
- permission java.security.SecurityPermission "putProviderProperty.SunEC";
- permission java.security.SecurityPermission "clearProviderProperties.SunEC";
- permission java.security.SecurityPermission "removeProviderProperty.SunEC";
-};
-
-grant codeBase "file:${java.home}/lib/ext/sunjce_provider.jar" {
- permission java.lang.RuntimePermission "accessClassInPackage.sun.misc";
- permission java.lang.RuntimePermission "accessClassInPackage.sun.security.*";
- permission java.util.PropertyPermission "*", "read";
- permission java.security.SecurityPermission "putProviderProperty.SunJCE";
- permission java.security.SecurityPermission "clearProviderProperties.SunJCE";
- permission java.security.SecurityPermission "removeProviderProperty.SunJCE";
-};
-
-grant codeBase "file:${java.home}/lib/ext/sunpkcs11.jar" {
- permission java.lang.RuntimePermission "accessClassInPackage.sun.security.*";
- permission java.lang.RuntimePermission "accessClassInPackage.sun.nio.ch";
- permission java.lang.RuntimePermission "loadLibrary.j2pkcs11";
- permission java.util.PropertyPermission "*", "read";
- permission java.security.SecurityPermission "putProviderProperty.*";
- permission java.security.SecurityPermission "clearProviderProperties.*";
- permission java.security.SecurityPermission "removeProviderProperty.*";
- permission java.security.SecurityPermission "getProperty.auth.login.defaultCallbackHandler";
- permission java.security.SecurityPermission "authProvider.*";
- // Needed for reading PKCS11 config file and NSS library check
- permission java.io.FilePermission "<<ALL FILES>>", "read";
-};
-
-grant codeBase "file:${java.home}/lib/ext/sunmscapi.jar" {
- Permission java.lang.RuntimePermission "accessClassInPackage.sun.security.*";
- permission java.lang.RuntimePermission "loadLibrary.sunmscapi";
- permission java.util.PropertyPermission "*", "read";
- permission java.security.SecurityPermission "putProviderProperty.SunMSCAPI";
- permission java.security.SecurityPermission "clearProviderProperties.SunMSCAPI";
- permission java.security.SecurityPermission "removeProviderProperty.SunMSCAPI";
-};
-
-grant codeBase "file:${{java.home}}/jre/lib/rt.jar" {
- permission java.security.AllPermission;
-};
-
--- a/jdk/test/java/nio/charset/CharsetEncoder/Flush.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/java/nio/charset/CharsetEncoder/Flush.java Fri Oct 31 18:18:58 2014 +0000
@@ -35,7 +35,7 @@
public class Flush {
private static byte[] contents(ByteBuffer bb) {
byte[] contents = new byte[bb.position()];
- ((ByteBuffer)(bb.duplicate().flip())).get(contents);
+ bb.duplicate().flip().get(contents);
return contents;
}
--- a/jdk/test/java/rmi/activation/ActivateFailedException/activateFails/ActivateFails.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/java/rmi/activation/ActivateFailedException/activateFails/ActivateFails.java Fri Oct 31 18:18:58 2014 +0000
@@ -33,7 +33,7 @@
* @library ../../../testlibrary
* @build TestLibrary RMID ActivationLibrary
* ActivateMe ActivateFails_Stub ShutdownThread
- * @run main/othervm/policy=security.policy/timeout=240 ActivateFails
+ * @run main/othervm/java.security.policy=security.policy/timeout=240 ActivateFails
*/
import java.rmi.*;
--- a/jdk/test/java/rmi/activation/ActivateFailedException/activateFails/security.policy Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/java/rmi/activation/ActivateFailedException/activateFails/security.policy Fri Oct 31 18:18:58 2014 +0000
@@ -2,10 +2,6 @@
* security policy used by the test process
*/
-grant codeBase "file:${java.home}/lib/ext/*" {
- permission java.security.AllPermission;
-};
-
grant {
// standard test activation permissions
permission java.io.FilePermission "..${/}..${/}test.props", "read";
--- a/jdk/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/StubClassesPermitted.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/StubClassesPermitted.java Fri Oct 31 18:18:58 2014 +0000
@@ -29,7 +29,7 @@
* @library ../../../testlibrary
* @build TestLibrary RMID ActivationLibrary
* CanCreateStubs StubClassesPermitted_Stub
- * @run main/othervm/policy=security.policy/secure=java.lang.SecurityManager/timeout=240 StubClassesPermitted
+ * @run main/othervm/java.security.policy=security.policy/secure=java.lang.SecurityManager/timeout=240 StubClassesPermitted
*/
import java.io.*;
--- a/jdk/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/security.policy Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/security.policy Fri Oct 31 18:18:58 2014 +0000
@@ -2,10 +2,6 @@
* security policy used by the test process
*/
-grant codeBase "file:${java.home}/lib/ext/*" {
- permission java.security.AllPermission;
-};
-
grant {
// standard test activation permissions
permission java.io.FilePermission "..${/}..${/}test.props", "read";
--- a/jdk/test/java/security/KeyRep/Serial.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/java/security/KeyRep/Serial.java Fri Oct 31 18:18:58 2014 +0000
@@ -26,7 +26,7 @@
* @bug 4532506 4999599
* @summary Serializing KeyPair on one VM (Sun),
* and Deserializing on another (IBM) fails
- * @run main/othervm/policy=Serial.policy Serial
+ * @run main/othervm/java.security.policy=Serial.policy Serial
*/
import java.io.*;
--- a/jdk/test/java/security/KeyRep/Serial.policy Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/java/security/KeyRep/Serial.policy Fri Oct 31 18:18:58 2014 +0000
@@ -1,12 +1,3 @@
-grant codeBase "file:${java.home}/lib/ext/sunjce_provider.jar" {
- permission java.lang.RuntimePermission "accessClassInPackage.sun.misc";
- permission java.lang.RuntimePermission "accessClassInPackage.sun.security.*";
- permission java.util.PropertyPermission "*", "read";
- permission java.security.SecurityPermission "putProviderProperty.SunJCE";
- permission java.security.SecurityPermission "clearProviderProperties.SunJCE";
- permission java.security.SecurityPermission "removeProviderProperty.SunJCE";
-};
-
grant {
// XXX note package access is *not* granted to the 'sun' package
};
--- a/jdk/test/java/security/KeyRep/SerialDSAPubKey.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/java/security/KeyRep/SerialDSAPubKey.java Fri Oct 31 18:18:58 2014 +0000
@@ -26,7 +26,7 @@
* @bug 6232513
* @summary RMI interoperability issue with DSAPublicKey obj between
* JDK1.4 & JDK1.5
- * @run main/othervm/policy=SerialDSAPubKey.policy -Dsun.security.key.serial.interop=true -Dsun.security.pkcs11.enable-solaris=false SerialDSAPubKey
+ * @run main/othervm/java.security.policy=SerialDSAPubKey.policy -Dsun.security.key.serial.interop=true -Dsun.security.pkcs11.enable-solaris=false SerialDSAPubKey
*/
import java.io.*;
--- a/jdk/test/java/security/KeyRep/SerialOld.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/java/security/KeyRep/SerialOld.java Fri Oct 31 18:18:58 2014 +0000
@@ -26,7 +26,7 @@
* @bug 4532506
* @summary Serializing KeyPair on one VM (Sun),
* and Deserializing on another (IBM) fails
- * @run main/othervm/policy=SerialOld.policy SerialOld
+ * @run main/othervm/java.security.policy=SerialOld.policy SerialOld
*/
import java.io.*;
--- a/jdk/test/java/security/KeyRep/SerialOld.policy Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/java/security/KeyRep/SerialOld.policy Fri Oct 31 18:18:58 2014 +0000
@@ -1,55 +1,3 @@
-grant codeBase "file:${java.home}/lib/ext/ucrypto.jar" {
- permission java.lang.RuntimePermission "accessClassInPackage.sun.security.*";
- permission java.lang.RuntimePermission "accessClassInPackage.sun.nio.ch";
- permission java.lang.RuntimePermission "loadLibrary.j2ucrypto";
- permission java.util.PropertyPermission "*", "read";
- permission java.security.SecurityPermission "putProviderProperty.OracleUcrypto";
- permission java.security.SecurityPermission "clearProviderProperties.OracleUcrypto";
- permission java.security.SecurityPermission "removeProviderProperty.OracleUcrypto";
- permission java.io.FilePermission "${java.home}/lib/security/ucrypto-solaris.cfg", "read";
-};
-
-grant codeBase "file:${java.home}/lib/ext/sunec.jar" {
- permission java.lang.RuntimePermission "accessClassInPackage.sun.security.*";
- permission java.lang.RuntimePermission "loadLibrary.sunec";
- permission java.util.PropertyPermission "*", "read";
- permission java.security.SecurityPermission "putProviderProperty.SunEC";
- permission java.security.SecurityPermission "clearProviderProperties.SunEC";
- permission java.security.SecurityPermission "removeProviderProperty.SunEC";
-};
-
-grant codeBase "file:${java.home}/lib/ext/sunjce_provider.jar" {
- permission java.lang.RuntimePermission "accessClassInPackage.sun.misc";
- permission java.lang.RuntimePermission "accessClassInPackage.sun.security.*";
- permission java.util.PropertyPermission "*", "read";
- permission java.security.SecurityPermission "putProviderProperty.SunJCE";
- permission java.security.SecurityPermission "clearProviderProperties.SunJCE";
- permission java.security.SecurityPermission "removeProviderProperty.SunJCE";
-};
-
-grant codeBase "file:${java.home}/lib/ext/sunpkcs11.jar" {
- permission java.lang.RuntimePermission "accessClassInPackage.sun.security.*";
- permission java.lang.RuntimePermission "accessClassInPackage.sun.nio.ch";
- permission java.lang.RuntimePermission "loadLibrary.j2pkcs11";
- permission java.util.PropertyPermission "*", "read";
- permission java.security.SecurityPermission "putProviderProperty.*";
- permission java.security.SecurityPermission "clearProviderProperties.*";
- permission java.security.SecurityPermission "removeProviderProperty.*";
- permission java.security.SecurityPermission "getProperty.auth.login.defaultCallbackHandler";
- permission java.security.SecurityPermission "authProvider.*";
- // Needed for reading PKCS11 config file and NSS library check
- permission java.io.FilePermission "<<ALL FILES>>", "read";
-};
-
-grant codeBase "file:${java.home}/lib/ext/sunmscapi.jar" {
- Permission java.lang.RuntimePermission "accessClassInPackage.sun.security.*";
- permission java.lang.RuntimePermission "loadLibrary.sunmscapi";
- permission java.util.PropertyPermission "*", "read";
- permission java.security.SecurityPermission "putProviderProperty.SunMSCAPI";
- permission java.security.SecurityPermission "clearProviderProperties.SunMSCAPI";
- permission java.security.SecurityPermission "removeProviderProperty.SunMSCAPI";
-};
-
grant {
permission java.io.FilePermission "${test.src}${file.separator}*", "read";
--- a/jdk/test/java/security/Security/removing/RemoveStaticProvider.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/java/security/Security/removing/RemoveStaticProvider.java Fri Oct 31 18:18:58 2014 +0000
@@ -25,7 +25,7 @@
* @test
* @bug 4420687
* @summary Make sure that a removed provider won't be acceessable.
- * @run main/othervm/policy=RemoveStaticProvider.policy RemoveStaticProvider
+ * @run main/othervm/java.security.policy=RemoveStaticProvider.policy RemoveStaticProvider
*/
import java.security.*;
import javax.crypto.*;
--- a/jdk/test/java/security/Security/removing/RemoveStaticProvider.policy Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/java/security/Security/removing/RemoveStaticProvider.policy Fri Oct 31 18:18:58 2014 +0000
@@ -1,13 +1,3 @@
-
-grant codeBase "file:${java.home}/lib/ext/sunjce_provider.jar" {
- permission java.lang.RuntimePermission "accessClassInPackage.sun.misc";
- permission java.lang.RuntimePermission "accessClassInPackage.sun.security.*";
- permission java.util.PropertyPermission "*", "read";
- permission java.security.SecurityPermission "putProviderProperty.SunJCE";
- permission java.security.SecurityPermission "clearProviderProperties.SunJCE";
- permission java.security.SecurityPermission "removeProviderProperty.SunJCE";
-};
-
grant {
permission java.security.SecurityPermission "removeProvider.SunJCE";
permission java.security.SecurityPermission "insertProvider.SunJCE";
--- a/jdk/test/java/sql/TEST.properties Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-# JDBC unit tests uses TestNG
-TestNG.dirs = .
-
--- a/jdk/test/java/sql/test/sql/BatchUpdateExceptionTests.java Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,326 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package test.sql;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.ObjectInputStream;
-import java.sql.BatchUpdateException;
-import java.sql.SQLException;
-import java.util.Arrays;
-import static org.testng.Assert.*;
-import org.testng.annotations.Test;
-import util.SerializedBatchUpdateException;
-import util.BaseTest;
-
-public class BatchUpdateExceptionTests extends BaseTest {
-
- private final int[] uc = {1, 2, 3};
- private final long[] luc = {1, 2, 3};
-
- private final String testSrcDir = System.getProperty("test.src", ".")
- + File.separatorChar;
-
- /**
- * Create BatchUpdateException and setting all objects to null
- */
- @Test
- public void test() {
- BatchUpdateException be = new BatchUpdateException(null,
- null, errorCode, (int[]) null, null);
- assertTrue(be.getMessage() == null && be.getSQLState() == null
- && be.getUpdateCounts() == null && be.getCause() == null
- && be.getLargeUpdateCounts() == null
- && be.getErrorCode() == errorCode);
- }
-
- /**
- * Create BatchUpdateException with no-arg constructor
- */
- @Test
- public void test1() {
- BatchUpdateException ex = new BatchUpdateException();
- assertTrue(ex.getMessage() == null
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0
- && ex.getUpdateCounts() == null
- && ex.getLargeUpdateCounts() == null);
- }
-
- /**
- * Create BatchUpdateException with null Throwable
- */
- @Test
- public void test2() {
- BatchUpdateException ex = new BatchUpdateException((Throwable) null);
- assertTrue(ex.getMessage() == null
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0
- && ex.getUpdateCounts() == null
- && ex.getLargeUpdateCounts() == null);
- }
-
- /**
- * Create BatchUpdateException with message and update counts
- */
- @Test
- public void test3() {
-
- BatchUpdateException ex = new BatchUpdateException(reason, uc);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0
- && Arrays.equals(ex.getUpdateCounts(), uc)
- && Arrays.equals(ex.getLargeUpdateCounts(), luc)
- );
- }
-
- /**
- * Create BatchUpdateException with update counts
- */
- @Test
- public void test4() {
- BatchUpdateException ex = new BatchUpdateException(uc);
- assertTrue(ex.getMessage() == null
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0
- && Arrays.equals(ex.getUpdateCounts(), uc)
- && Arrays.equals(ex.getLargeUpdateCounts(), luc)
- );
- }
-
- /**
- * Create BatchUpdateException with Throwable and update counts
- */
- @Test
- public void test5() {
- BatchUpdateException ex = new BatchUpdateException(uc, t);
- assertTrue(ex.getMessage().equals(cause)
- && ex.getSQLState() == null
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0
- && Arrays.equals(ex.getUpdateCounts(), uc)
- && Arrays.equals(ex.getLargeUpdateCounts(), luc)
- );
- }
-
- /**
- * Create BatchUpdateException with message, Throwable, and update counts
- */
- @Test
- public void test6() {
- BatchUpdateException ex = new BatchUpdateException(reason, uc, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState() == null
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0
- && Arrays.equals(ex.getUpdateCounts(), uc)
- && Arrays.equals(ex.getLargeUpdateCounts(), luc)
- );
- }
-
- /**
- * Create BatchUpdateException with message, SQLState, Throwable, and update
- * counts
- */
- @Test
- public void test7() {
- BatchUpdateException ex = new BatchUpdateException(reason, state, uc, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0
- && Arrays.equals(ex.getUpdateCounts(), uc)
- && Arrays.equals(ex.getLargeUpdateCounts(), luc)
- );
- }
-
- /**
- * Create BatchUpdateException with message, SQLState, errorCode code
- * Throwable, and update counts
- */
- @Test
- public void test8() {
- BatchUpdateException ex = new BatchUpdateException(reason, state, errorCode,
- uc, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == errorCode
- && Arrays.equals(ex.getUpdateCounts(), uc)
- && Arrays.equals(ex.getLargeUpdateCounts(), luc)
- );
- }
-
- /**
- * Create BatchUpdateException with message, SQLState, errorCode code
- * Throwable, and long [] update counts
- */
- @Test
- public void test9() {
- BatchUpdateException ex = new BatchUpdateException(reason, state, errorCode,
- luc, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == errorCode
- && Arrays.equals(ex.getUpdateCounts(), uc)
- && Arrays.equals(ex.getLargeUpdateCounts(), luc)
- );
- }
-
- /**
- * Validate that a copy of the update counts array is made
- */
- @Test
- public void test10() {
- int[] uc1 = {1, 2};
- BatchUpdateException ex = new BatchUpdateException(uc1);
- assertTrue(Arrays.equals(ex.getUpdateCounts(), uc1));
- uc1[0] = 6689;
- assertFalse(Arrays.equals(ex.getUpdateCounts(), uc1));
- }
-
- /**
- * Validate that if null is specified for the update count, it is returned
- * as null
- */
- @Test
- public void test11() {
- BatchUpdateException ex = new BatchUpdateException((int[]) null);
- assertTrue(ex.getMessage() == null && ex.getSQLState() == null
- && ex.getErrorCode() == 0 && ex.getUpdateCounts() == null
- && ex.getLargeUpdateCounts() == null);
- }
-
- /**
- * Serialize a BatchUpdateException and make sure you can read it back
- * properly
- */
- @Test
- public void test12() throws Exception {
- BatchUpdateException be = new BatchUpdateException(reason, state, errorCode,
- uc, t);
- BatchUpdateException bue
- = createSerializedException(be);
- assertTrue(reason.equals(bue.getMessage())
- && bue.getSQLState().equals(state)
- && cause.equals(bue.getCause().toString())
- && bue.getErrorCode() == errorCode
- && Arrays.equals(bue.getLargeUpdateCounts(), luc)
- && Arrays.equals(bue.getUpdateCounts(), uc));
- }
-
-
-
- /**
- * De-Serialize a BatchUpdateException from JDBC 4.0 and make sure you can
- * read it back properly
- */
- @Test
- public void test13() throws Exception {
- String reason1 = "This was the error msg";
- String state1 = "user defined sqlState";
- String cause1 = "java.lang.Throwable: throw 1";
- int errorCode1 = 99999;
- Throwable t = new Throwable("throw 1");
- int[] uc1 = {1, 2, 21};
- long[] luc1 = {1, 2, 21};
-
- ObjectInputStream ois = new ObjectInputStream(
- new ByteArrayInputStream(SerializedBatchUpdateException.DATA));
- BatchUpdateException bue = (BatchUpdateException) ois.readObject();
- assertTrue(reason1.equals(bue.getMessage())
- && bue.getSQLState().equals(state1)
- && bue.getErrorCode() == errorCode1
- && cause1.equals(bue.getCause().toString())
- && Arrays.equals(bue.getLargeUpdateCounts(), luc1)
- && Arrays.equals(bue.getUpdateCounts(), uc1));
- }
-
- /**
- * Serialize a BatchUpdateException with an Integer.MAX_VALUE + 1 and
- * validate you can read it back properly
- */
- @Test
- public void test14() throws Exception {
- int[] uc1 = {Integer.MAX_VALUE, Integer.MAX_VALUE + 1};
- long[] luc1 = {Integer.MAX_VALUE, Integer.MAX_VALUE + 1};
- BatchUpdateException be = new BatchUpdateException(reason, state, errorCode,
- luc1, t);
- BatchUpdateException bue
- = createSerializedException(be);
- assertTrue(reason.equals(bue.getMessage())
- && bue.getSQLState().equals(state)
- && cause.equals(bue.getCause().toString())
- && bue.getErrorCode() == errorCode
- && Arrays.equals(bue.getLargeUpdateCounts(), luc1)
- && Arrays.equals(bue.getUpdateCounts(), uc1));
- }
-
- /**
- * Validate that the ordering of the returned Exceptions is correct
- * using for-each loop
- */
- @Test
- public void test15() {
- BatchUpdateException ex = new BatchUpdateException("Exception 1", uc, t1);
- BatchUpdateException ex1 = new BatchUpdateException("Exception 2", uc);
- BatchUpdateException ex2 = new BatchUpdateException("Exception 3", uc, t2);
- ex.setNextException(ex1);
- ex.setNextException(ex2);
- int num = 0;
- for (Throwable e : ex) {
- assertTrue(msgs[num++].equals(e.getMessage()));
- }
- }
-
- /**
- * Validate that the ordering of the returned Exceptions is correct
- * using traditional while loop
- */
- @Test
- public void test16() {
- BatchUpdateException ex = new BatchUpdateException("Exception 1", uc, t1);
- BatchUpdateException ex1 = new BatchUpdateException("Exception 2", uc);
- BatchUpdateException ex2 = new BatchUpdateException("Exception 3", uc, t2);
- ex.setNextException(ex1);
- ex.setNextException(ex2);
- SQLException sqe = ex;
- int num = 0;
- while (sqe != null) {
- assertTrue(msgs[num++].equals(sqe.getMessage()));
- Throwable c = sqe.getCause();
- while (c != null) {
- assertTrue(msgs[num++].equals(c.getMessage()));
- c = c.getCause();
- }
- sqe = sqe.getNextException();
- }
- }
-
-}
--- a/jdk/test/java/sql/test/sql/DataTruncationTests.java Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,209 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package test.sql;
-
-import java.sql.DataTruncation;
-import java.sql.SQLException;
-import static org.testng.Assert.*;
-import org.testng.annotations.Test;
-import util.BaseTest;
-
-public class DataTruncationTests extends BaseTest {
-
- private final String READ_TRUNCATION = "01004";
- private final String WRITE_TRUNCATION = "22001";
- private final String dtReason = "Data truncation";
- private final int dterrorCode = 0;
- private final String[] dtmsgs = {dtReason, "cause 1", dtReason,
- dtReason, "cause 2"};
- private boolean onRead = false;
- private final boolean parameter = false;
- private final int index = 21;
- private final int dataSize = 25;
- private final int transferSize = 10;
-
- /**
- * Create DataTruncation object indicating a truncation on read
- */
- @Test
- public void test() {
- onRead = true;
- DataTruncation e = new DataTruncation(index, parameter, onRead,
- dataSize, transferSize);
- assertTrue(e.getMessage().equals(dtReason)
- && e.getSQLState().equals(READ_TRUNCATION)
- && e.getCause() == null
- && e.getErrorCode() == dterrorCode
- && e.getParameter() == parameter
- && e.getRead() == onRead
- && e.getDataSize() == dataSize
- && e.getTransferSize() == transferSize
- && e.getIndex() == index);
- }
-
- /**
- * Create DataTruncation object indicating a truncation on write
- */
- @Test
- public void test1() {
- onRead = false;
- DataTruncation e = new DataTruncation(index, parameter, onRead,
- dataSize, transferSize);
- assertTrue(e.getMessage().equals(dtReason)
- && e.getSQLState().equals(WRITE_TRUNCATION)
- && e.getCause() == null
- && e.getErrorCode() == dterrorCode
- && e.getParameter() == parameter
- && e.getRead() == onRead
- && e.getDataSize() == dataSize
- && e.getTransferSize() == transferSize
- && e.getIndex() == index);
- }
-
- /**
- * Create DataTruncation object indicating a truncation on read with a
- * Throwable
- */
- @Test
- public void test2() {
- onRead = true;
- DataTruncation e = new DataTruncation(index, parameter, onRead,
- dataSize, transferSize, t);
- assertTrue(e.getMessage().equals(dtReason)
- && e.getSQLState().equals(READ_TRUNCATION)
- && cause.equals(e.getCause().toString())
- && e.getErrorCode() == dterrorCode
- && e.getParameter() == parameter
- && e.getRead() == onRead
- && e.getDataSize() == dataSize
- && e.getTransferSize() == transferSize
- && e.getIndex() == index);
- }
-
- /**
- * Create DataTruncation object indicating a truncation on read with null
- * specified for the Throwable
- */
- @Test
- public void test3() {
- onRead = true;;
- DataTruncation e = new DataTruncation(index, parameter, onRead,
- dataSize, transferSize, null);
- assertTrue(e.getMessage().equals(dtReason)
- && e.getSQLState().equals(READ_TRUNCATION)
- && e.getCause() == null
- && e.getErrorCode() == dterrorCode
- && e.getParameter() == parameter
- && e.getRead() == onRead
- && e.getDataSize() == dataSize
- && e.getTransferSize() == transferSize
- && e.getIndex() == index);
- }
-
- /**
- * Create DataTruncation object indicating a truncation on read and you can
- * pass a -1 for the index
- */
- @Test
- public void test4() {
- onRead = true;
- int negIndex = -1;
- DataTruncation e = new DataTruncation(negIndex, parameter, onRead,
- dataSize, transferSize);
- assertTrue(e.getMessage().equals(dtReason)
- && e.getSQLState().equals(READ_TRUNCATION)
- && e.getCause() == null
- && e.getErrorCode() == dterrorCode
- && e.getParameter() == parameter
- && e.getRead() == onRead
- && e.getDataSize() == dataSize
- && e.getTransferSize() == transferSize
- && e.getIndex() == negIndex);
- }
-
- /**
- * Serialize a DataTruncation and make sure you can read it back properly
- */
- @Test
- public void test5() throws Exception {
- DataTruncation e = new DataTruncation(index, parameter, onRead,
- dataSize, transferSize);
- DataTruncation ex1 = createSerializedException(e);
- assertTrue(e.getMessage().equals(dtReason)
- && e.getSQLState().equals(READ_TRUNCATION)
- && e.getCause() == null
- && e.getErrorCode() == dterrorCode
- && e.getParameter() == parameter
- && e.getRead() == onRead
- && e.getDataSize() == dataSize
- && e.getTransferSize() == transferSize
- && e.getIndex() == index);
- }
-
- /**
- * Validate that the ordering of the returned Exceptions is correct using
- * for-each loop
- */
- @Test
- public void test11() {
- DataTruncation ex = new DataTruncation(index, parameter, onRead,
- dataSize, transferSize, t1);
- DataTruncation ex1 = new DataTruncation(index, parameter, onRead,
- dataSize, transferSize);
- DataTruncation ex2 = new DataTruncation(index, parameter, onRead,
- dataSize, transferSize, t2);
- ex.setNextException(ex1);
- ex.setNextException(ex2);
- int num = 0;
- for (Throwable e : ex) {
- assertTrue(dtmsgs[num++].equals(e.getMessage()));
- }
- }
-
- /**
- * Validate that the ordering of the returned Exceptions is correct using
- * traditional while loop
- */
- @Test
- public void test12() {
- DataTruncation ex = new DataTruncation(index, parameter, onRead,
- dataSize, transferSize, t1);
- DataTruncation ex1 = new DataTruncation(index, parameter, onRead,
- dataSize, transferSize);
- DataTruncation ex2 = new DataTruncation(index, parameter, onRead,
- dataSize, transferSize, t2);
- ex.setNextException(ex1);
- ex.setNextException(ex2);
- int num = 0;
- SQLException sqe = ex;
- while (sqe != null) {
- assertTrue(dtmsgs[num++].equals(sqe.getMessage()));
- Throwable c = sqe.getCause();
- while (c != null) {
- assertTrue(dtmsgs[num++].equals(c.getMessage()));
- c = c.getCause();
- }
- sqe = sqe.getNextException();
- }
- }
-}
--- a/jdk/test/java/sql/test/sql/DateTests.java Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,373 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package test.sql;
-
-import java.sql.Date;
-import java.time.Instant;
-import java.time.LocalDate;
-import static org.testng.Assert.*;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-import util.BaseTest;
-
-public class DateTests extends BaseTest {
-
- /*
- * Validate an IllegalArgumentException is thrown for an invalid Date string
- */
- @Test(dataProvider = "invalidDateValues",
- expectedExceptions = IllegalArgumentException.class)
- public void test(String d) throws Exception {
- Date.valueOf(d);
- }
-
- /*
- * Test that a date created from a date string is equal to the value
- * returned from toString()
- */
- @Test(dataProvider = "validDateValues")
- public void test00(String d, String expectedD) {
- Date d1 = Date.valueOf(d);
- Date d2 = Date.valueOf(expectedD);
- assertTrue(d1.equals(d2) && d2.equals(d1)
- && d1.toString().equals(expectedD), "Error d1 != d2");
- }
-
- /*
- * Validate that a Date.after() returns false when same date is compared
- */
- @Test
- public void test01() {
- Date d = Date.valueOf("1961-08-30");
- assertFalse(d.after(d), "Error d.after(d) = true");
- }
-
- /*
- * Validate that a Date.after() returns true when later date is compared to
- * earlier date
- */
- @Test
- public void test2() {
- Date d = Date.valueOf("1961-08-30");
- Date d2 = new Date(System.currentTimeMillis());
- assertTrue(d2.after(d), "Error d2.after(d) = false");
- }
-
- /*
- * Validate that a Date.after() returns false when earlier date is compared
- * to later date
- */
- @Test
- public void test3() {
- Date d = Date.valueOf("1961-08-30");
- Date d2 = new Date(d.getTime());
- assertFalse(d.after(d2), "Error d.after(d2) = true");
- }
-
- /*
- * Validate that a Date.after() returns false when date compared to another
- * date created from the original date
- */
- @Test
- public void test4() {
- Date d = Date.valueOf("1961-08-30");
- Date d2 = new Date(d.getTime());
- assertFalse(d.after(d2), "Error d.after(d2) = true");
- assertFalse(d2.after(d), "Error d2.after(d) = true");
- }
-
- /*
- * Validate that a Date.before() returns false when same date is compared
- */
- @Test
- public void test5() {
- Date d = Date.valueOf("1961-08-30");
- assertFalse(d.before(d), "Error d.before(d) = true");
- }
-
- /*
- * Validate that a Date.before() returns true when earlier date is compared
- * to later date
- */
- @Test
- public void test6() {
- Date d = Date.valueOf("1961-08-30");
- Date d2 = new Date(System.currentTimeMillis());
- assertTrue(d.before(d2), "Error d.before(d2) = false");
- }
-
- /*
- * Validate that a Date.before() returns false when later date is compared
- * to earlier date
- */
- @Test
- public void test7() {
- Date d = Date.valueOf("1961-08-30");
- Date d2 = new Date(d.getTime());
- assertFalse(d2.before(d), "Error d2.before(d) = true");
- }
-
- /*
- * Validate that a Date.before() returns false when date compared to another
- * date created from the original date
- */
- @Test
- public void test8() {
- Date d = Date.valueOf("1961-08-30");
- Date d2 = new Date(d.getTime());
- assertFalse(d.before(d2), "Error d.before(d2) = true");
- assertFalse(d2.before(d), "Error d2.before(d) = true");
- }
-
- /*
- * Validate that a Date.compareTo returns 0 when both Date objects are the
- * same
- */
- @Test
- public void test9() {
- Date d = Date.valueOf("1961-08-30");
- assertTrue(d.compareTo(d) == 0, "Error d.compareTo(d) !=0");
- }
-
- /*
- * Validate that a Date.compareTo returns 0 when both Date objects represent
- * the same date
- */
- @Test
- public void test10() {
- Date d = Date.valueOf("1961-08-30");
- Date d2 = new Date(d.getTime());
- assertTrue(d.compareTo(d2) == 0, "Error d.compareTo(d2) !=0");
- }
-
- /*
- * Validate that a Date.compareTo returns -1 when comparing a date to a
- * later date
- */
- @Test
- public void test11() {
- Date d = Date.valueOf("1961-08-30");
- Date d2 = new Date(System.currentTimeMillis());
- assertTrue(d.compareTo(d2) == -1, "Error d.compareTo(d2) != -1");
- }
-
- /*
- * Validate that a Date.compareTo returns 1 when comparing a date to an
- * earlier date
- */
- @Test
- public void test12() {
- Date d = Date.valueOf("1961-08-30");
- Date d2 = new Date(System.currentTimeMillis());
- assertTrue(d2.compareTo(d) == 1, "Error d.compareTo(d2) != 1");
- }
-
- /*
- * Validate that a Date made from a LocalDate are equal
- */
- @Test
- public void test13() {
- Date d = Date.valueOf("1961-08-30");
- LocalDate ldt = d.toLocalDate();
- Date d2 = Date.valueOf(ldt);
- assertTrue(d.equals(d2), "Error d != d2");
- }
-
- /*
- * Validate that a Date LocalDate value, made from a LocalDate are equal
- */
- @Test
- public void test14() {
- LocalDate ldt = LocalDate.now();
- Date d = Date.valueOf(ldt);
- assertTrue(ldt.equals(d.toLocalDate()),
- "Error LocalDate values are not equal");
- }
-
- /*
- * Validate an NPE occurs when a null LocalDate is passed to valueOf
- */
- @Test(expectedExceptions = NullPointerException.class)
- public void test15() throws Exception {
- LocalDate ld = null;
- Date.valueOf(ld);
- }
-
- /*
- * Validate an UnsupportedOperationException occurs when toInstant() is
- * called
- */
- @Test(expectedExceptions = UnsupportedOperationException.class)
- public void test16() throws Exception {
- Date d = Date.valueOf("1961-08-30");
- Instant instant = d.toInstant();
- }
-
- /*
- * Validate that two Date objects are equal when one is created from the
- * toString() of the other
- */
- @Test
- public void test17() {
- Date d = Date.valueOf("1961-08-30");
- Date d2 = Date.valueOf(d.toString());
- assertTrue(d.equals(d2) && d2.equals(d), "Error d != d2");
- }
-
- /*
- * Validate that two Date values one created using valueOf and another via a
- * constructor are equal
- */
- @Test
- public void test18() {
-
- Date d = Date.valueOf("1961-08-30");
- Date d2 = new Date(61, 7, 30);
- assertTrue(d.equals(d2), "Error d != d2");
- }
-
- /*
- * Validate that two Date values one created using getTime() of the other
- * are equal
- */
- @Test
- public void test19() {
-
- Date d = Date.valueOf("1961-08-30");
- Date d2 = new Date(d.getTime());
- assertTrue(d.equals(d2), "Error d != d2");
- }
-
- /*
- * Validate that a Date value is equal to itself
- */
- @Test
- public void test20() {
-
- Date d = Date.valueOf("1961-08-30");
- assertTrue(d.equals(d), "Error d != d");
- }
-
- /*
- * Validate an IllegalArgumentException is thrown for calling getHours
- */
- @Test(expectedExceptions = IllegalArgumentException.class)
- public void test21() throws Exception {
- Date d = Date.valueOf("1961-08-30");
- d.getHours();
- }
-
- /*
- * Validate an IllegalArgumentException is thrown for calling getMinutes
- */
- @Test(expectedExceptions = IllegalArgumentException.class)
- public void test22() throws Exception {
- Date d = Date.valueOf("1961-08-30");
- d.getMinutes();
- }
-
- /*
- * Validate an IllegalArgumentException is thrown for calling getSeconds
- */
- @Test(expectedExceptions = IllegalArgumentException.class)
- public void test23() throws Exception {
- Date d = Date.valueOf("1961-08-30");
- d.getSeconds();
- }
-
- /*
- * Validate an IllegalArgumentException is thrown for calling setHours
- */
- @Test(expectedExceptions = IllegalArgumentException.class)
- public void test24() throws Exception {
- Date d = Date.valueOf("1961-08-30");
- d.setHours(8);
- }
-
- /*
- * Validate an IllegalArgumentException is thrown for calling setMinutes
- */
- @Test(expectedExceptions = IllegalArgumentException.class)
- public void test25() throws Exception {
- Date d = Date.valueOf("1961-08-30");
- d.setMinutes(0);
- }
-
- /*
- * Validate an IllegalArgumentException is thrown for calling setSeconds
- */
- @Test(expectedExceptions = IllegalArgumentException.class)
- public void test26() throws Exception {
- Date d = Date.valueOf("1961-08-30");
- d.setSeconds(0);
- }
-
- /*
- * DataProvider used to provide Date which are not valid and are used
- * to validate that an IllegalArgumentException will be thrown from the
- * valueOf method
- */
- @DataProvider(name = "invalidDateValues")
- private Object[][] invalidDateValues() {
- return new Object[][]{
- {"20009-11-01"},
- {"09-11-01"},
- {"-11-01"},
- {"2009-111-01"},
- {"2009--01"},
- {"2009-13-01"},
- {"2009-11-011"},
- {"2009-11-"},
- {"2009-11-00"},
- {"2009-11-33"},
- {"--"},
- {""},
- {null},
- {"-"},
- {"2009"},
- {"2009-01"},
- {"---"},
- {"2009-13--1"},
- {"1900-1-0"},
- {"2009-01-01 10:50:01"},
- {"1996-12-10 12:26:19.1"},
- {"10:50:01"}
- };
- }
-
- /*
- * DataProvider used to provide Dates which are valid and are used
- * to validate that an IllegalArgumentException will not be thrown from the
- * valueOf method and the corect value from toString() is returned
- */
- @DataProvider(name = "validDateValues")
- private Object[][] validDateValues() {
- return new Object[][]{
- {"2009-08-30", "2009-08-30"},
- {"2009-01-8", "2009-01-08"},
- {"2009-1-01", "2009-01-01"},
- {"2009-1-1", "2009-01-01"}
-
- };
- }
-}
--- a/jdk/test/java/sql/test/sql/DriverManagerPermissionsTests.java Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,154 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package test.sql;
-
-import java.security.AccessControlException;
-import java.security.Policy;
-import java.sql.DriverManager;
-import java.sql.SQLException;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-import util.BaseTest;
-import util.StubDriver;
-import util.TestPolicy;
-
-public class DriverManagerPermissionsTests extends BaseTest {
-
- private static Policy policy;
- private static SecurityManager sm;
-
- /*
- * Install a SecurityManager along with a base Policy to allow testNG to run
- */
- @BeforeClass
- public static void setUpClass() throws Exception {
- setPolicy(new TestPolicy());
- System.setSecurityManager(new SecurityManager());
- }
-
- /*
- * Install the original Policy and SecurityManager
- */
- @AfterClass
- public static void tearDownClass() throws Exception {
- System.setSecurityManager(sm);
- setPolicy(policy);
- }
-
- /*
- * Save off the original Policy and SecurityManager
- */
- public DriverManagerPermissionsTests() {
- policy = Policy.getPolicy();
- sm = System.getSecurityManager();
- }
-
- /*
- * Validate that AccessControlException is thrown if SQLPermission("setLog")
- * has not been granted
- */
- @Test(expectedExceptions = AccessControlException.class)
- public void test() {
- setPolicy(new TestPolicy());
- DriverManager.setLogStream(null);
- }
-
- /*
- * Validate that setLogStream succeeds if SQLPermission("setLog") has been
- * granted
- */
- @Test
- public void test1() {
- Policy.setPolicy(new TestPolicy("setLog"));
- DriverManager.setLogStream(null);
- }
-
- /*
- * Validate that setLogStream succeeds if AllPermissions has been granted
- */
- @Test
- public void test2() {
- setPolicy(new TestPolicy("all"));
- DriverManager.setLogStream(null);
- }
-
- /*
- * Validate that AccessControlException is thrown if SQLPermission("setLog")
- * has not been granted
- */
- @Test(expectedExceptions = AccessControlException.class)
- public void test4() {
- setPolicy(new TestPolicy());
- DriverManager.setLogWriter(null);
- }
-
- /*
- * Validate that setLogWriter succeeds if SQLPermission("setLog") has been
- * granted
- */
- @Test
- public void test5() {
- setPolicy(new TestPolicy("setLog"));
- DriverManager.setLogWriter(null);
- }
-
- /*
- * Validate that setLogWriter succeeds if AllPermissions has been granted
- */
- @Test
- public void test6() {
- setPolicy(new TestPolicy("all"));
- DriverManager.setLogWriter(null);
- }
-
- /*
- * Validate that AccessControlException is thrown if
- * SQLPermission("deregisterDriver") has not been granted
- */
- @Test(expectedExceptions = AccessControlException.class)
- public void test7() throws SQLException {
- setPolicy(new TestPolicy());
- DriverManager.deregisterDriver(new StubDriver());
- }
-
- /*
- * Validate that deregisterDriver succeeds if
- * SQLPermission("deregisterDriver") has been granted
- */
- @Test
- public void test8() throws SQLException {
- setPolicy(new TestPolicy("deregisterDriver"));
- DriverManager.deregisterDriver(new StubDriver());
- }
-
- /*
- * Validate that deregisterDriver succeeds if AllPermissions has been
- * granted
- */
- @Test
- public void test9() throws SQLException {
- setPolicy(new TestPolicy("all"));
- DriverManager.deregisterDriver(new StubDriver());
- }
-}
--- a/jdk/test/java/sql/test/sql/DriverManagerTests.java Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,354 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package test.sql;
-
-import java.io.BufferedReader;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.CharArrayReader;
-import java.io.CharArrayWriter;
-import java.io.File;
-import java.io.InputStreamReader;
-import java.io.PrintStream;
-import java.io.PrintWriter;
-import java.sql.Driver;
-import java.sql.DriverManager;
-import java.sql.SQLException;
-import java.util.Properties;
-import static org.testng.Assert.*;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-import util.StubDriver;
-
-public class DriverManagerTests {
-
- private final String StubDriverURL = "jdbc:tennis:boy";
- private final String StubDriverDAURL = "jdbc:luckydog:tennis";
- private final String InvalidURL = "jdbc:cardio:tennis";
- private String[] results = {"output", "more output", "and more", "the end"};
- private String noOutput = "should not find this";
-
- public DriverManagerTests() {
- }
-
- @BeforeClass
- public static void setUpClass() throws Exception {
- }
-
- @AfterClass
- public static void tearDownClass() throws Exception {
- }
-
- @BeforeMethod
- public void setUpMethod() throws Exception {
- removeAllDrivers();
- }
-
- @AfterMethod
- public void tearDownMethod() throws Exception {
- }
-
- /**
- * Utility method to remove all registered drivers
- */
- private static void removeAllDrivers() {
- java.util.Enumeration e = DriverManager.getDrivers();
- while (e.hasMoreElements()) {
- try {
- DriverManager.deregisterDriver((Driver) (e.nextElement()));
- } catch (SQLException ex) {
- System.out.print(ex.getMessage());
- }
- }
- }
-
- /**
- * Utility method to see if a driver is registered
- */
- private boolean isDriverRegistered(Driver d) {
- boolean foundDriver = false;
- java.util.Enumeration e = DriverManager.getDrivers();
- while (e.hasMoreElements()) {
- if (d == (Driver) e.nextElement()) {
- foundDriver = true;
- break;
- }
- }
- return foundDriver;
- }
-
- /**
- * Validate that values set using setLoginTimeout will be returned by
- * getLoginTimeout
- */
- @Test
- public void test() {
- int[] vals = {-1, 0, 5};
- for (int val : vals) {
- DriverManager.setLoginTimeout(val);
- assertEquals(val, DriverManager.getLoginTimeout());
- }
- }
-
- /**
- * Validate that NullPointerException is thrown when null is passed to
- * registerDriver
- */
- @Test(expectedExceptions = NullPointerException.class)
- public void test1() throws Exception {
- Driver d = null;
- DriverManager.registerDriver(d);
- }
-
- /**
- * Validate that NullPointerException is thrown when null is passed to
- * registerDriver
- */
- @Test(expectedExceptions = NullPointerException.class)
- public void test2() throws Exception {
- Driver d = null;
- DriverManager.registerDriver(d, null);
- }
-
- /**
- * Validate that a null value allows for deRegisterDriver to return
- */
- @Test
- public void test3() throws Exception {
- DriverManager.deregisterDriver(null);
-
- }
-
- /**
- * Validate that SQLException is thrown when there is no Driver to service
- * the URL
- */
- @Test(expectedExceptions = SQLException.class)
- public void test4() throws Exception {
- DriverManager.getConnection(InvalidURL);
- }
-
- /**
- * Validate that SQLException is thrown when there is no Driver to service
- * the URL
- */
- @Test(expectedExceptions = SQLException.class)
- public void test5() throws Exception {
- DriverManager.getConnection(InvalidURL, new Properties());
- }
-
- /**
- * Validate that SQLException is thrown when there is no Driver to service
- * the URL
- */
- @Test(expectedExceptions = SQLException.class)
- public void test6() throws Exception {
- DriverManager.getConnection(InvalidURL, "LuckyDog", "tennisanyone");
- }
-
- /**
- * Validate that SQLException is thrown when null is passed for the URL
- */
- @Test(expectedExceptions = SQLException.class)
- public void test7() throws Exception {
- DriverManager.getConnection(null);
- }
-
- /**
- * Validate that SQLException is thrown when null is passed for the URL
- */
- @Test(expectedExceptions = SQLException.class)
- public void test8() throws Exception {
- DriverManager.getConnection(null, new Properties());
- }
-
- /**
- * Validate that SQLException is thrown when null is passed for the URL
- */
- @Test(expectedExceptions = SQLException.class)
- public void test9() throws Exception {
- DriverManager.getConnection(null, "LuckyDog", "tennisanyone");
- }
-
- /**
- * Validate that SQLException is thrown when there is no Driver to service
- * the URL
- */
- @Test(expectedExceptions = SQLException.class)
- public void test10() throws Exception {
- DriverManager.getDriver(InvalidURL);
- }
-
- /**
- * Validate that SQLException is thrown when null is passed for the URL
- */
- @Test(expectedExceptions = SQLException.class)
- public void test11() throws Exception {
- DriverManager.getDriver(null);
- }
-
- /**
- * Validate that a non-null Driver is returned by getDriver when a valid URL
- * is specified
- */
- @Test
- public void test12() throws Exception {
-
- DriverManager.registerDriver(new StubDriver());
- assertTrue(DriverManager.getDriver(StubDriverURL) != null);
- }
-
- /**
- * Validate that SQLException is thrown when the URL is not valid for any of
- * the registered drivers
- */
- @Test(expectedExceptions = SQLException.class)
- public void test13() throws Exception {
- DriverManager.registerDriver(new StubDriver());
- DriverManager.getDriver(InvalidURL);
- }
-
- /**
- * Validate that a Connection object is returned when a valid URL is
- * specified to getConnection
- *
- */
- @Test
- public void test14() throws Exception {
-
- DriverManager.registerDriver(new StubDriver());
- assertTrue(
- DriverManager.getConnection(StubDriverURL) != null);
- assertTrue(DriverManager.getConnection(StubDriverURL,
- "LuckyDog", "tennisanyone") != null);
- Properties props = new Properties();
- props.put("user", "LuckyDog");
- props.put("password", "tennisanyone");
- assertTrue(
- DriverManager.getConnection(StubDriverURL,
- props) != null);
- }
-
- /**
- * Register a driver and make sure you find it via its URL. Deregister the
- * driver and validate it is not longer registered
- *
- * @throws Exception
- */
- @Test()
- public void test15() throws Exception {
- DriverManager.registerDriver(new StubDriver());
- Driver d = DriverManager.getDriver(StubDriverURL);
- assertTrue(d != null);
- assertTrue(isDriverRegistered(d));
- DriverManager.deregisterDriver(d);
- assertFalse(isDriverRegistered(d));
- }
-
- /**
- * Validate that DriverAction.release is called when a driver is registered
- * via registerDriver(Driver, DriverAction)
- *
- * @throws Exception
- */
- @Test
- public void test16() throws Exception {
- File file = new File(util.StubDriverDA.DriverActionCalled);
- file.delete();
- assertFalse(file.exists());
- Driver d = null;
- Class.forName("util.StubDriverDA");
- d = DriverManager.getDriver(StubDriverDAURL);
- DriverManager.deregisterDriver(d);
- assertFalse(isDriverRegistered(d), "Driver is registered");
- assertTrue(file.exists());
- }
-
- /**
- * Create a PrintStream and use to send output via DriverManager.println
- * Validate that if you disable the stream, the output sent is not present
- */
- @Test
- public void tests17() throws Exception {
- ByteArrayOutputStream os = new ByteArrayOutputStream();
- PrintStream ps = new PrintStream(os);
- DriverManager.setLogStream(ps);
- assertTrue(DriverManager.getLogStream() == ps);
-
- DriverManager.println(results[0]);
- DriverManager.setLogStream((PrintStream) null);
- assertTrue(DriverManager.getLogStream() == null);
- DriverManager.println(noOutput);
- DriverManager.setLogStream(ps);
- DriverManager.println(results[1]);
- DriverManager.println(results[2]);
- DriverManager.println(results[3]);
- DriverManager.setLogStream((PrintStream) null);
- DriverManager.println(noOutput);
-
- /*
- * Check we do not get the output when the stream is disabled
- */
- InputStreamReader is
- = new InputStreamReader(new ByteArrayInputStream(os.toByteArray()));
- BufferedReader reader = new BufferedReader(is);
- for (String result : results) {
- assertTrue(result.equals(reader.readLine()));
- }
- }
-
- /**
- * Create a PrintWriter and use to to send output via DriverManager.println
- * Validate that if you disable the writer, the output sent is not present
- */
- @Test
- public void tests18() throws Exception {
- CharArrayWriter cw = new CharArrayWriter();
- PrintWriter pw = new PrintWriter(cw);
- DriverManager.setLogWriter(pw);
- assertTrue(DriverManager.getLogWriter() == pw);
-
- DriverManager.println(results[0]);
- DriverManager.setLogWriter(null);
- assertTrue(DriverManager.getLogWriter() == null);
- DriverManager.println(noOutput);
- DriverManager.setLogWriter(pw);
- DriverManager.println(results[1]);
- DriverManager.println(results[2]);
- DriverManager.println(results[3]);
- DriverManager.setLogWriter(null);
- DriverManager.println(noOutput);
-
- /*
- * Check we do not get the output when the stream is disabled
- */
- BufferedReader reader
- = new BufferedReader(new CharArrayReader(cw.toCharArray()));
- for (String result : results) {
- assertTrue(result.equals(reader.readLine()));
- }
- }
-}
--- a/jdk/test/java/sql/test/sql/SQLClientInfoExceptionTests.java Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,227 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package test.sql;
-
-import java.sql.ClientInfoStatus;
-import java.sql.SQLClientInfoException;
-import java.sql.SQLException;
-import java.util.HashMap;
-import static org.testng.Assert.*;
-import org.testng.annotations.Test;
-import util.BaseTest;
-
-public class SQLClientInfoExceptionTests extends BaseTest {
-
- private final HashMap<String, ClientInfoStatus> map = new HashMap<>();
-
- public SQLClientInfoExceptionTests() {
- map.put("1", ClientInfoStatus.REASON_UNKNOWN_PROPERTY);
- map.put("21", ClientInfoStatus.REASON_UNKNOWN_PROPERTY);
- }
-
- /**
- * Create SQLClientInfoException and setting all objects to null
- */
- @Test
- public void test() {
- SQLClientInfoException e = new SQLClientInfoException(null);
- assertTrue(e.getMessage() == null && e.getSQLState() == null
- && e.getCause() == null && e.getErrorCode() == 0
- && e.getFailedProperties() == null);
- }
-
- /**
- * Create SQLClientInfoException with no-arg constructor
- */
- @Test
- public void test1() {
- SQLClientInfoException ex = new SQLClientInfoException();
- assertTrue(ex.getMessage() == null
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0
- && ex.getFailedProperties() == null);
- }
-
- /**
- * Create SQLClientInfoException with null Throwable
- */
- @Test
- public void test2() {
-
- SQLClientInfoException ex = new SQLClientInfoException(map, null);
- assertTrue(ex.getMessage() == null
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0
- && ex.getFailedProperties().equals(map));
- }
-
- /**
- * Create SQLClientInfoException with message
- */
- @Test
- public void test3() {
- SQLClientInfoException ex = new SQLClientInfoException(reason, map);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0
- && ex.getFailedProperties().equals(map));
- }
-
- /**
- * Create SQLClientInfoException with null Throwable
- */
- @Test
- public void test4() {
- SQLClientInfoException ex = new SQLClientInfoException(reason, map, null);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0
- && ex.getFailedProperties().equals(map));
- }
-
- /**
- * Create SQLClientInfoException with message, and SQLState
- */
- @Test
- public void test5() {
- SQLClientInfoException ex = new SQLClientInfoException(reason, state,
- map);
-
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && ex.getCause() == null
- && ex.getErrorCode() == 0
- && ex.getFailedProperties().equals(map));
- }
-
- /**
- * Create SQLClientInfoException with message, and SQLState
- */
- @Test
- public void test6() {
- SQLClientInfoException ex = new SQLClientInfoException(reason, state,
- map, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0
- && ex.getFailedProperties().equals(map));
- }
-
- /**
- * Create SQLClientInfoException with message, SQLState, errorCode, and
- * Throwable
- */
- @Test
- public void test7() {
- SQLClientInfoException ex = new SQLClientInfoException(reason, state,
- errorCode, map);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && ex.getCause() == null
- && ex.getErrorCode() == errorCode
- && ex.getFailedProperties().equals(map));
- }
-
- /**
- * Create SQLClientInfoException with message, SQLState, and error code
- */
- @Test
- public void test8() {
- SQLClientInfoException ex = new SQLClientInfoException(reason, state,
- errorCode, map, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == errorCode
- && ex.getFailedProperties().equals(map));
- }
-
- /**
- * Serialize a SQLClientInfoException and make sure you can read it back
- * properly
- */
- @Test
- public void test10() throws Exception {
- SQLClientInfoException e = new SQLClientInfoException(reason, state,
- errorCode, map, t);
- SQLClientInfoException ex1 =
- createSerializedException(e);
- assertTrue(reason.equals(ex1.getMessage())
- && ex1.getSQLState().equals(state)
- && cause.equals(ex1.getCause().toString())
- && ex1.getErrorCode() == errorCode
- && ex1.getFailedProperties().equals(map));
- }
-
- /**
- * Validate that the ordering of the returned Exceptions is correct using
- * for-each loop
- */
- @Test
- public void test11() {
- SQLClientInfoException ex = new SQLClientInfoException("Exception 1",
- map, t1);
- SQLClientInfoException ex1 = new SQLClientInfoException("Exception 2",
- map);
- SQLClientInfoException ex2 = new SQLClientInfoException("Exception 3",
- map, t2);
- ex.setNextException(ex1);
- ex.setNextException(ex2);
- int num = 0;
- for (Throwable e : ex) {
- assertTrue(msgs[num++].equals(e.getMessage()));
- }
- }
-
- /**
- * Validate that the ordering of the returned Exceptions is correct using
- * traditional while loop
- */
- @Test
- public void test12() {
- SQLClientInfoException ex = new SQLClientInfoException("Exception 1",
- map, t1);
- SQLClientInfoException ex1 = new SQLClientInfoException("Exception 2",
- map);
- SQLClientInfoException ex2 = new SQLClientInfoException("Exception 3",
- map, t2);
- ex.setNextException(ex1);
- ex.setNextException(ex2);
- int num = 0;
- SQLException sqe = ex;
- while (sqe != null) {
- assertTrue(msgs[num++].equals(sqe.getMessage()));
- Throwable c = sqe.getCause();
- while (c != null) {
- assertTrue(msgs[num++].equals(c.getMessage()));
- c = c.getCause();
- }
- sqe = sqe.getNextException();
- }
- }
-}
--- a/jdk/test/java/sql/test/sql/SQLDataExceptionTests.java Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,215 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package test.sql;
-
-import java.sql.SQLDataException;
-import java.sql.SQLException;
-import java.sql.SQLNonTransientException;
-import static org.testng.Assert.*;
-import org.testng.annotations.Test;
-import util.BaseTest;
-
-public class SQLDataExceptionTests extends BaseTest {
-
- /**
- * Create SQLDataException and setting all objects to null
- */
- @Test
- public void test() {
- SQLDataException e = new SQLDataException(null, null, errorCode, null);
- assertTrue(e.getMessage() == null && e.getSQLState() == null
- && e.getCause() == null && e.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLDataException with no-arg constructor
- */
- @Test
- public void test1() {
- SQLDataException ex = new SQLDataException();
- assertTrue(ex.getMessage() == null
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLDataException with message
- */
- @Test
- public void test2() {
- SQLDataException ex = new SQLDataException(reason);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLDataException with message, and SQLState
- */
- @Test
- public void test3() {
- SQLDataException ex = new SQLDataException(reason, state);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLDataException with message, SQLState, and error code
- */
- @Test
- public void test4() {
- SQLDataException ex = new SQLDataException(reason, state, errorCode);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && ex.getCause() == null
- && ex.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLDataException with message, SQLState, errorCode, and Throwable
- */
- @Test
- public void test5() {
- SQLDataException ex = new SQLDataException(reason, state, errorCode, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLDataException with message, SQLState, and Throwable
- */
- @Test
- public void test6() {
- SQLDataException ex = new SQLDataException(reason, state, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLDataException with message, and Throwable
- */
- @Test
- public void test7() {
- SQLDataException ex = new SQLDataException(reason, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState() == null
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLDataException with null Throwable
- */
- @Test
- public void test8() {
- SQLDataException ex = new SQLDataException((Throwable)null);
- assertTrue(ex.getMessage() == null
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLDataException with Throwable
- */
- @Test
- public void test9() {
- SQLDataException ex = new SQLDataException(t);
- assertTrue(ex.getMessage().equals(cause)
- && ex.getSQLState() == null
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Serialize a SQLDataException and make sure you can read it back properly
- */
- @Test
- public void test10() throws Exception {
- SQLDataException e = new SQLDataException(reason, state, errorCode, t);
- SQLDataException ex1 = createSerializedException(e);
- assertTrue(reason.equals(ex1.getMessage())
- && ex1.getSQLState().equals(state)
- && cause.equals(ex1.getCause().toString())
- && ex1.getErrorCode() == errorCode);
- }
-
- /**
- * Validate that the ordering of the returned Exceptions is correct
- * using for-each loop
- */
- @Test
- public void test11() {
- SQLDataException ex = new SQLDataException("Exception 1", t1);
- SQLDataException ex1 = new SQLDataException("Exception 2");
- SQLDataException ex2 = new SQLDataException("Exception 3", t2);
- ex.setNextException(ex1);
- ex.setNextException(ex2);
- int num = 0;
- for (Throwable e : ex) {
- assertTrue(msgs[num++].equals(e.getMessage()));
- }
- }
-
- /**
- * Validate that the ordering of the returned Exceptions is correct
- * using traditional while loop
- */
- @Test
- public void test12() {
- SQLDataException ex = new SQLDataException("Exception 1", t1);
- SQLDataException ex1 = new SQLDataException("Exception 2");
- SQLDataException ex2 = new SQLDataException("Exception 3", t2);
- ex.setNextException(ex1);
- ex.setNextException(ex2);
- int num = 0;
- SQLException sqe = ex;
- while (sqe != null) {
- assertTrue(msgs[num++].equals(sqe.getMessage()));
- Throwable c = sqe.getCause();
- while (c != null) {
- assertTrue(msgs[num++].equals(c.getMessage()));
- c = c.getCause();
- }
- sqe = sqe.getNextException();
- }
- }
-
- /**
- * Create SQLDataException and validate it is an instance of
- * SQLNonTransientException
- */
- @Test
- public void test13() {
- Exception ex = new SQLDataException();
- assertTrue(ex instanceof SQLNonTransientException);
- }
-}
--- a/jdk/test/java/sql/test/sql/SQLExceptionTests.java Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,202 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package test.sql;
-
-import java.sql.SQLException;
-import static org.testng.Assert.*;
-import org.testng.annotations.Test;
-import util.BaseTest;
-
-public class SQLExceptionTests extends BaseTest {
-
- /**
- * Create SQLException and setting all objects to null
- */
- @Test
- public void test() {
- SQLException e = new SQLException(null, null, errorCode, null);
- assertTrue(e.getMessage() == null && e.getSQLState() == null
- && e.getCause() == null && e.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLException with no-arg constructor
- */
- @Test
- public void test1() {
- SQLException ex = new SQLException();
- assertTrue(ex.getMessage() == null
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLException with message
- */
- @Test
- public void test2() {
- SQLException ex = new SQLException(reason);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLException with message, and SQLState
- */
- @Test
- public void test3() {
- SQLException ex = new SQLException(reason, state);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLException with message, SQLState, and error code
- */
- @Test
- public void test4() {
- SQLException ex = new SQLException(reason, state, errorCode);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && ex.getCause() == null
- && ex.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLException with message, SQLState, errorCode, and Throwable
- */
- @Test
- public void test5() {
- SQLException ex = new SQLException(reason, state, errorCode, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLException with message, SQLState, and Throwable
- */
- @Test
- public void test6() {
- SQLException ex = new SQLException(reason, state, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLException with message, and Throwable
- */
- @Test
- public void test7() {
- SQLException ex = new SQLException(reason, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState() == null
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLException with null Throwable
- */
- @Test
- public void test8() {
- SQLException ex = new SQLException((Throwable)null);
- assertTrue(ex.getMessage() == null
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLException with Throwable
- */
- @Test
- public void test9() {
- SQLException ex = new SQLException(t);
- assertTrue(ex.getMessage().equals(cause)
- && ex.getSQLState() == null
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Serialize a SQLException and make sure you can read it back properly
- */
- @Test
- public void test10() throws Exception {
- SQLException e = new SQLException(reason, state, errorCode, t);
- SQLException ex1 = createSerializedException(e);
- assertTrue(reason.equals(ex1.getMessage())
- && ex1.getSQLState().equals(state)
- && cause.equals(ex1.getCause().toString())
- && ex1.getErrorCode() == errorCode);
- }
-
- /**
- * Validate that the ordering of the returned Exceptions is correct
- * using for-each loop
- */
- @Test
- public void test11() {
- SQLException ex = new SQLException("Exception 1", t1);
- SQLException ex1 = new SQLException("Exception 2");
- SQLException ex2 = new SQLException("Exception 3", t2);
- ex.setNextException(ex1);
- ex.setNextException(ex2);
- int num = 0;
- for (Throwable e : ex) {
- assertTrue(msgs[num++].equals(e.getMessage()));
- }
- }
-
- /**
- * Validate that the ordering of the returned Exceptions is correct
- * using traditional while loop
- */
- @Test
- public void test12() {
- SQLException ex = new SQLException("Exception 1", t1);
- SQLException ex1 = new SQLException("Exception 2");
- SQLException ex2 = new SQLException("Exception 3", t2);
- ex.setNextException(ex1);
- ex.setNextException(ex2);
- int num = 0;
- while (ex != null) {
- assertTrue(msgs[num++].equals(ex.getMessage()));
- Throwable c = ex.getCause();
- while (c != null) {
- assertTrue(msgs[num++].equals(c.getMessage()));
- c = c.getCause();
- }
- ex = ex.getNextException();
- }
- }
-}
--- a/jdk/test/java/sql/test/sql/SQLFeatureNotSupportedExceptionTests.java Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,232 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package test.sql;
-
-import java.sql.SQLException;
-import java.sql.SQLFeatureNotSupportedException;
-import java.sql.SQLNonTransientException;
-import static org.testng.Assert.*;
-import org.testng.annotations.Test;
-import util.BaseTest;
-
-public class SQLFeatureNotSupportedExceptionTests extends BaseTest {
-
- /**
- * Create SQLFeatureNotSupportedException and setting all objects to null
- */
- @Test
- public void test() {
- SQLFeatureNotSupportedException e =
- new SQLFeatureNotSupportedException(null, null, errorCode, null);
- assertTrue(e.getMessage() == null && e.getSQLState() == null
- && e.getCause() == null && e.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLFeatureNotSupportedException with no-arg constructor
- */
- @Test
- public void test1() {
- SQLFeatureNotSupportedException ex = new SQLFeatureNotSupportedException();
- assertTrue(ex.getMessage() == null
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLFeatureNotSupportedException with message
- */
- @Test
- public void test2() {
- SQLFeatureNotSupportedException ex =
- new SQLFeatureNotSupportedException(reason);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLFeatureNotSupportedException with message, and SQLState
- */
- @Test
- public void test3() {
- SQLFeatureNotSupportedException ex =
- new SQLFeatureNotSupportedException(reason, state);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLFeatureNotSupportedException with message, SQLState, and error code
- */
- @Test
- public void test4() {
- SQLFeatureNotSupportedException ex =
- new SQLFeatureNotSupportedException(reason, state, errorCode);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && ex.getCause() == null
- && ex.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLFeatureNotSupportedException with message, SQLState, errorCode, and Throwable
- */
- @Test
- public void test5() {
- SQLFeatureNotSupportedException ex =
- new SQLFeatureNotSupportedException(reason, state, errorCode, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLFeatureNotSupportedException with message, SQLState, and Throwable
- */
- @Test
- public void test6() {
- SQLFeatureNotSupportedException ex =
- new SQLFeatureNotSupportedException(reason, state, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLFeatureNotSupportedException with message, and Throwable
- */
- @Test
- public void test7() {
- SQLFeatureNotSupportedException ex =
- new SQLFeatureNotSupportedException(reason, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState() == null
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLFeatureNotSupportedException with null Throwable
- */
- @Test
- public void test8() {
- SQLFeatureNotSupportedException ex =
- new SQLFeatureNotSupportedException((Throwable) null);
- assertTrue(ex.getMessage() == null
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLFeatureNotSupportedException with Throwable
- */
- @Test
- public void test9() {
- SQLFeatureNotSupportedException ex =
- new SQLFeatureNotSupportedException(t);
- assertTrue(ex.getMessage().equals(cause)
- && ex.getSQLState() == null
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Serialize a SQLFeatureNotSupportedException and make sure you can read it back properly
- */
- @Test
- public void test10() throws Exception {
- SQLFeatureNotSupportedException e =
- new SQLFeatureNotSupportedException(reason, state, errorCode, t);
- SQLFeatureNotSupportedException ex1 =
- createSerializedException(e);
- assertTrue(reason.equals(ex1.getMessage())
- && ex1.getSQLState().equals(state)
- && cause.equals(ex1.getCause().toString())
- && ex1.getErrorCode() == errorCode);
- }
-
- /**
- * Validate that the ordering of the returned Exceptions is correct
- * using for-each loop
- */
- @Test
- public void test11() {
- SQLFeatureNotSupportedException ex =
- new SQLFeatureNotSupportedException("Exception 1", t1);
- SQLFeatureNotSupportedException ex1 =
- new SQLFeatureNotSupportedException("Exception 2");
- SQLFeatureNotSupportedException ex2 =
- new SQLFeatureNotSupportedException("Exception 3", t2);
- ex.setNextException(ex1);
- ex.setNextException(ex2);
- int num = 0;
- for (Throwable e : ex) {
- assertTrue(msgs[num++].equals(e.getMessage()));
- }
- }
-
- /**
- * Validate that the ordering of the returned Exceptions is correct
- * using traditional while loop
- */
- @Test
- public void test12() {
- SQLFeatureNotSupportedException ex =
- new SQLFeatureNotSupportedException("Exception 1", t1);
- SQLFeatureNotSupportedException ex1 =
- new SQLFeatureNotSupportedException("Exception 2");
- SQLFeatureNotSupportedException ex2 =
- new SQLFeatureNotSupportedException("Exception 3", t2);
- ex.setNextException(ex1);
- ex.setNextException(ex2);
- int num = 0;
- SQLException sqe = ex;
- while (sqe != null) {
- assertTrue(msgs[num++].equals(sqe.getMessage()));
- Throwable c = sqe.getCause();
- while (c != null) {
- assertTrue(msgs[num++].equals(c.getMessage()));
- c = c.getCause();
- }
- sqe = sqe.getNextException();
- }
- }
-
- /**
- * Create SQLFeatureNotSupportedException and validate it is an instance of
- * SQLNonTransientException
- */
- @Test
- public void test13() {
- Exception ex = new SQLFeatureNotSupportedException();
- assertTrue(ex instanceof SQLNonTransientException);
- }
-}
--- a/jdk/test/java/sql/test/sql/SQLIntegrityConstraintViolationExceptionTests.java Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,235 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package test.sql;
-
-import java.sql.SQLException;
-import java.sql.SQLIntegrityConstraintViolationException;
-import java.sql.SQLNonTransientException;
-import static org.testng.Assert.*;
-import org.testng.annotations.Test;
-import util.BaseTest;
-
-public class SQLIntegrityConstraintViolationExceptionTests extends BaseTest {
-
- /**
- * Create SQLIntegrityConstraintViolationException and setting all objects to null
- */
- @Test
- public void test() {
- SQLIntegrityConstraintViolationException e =
- new SQLIntegrityConstraintViolationException(null,
- null, errorCode, null);
- assertTrue(e.getMessage() == null && e.getSQLState() == null
- && e.getCause() == null && e.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLIntegrityConstraintViolationException with no-arg constructor
- */
- @Test
- public void test1() {
- SQLIntegrityConstraintViolationException ex =
- new SQLIntegrityConstraintViolationException();
- assertTrue(ex.getMessage() == null
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLIntegrityConstraintViolationException with message
- */
- @Test
- public void test2() {
- SQLIntegrityConstraintViolationException ex =
- new SQLIntegrityConstraintViolationException(reason);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLIntegrityConstraintViolationException with message, and SQLState
- */
- @Test
- public void test3() {
- SQLIntegrityConstraintViolationException ex =
- new SQLIntegrityConstraintViolationException(reason, state);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLIntegrityConstraintViolationException with message, SQLState, and error code
- */
- @Test
- public void test4() {
- SQLIntegrityConstraintViolationException ex =
- new SQLIntegrityConstraintViolationException(reason, state, errorCode);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && ex.getCause() == null
- && ex.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLIntegrityConstraintViolationException with message, SQLState, errorCode, and Throwable
- */
- @Test
- public void test5() {
- SQLIntegrityConstraintViolationException ex =
- new SQLIntegrityConstraintViolationException(reason, state, errorCode, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLIntegrityConstraintViolationException with message, SQLState, and Throwable
- */
- @Test
- public void test6() {
- SQLIntegrityConstraintViolationException ex =
- new SQLIntegrityConstraintViolationException(reason, state, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLIntegrityConstraintViolationException with message, and Throwable
- */
- @Test
- public void test7() {
- SQLIntegrityConstraintViolationException ex =
- new SQLIntegrityConstraintViolationException(reason, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState() == null
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLIntegrityConstraintViolationException with null Throwable
- */
- @Test
- public void test8() {
- SQLIntegrityConstraintViolationException ex =
- new SQLIntegrityConstraintViolationException((Throwable)null);
- assertTrue(ex.getMessage() == null
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLIntegrityConstraintViolationException with Throwable
- */
- @Test
- public void test9() {
- SQLIntegrityConstraintViolationException ex =
- new SQLIntegrityConstraintViolationException(t);
- assertTrue(ex.getMessage().equals(cause)
- && ex.getSQLState() == null
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Serialize a SQLIntegrityConstraintViolationException and make sure
- * you can read it back properly
- */
- @Test
- public void test10() throws Exception {
- SQLIntegrityConstraintViolationException e =
- new SQLIntegrityConstraintViolationException(reason, state, errorCode, t);
- SQLIntegrityConstraintViolationException ex1 =
- createSerializedException(e);
- assertTrue(reason.equals(ex1.getMessage())
- && ex1.getSQLState().equals(state)
- && cause.equals(ex1.getCause().toString())
- && ex1.getErrorCode() == errorCode);
- }
-
- /**
- * Validate that the ordering of the returned Exceptions is correct
- * using for-each loop
- */
- @Test
- public void test11() {
- SQLIntegrityConstraintViolationException ex =
- new SQLIntegrityConstraintViolationException("Exception 1", t1);
- SQLIntegrityConstraintViolationException ex1 =
- new SQLIntegrityConstraintViolationException("Exception 2");
- SQLIntegrityConstraintViolationException ex2 =
- new SQLIntegrityConstraintViolationException("Exception 3", t2);
- ex.setNextException(ex1);
- ex.setNextException(ex2);
- int num = 0;
- for (Throwable e : ex) {
- assertTrue(msgs[num++].equals(e.getMessage()));
- }
- }
-
- /**
- * Validate that the ordering of the returned Exceptions is correct
- * using traditional while loop
- */
- @Test
- public void test12() {
- SQLIntegrityConstraintViolationException ex =
- new SQLIntegrityConstraintViolationException("Exception 1", t1);
- SQLIntegrityConstraintViolationException ex1 =
- new SQLIntegrityConstraintViolationException("Exception 2");
- SQLIntegrityConstraintViolationException ex2 =
- new SQLIntegrityConstraintViolationException("Exception 3", t2);
- ex.setNextException(ex1);
- ex.setNextException(ex2);
- int num = 0;
- SQLException sqe = ex;
- while (sqe != null) {
- assertTrue(msgs[num++].equals(sqe.getMessage()));
- Throwable c = sqe.getCause();
- while (c != null) {
- assertTrue(msgs[num++].equals(c.getMessage()));
- c = c.getCause();
- }
- sqe = sqe.getNextException();
- }
- }
-
- /**
- * Create SQLIntegrityConstraintViolationException and validate it is an instance of
- * SQLNonTransientException
- */
- @Test
- public void test13() {
- Exception ex = new SQLIntegrityConstraintViolationException();
- assertTrue(ex instanceof SQLNonTransientException);
- }
-}
--- a/jdk/test/java/sql/test/sql/SQLInvalidAuthorizationSpecExceptionTests.java Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,239 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package test.sql;
-
-import java.sql.SQLException;
-import java.sql.SQLInvalidAuthorizationSpecException;
-import java.sql.SQLNonTransientException;
-import static org.testng.Assert.*;
-import org.testng.annotations.Test;
-import util.BaseTest;
-
-public class SQLInvalidAuthorizationSpecExceptionTests extends BaseTest {
-
- /**
- * Create SQLInvalidAuthorizationSpecException and setting all objects to
- * null
- */
- @Test
- public void test() {
- SQLInvalidAuthorizationSpecException e
- = new SQLInvalidAuthorizationSpecException(null,
- null, errorCode, null);
- assertTrue(e.getMessage() == null && e.getSQLState() == null
- && e.getCause() == null && e.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLInvalidAuthorizationSpecException with no-arg constructor
- */
- @Test
- public void test1() {
- SQLInvalidAuthorizationSpecException ex
- = new SQLInvalidAuthorizationSpecException();
- assertTrue(ex.getMessage() == null
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLInvalidAuthorizationSpecException with message
- */
- @Test
- public void test2() {
- SQLInvalidAuthorizationSpecException ex
- = new SQLInvalidAuthorizationSpecException(reason);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLInvalidAuthorizationSpecException with message, and SQLState
- */
- @Test
- public void test3() {
- SQLInvalidAuthorizationSpecException ex
- = new SQLInvalidAuthorizationSpecException(reason, state);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLInvalidAuthorizationSpecException with message, SQLState, and
- * error code
- */
- @Test
- public void test4() {
- SQLInvalidAuthorizationSpecException ex
- = new SQLInvalidAuthorizationSpecException(reason, state, errorCode);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && ex.getCause() == null
- && ex.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLInvalidAuthorizationSpecException with message, SQLState,
- * errorCode, and Throwable
- */
- @Test
- public void test5() {
- SQLInvalidAuthorizationSpecException ex
- = new SQLInvalidAuthorizationSpecException(reason, state, errorCode, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLInvalidAuthorizationSpecException with message, SQLState, and
- * Throwable
- */
- @Test
- public void test6() {
- SQLInvalidAuthorizationSpecException ex
- = new SQLInvalidAuthorizationSpecException(reason, state, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLInvalidAuthorizationSpecException with message, and Throwable
- */
- @Test
- public void test7() {
- SQLInvalidAuthorizationSpecException ex
- = new SQLInvalidAuthorizationSpecException(reason, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState() == null
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLInvalidAuthorizationSpecException with null Throwable
- */
- @Test
- public void test8() {
- SQLInvalidAuthorizationSpecException ex
- = new SQLInvalidAuthorizationSpecException((Throwable) null);
- assertTrue(ex.getMessage() == null
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLInvalidAuthorizationSpecException with Throwable
- */
- @Test
- public void test9() {
- SQLInvalidAuthorizationSpecException ex
- = new SQLInvalidAuthorizationSpecException(t);
- assertTrue(ex.getMessage().equals(cause)
- && ex.getSQLState() == null
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Serialize a SQLInvalidAuthorizationSpecException and make sure you can
- * read it back properly
- */
- @Test
- public void test10() throws Exception {
- SQLInvalidAuthorizationSpecException e
- = new SQLInvalidAuthorizationSpecException(reason, state, errorCode, t);
- SQLInvalidAuthorizationSpecException ex1 =
- createSerializedException(e);
- assertTrue(reason.equals(ex1.getMessage())
- && ex1.getSQLState().equals(state)
- && cause.equals(ex1.getCause().toString())
- && ex1.getErrorCode() == errorCode);
- }
-
- /**
- * Validate that the ordering of the returned Exceptions is correct using
- * for-each loop
- */
- @Test
- public void test11() {
- SQLInvalidAuthorizationSpecException ex
- = new SQLInvalidAuthorizationSpecException("Exception 1", t1);
- SQLInvalidAuthorizationSpecException ex1
- = new SQLInvalidAuthorizationSpecException("Exception 2");
- SQLInvalidAuthorizationSpecException ex2
- = new SQLInvalidAuthorizationSpecException("Exception 3", t2);
- ex.setNextException(ex1);
- ex.setNextException(ex2);
- int num = 0;
- for (Throwable e : ex) {
- assertTrue(msgs[num++].equals(e.getMessage()));
- }
- }
-
- /**
- * Validate that the ordering of the returned Exceptions is correct using
- * traditional while loop
- */
- @Test
- public void test12() {
- SQLInvalidAuthorizationSpecException ex
- = new SQLInvalidAuthorizationSpecException("Exception 1", t1);
- SQLInvalidAuthorizationSpecException ex1
- = new SQLInvalidAuthorizationSpecException("Exception 2");
- SQLInvalidAuthorizationSpecException ex2
- = new SQLInvalidAuthorizationSpecException("Exception 3", t2);
- ex.setNextException(ex1);
- ex.setNextException(ex2);
- int num = 0;
- SQLException sqe = ex;
- while (sqe != null) {
- assertTrue(msgs[num++].equals(sqe.getMessage()));
- Throwable c = sqe.getCause();
- while (c != null) {
- assertTrue(msgs[num++].equals(c.getMessage()));
- c = c.getCause();
- }
- sqe = sqe.getNextException();
- }
- }
-
- /**
- * Create SQLInvalidAuthorizationSpecException and validate it is an
- * instance of SQLNonTransientException
- */
- @Test
- public void test13() {
- Exception ex = new SQLInvalidAuthorizationSpecException();
- assertTrue(ex instanceof SQLNonTransientException);
- }
-}
--- a/jdk/test/java/sql/test/sql/SQLNonTransientConnectionExceptionTests.java Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,235 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package test.sql;
-
-import java.sql.SQLException;
-import java.sql.SQLNonTransientConnectionException;
-import java.sql.SQLNonTransientException;
-import static org.testng.Assert.*;
-import org.testng.annotations.Test;
-import util.BaseTest;
-
-public class SQLNonTransientConnectionExceptionTests extends BaseTest {
-
- /**
- * Create SQLNonTransientConnectionException and setting all objects to null
- */
- @Test
- public void test() {
- SQLNonTransientConnectionException e =
- new SQLNonTransientConnectionException(null,
- null, errorCode, null);
- assertTrue(e.getMessage() == null && e.getSQLState() == null
- && e.getCause() == null && e.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLNonTransientConnectionException with no-arg constructor
- */
- @Test
- public void test1() {
- SQLNonTransientConnectionException ex =
- new SQLNonTransientConnectionException();
- assertTrue(ex.getMessage() == null
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLNonTransientConnectionException with message
- */
- @Test
- public void test2() {
- SQLNonTransientConnectionException ex =
- new SQLNonTransientConnectionException(reason);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLNonTransientConnectionException with message, and SQLState
- */
- @Test
- public void test3() {
- SQLNonTransientConnectionException ex =
- new SQLNonTransientConnectionException(reason, state);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLNonTransientConnectionException with message, SQLState, and error code
- */
- @Test
- public void test4() {
- SQLNonTransientConnectionException ex =
- new SQLNonTransientConnectionException(reason, state, errorCode);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && ex.getCause() == null
- && ex.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLNonTransientConnectionException with message, SQLState, errorCode, and Throwable
- */
- @Test
- public void test5() {
- SQLNonTransientConnectionException ex =
- new SQLNonTransientConnectionException(reason, state, errorCode, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLNonTransientConnectionException with message, SQLState, and Throwable
- */
- @Test
- public void test6() {
- SQLNonTransientConnectionException ex =
- new SQLNonTransientConnectionException(reason, state, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLNonTransientConnectionException with message, and Throwable
- */
- @Test
- public void test7() {
- SQLNonTransientConnectionException ex =
- new SQLNonTransientConnectionException(reason, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState() == null
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLNonTransientConnectionException with null Throwable
- */
- @Test
- public void test8() {
- SQLNonTransientConnectionException ex =
- new SQLNonTransientConnectionException((Throwable)null);
- assertTrue(ex.getMessage() == null
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLNonTransientConnectionException with Throwable
- */
- @Test
- public void test9() {
- SQLNonTransientConnectionException ex =
- new SQLNonTransientConnectionException(t);
- assertTrue(ex.getMessage().equals(cause)
- && ex.getSQLState() == null
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Serialize a SQLNonTransientConnectionException and make sure you can
- * read it back properly
- */
- @Test
- public void test10() throws Exception {
- SQLNonTransientConnectionException e =
- new SQLNonTransientConnectionException(reason, state, errorCode, t);
- SQLNonTransientConnectionException ex1 =
- createSerializedException(e);
- assertTrue(reason.equals(ex1.getMessage())
- && ex1.getSQLState().equals(state)
- && cause.equals(ex1.getCause().toString())
- && ex1.getErrorCode() == errorCode);
- }
-
- /**
- * Validate that the ordering of the returned Exceptions is correct
- * using for-each loop
- */
- @Test
- public void test11() {
- SQLNonTransientConnectionException ex =
- new SQLNonTransientConnectionException("Exception 1", t1);
- SQLNonTransientConnectionException ex1 =
- new SQLNonTransientConnectionException("Exception 2");
- SQLNonTransientConnectionException ex2 =
- new SQLNonTransientConnectionException("Exception 3", t2);
- ex.setNextException(ex1);
- ex.setNextException(ex2);
- int num = 0;
- for (Throwable e : ex) {
- assertTrue(msgs[num++].equals(e.getMessage()));
- }
- }
-
- /**
- * Validate that the ordering of the returned Exceptions is correct
- * using traditional while loop
- */
- @Test
- public void test12() {
- SQLNonTransientConnectionException ex =
- new SQLNonTransientConnectionException("Exception 1", t1);
- SQLNonTransientConnectionException ex1 =
- new SQLNonTransientConnectionException("Exception 2");
- SQLNonTransientConnectionException ex2 =
- new SQLNonTransientConnectionException("Exception 3", t2);
- ex.setNextException(ex1);
- ex.setNextException(ex2);
- int num = 0;
- SQLException sqe = ex;
- while (sqe != null) {
- assertTrue(msgs[num++].equals(sqe.getMessage()));
- Throwable c = sqe.getCause();
- while (c != null) {
- assertTrue(msgs[num++].equals(c.getMessage()));
- c = c.getCause();
- }
- sqe = sqe.getNextException();
- }
- }
-
- /**
- * Create SQLNonTransientConnectionException and validate it is an instance of
- * SQLNonTransientException
- */
- @Test
- public void test13() {
- Exception ex = new SQLNonTransientConnectionException();
- assertTrue(ex instanceof SQLNonTransientException);
- }
-}
--- a/jdk/test/java/sql/test/sql/SQLNonTransientExceptionTests.java Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,209 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package test.sql;
-
-import java.sql.SQLException;
-import java.sql.SQLNonTransientException;
-import static org.testng.Assert.*;
-import org.testng.annotations.Test;
-import util.BaseTest;
-
-public class SQLNonTransientExceptionTests extends BaseTest {
-
- /**
- * Create SQLNonTransientException and setting all objects to null
- */
- @Test
- public void test() {
- SQLNonTransientException e = new SQLNonTransientException(null,
- null, errorCode, null);
- assertTrue(e.getMessage() == null && e.getSQLState() == null
- && e.getCause() == null && e.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLNonTransientException with no-arg constructor
- */
- @Test
- public void test1() {
- SQLNonTransientException ex = new SQLNonTransientException();
- assertTrue(ex.getMessage() == null
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLNonTransientException with message
- */
- @Test
- public void test2() {
- SQLNonTransientException ex = new SQLNonTransientException(reason);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLNonTransientException with message, and SQLState
- */
- @Test
- public void test3() {
- SQLNonTransientException ex = new SQLNonTransientException(reason, state);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLNonTransientException with message, SQLState, and error code
- */
- @Test
- public void test4() {;
- SQLNonTransientException ex =
- new SQLNonTransientException(reason, state, errorCode);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && ex.getCause() == null
- && ex.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLNonTransientException with message, SQLState, errorCode, and Throwable
- */
- @Test
- public void test5() {
- SQLNonTransientException ex =
- new SQLNonTransientException(reason, state, errorCode, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLNonTransientException with message, SQLState, and Throwable
- */
- @Test
- public void test6() {
- SQLNonTransientException ex = new SQLNonTransientException(reason, state, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLNonTransientException with message, and Throwable
- */
- @Test
- public void test7() {
- SQLNonTransientException ex = new SQLNonTransientException(reason, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState() == null
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLNonTransientException with null Throwable
- */
- @Test
- public void test8() {
- SQLNonTransientException ex = new SQLNonTransientException((Throwable)null);
- assertTrue(ex.getMessage() == null
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLNonTransientException with Throwable
- */
- @Test
- public void test9() {
- SQLNonTransientException ex = new SQLNonTransientException(t);
- assertTrue(ex.getMessage().equals(cause)
- && ex.getSQLState() == null
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Serialize a SQLNonTransientException and make sure you can read it back properly
- */
- @Test
- public void test10() throws Exception {
- SQLNonTransientException e =
- new SQLNonTransientException(reason, state, errorCode, t);
- SQLNonTransientException ex1 =
- createSerializedException(e);
- assertTrue(reason.equals(ex1.getMessage())
- && ex1.getSQLState().equals(state)
- && cause.equals(ex1.getCause().toString())
- && ex1.getErrorCode() == errorCode);
- }
-
- /**
- * Validate that the ordering of the returned Exceptions is correct
- * using for-each loop
- */
- @Test
- public void test11() {
- SQLNonTransientException ex = new SQLNonTransientException("Exception 1", t1);
- SQLNonTransientException ex1 = new SQLNonTransientException("Exception 2");
- SQLNonTransientException ex2 = new SQLNonTransientException("Exception 3", t2);
- ex.setNextException(ex1);
- ex.setNextException(ex2);
- int num = 0;
- for (Throwable e : ex) {
- assertTrue(msgs[num++].equals(e.getMessage()));
- }
- }
-
- /**
- * Validate that the ordering of the returned Exceptions is correct
- * using traditional while loop
- */
- @Test
- public void test12() {
- SQLNonTransientException ex = new SQLNonTransientException("Exception 1", t1);
- SQLNonTransientException ex1 = new SQLNonTransientException("Exception 2");
- SQLNonTransientException ex2 = new SQLNonTransientException("Exception 3", t2);
- ex.setNextException(ex1);
- ex.setNextException(ex2);
- int num = 0;
- SQLException sqe = ex;
- while (sqe != null) {
- assertTrue(msgs[num++].equals(sqe.getMessage()));
- Throwable c = sqe.getCause();
- while (c != null) {
- assertTrue(msgs[num++].equals(c.getMessage()));
- c = c.getCause();
- }
- sqe = sqe.getNextException();
- }
- }
-}
--- a/jdk/test/java/sql/test/sql/SQLRecoverableExceptionTests.java Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,209 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package test.sql;
-
-import java.sql.SQLException;
-import java.sql.SQLRecoverableException;
-import static org.testng.Assert.*;
-import org.testng.annotations.Test;
-import util.BaseTest;
-
-public class SQLRecoverableExceptionTests extends BaseTest {
-
- /**
- * Create SQLRecoverableException and setting all objects to null
- */
- @Test
- public void test() {
- SQLRecoverableException e = new SQLRecoverableException(null,
- null, errorCode, null);
- assertTrue(e.getMessage() == null && e.getSQLState() == null
- && e.getCause() == null && e.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLRecoverableException with no-arg constructor
- */
- @Test
- public void test1() {
- SQLRecoverableException ex = new SQLRecoverableException();
- assertTrue(ex.getMessage() == null
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLRecoverableException with message
- */
- @Test
- public void test2() {
- SQLRecoverableException ex = new SQLRecoverableException(reason);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLRecoverableException with message, and SQLState
- */
- @Test
- public void test3() {
- SQLRecoverableException ex = new SQLRecoverableException(reason, state);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLRecoverableException with message, SQLState, and error code
- */
- @Test
- public void test4() {
- SQLRecoverableException ex =
- new SQLRecoverableException(reason, state, errorCode);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && ex.getCause() == null
- && ex.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLRecoverableException with message, SQLState, errorCode, and Throwable
- */
- @Test
- public void test5() {
- SQLRecoverableException ex =
- new SQLRecoverableException(reason, state, errorCode, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLRecoverableException with message, SQLState, and Throwable
- */
- @Test
- public void test6() {
- SQLRecoverableException ex = new SQLRecoverableException(reason, state, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLRecoverableException with message, and Throwable
- */
- @Test
- public void test7() {
- SQLRecoverableException ex = new SQLRecoverableException(reason, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState() == null
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLRecoverableException with null Throwable
- */
- @Test
- public void test8() {
- SQLRecoverableException ex = new SQLRecoverableException((Throwable)null);
- assertTrue(ex.getMessage() == null
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLRecoverableException with Throwable
- */
- @Test
- public void test9() {
- SQLRecoverableException ex = new SQLRecoverableException(t);
- assertTrue(ex.getMessage().equals(cause)
- && ex.getSQLState() == null
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Serialize a SQLRecoverableException and make sure you can read it back properly
- */
- @Test
- public void test10() throws Exception {
- SQLRecoverableException e =
- new SQLRecoverableException(reason, state, errorCode, t);
- SQLRecoverableException ex1 =
- createSerializedException(e);
- assertTrue(reason.equals(ex1.getMessage())
- && ex1.getSQLState().equals(state)
- && cause.equals(ex1.getCause().toString())
- && ex1.getErrorCode() == errorCode);
- }
-
- /**
- * Validate that the ordering of the returned Exceptions is correct
- * using for-each loop
- */
- @Test
- public void test11() {
- SQLRecoverableException ex = new SQLRecoverableException("Exception 1", t1);
- SQLRecoverableException ex1 = new SQLRecoverableException("Exception 2");
- SQLRecoverableException ex2 = new SQLRecoverableException("Exception 3", t2);
- ex.setNextException(ex1);
- ex.setNextException(ex2);
- int num = 0;
- for (Throwable e : ex) {
- assertTrue(msgs[num++].equals(e.getMessage()));
- }
- }
-
- /**
- * Validate that the ordering of the returned Exceptions is correct
- * using traditional while loop
- */
- @Test
- public void test12() {
- SQLRecoverableException ex = new SQLRecoverableException("Exception 1", t1);
- SQLRecoverableException ex1 = new SQLRecoverableException("Exception 2");
- SQLRecoverableException ex2 = new SQLRecoverableException("Exception 3", t2);
- ex.setNextException(ex1);
- ex.setNextException(ex2);
- int num = 0;
- SQLException sqe = ex;
- while (sqe != null) {
- assertTrue(msgs[num++].equals(sqe.getMessage()));
- Throwable c = sqe.getCause();
- while (c != null) {
- assertTrue(msgs[num++].equals(c.getMessage()));
- c = c.getCause();
- }
- sqe = sqe.getNextException();
- }
- }
-}
--- a/jdk/test/java/sql/test/sql/SQLSyntaxErrorExceptionTests.java Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,221 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package test.sql;
-
-import java.sql.SQLException;
-import java.sql.SQLNonTransientException;
-import java.sql.SQLSyntaxErrorException;
-import static org.testng.Assert.*;
-import org.testng.annotations.Test;
-import util.BaseTest;
-
-public class SQLSyntaxErrorExceptionTests extends BaseTest {
-
- /**
- * Create SQLSyntaxErrorException and setting all objects to null
- */
- @Test
- public void test() {
- SQLSyntaxErrorException e = new SQLSyntaxErrorException(null,
- null, errorCode, null);
- assertTrue(e.getMessage() == null && e.getSQLState() == null
- && e.getCause() == null && e.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLSyntaxErrorException with no-arg constructor
- */
- @Test
- public void test1() {
- SQLSyntaxErrorException ex = new SQLSyntaxErrorException();
- assertTrue(ex.getMessage() == null
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLSyntaxErrorException with message
- */
- @Test
- public void test2() {
- SQLSyntaxErrorException ex = new SQLSyntaxErrorException(reason);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLSyntaxErrorException with message, and SQLState
- */
- @Test
- public void test3() {
- SQLSyntaxErrorException ex = new SQLSyntaxErrorException(reason, state);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLSyntaxErrorException with message, SQLState, and error code
- */
- @Test
- public void test4() {
- SQLSyntaxErrorException ex =
- new SQLSyntaxErrorException(reason, state, errorCode);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && ex.getCause() == null
- && ex.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLSyntaxErrorException with message, SQLState, errorCode, and Throwable
- */
- @Test
- public void test5() {
- SQLSyntaxErrorException ex =
- new SQLSyntaxErrorException(reason, state, errorCode, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLSyntaxErrorException with message, SQLState, and Throwable
- */
- @Test
- public void test6() {
- SQLSyntaxErrorException ex = new SQLSyntaxErrorException(reason, state, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLSyntaxErrorException with message, and Throwable
- */
- @Test
- public void test7() {
- SQLSyntaxErrorException ex = new SQLSyntaxErrorException(reason, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState() == null
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLSyntaxErrorException with null Throwable
- */
- @Test
- public void test8() {
- SQLSyntaxErrorException ex = new SQLSyntaxErrorException((Throwable)null);
- assertTrue(ex.getMessage() == null
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLSyntaxErrorException with Throwable
- */
- @Test
- public void test9() {
- SQLSyntaxErrorException ex = new SQLSyntaxErrorException(t);
- assertTrue(ex.getMessage().equals(cause)
- && ex.getSQLState() == null
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Serialize a SQLSyntaxErrorException and make sure you can read it back properly
- */
- @Test
- public void test10() throws Exception {
-
- SQLSyntaxErrorException e =
- new SQLSyntaxErrorException(reason, state, errorCode, t);
- SQLSyntaxErrorException ex1 =
- createSerializedException(e);
- assertTrue(reason.equals(ex1.getMessage())
- && ex1.getSQLState().equals(state)
- && cause.equals(ex1.getCause().toString())
- && ex1.getErrorCode() == errorCode);
- }
-
- /**
- * Validate that the ordering of the returned Exceptions is correct
- * using for-each loop
- */
- @Test
- public void test11() {
- SQLSyntaxErrorException ex = new SQLSyntaxErrorException("Exception 1", t1);
- SQLSyntaxErrorException ex1 = new SQLSyntaxErrorException("Exception 2");
- SQLSyntaxErrorException ex2 = new SQLSyntaxErrorException("Exception 3", t2);
- ex.setNextException(ex1);
- ex.setNextException(ex2);
- int num = 0;
- for (Throwable e : ex) {
- assertTrue(msgs[num++].equals(e.getMessage()));
- }
- }
-
- /**
- * Validate that the ordering of the returned Exceptions is correct
- * using traditional while loop
- */
- @Test
- public void test12() {
- SQLSyntaxErrorException ex = new SQLSyntaxErrorException("Exception 1", t1);
- SQLSyntaxErrorException ex1 = new SQLSyntaxErrorException("Exception 2");
- SQLSyntaxErrorException ex2 = new SQLSyntaxErrorException("Exception 3", t2);
- ex.setNextException(ex1);
- ex.setNextException(ex2);
- int num = 0;
- SQLException sqe = ex;
- while (sqe != null) {
- assertTrue(msgs[num++].equals(sqe.getMessage()));
- Throwable c = sqe.getCause();
- while (c != null) {
- assertTrue(msgs[num++].equals(c.getMessage()));
- c = c.getCause();
- }
- sqe = sqe.getNextException();
- }
- }
-
- /**
- * Create SQLSyntaxErrorException and validate it is an instance of
- * SQLNonTransientException
- */
- @Test
- public void test13() {
- Exception ex = new SQLSyntaxErrorException();
- assertTrue(ex instanceof SQLNonTransientException);
- }
-}
--- a/jdk/test/java/sql/test/sql/SQLTimeoutExceptionTests.java Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,218 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package test.sql;
-
-import java.sql.SQLException;
-import java.sql.SQLTimeoutException;
-import java.sql.SQLTransientException;
-import static org.testng.Assert.*;
-import org.testng.annotations.Test;
-import util.BaseTest;
-
-public class SQLTimeoutExceptionTests extends BaseTest {
-
- /**
- * Create SQLTimeoutException and setting all objects to null
- */
- @Test
- public void test() {
- SQLTimeoutException e = new SQLTimeoutException(null,
- null, errorCode, null);
- assertTrue(e.getMessage() == null && e.getSQLState() == null
- && e.getCause() == null && e.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLTimeoutException with no-arg constructor
- */
- @Test
- public void test1() {
- SQLTimeoutException ex = new SQLTimeoutException();
- assertTrue(ex.getMessage() == null
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLTimeoutException with message
- */
- @Test
- public void test2() {
- SQLTimeoutException ex = new SQLTimeoutException(reason);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLTimeoutException with message, and SQLState
- */
- @Test
- public void test3() {
- SQLTimeoutException ex = new SQLTimeoutException(reason, state);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLTimeoutException with message, SQLState, and error code
- */
- @Test
- public void test4() {
- SQLTimeoutException ex = new SQLTimeoutException(reason, state, errorCode);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && ex.getCause() == null
- && ex.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLTimeoutException with message, SQLState, errorCode, and Throwable
- */
- @Test
- public void test5() {
- SQLTimeoutException ex = new SQLTimeoutException(reason, state, errorCode, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLTimeoutException with message, SQLState, and Throwable
- */
- @Test
- public void test6() {
- SQLTimeoutException ex = new SQLTimeoutException(reason, state, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLTimeoutException with message, and Throwable
- */
- @Test
- public void test7() {
- SQLTimeoutException ex = new SQLTimeoutException(reason, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState() == null
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLTimeoutException with null Throwable
- */
- @Test
- public void test8() {
- SQLTimeoutException ex = new SQLTimeoutException((Throwable)null);
- assertTrue(ex.getMessage() == null
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLTimeoutException with Throwable
- */
- @Test
- public void test9() {
- SQLTimeoutException ex = new SQLTimeoutException(t);
- assertTrue(ex.getMessage().equals(cause)
- && ex.getSQLState() == null
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Serialize a SQLTimeoutException and make sure you can read it back properly
- */
- @Test
- public void test10() throws Exception {
- SQLTimeoutException e =
- new SQLTimeoutException(reason, state, errorCode, t);
- SQLTimeoutException ex1 =
- createSerializedException(e);
- assertTrue(reason.equals(ex1.getMessage())
- && ex1.getSQLState().equals(state)
- && cause.equals(ex1.getCause().toString())
- && ex1.getErrorCode() == errorCode);
- }
-
- /**
- * Validate that the ordering of the returned Exceptions is correct
- * using for-each loop
- */
- @Test
- public void test11() {
- SQLTimeoutException ex = new SQLTimeoutException("Exception 1", t1);
- SQLTimeoutException ex1 = new SQLTimeoutException("Exception 2");
- SQLTimeoutException ex2 = new SQLTimeoutException("Exception 3", t2);
- ex.setNextException(ex1);
- ex.setNextException(ex2);
- int num = 0;
- for (Throwable e : ex) {
- assertTrue(msgs[num++].equals(e.getMessage()));
- }
- }
-
- /**
- * Validate that the ordering of the returned Exceptions is correct
- * using traditional while loop
- */
- @Test
- public void test12() {
- SQLTimeoutException ex = new SQLTimeoutException("Exception 1", t1);
- SQLTimeoutException ex1 = new SQLTimeoutException("Exception 2");
- SQLTimeoutException ex2 = new SQLTimeoutException("Exception 3", t2);
- ex.setNextException(ex1);
- ex.setNextException(ex2);
- int num = 0;
- SQLException sqe = ex;
- while (sqe != null) {
- assertTrue(msgs[num++].equals(sqe.getMessage()));
- Throwable c = sqe.getCause();
- while (c != null) {
- assertTrue(msgs[num++].equals(c.getMessage()));
- c = c.getCause();
- }
- sqe = sqe.getNextException();
- }
- }
-
- /**
- * Create SQLTimeoutException and validate it is an instance of
- * SQLNonTransientException
- */
- @Test
- public void test13() {
- Exception ex = new SQLTimeoutException();
- assertTrue(ex instanceof SQLTransientException);
- }
-}
--- a/jdk/test/java/sql/test/sql/SQLTransactionRollbackExceptionTests.java Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,233 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package test.sql;
-
-import java.sql.SQLException;
-import java.sql.SQLTransactionRollbackException;
-import java.sql.SQLTransientException;
-import static org.testng.Assert.*;
-import org.testng.annotations.Test;
-import util.BaseTest;
-
-public class SQLTransactionRollbackExceptionTests extends BaseTest {
-
- /**
- * Create SQLTransactionRollbackException and setting all objects to null
- */
- @Test
- public void test() {
- SQLTransactionRollbackException e =
- new SQLTransactionRollbackException(null,
- null, errorCode, null);
- assertTrue(e.getMessage() == null && e.getSQLState() == null
- && e.getCause() == null && e.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLTransactionRollbackException with no-arg constructor
- */
- @Test
- public void test1() {
- SQLTransactionRollbackException ex = new SQLTransactionRollbackException();
- assertTrue(ex.getMessage() == null
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLTransactionRollbackException with message
- */
- @Test
- public void test2() {
- SQLTransactionRollbackException ex =
- new SQLTransactionRollbackException(reason);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLTransactionRollbackException with message, and SQLState
- */
- @Test
- public void test3() {
- SQLTransactionRollbackException ex =
- new SQLTransactionRollbackException(reason, state);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLTransactionRollbackException with message, SQLState, and error code
- */
- @Test
- public void test4() {
- SQLTransactionRollbackException ex =
- new SQLTransactionRollbackException(reason, state, errorCode);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && ex.getCause() == null
- && ex.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLTransactionRollbackException with message, SQLState, errorCode, and Throwable
- */
- @Test
- public void test5() {
- SQLTransactionRollbackException ex =
- new SQLTransactionRollbackException(reason, state, errorCode, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLTransactionRollbackException with message, SQLState, and Throwable
- */
- @Test
- public void test6() {
- SQLTransactionRollbackException ex =
- new SQLTransactionRollbackException(reason, state, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLTransactionRollbackException with message, and Throwable
- */
- @Test
- public void test7() {
- SQLTransactionRollbackException ex =
- new SQLTransactionRollbackException(reason, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState() == null
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLTransactionRollbackException with null Throwable
- */
- @Test
- public void test8() {
- SQLTransactionRollbackException ex =
- new SQLTransactionRollbackException((Throwable)null);
- assertTrue(ex.getMessage() == null
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLTransactionRollbackException with Throwable
- */
- @Test
- public void test9() {
- SQLTransactionRollbackException ex =
- new SQLTransactionRollbackException(t);
- assertTrue(ex.getMessage().equals(cause)
- && ex.getSQLState() == null
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Serialize a SQLTransactionRollbackException and make sure you can read it back properly
- */
- @Test
- public void test10() throws Exception {
- SQLTransactionRollbackException e =
- new SQLTransactionRollbackException(reason, state, errorCode, t);
- SQLTransactionRollbackException ex1 =
- createSerializedException(e);
- assertTrue(reason.equals(ex1.getMessage())
- && ex1.getSQLState().equals(state)
- && cause.equals(ex1.getCause().toString())
- && ex1.getErrorCode() == errorCode);
- }
-
- /**
- * Validate that the ordering of the returned Exceptions is correct
- * using for-each loop
- */
- @Test
- public void test11() {
- SQLTransactionRollbackException ex =
- new SQLTransactionRollbackException("Exception 1", t1);
- SQLTransactionRollbackException ex1 =
- new SQLTransactionRollbackException("Exception 2");
- SQLTransactionRollbackException ex2 =
- new SQLTransactionRollbackException("Exception 3", t2);
- ex.setNextException(ex1);
- ex.setNextException(ex2);
- int num = 0;
- for (Throwable e : ex) {
- assertTrue(msgs[num++].equals(e.getMessage()));
- }
- }
-
- /**
- * Validate that the ordering of the returned Exceptions is correct
- * using traditional while loop
- */
- @Test
- public void test12() {
- SQLTransactionRollbackException ex =
- new SQLTransactionRollbackException("Exception 1", t1);
- SQLTransactionRollbackException ex1 =
- new SQLTransactionRollbackException("Exception 2");
- SQLTransactionRollbackException ex2 =
- new SQLTransactionRollbackException("Exception 3", t2);
- ex.setNextException(ex1);
- ex.setNextException(ex2);
- int num = 0;
- SQLException sqe = ex;
- while (sqe != null) {
- assertTrue(msgs[num++].equals(sqe.getMessage()));
- Throwable c = sqe.getCause();
- while (c != null) {
- assertTrue(msgs[num++].equals(c.getMessage()));
- c = c.getCause();
- }
- sqe = sqe.getNextException();
- }
- }
-
- /**
- * Create SQLTransactionRollbackException and validate it is an instance of
- * SQLNonTransientException
- */
- @Test
- public void test13() {
- Exception ex = new SQLTransactionRollbackException();
- assertTrue(ex instanceof SQLTransientException);
- }
-}
--- a/jdk/test/java/sql/test/sql/SQLTransientConnectionExceptionTests.java Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,233 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package test.sql;
-
-import java.sql.SQLException;
-import java.sql.SQLTransientConnectionException;
-import java.sql.SQLTransientException;
-import static org.testng.Assert.*;
-import org.testng.annotations.Test;
-import util.BaseTest;
-
-public class SQLTransientConnectionExceptionTests extends BaseTest {
-
- /**
- * Create SQLTransientConnectionException and setting all objects to null
- */
- @Test
- public void test() {
- SQLTransientConnectionException e =
- new SQLTransientConnectionException( null,
- null, errorCode, null);
- assertTrue(e.getMessage() == null && e.getSQLState() == null
- && e.getCause() == null && e.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLTransientConnectionException with no-arg constructor
- */
- @Test
- public void test1() {
- SQLTransientConnectionException ex = new SQLTransientConnectionException();
- assertTrue(ex.getMessage() == null
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLTransientConnectionException with message
- */
- @Test
- public void test2() {
- SQLTransientConnectionException ex =
- new SQLTransientConnectionException(reason);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLTransientConnectionException with message, and SQLState
- */
- @Test
- public void test3() {
- SQLTransientConnectionException ex =
- new SQLTransientConnectionException(reason, state);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLTransientConnectionException with message, SQLState, and error code
- */
- @Test
- public void test4() {;
- SQLTransientConnectionException ex =
- new SQLTransientConnectionException(reason, state, errorCode);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && ex.getCause() == null
- && ex.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLTransientConnectionException with message, SQLState, errorCode, and Throwable
- */
- @Test
- public void test5() {
- SQLTransientConnectionException ex =
- new SQLTransientConnectionException(reason, state, errorCode, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLTransientConnectionException with message, SQLState, and Throwable
- */
- @Test
- public void test6() {
- SQLTransientConnectionException ex =
- new SQLTransientConnectionException(reason, state, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLTransientConnectionException with message, and Throwable
- */
- @Test
- public void test7() {
- SQLTransientConnectionException ex =
- new SQLTransientConnectionException(reason, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState() == null
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLTransientConnectionException with null Throwable
- */
- @Test
- public void test8() {
- SQLTransientConnectionException ex =
- new SQLTransientConnectionException((Throwable)null);
- assertTrue(ex.getMessage() == null
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLTransientConnectionException with Throwable
- */
- @Test
- public void test9() {
- SQLTransientConnectionException ex =
- new SQLTransientConnectionException(t);
- assertTrue(ex.getMessage().equals(cause)
- && ex.getSQLState() == null
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Serialize a SQLTransientConnectionException and make sure you can read it back properly
- */
- @Test
- public void test10() throws Exception {
- SQLTransientConnectionException e =
- new SQLTransientConnectionException(reason, state, errorCode, t);
- SQLTransientConnectionException ex1 =
- createSerializedException(e);
- assertTrue(reason.equals(ex1.getMessage())
- && ex1.getSQLState().equals(state)
- && cause.equals(ex1.getCause().toString())
- && ex1.getErrorCode() == errorCode);
- }
-
- /**
- * Validate that the ordering of the returned Exceptions is correct
- * using for-each loop
- */
- @Test
- public void test11() {
- SQLTransientConnectionException ex =
- new SQLTransientConnectionException("Exception 1", t1);
- SQLTransientConnectionException ex1 =
- new SQLTransientConnectionException("Exception 2");
- SQLTransientConnectionException ex2 =
- new SQLTransientConnectionException("Exception 3", t2);
- ex.setNextException(ex1);
- ex.setNextException(ex2);
- int num = 0;
- for (Throwable e : ex) {
- assertTrue(msgs[num++].equals(e.getMessage()));
- }
- }
-
- /**
- * Validate that the ordering of the returned Exceptions is correct
- * using traditional while loop
- */
- @Test
- public void test12() {
- SQLTransientConnectionException ex =
- new SQLTransientConnectionException("Exception 1", t1);
- SQLTransientConnectionException ex1 =
- new SQLTransientConnectionException("Exception 2");
- SQLTransientConnectionException ex2 =
- new SQLTransientConnectionException("Exception 3", t2);
- ex.setNextException(ex1);
- ex.setNextException(ex2);
- int num = 0;
- SQLException sqe = ex;
- while (sqe != null) {
- assertTrue(msgs[num++].equals(sqe.getMessage()));
- Throwable c = sqe.getCause();
- while (c != null) {
- assertTrue(msgs[num++].equals(c.getMessage()));
- c = c.getCause();
- }
- sqe = sqe.getNextException();
- }
- }
-
- /**
- * Create SQLTransientConnectionException and validate it is an instance of
- * SQLNonTransientException
- */
- @Test
- public void test13() {
- Exception ex = new SQLTransientConnectionException();
- assertTrue(ex instanceof SQLTransientException);
- }
-}
--- a/jdk/test/java/sql/test/sql/SQLTransientExceptionTests.java Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,207 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package test.sql;
-
-import java.sql.SQLException;
-import java.sql.SQLTransientException;
-import static org.testng.Assert.*;
-import org.testng.annotations.Test;
-import util.BaseTest;
-
-public class SQLTransientExceptionTests extends BaseTest {
-
- /**
- * Create SQLTransientException and setting all objects to null
- */
- @Test
- public void test() {
- SQLTransientException e = new SQLTransientException(null,
- null, errorCode, null);
- assertTrue(e.getMessage() == null && e.getSQLState() == null
- && e.getCause() == null && e.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLTransientException with no-arg constructor
- */
- @Test
- public void test1() {
- SQLTransientException ex = new SQLTransientException();
- assertTrue(ex.getMessage() == null
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLTransientException with message
- */
- @Test
- public void test2() {
- SQLTransientException ex = new SQLTransientException(reason);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLTransientException with message, and SQLState
- */
- @Test
- public void test3() {
- SQLTransientException ex = new SQLTransientException(reason, state);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLTransientException with message, SQLState, and error code
- */
- @Test
- public void test4() {
- SQLTransientException ex = new SQLTransientException(reason, state, errorCode);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && ex.getCause() == null
- && ex.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLTransientException with message, SQLState, errorCode, and Throwable
- */
- @Test
- public void test5() {
- SQLTransientException ex =
- new SQLTransientException(reason, state, errorCode, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLTransientException with message, SQLState, and Throwable
- */
- @Test
- public void test6() {
- SQLTransientException ex = new SQLTransientException(reason, state, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLTransientException with message, and Throwable
- */
- @Test
- public void test7() {
- SQLTransientException ex = new SQLTransientException(reason, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState() == null
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLTransientException with null Throwable
- */
- @Test
- public void test8() {
- SQLTransientException ex = new SQLTransientException((Throwable)null);
- assertTrue(ex.getMessage() == null
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLTransientException with Throwable
- */
- @Test
- public void test9() {
- SQLTransientException ex = new SQLTransientException(t);
- assertTrue(ex.getMessage().equals(cause)
- && ex.getSQLState() == null
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Serialize a SQLTransientException and make sure you can read it back properly
- */
- @Test
- public void test10() throws Exception {
- SQLTransientException e =
- new SQLTransientException(reason, state, errorCode, t);
- SQLTransientException ex1 = createSerializedException(e);
- assertTrue(reason.equals(ex1.getMessage())
- && ex1.getSQLState().equals(state)
- && cause.equals(ex1.getCause().toString())
- && ex1.getErrorCode() == errorCode);
- }
-
- /**
- * Validate that the ordering of the returned Exceptions is correct
- * using for-each loop
- */
- @Test
- public void test11() {
- SQLTransientException ex = new SQLTransientException("Exception 1", t1);
- SQLTransientException ex1 = new SQLTransientException("Exception 2");
- SQLTransientException ex2 = new SQLTransientException("Exception 3", t2);
- ex.setNextException(ex1);
- ex.setNextException(ex2);
- int num = 0;
- for (Throwable e : ex) {
- assertTrue(msgs[num++].equals(e.getMessage()));
- }
- }
-
- /**
- * Validate that the ordering of the returned Exceptions is correct
- * using traditional while loop
- */
- @Test
- public void test12() {
- SQLTransientException ex = new SQLTransientException("Exception 1", t1);
- SQLTransientException ex1 = new SQLTransientException("Exception 2");
- SQLTransientException ex2 = new SQLTransientException("Exception 3", t2);
- ex.setNextException(ex1);
- ex.setNextException(ex2);
- int num = 0;
- SQLException sqe = ex;
- while (sqe != null) {
- assertTrue(msgs[num++].equals(sqe.getMessage()));
- Throwable c = sqe.getCause();
- while (c != null) {
- assertTrue(msgs[num++].equals(c.getMessage()));
- c = c.getCause();
- }
- sqe = sqe.getNextException();
- }
- }
-}
--- a/jdk/test/java/sql/test/sql/SQLWarningTests.java Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,249 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package test.sql;
-
-import java.sql.SQLException;
-import java.sql.SQLWarning;
-import static org.testng.Assert.*;
-import org.testng.annotations.Test;
-import util.BaseTest;
-
-public class SQLWarningTests extends BaseTest {
-
- private final String[] warnings = {"Warning 1", "cause 1", "Warning 2",
- "Warning 3", "cause 2"};
-
- /**
- * Create SQLWarning and setting all objects to null
- */
- @Test
- public void test() {
- SQLWarning e = new SQLWarning(null, null, errorCode, null);
- assertTrue(e.getMessage() == null && e.getSQLState() == null
- && e.getCause() == null && e.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLWarning with no-arg constructor
- */
- @Test
- public void test1() {
- SQLWarning ex = new SQLWarning();
- assertTrue(ex.getMessage() == null
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLWarning with message
- */
- @Test
- public void test2() {
- SQLWarning ex = new SQLWarning(reason);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLWarning with message, and SQLState
- */
- @Test
- public void test3() {
-
- SQLWarning ex = new SQLWarning(reason, state);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLWarning with message, SQLState, and error code
- */
- @Test
- public void test4() {
- SQLWarning ex = new SQLWarning(reason, state, errorCode);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && ex.getCause() == null
- && ex.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLWarning with message, SQLState, errorCode, and Throwable
- */
- @Test
- public void test5() {
- SQLWarning ex = new SQLWarning(reason, state, errorCode, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == errorCode);
- }
-
- /**
- * Create SQLWarning with message, SQLState, and Throwable
- */
- @Test
- public void test6() {
- SQLWarning ex = new SQLWarning(reason, state, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState().equals(state)
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLWarning with message, and Throwable
- */
- @Test
- public void test7() {
- SQLWarning ex = new SQLWarning(reason, t);
- assertTrue(ex.getMessage().equals(reason)
- && ex.getSQLState() == null
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLWarning with null Throwable
- */
- @Test
- public void test8() {
- SQLWarning ex = new SQLWarning((Throwable) null);
- assertTrue(ex.getMessage() == null
- && ex.getSQLState() == null
- && ex.getCause() == null
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Create SQLWarning with Throwable
- */
- @Test
- public void test9() {
- SQLWarning ex = new SQLWarning(t);
- assertTrue(ex.getMessage().equals(cause)
- && ex.getSQLState() == null
- && cause.equals(ex.getCause().toString())
- && ex.getErrorCode() == 0);
- }
-
- /**
- * Serialize a SQLWarning and make sure you can read it back properly
- */
- @Test
- public void test10() throws Exception {
- SQLWarning e = new SQLWarning(reason, state, errorCode, t);
- SQLWarning ex1 = createSerializedException(e);
- assertTrue(reason.equals(ex1.getMessage())
- && ex1.getSQLState().equals(state)
- && cause.equals(ex1.getCause().toString())
- && ex1.getErrorCode() == errorCode);
- }
-
- /**
- * Validate that the ordering of the returned Exceptions is correct using
- * for-each loop
- */
- @Test
- public void test11() {
- SQLWarning ex = new SQLWarning("Exception 1", t1);
- SQLWarning ex1 = new SQLWarning("Exception 2");
- SQLWarning ex2 = new SQLWarning("Exception 3", t2);
- ex.setNextException(ex1);
- ex.setNextException(ex2);
- int num = 0;
- for (Throwable e : ex) {
- assertTrue(msgs[num++].equals(e.getMessage()));
- }
- }
-
- /**
- * Validate that the ordering of the returned Exceptions is correct using
- * traditional while loop
- */
- @Test
- public void test12() {
- SQLWarning ex = new SQLWarning("Exception 1", t1);
- SQLWarning ex1 = new SQLWarning("Exception 2");
- SQLWarning ex2 = new SQLWarning("Exception 3", t2);
- ex.setNextException(ex1);
- ex.setNextException(ex2);
- int num = 0;
- SQLException sqe = ex;
- while (sqe != null) {
- assertTrue(msgs[num++].equals(sqe.getMessage()));
- Throwable c = sqe.getCause();
- while (c != null) {
- assertTrue(msgs[num++].equals(c.getMessage()));
- c = c.getCause();
- }
- sqe = sqe.getNextException();
- }
- }
-
- /**
- * Validate that the ordering of the returned SQLWarning is correct using
- * for-each loop
- */
- @Test
- public void test13() {
- SQLWarning ex = new SQLWarning("Warning 1", t1);
- SQLWarning ex1 = new SQLWarning("Warning 2");
- SQLWarning ex2 = new SQLWarning("Warning 3", t2);
- ex.setNextWarning(ex1);
- ex.setNextWarning(ex2);
- int num = 0;
- for (Throwable e : ex) {
- assertTrue(warnings[num++].equals(e.getMessage()));
- }
- }
-
- /**
- * Validate that the ordering of the returned SQLWarning is correct using
- * traditional while loop
- */
- @Test
- public void test14() {
- SQLWarning ex = new SQLWarning("Warning 1", t1);
- SQLWarning ex1 = new SQLWarning("Warning 2");
- SQLWarning ex2 = new SQLWarning("Warning 3", t2);
- ex.setNextWarning(ex1);
- ex.setNextWarning(ex2);
- int num = 0;
- SQLWarning sqe = ex;
- while (sqe != null) {
- assertTrue(warnings[num++].equals(sqe.getMessage()));
- Throwable c = sqe.getCause();
- while (c != null) {
- assertTrue(msgs[num++].equals(c.getMessage()));
- c = c.getCause();
- }
- sqe = sqe.getNextWarning();
- }
- }
-}
--- a/jdk/test/java/sql/test/sql/TimeTests.java Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,348 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package test.sql;
-
-import java.sql.Time;
-import java.time.LocalTime;
-import static org.testng.Assert.*;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-import util.BaseTest;
-
-public class TimeTests extends BaseTest {
-
- /*
- * Validate an IllegalArgumentException is thrown for calling getYear
- */
- @Test(expectedExceptions = IllegalArgumentException.class)
- public void test01() {
- Time t = Time.valueOf("08:30:59");
- t.getYear();
- }
-
- /*
- * Validate an IllegalArgumentException is thrown for calling getMonth
- */
- @Test(expectedExceptions = IllegalArgumentException.class)
- public void test02() {
- Time t = Time.valueOf("08:30:59");
- t.getMonth();
- }
-
- /*
- * Validate an IllegalArgumentException is thrown for calling getDay
- */
- @Test(expectedExceptions = IllegalArgumentException.class)
- public void test03() {
- Time t = Time.valueOf("08:30:59");
- t.getDay();
- }
-
- /**
- * Validate an IllegalArgumentException is thrown for calling getDate
- */
- @Test(expectedExceptions = IllegalArgumentException.class)
- public void test04() {
- Time t = Time.valueOf("08:30:59");
- t.getDate();
- }
-
- /*
- * Validate an IllegalArgumentException is thrown for calling setYear
- */
- @Test(expectedExceptions = IllegalArgumentException.class)
- public void test05() {
- Time t = Time.valueOf("08:30:59");
- t.setYear(8);
- }
-
- /*
- * Validate an IllegalArgumentException is thrown for calling setMonth
- */
- @Test(expectedExceptions = IllegalArgumentException.class)
- public void test06() {
- Time t = Time.valueOf("08:30:59");
- t.setMonth(8);
- }
-
- /*
- * Validate an IllegalArgumentException is thrown for calling setDate
- */
- @Test(expectedExceptions = IllegalArgumentException.class)
- public void test07() {
- Time t = Time.valueOf("08:30:59");
- t.setDate(30);
- }
-
- /*
- * Validate an IllegalArgumentException is thrown for calling getDate
- */
- @Test(expectedExceptions = IllegalArgumentException.class)
- public void test08() {
- Time t = Time.valueOf("08:30:59");
- t.getDate();
- }
-
- /*
- * Validate that a Time made from a toLocalTime() LocalTime are equal
- */
- @Test
- public void test09() {
- Time t = Time.valueOf("08:30:59");
- Time t2 = Time.valueOf(t.toLocalTime());
- assertTrue(t.equals(t2), "Error t != t2");
- }
-
- /*
- * Validate that a Time LocalTime value, made from a LocalTime are equal
- */
- @Test
- public void test10() {
- LocalTime lt = LocalTime.of(8, 30, 59);
- Time t = Time.valueOf(lt);
- System.out.println("lt=" + lt + ",t=" + t.toLocalTime());
- assertTrue(lt.equals(t.toLocalTime()),
- "Error LocalTime values are not equal");
- }
-
- /*
- * Validate an NPE occurs when a null LocalDate is passed to valueOf
- */
- @Test(expectedExceptions = NullPointerException.class)
- public void test11() throws Exception {
- LocalTime ld = null;
- Time.valueOf(ld);
- }
-
- /*
- * Validate an UnsupportedOperationException occurs when toInstant() is
- * called
- */
- @Test(expectedExceptions = UnsupportedOperationException.class)
- public void test12() throws Exception {
- Time t = new Time(System.currentTimeMillis());
- t.toInstant();
- }
-
- /*
- * Validate that two Time objects are equal when one is created from the
- * toString() of the other and that the correct value is returned from
- * toString()
- */
- @Test(dataProvider = "validTimeValues")
- public void test13(String time, String expected) {
- Time t1 = Time.valueOf(time);
- Time t2 = Time.valueOf(t1.toString());
- assertTrue(t1.equals(t2) && t2.equals(t1)
- && t1.toString().equals(expected), "Error t1 != t2");
- }
-
- /*
- * Validate that two Time values one created using valueOf and another via a
- * constructor are equal
- */
- @Test
- public void test14() {
- Time t = Time.valueOf("08:30:59");
- Time t2 = new Time(8, 30, 59);
- assertTrue(t.equals(t2) && t2.equals(t), "Error t != t2");
- }
-
- /*
- * Validate that two Time values one created using valueOf and another via a
- * constructor are equal
- */
- @Test
- public void test15() {
- Time t = Time.valueOf("08:30:59");
- Time t2 = new Time(t.getTime());
- assertTrue(t.equals(t2) && t2.equals(t), "Error t != t2");
- }
-
- /*
- * Validate an IllegalArgumentException is thrown for an invalid Time string
- */
- @Test(dataProvider = "invalidTimeValues",
- expectedExceptions = IllegalArgumentException.class)
- public void test16(String time) throws Exception {
- Time.valueOf(time);
- }
-
- /*
- * Validate that Time.after() returns false when same date is compared
- */
- @Test
- public void test17() {
- Time t = Time.valueOf("08:30:59");
- assertFalse(t.after(t), "Error t.after(t) = true");
- }
-
- /*
- * Validate that Time.after() returns true when later date is compared to
- * earlier date
- */
- @Test
- public void test18() {
- Time t = Time.valueOf("08:30:59");
- Time t2 = new Time(System.currentTimeMillis());
- assertTrue(t2.after(t), "Error t2.after(t) = false");
- }
-
- /*
- * Validate that Time.after() returns false when earlier date is compared to
- * itself
- */
- @Test
- public void test19() {
- Time t = Time.valueOf("08:30:59");
- Time t2 = new Time(t.getTime());
- assertFalse(t.after(t2), "Error t.after(t2) = true");
- assertFalse(t2.after(t), "Error t2.after(t) = true");
- }
-
- /*
- * Validate that Time.before() returns false when same date is compared
- */
- @Test
- public void test20() {
- Time t = Time.valueOf("08:30:59");
- assertFalse(t.before(t), "Error t.before(t) = true");
- }
-
- /*
- * Validate that Time.before() returns true when earlier date is compared to
- * later date
- */
- @Test
- public void test21() {
- Time t = Time.valueOf("08:30:59");
- Time t2 = new Time(System.currentTimeMillis());
- assertTrue(t.before(t2), "Error t.before(t2) = false");
- }
-
- /*
- * Validate that Time.before() returns false when earlier date is compared
- * to itself
- */
- @Test
- public void test22() {
- Time t = Time.valueOf("08:30:59");
- Time t2 = new Time(t.getTime());
- assertFalse(t.before(t2), "Error t.after(t2) = true");
- assertFalse(t2.before(t), "Error t2.after(t) = true");
- }
-
- /*
- * Validate that Time.compareTo returns 0 when both Date objects are the
- * same
- */
- @Test
- public void test23() {
- Time t = Time.valueOf("08:30:59");
- assertTrue(t.compareTo(t) == 0, "Error t.compareTo(t) !=0");
- }
-
- /*
- * Validate thatTime.compareTo returns 0 when both Time objects are the same
- */
- @Test
- public void test24() {
- Time t = Time.valueOf("08:30:59");
- Time t2 = new Time(t.getTime());
- assertTrue(t.compareTo(t2) == 0, "Error t.compareTo(t2) !=0");
- }
-
- /*
- * Validate that Time.compareTo returns 1 when comparing a later Time to an
- * earlier Time
- */
- @Test
- public void test25() {
- Time t = Time.valueOf("08:30:59");
- Time t2 = new Time(t.getTime() + 1);
- assertTrue(t2.compareTo(t) == 1, "Error t2.compareTo(t) !=1");
- }
-
- /*
- * Validate thatTime.compareTo returns 1 when comparing a later Time to an
- * earlier Time
- */
- @Test
- public void test26() {
- Time t = Time.valueOf("08:30:59");
- Time t2 = new Time(t.getTime() + 1);
- assertTrue(t.compareTo(t2) == -1, "Error t.compareTo(t2) != -1");
- }
-
- /*
- * DataProvider used to provide Time values which are not valid and are used
- * to validate that an IllegalArgumentException will be thrown from the
- * valueOf method
- */
- @DataProvider(name = "invalidTimeValues")
- private Object[][] invalidTimeValues() {
- return new Object[][]{
- {"2009-11-01 10:50:01"},
- {"1961-08-30 10:50:01.1"},
- {"1961-08-30"},
- {"00:00:00."},
- {"10:50:0.1"},
- {":00:00"},
- {"00::00"},
- {"00:00:"},
- {"::"},
- {" : : "},
- {"0a:00:00"},
- {"00:bb:00"},
- {"00:01:cc"},
- {"08:10:Batman"},
- {"08:10:10:10"},
- {"08:10"},
- {"a:b:c"},
- {null},
- {"8:"}
- };
- }
-
- /*
- * DataProvider used to provide Time values which are valid and are used
- * to validate that an IllegalArgumentException will not be thrown from the
- * valueOf method. It also contains the expected return value from
- * toString()
- */
- @DataProvider(name = "validTimeValues")
- private Object[][] validTimeValues() {
- return new Object[][]{
- {"10:50:01", "10:50:01"},
- {"01:1:1", "01:01:01"},
- {"01:01:1", "01:01:01"},
- {"1:01:1", "01:01:01"},
- {"2:02:02", "02:02:02"},
- {"2:02:2", "02:02:02"},
- {"10:50:1", "10:50:01"},
- {"00:00:00", "00:00:00"},
- {"08:30:59", "08:30:59"},
- {"9:0:1", "09:00:01"}
- };
- }
-}
--- a/jdk/test/java/sql/test/sql/TimestampTests.java Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,777 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package test.sql;
-
-import java.sql.Date;
-import java.sql.Time;
-import java.sql.Timestamp;
-import java.time.Instant;
-import java.time.LocalDateTime;
-import java.time.ZoneId;
-import java.util.Calendar;
-import java.util.TimeZone;
-import static org.testng.Assert.*;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-import util.BaseTest;
-
-public class TimestampTests extends BaseTest {
-
- private static TimeZone defaultTimeZone = null;
-
- /*
- * Need to set and use a custom TimeZone which does not
- * observe daylight savings time for this test.
- */
- @BeforeClass
- public static void setUpClass() throws Exception {
- defaultTimeZone = TimeZone.getDefault();
- TimeZone tzone = TimeZone.getTimeZone("GMT+01");
- assertFalse(tzone.observesDaylightTime());
- TimeZone.setDefault(tzone);
- }
-
- /*
- * Conservatively reset the default time zone after test.
- */
- @AfterClass
- public static void tearDownClass() throws Exception {
- TimeZone.setDefault(defaultTimeZone);
- }
-
- /*
- * Validate an IllegalArgumentException is thrown for an invalid Timestamp
- */
- @Test(dataProvider = "invalidTimestampValues",
- expectedExceptions = IllegalArgumentException.class)
- public void test(String ts) throws Exception {
- Timestamp.valueOf(ts);
- }
-
- /*
- * Validate that two Timestamp are equal when the leading 0 in seconds is
- * omitted
- */
- @Test
- public void test01() throws Exception {
- String testTS = "2009-01-01 10:50:00";
- String ExpectedTS = "2009-01-01 10:50:0";
- Timestamp ts = Timestamp.valueOf(testTS);
- Timestamp ts2 = Timestamp.valueOf(ExpectedTS);
- assertEquals(ts, ts2, "Error ts1 != ts2");
- }
-
- /*
- * Validate two Timestamps created from the same string are equal
- */
- @Test
- public void test02() throws Exception {
- String testTS = "2009-01-01 10:50:0";
- Timestamp ts = Timestamp.valueOf(testTS);
- Timestamp ts2 = Timestamp.valueOf(testTS);
- assertEquals(ts, ts2, "Error ts1 != ts2");
- }
-
- /*
- * Validate that two Timestamp values one with leading 0s for month and day
- * equals same string without the leading 0s.
- */
- @Test
- public void test03() throws Exception {
- String testTS = "2009-1-1 10:50:0";
- String ExpectedTS = "2009-01-01 10:50:0";
- Timestamp ts = Timestamp.valueOf(testTS);
- Timestamp ts2 = Timestamp.valueOf(ExpectedTS);
- assertEquals(ts, ts2, "Error ts1 != ts2");
- }
-
- /*
- * Validate that two Timestamp values one with leading 0s for day omitted
- * are equal
- */
- @Test
- public void test04() throws Exception {
- String testTS = "2009-01-1 10:50:0";
- String ExpectedTS = "2009-01-01 10:50:0";
- Timestamp ts = Timestamp.valueOf(testTS);
- Timestamp ts2 = Timestamp.valueOf(ExpectedTS);
- assertEquals(ts, ts2, "Error ts1 != ts2");
- }
-
- /*
- * Validate that two Timestamp values one with leading 0s for month omitted
- * and both with leading 0s for seconds omitted are equal
- */
- @Test
- public void test05() throws Exception {
- String testTS = "2009-1-01 10:50:0";
- String ExpectedTS = "2009-01-01 10:50:0";
- Timestamp ts = Timestamp.valueOf(testTS);
- Timestamp ts2 = Timestamp.valueOf(ExpectedTS);
- assertEquals(ts, ts2, "Error ts1 != ts2");
- }
-
- /*
- * Validate that two Timestamp values one with leading 0s for month omitted
- */
- @Test
- public void test06() throws Exception {
- String testTS = "2005-1-01 10:20:50.00";
- String ExpectedTS = "2005-01-01 10:20:50.00";
- Timestamp ts = Timestamp.valueOf(testTS);
- Timestamp ts2 = Timestamp.valueOf(ExpectedTS);
- assertEquals(ts, ts2, "Error ts1 != ts2");
- }
-
- /*
- * Validate that two Timestamp values one created using valueOf and another
- * via a constructor are equal
- */
- @Test
- public void test07() {
-
- Timestamp ts1 = Timestamp.valueOf("1996-12-13 14:15:25.001");
- Timestamp ts2 = new Timestamp(96, 11, 13, 14, 15, 25, 1000000);
- assertTrue(ts1.equals(ts2), "Error ts1 != ts2");
- }
-
- /*
- * Validate that two Timestamp values one created using valueOf and another
- * via a constructor are equal
- */
- @Test
- public void test08() {
- Timestamp ts1 = Timestamp.valueOf("1996-12-13 14:15:25.001");
- Timestamp ts2 = new Timestamp(ts1.getTime());
- assertTrue(ts1.equals(ts2), "Error ts1 != ts2");
- }
-
- /*
- * Validate that two Timestamp values one created using valueOf and another
- * via a constructor are equal
- */
- @Test
- public void test09() {
-
- Timestamp ts1 = Timestamp.valueOf("1996-12-13 14:15:25.0");
- Timestamp ts2 = new Timestamp(96, 11, 13, 14, 15, 25, 0);
- assertTrue(ts1.equals(ts2), "Error ts1 != ts2");
- }
-
- /*
- * Validate that a Timestamp cannot be equal to null
- */
- @Test
- public void test10() {
-
- Timestamp ts1 = Timestamp.valueOf("1961-08-30 14:15:25.745634");
- Timestamp ts2 = null;
- assertFalse(ts1.equals(ts2), "Error ts1 == null");
- }
-
- /*
- * Validate that a Timestamp is equal to another timestamp created with the
- * using the same value but not equal to a Timestamp which is one day later
- */
- @Test
- public void test11() {
-
- Timestamp ts1 = Timestamp.valueOf("1996-12-10 12:26:19.12");
- Timestamp ts2 = Timestamp.valueOf("1996-12-10 12:26:19.12");
- Timestamp ts3 = Timestamp.valueOf("1996-12-11 12:24:19.12");
- assertTrue(ts1.equals(ts2) && ts2.equals(ts1), "Error ts1 != ts2");
- assertFalse(ts1.equals(ts3) && ts3.equals(ts1), "Error ts1 == ts3");
-
- }
-
- /*
- * Validate that a Timestamp is equal to itself
- */
- @Test
- public void test12() {
- Timestamp ts1 = Timestamp.valueOf("1996-10-15 12:26:19.12");
- assertTrue(ts1.equals(ts1), "Error ts1 != ts1");
- }
-
- /*
- * Validate that two Timestamps are equal when one is created from the
- * toString() of the other
- */
- @Test(dataProvider = "validTimestampValues")
- public void test13(String ts, String expectedTS) {
- Timestamp ts1 = Timestamp.valueOf(ts);
- Timestamp ts2 = Timestamp.valueOf(ts1.toString());
- assertTrue(ts1.equals(ts2) && ts2.equals(ts1)
- && ts1.toString().equals(expectedTS), "Error ts1 != ts2");
- }
-
- // Before Tests
- /*
- * Validate that Timestamp ts1 is before Timestamp ts2
- */
- @Test
- public void test14() {
- Timestamp ts1 = Timestamp.valueOf("1996-12-13 14:15:25.745634");
- Timestamp ts2 = Timestamp.valueOf("1996-12-13 15:15:25.645634");
- assertTrue(ts1.before(ts2), "Error ts1 not before ts2");
- }
-
- /*
- * Validate that Timestamp ts1 is before Timestamp ts2
- */
- @Test
- public void test15() {
- Timestamp ts1 = Timestamp.valueOf("1961-08-30 14:15:25");
- Timestamp ts2 = Timestamp.valueOf("1999-12-13 15:15:25");
- assertTrue(ts1.before(ts2), "Error ts1 not before ts2");
- }
-
- /*
- * Validate that Timestamp ts1 is before Timestamp ts2
- */
- @Test
- public void test16() {
-
- Timestamp ts1 = Timestamp.valueOf("1999-12-13 14:15:25.745634");
- Timestamp ts2 = Timestamp.valueOf("1999-11-13 15:15:25.645634");
- assertFalse(ts1.before(ts2), "Error ts1 before ts2");
- }
-
- /*
- * Validate that a NullPointerException is thrown if a null is passed to
- * the before method
- */
- @Test(expectedExceptions = NullPointerException.class)
- public void test17() throws Exception {
- Timestamp ts1 = Timestamp.valueOf("1996-12-13 14:15:25.745634");
- ts1.before(null);
- }
-
- /*
- * Validate a Timestamp cannot be before itself
- */
- @Test
- public void test18() {
- Timestamp ts1 = Timestamp.valueOf("1999-11-10 12:26:19.3456543");
- assertFalse(ts1.before(ts1), "Error ts1 before ts1!");
- }
-
- /*
- * Create 3 Timestamps and make sure the 1st is before the other two
- * Timestamps which are each greater than the one before it
- */
- @Test
- public void test19() {
-
- Timestamp ts1 = new Timestamp(1234560000);
- Timestamp ts2 = new Timestamp(1234567000);
- Timestamp ts3 = new Timestamp(1234569000);
- assertTrue(ts1.before(ts2) && ts2.before(ts3) && ts1.before(ts3));
- }
-
- /*
- * Validate that Timestamp ts1 is not after Timestamp ts2
- */
- @Test
- public void test20() {
- Timestamp ts1 = Timestamp.valueOf("1999-12-13 14:15:25.745634");
- Timestamp ts2 = Timestamp.valueOf("1999-12-13 15:15:25.645634");
- assertFalse(ts1.after(ts2), "Error ts1 is after ts2");
-
- }
-
- /*
- * Validate that Timestamp ts1 is after Timestamp ts2
- */
- @Test
- public void test21() {
- Timestamp ts1 = Timestamp.valueOf("1996-12-13 14:15:25.745634");
- Timestamp ts2 = Timestamp.valueOf("1996-11-13 15:15:25.645634");
- assertTrue(ts1.after(ts2), "Error ts1 not after ts2");
- }
-
- /*
- * Validate that a NullPointerException is thrown if a null is passed to the
- * after method
- */
- @Test(expectedExceptions = NullPointerException.class)
- public void test22() throws Exception {
- Timestamp ts1 = Timestamp.valueOf("1966-08-30 08:08:08");
- ts1.after(null);
- }
-
- /*
- * Validate that a Timestamp cannot be after itself
- */
- @Test
- public void test23() {
- Timestamp ts1 = Timestamp.valueOf("1999-11-10 12:26:19.3456543");
- assertFalse(ts1.after(ts1), "Error ts1 is after itself");
- }
-
- /*
- * Validate that a Timestamp after() works correctly with Timestamp created
- * using milliseconds
- */
- @Test
- public void test24() {
-
- Timestamp ts1 = new Timestamp(1234568000);
- Timestamp ts2 = new Timestamp(1234565000);
- Timestamp ts3 = new Timestamp(1234562000);
- assertTrue(ts1.after(ts2) && ts2.after(ts3) && ts1.after(ts3));
- }
-
- /*
- * Validate compareTo returns 0 for Timestamps that are the same
- */
- @Test
- public void test25() {
- Timestamp ts1 = Timestamp.valueOf("1966-08-30 08:08:08");
- Timestamp ts2 = new Timestamp(ts1.getTime());
- assertTrue(ts1.compareTo(ts2) == 0, "Error ts1 != ts2");
- }
-
- /*
- * Validate compareTo returns -1 for when the 1st Timestamp is earlier than
- * the 2nd Timestamp
- */
- @Test
- public void test26() {
- Timestamp ts1 = Timestamp.valueOf("1966-08-30 08:08:08");
- Timestamp ts2 = new Timestamp(ts1.getTime() + 1000);
- assertTrue(ts1.compareTo(ts2) == -1, "Error ts1 not before ts2");
- assertTrue(ts2.compareTo(ts1) == 1, "Error ts1 is not before ts2");
- }
-
- /*
- * Validate compareTo returns 1 for when the 1st Timestamp is later than the
- * 2nd Timestamp
- */
- @Test
- public void test27() {
- Timestamp ts1 = Timestamp.valueOf("1966-08-30 08:08:08");
- Timestamp ts2 = new Timestamp(ts1.getTime() - 1000);
- assertTrue(ts1.compareTo(ts2) == 1, "Error ts1 not after ts2");
- assertTrue(ts2.compareTo(ts1) == -1, "Error ts1 not after ts2");
- }
-
- /*
- * Validate compareTo returns 0 for Timestamps that are the same
- */
- @Test
- public void test28() {
- Timestamp ts1 = Timestamp.valueOf("1966-08-30 08:08:08");
- java.util.Date ts2 = new java.util.Date(ts1.getTime());
- assertTrue(ts1.compareTo(ts2) == 0, "Error ts1 != ts2");
- }
-
- /*
- * Validate compareTo returns 0 for Timestamps that are the same
- */
- @Test
- public void test29() {
- Timestamp ts1 = Timestamp.valueOf("1966-08-30 08:08:08");
- java.util.Date d = new java.util.Date(ts1.getTime());
- assertFalse(ts1.equals(d), "Error ts1 == d");
- }
-
- /*
- * Validate compareTo returns 0 for Timestamps that are the same
- */
- @Test
- public void test30() {
- Timestamp ts1 = Timestamp.valueOf("1966-08-30 08:08:08");
- java.util.Date d = new Timestamp(ts1.getTime());
- assertTrue(ts1.equals(d), "Error ts1 != d");
- }
-
- /*
- * Validate equals returns false when a Date object is passed to equals
- */
- @Test
- public void test31() {
- Timestamp ts1 = Timestamp.valueOf("1966-08-30 08:08:08");
- Date d = new Date(ts1.getTime());
- assertFalse(ts1.equals(d), "Error ts1 != d");
- }
-
- /*
- * Validate equals returns false when a Date object is passed to equals
- */
- @Test
- public void test32() {
- Timestamp ts1 = Timestamp.valueOf("1966-08-30 08:08:08");
- java.util.Date d = new Date(ts1.getTime());
- assertFalse(ts1.equals(d), "Error ts1 != d");
- }
-
- /*
- * Validate equals returns false when a Time object is passed to equals
- */
- @Test
- public void test33() {
- Timestamp ts1 = Timestamp.valueOf("1966-08-30 08:08:08");
- Time t1 = new Time(ts1.getTime());
- assertFalse(ts1.equals(t1), "Error ts1 == t1");
- }
-
- /*
- * Validate equals returns false when a String object is passed to equals
- */
- @Test
- public void test34() {
- Timestamp ts1 = Timestamp.valueOf("1966-08-30 08:08:08");
- assertFalse(ts1.equals("1966-08-30 08:08:08"), "Error ts1 == a String");
- }
-
- /*
- * Validate getTime() returns the same value from 2 timeStamps created by
- */
- @Test
- public void test35() {
- Timestamp ts1 = Timestamp.valueOf("1966-08-30 08:08:08");
- Timestamp ts2 = Timestamp.valueOf("1966-08-30 08:08:08");
- assertTrue(ts2.getTime() == ts1.getTime(),
- "ts1.getTime() != ts2.getTime()");
- assertTrue(ts1.equals(ts2), "Error ts1 != ts2");
- }
-
- /*
- * Validate getTime() returns the same value from 2 timeStamps when
- * setTime() is used to specify the same value for both Timestamps
- */
- @Test
- public void test36() {
- Timestamp ts1 = Timestamp.valueOf("1966-08-30 08:08:08");
- Timestamp ts2 = Timestamp.valueOf("1961-08-30 00:00:00");
- ts2.setTime(ts1.getTime());
- assertTrue(ts2.getTime() == ts1.getTime(),
- "ts1.getTime() != ts2.getTime()");
- assertTrue(ts1.equals(ts2), "Error ts1 != ts2");
- }
-
- /*
- * Validate an IllegalArgumentException is thrown for an invalid nanos value
- */
- @Test(expectedExceptions = IllegalArgumentException.class)
- public void test38() throws Exception {
- Timestamp ts1 = Timestamp.valueOf("1961-08-30 00:00:00");
- ts1.setNanos(-1);
-
- }
-
- /*
- * Validate an IllegalArgumentException is thrown for an invalid nanos value
- */
- @Test(expectedExceptions = IllegalArgumentException.class)
- public void test39() throws Exception {
- int nanos = 999999999;
- Timestamp ts1 = Timestamp.valueOf("1961-08-30 00:00:00");
- ts1.setNanos(nanos + 1);
- }
-
- /*
- * Validate you can set nanos to 999999999
- */
- @Test
- public void test40() throws Exception {
- int nanos = 999999999;
- Timestamp ts1 = Timestamp.valueOf("1961-08-30 00:00:00");
- ts1.setNanos(nanos);
- assertTrue(ts1.getNanos() == nanos, "Error Invalid Nanos value");
- }
-
- /*
- * Validate you can set nanos to 0
- */
- @Test
- public void test41() throws Exception {
- int nanos = 0;
- Timestamp ts1 = Timestamp.valueOf("1961-08-30 00:00:00");
- ts1.setNanos(nanos);
- assertTrue(ts1.getNanos() == nanos, "Error Invalid Nanos value");
- }
-
- /*
- * Validate that a Timestamp made from a LocalDateTime are equal
- */
- @Test
- public void test42() throws Exception {
- Timestamp ts1 = Timestamp.valueOf("1961-08-30 00:00:00");
- LocalDateTime ldt = ts1.toLocalDateTime();
- Timestamp ts2 = Timestamp.valueOf(ldt);
- assertTrue(ts1.equals(ts2), "Error ts1 != ts2");
- }
-
- /*
- * Validate that a Timestamp LocalDateTime value, made from a LocalDateTime
- * are equal
- */
- @Test
- public void test43() throws Exception {
- LocalDateTime ldt = LocalDateTime.now();
- Timestamp ts2 = Timestamp.valueOf(ldt);
- assertTrue(ldt.equals(ts2.toLocalDateTime()),
- "Error LocalDateTime values are not equal");
- }
-
- /*
- * Validate an NPE occurs when a null LocalDateTime is passed to valueOF
- */
- @Test(expectedExceptions = NullPointerException.class)
- public void test44() throws Exception {
- LocalDateTime ldt = null;
- Timestamp.valueOf(ldt);
- }
-
- /*
- * Validate that a Timestamp made from a Instant are equal
- */
- @Test
- public void test45() throws Exception {
- Timestamp ts1 = Timestamp.valueOf("1961-08-30 00:00:00");
- Instant instant = ts1.toInstant();
- Timestamp ts2 = Timestamp.from(instant);
- assertTrue(ts1.equals(ts2), "Error ts1 != ts2");
- }
-
- /*
- * Validate that a Timestamp made from a Instant are equal
- */
- @Test
- public void test46() throws Exception {
- Instant instant = Instant.now();
- Timestamp ts2 = Timestamp.from(instant);
- assertTrue(instant.equals(ts2.toInstant()),
- "Error Instant values do not match");
- }
-
- /*
- * Validate an NPE occurs when a null instant is passed to from
- */
- @Test(expectedExceptions = NullPointerException.class)
- public void test47() throws Exception {
- Instant instant = null;
- Timestamp.from(instant);
- }
-
- // Added SQE tests
- /*
- * Create a Timestamp and a 2nd Timestamp that is 1 month earlier and
- * validate that it is not before or after the original Timestamp
- */
- @Test
- public void test48() {
- Calendar cal = Calendar.getInstance();
- Timestamp ts1 = new Timestamp(System.currentTimeMillis());
- cal.setTimeInMillis(ts1.getTime());
- cal.add(Calendar.MONTH, -1);
- cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
- Timestamp ts2 = new Timestamp(cal.getTimeInMillis());
- assertFalse(ts1.before(ts2) || ts2.after(ts1));
- }
-
- /*
- * Create two Timestamps and validate that compareTo returns 1 to indicate
- * the 1st Timestamp is greater than the 2nd Timestamp
- */
- @Test
- public void test49() {
- Calendar cal = Calendar.getInstance();
- Timestamp ts1 = new Timestamp(System.currentTimeMillis());
- cal.setTimeInMillis(ts1.getTime());
- cal.add(Calendar.MONTH, -1);
- cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
- Timestamp ts2 = new Timestamp(cal.getTimeInMillis());
- assertTrue(ts1.compareTo(ts2) == 1);
- }
-
- /*
- * Create two Timestamps and validate that the 1st Timestamp is not equal to
- * the 2nd Timestamp but equal to itself
- */
- @Test
- public void test50() {
- Calendar cal = Calendar.getInstance();
- Timestamp ts1 = new Timestamp(System.currentTimeMillis());
- cal.setTimeInMillis(ts1.getTime());
- cal.add(Calendar.MONTH, -1);
- cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
- Timestamp ts2 = new Timestamp(cal.getTimeInMillis());
- assertTrue(!ts1.equals(ts2) && ts1.equals(ts1));
- }
-
- /*
- * Validate that two Timestamps are equal when one is created from the
- * toString() of the other
- */
- @Test(dataProvider = "validateNanos")
- public void test51(String ts, int nanos) {
- Timestamp ts1 = Timestamp.valueOf(ts);
- Timestamp ts2 = Timestamp.valueOf(ts1.toString());
- assertTrue(ts1.getNanos() == nanos && ts1.equals(ts2),
- "Error with Nanos");
- }
-
- @Test(dataProvider = "validTimestampLongValues")
- public void test52(long value, String ts) {
- Timestamp ts1 = new Timestamp(value);
- assertEquals(ts1.toString(), ts, "ts1.toString() != ts");
- }
-
- /*
- * DataProvider used to provide Timestamps which are not valid and are used
- * to validate that an IllegalArgumentException will be thrown from the
- * valueOf method
- */
- @DataProvider(name = "invalidTimestampValues")
- private Object[][] invalidTimestampValues() {
- return new Object[][]{
- {"2009-11-01-01 10:50:01"},
- {"aaaa-11-01-01 10:50"},
- {"aaaa-11-01 10:50"},
- {"1961--30 00:00:00"},
- {"--30 00:00:00"},
- {"-- 00:00:00"},
- {"1961-1- 00:00:00"},
- {"2009-11-01"},
- {"10:50:01"},
- {"1961-a-30 00:00:00"},
- {"1961-01-bb 00:00:00"},
- {"1961-08-30 00:00:00."},
- {"1961-08-30 :00:00"},
- {"1961-08-30 00::00"},
- {"1961-08-30 00:00:"},
- {"1961-08-30 ::"},
- {"1961-08-30 0a:00:00"},
- {"1961-08-30 00:bb:00"},
- {"1961-08-30 00:01:cc"},
- {"1961-08-30 00:00:00.01a"},
- {"1961-08-30 00:00:00.a"},
- {"1996-12-10 12:26:19.1234567890"},
- {null}
- };
- }
-
- /*
- * DataProvider used to provide Timestamps which are valid and are used
- * to validate that an IllegalArgumentException will not be thrown from the
- * valueOf method and the corect value from toString() is returned
- */
- @DataProvider(name = "validTimestampValues")
- private Object[][] validTimestampValues() {
- return new Object[][]{
- {"1961-08-30 00:00:00", "1961-08-30 00:00:00.0"},
- {"1961-08-30 11:22:33", "1961-08-30 11:22:33.0"},
- {"1961-8-30 00:00:00", "1961-08-30 00:00:00.0"},
- {"1966-08-1 00:00:00", "1966-08-01 00:00:00.0"},
- {"1996-12-10 12:26:19.1", "1996-12-10 12:26:19.1"},
- {"1996-12-10 12:26:19.12", "1996-12-10 12:26:19.12"},
- {"1996-12-10 12:26:19.123", "1996-12-10 12:26:19.123"},
- {"1996-12-10 12:26:19.1234", "1996-12-10 12:26:19.1234"},
- {"1996-12-10 12:26:19.12345", "1996-12-10 12:26:19.12345"},
- {"1996-12-10 12:26:19.123456", "1996-12-10 12:26:19.123456"},
- {"1996-12-10 12:26:19.1234567", "1996-12-10 12:26:19.1234567"},
- {"1996-12-10 12:26:19.12345678", "1996-12-10 12:26:19.12345678"},
- {"1996-12-10 12:26:19.123456789", "1996-12-10 12:26:19.123456789"},
- {"1996-12-10 12:26:19.000000001", "1996-12-10 12:26:19.000000001"},
- {"1996-12-10 12:26:19.000000012", "1996-12-10 12:26:19.000000012"},
- {"1996-12-10 12:26:19.000000123", "1996-12-10 12:26:19.000000123"},
- {"1996-12-10 12:26:19.000001234", "1996-12-10 12:26:19.000001234"},
- {"1996-12-10 12:26:19.000012345", "1996-12-10 12:26:19.000012345"},
- {"1996-12-10 12:26:19.000123456", "1996-12-10 12:26:19.000123456"},
- {"1996-12-10 12:26:19.001234567", "1996-12-10 12:26:19.001234567"},
- {"1996-12-10 12:26:19.12345678", "1996-12-10 12:26:19.12345678"},
- {"1996-12-10 12:26:19.0", "1996-12-10 12:26:19.0"},
- {"1996-12-10 12:26:19.01230", "1996-12-10 12:26:19.0123"}
- };
- }
-
- @DataProvider(name = "validTimestampLongValues")
- private Object[][] validTimestampLongValues() {
- return new Object[][]{
- {1L, "1970-01-01 01:00:00.001"},
- {-3600*1000L - 1, "1969-12-31 23:59:59.999"},
- {-(20000L*365*24*60*60*1000), "18018-08-28 01:00:00.0"},
- {Timestamp.valueOf("1961-08-30 11:22:33").getTime(), "1961-08-30 11:22:33.0"},
- {Timestamp.valueOf("1961-08-30 11:22:33.54321000").getTime(), "1961-08-30 11:22:33.543"}, // nanoprecision lost
- {new Timestamp(114, 10, 10, 10, 10, 10, 100000000).getTime(), "2014-11-10 10:10:10.1"},
- {new Timestamp(0, 10, 10, 10, 10, 10, 100000).getTime(), "1900-11-10 10:10:10.0"}, // nanoprecision lost
- {new Date(114, 10, 10).getTime(), "2014-11-10 00:00:00.0"},
- {new Date(0, 10, 10).getTime(), "1900-11-10 00:00:00.0"},
- {LocalDateTime.of(1960, 10, 10, 10, 10, 10, 50000).atZone(ZoneId.of("America/Los_Angeles"))
- .toInstant().toEpochMilli(), "1960-10-10 19:10:10.0"},
-
- // millisecond timestamps wraps around at year 1, so Long.MIN_VALUE looks similar
- // Long.MAX_VALUE, while actually representing 292278994 BCE
- {Long.MIN_VALUE, "292278994-08-17 08:12:55.192"},
- {Long.MAX_VALUE + 1, "292278994-08-17 08:12:55.192"},
- {Long.MAX_VALUE, "292278994-08-17 08:12:55.807"},
- {Long.MIN_VALUE - 1, "292278994-08-17 08:12:55.807"},
-
- // wrap around point near 0001-01-01, test that we never get a negative year:
- {-(1970L*365*24*60*60*1000), "0001-04-25 01:00:00.0"},
- {-(1970L*365*24*60*60*1000 + 115*24*60*60*1000L), "0001-12-31 01:00:00.0"},
- {-(1970L*365*24*60*60*1000 + 115*24*60*60*1000L - 23*60*60*1000L), "0001-01-01 00:00:00.0"},
-
- {LocalDateTime.of(0, 1, 1, 10, 10, 10, 50000).atZone(ZoneId.of("America/Los_Angeles"))
- .toInstant().toEpochMilli() - 2*24*60*60*1000L, "0001-01-01 19:03:08.0"}, // 1 BCE
- {LocalDateTime.of(0, 1, 1, 10, 10, 10, 50000).atZone(ZoneId.of("America/Los_Angeles"))
- .toInstant().toEpochMilli() - 3*24*60*60*1000L, "0002-12-31 19:03:08.0"} // 2 BCE
- };
- }
-
- /*
- * DataProvider used to provide Timestamp and Nanos values in order to
- * validate that the correct Nanos value is generated from the specified
- * Timestamp
- */
- @DataProvider(name = "validateNanos")
- private Object[][] validateNanos() {
- return new Object[][]{
- {"1961-08-30 00:00:00", 0},
- {"1996-12-10 12:26:19.1", 100000000},
- {"1996-12-10 12:26:19.12", 120000000},
- {"1996-12-10 12:26:19.123", 123000000},
- {"1996-12-10 12:26:19.1234", 123400000},
- {"1996-12-10 12:26:19.12345", 123450000},
- {"1996-12-10 12:26:19.123456", 123456000},
- {"1996-12-10 12:26:19.1234567", 123456700},
- {"1996-12-10 12:26:19.12345678", 123456780},
- {"1996-12-10 12:26:19.123456789", 123456789},
- {"1996-12-10 12:26:19.000000001", 1},
- {"1996-12-10 12:26:19.000000012", 12},
- {"1996-12-10 12:26:19.000000123", 123},
- {"1996-12-10 12:26:19.000001234", 1234},
- {"1996-12-10 12:26:19.000012345", 12345},
- {"1996-12-10 12:26:19.000123456", 123456},
- {"1996-12-10 12:26:19.001234567", 1234567},
- {"1996-12-10 12:26:19.012345678", 12345678},
- {"1996-12-10 12:26:19.0", 0},
- {"1996-12-10 12:26:19.01230", 12300000}
- };
- }
-}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/sql/testng/TEST.properties Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,3 @@
+# JDBC unit tests uses TestNG
+TestNG.dirs = .
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/sql/testng/test/sql/BatchUpdateExceptionTests.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,326 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package test.sql;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.ObjectInputStream;
+import java.sql.BatchUpdateException;
+import java.sql.SQLException;
+import java.util.Arrays;
+import static org.testng.Assert.*;
+import org.testng.annotations.Test;
+import util.SerializedBatchUpdateException;
+import util.BaseTest;
+
+public class BatchUpdateExceptionTests extends BaseTest {
+
+ private final int[] uc = {1, 2, 3};
+ private final long[] luc = {1, 2, 3};
+
+ private final String testSrcDir = System.getProperty("test.src", ".")
+ + File.separatorChar;
+
+ /**
+ * Create BatchUpdateException and setting all objects to null
+ */
+ @Test
+ public void test() {
+ BatchUpdateException be = new BatchUpdateException(null,
+ null, errorCode, (int[]) null, null);
+ assertTrue(be.getMessage() == null && be.getSQLState() == null
+ && be.getUpdateCounts() == null && be.getCause() == null
+ && be.getLargeUpdateCounts() == null
+ && be.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create BatchUpdateException with no-arg constructor
+ */
+ @Test
+ public void test1() {
+ BatchUpdateException ex = new BatchUpdateException();
+ assertTrue(ex.getMessage() == null
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0
+ && ex.getUpdateCounts() == null
+ && ex.getLargeUpdateCounts() == null);
+ }
+
+ /**
+ * Create BatchUpdateException with null Throwable
+ */
+ @Test
+ public void test2() {
+ BatchUpdateException ex = new BatchUpdateException((Throwable) null);
+ assertTrue(ex.getMessage() == null
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0
+ && ex.getUpdateCounts() == null
+ && ex.getLargeUpdateCounts() == null);
+ }
+
+ /**
+ * Create BatchUpdateException with message and update counts
+ */
+ @Test
+ public void test3() {
+
+ BatchUpdateException ex = new BatchUpdateException(reason, uc);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0
+ && Arrays.equals(ex.getUpdateCounts(), uc)
+ && Arrays.equals(ex.getLargeUpdateCounts(), luc)
+ );
+ }
+
+ /**
+ * Create BatchUpdateException with update counts
+ */
+ @Test
+ public void test4() {
+ BatchUpdateException ex = new BatchUpdateException(uc);
+ assertTrue(ex.getMessage() == null
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0
+ && Arrays.equals(ex.getUpdateCounts(), uc)
+ && Arrays.equals(ex.getLargeUpdateCounts(), luc)
+ );
+ }
+
+ /**
+ * Create BatchUpdateException with Throwable and update counts
+ */
+ @Test
+ public void test5() {
+ BatchUpdateException ex = new BatchUpdateException(uc, t);
+ assertTrue(ex.getMessage().equals(cause)
+ && ex.getSQLState() == null
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0
+ && Arrays.equals(ex.getUpdateCounts(), uc)
+ && Arrays.equals(ex.getLargeUpdateCounts(), luc)
+ );
+ }
+
+ /**
+ * Create BatchUpdateException with message, Throwable, and update counts
+ */
+ @Test
+ public void test6() {
+ BatchUpdateException ex = new BatchUpdateException(reason, uc, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState() == null
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0
+ && Arrays.equals(ex.getUpdateCounts(), uc)
+ && Arrays.equals(ex.getLargeUpdateCounts(), luc)
+ );
+ }
+
+ /**
+ * Create BatchUpdateException with message, SQLState, Throwable, and update
+ * counts
+ */
+ @Test
+ public void test7() {
+ BatchUpdateException ex = new BatchUpdateException(reason, state, uc, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0
+ && Arrays.equals(ex.getUpdateCounts(), uc)
+ && Arrays.equals(ex.getLargeUpdateCounts(), luc)
+ );
+ }
+
+ /**
+ * Create BatchUpdateException with message, SQLState, errorCode code
+ * Throwable, and update counts
+ */
+ @Test
+ public void test8() {
+ BatchUpdateException ex = new BatchUpdateException(reason, state, errorCode,
+ uc, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == errorCode
+ && Arrays.equals(ex.getUpdateCounts(), uc)
+ && Arrays.equals(ex.getLargeUpdateCounts(), luc)
+ );
+ }
+
+ /**
+ * Create BatchUpdateException with message, SQLState, errorCode code
+ * Throwable, and long [] update counts
+ */
+ @Test
+ public void test9() {
+ BatchUpdateException ex = new BatchUpdateException(reason, state, errorCode,
+ luc, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == errorCode
+ && Arrays.equals(ex.getUpdateCounts(), uc)
+ && Arrays.equals(ex.getLargeUpdateCounts(), luc)
+ );
+ }
+
+ /**
+ * Validate that a copy of the update counts array is made
+ */
+ @Test
+ public void test10() {
+ int[] uc1 = {1, 2};
+ BatchUpdateException ex = new BatchUpdateException(uc1);
+ assertTrue(Arrays.equals(ex.getUpdateCounts(), uc1));
+ uc1[0] = 6689;
+ assertFalse(Arrays.equals(ex.getUpdateCounts(), uc1));
+ }
+
+ /**
+ * Validate that if null is specified for the update count, it is returned
+ * as null
+ */
+ @Test
+ public void test11() {
+ BatchUpdateException ex = new BatchUpdateException((int[]) null);
+ assertTrue(ex.getMessage() == null && ex.getSQLState() == null
+ && ex.getErrorCode() == 0 && ex.getUpdateCounts() == null
+ && ex.getLargeUpdateCounts() == null);
+ }
+
+ /**
+ * Serialize a BatchUpdateException and make sure you can read it back
+ * properly
+ */
+ @Test
+ public void test12() throws Exception {
+ BatchUpdateException be = new BatchUpdateException(reason, state, errorCode,
+ uc, t);
+ BatchUpdateException bue
+ = createSerializedException(be);
+ assertTrue(reason.equals(bue.getMessage())
+ && bue.getSQLState().equals(state)
+ && cause.equals(bue.getCause().toString())
+ && bue.getErrorCode() == errorCode
+ && Arrays.equals(bue.getLargeUpdateCounts(), luc)
+ && Arrays.equals(bue.getUpdateCounts(), uc));
+ }
+
+
+
+ /**
+ * De-Serialize a BatchUpdateException from JDBC 4.0 and make sure you can
+ * read it back properly
+ */
+ @Test
+ public void test13() throws Exception {
+ String reason1 = "This was the error msg";
+ String state1 = "user defined sqlState";
+ String cause1 = "java.lang.Throwable: throw 1";
+ int errorCode1 = 99999;
+ Throwable t = new Throwable("throw 1");
+ int[] uc1 = {1, 2, 21};
+ long[] luc1 = {1, 2, 21};
+
+ ObjectInputStream ois = new ObjectInputStream(
+ new ByteArrayInputStream(SerializedBatchUpdateException.DATA));
+ BatchUpdateException bue = (BatchUpdateException) ois.readObject();
+ assertTrue(reason1.equals(bue.getMessage())
+ && bue.getSQLState().equals(state1)
+ && bue.getErrorCode() == errorCode1
+ && cause1.equals(bue.getCause().toString())
+ && Arrays.equals(bue.getLargeUpdateCounts(), luc1)
+ && Arrays.equals(bue.getUpdateCounts(), uc1));
+ }
+
+ /**
+ * Serialize a BatchUpdateException with an Integer.MAX_VALUE + 1 and
+ * validate you can read it back properly
+ */
+ @Test
+ public void test14() throws Exception {
+ int[] uc1 = {Integer.MAX_VALUE, Integer.MAX_VALUE + 1};
+ long[] luc1 = {Integer.MAX_VALUE, Integer.MAX_VALUE + 1};
+ BatchUpdateException be = new BatchUpdateException(reason, state, errorCode,
+ luc1, t);
+ BatchUpdateException bue
+ = createSerializedException(be);
+ assertTrue(reason.equals(bue.getMessage())
+ && bue.getSQLState().equals(state)
+ && cause.equals(bue.getCause().toString())
+ && bue.getErrorCode() == errorCode
+ && Arrays.equals(bue.getLargeUpdateCounts(), luc1)
+ && Arrays.equals(bue.getUpdateCounts(), uc1));
+ }
+
+ /**
+ * Validate that the ordering of the returned Exceptions is correct
+ * using for-each loop
+ */
+ @Test
+ public void test15() {
+ BatchUpdateException ex = new BatchUpdateException("Exception 1", uc, t1);
+ BatchUpdateException ex1 = new BatchUpdateException("Exception 2", uc);
+ BatchUpdateException ex2 = new BatchUpdateException("Exception 3", uc, t2);
+ ex.setNextException(ex1);
+ ex.setNextException(ex2);
+ int num = 0;
+ for (Throwable e : ex) {
+ assertTrue(msgs[num++].equals(e.getMessage()));
+ }
+ }
+
+ /**
+ * Validate that the ordering of the returned Exceptions is correct
+ * using traditional while loop
+ */
+ @Test
+ public void test16() {
+ BatchUpdateException ex = new BatchUpdateException("Exception 1", uc, t1);
+ BatchUpdateException ex1 = new BatchUpdateException("Exception 2", uc);
+ BatchUpdateException ex2 = new BatchUpdateException("Exception 3", uc, t2);
+ ex.setNextException(ex1);
+ ex.setNextException(ex2);
+ SQLException sqe = ex;
+ int num = 0;
+ while (sqe != null) {
+ assertTrue(msgs[num++].equals(sqe.getMessage()));
+ Throwable c = sqe.getCause();
+ while (c != null) {
+ assertTrue(msgs[num++].equals(c.getMessage()));
+ c = c.getCause();
+ }
+ sqe = sqe.getNextException();
+ }
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/sql/testng/test/sql/DataTruncationTests.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,209 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package test.sql;
+
+import java.sql.DataTruncation;
+import java.sql.SQLException;
+import static org.testng.Assert.*;
+import org.testng.annotations.Test;
+import util.BaseTest;
+
+public class DataTruncationTests extends BaseTest {
+
+ private final String READ_TRUNCATION = "01004";
+ private final String WRITE_TRUNCATION = "22001";
+ private final String dtReason = "Data truncation";
+ private final int dterrorCode = 0;
+ private final String[] dtmsgs = {dtReason, "cause 1", dtReason,
+ dtReason, "cause 2"};
+ private boolean onRead = false;
+ private final boolean parameter = false;
+ private final int index = 21;
+ private final int dataSize = 25;
+ private final int transferSize = 10;
+
+ /**
+ * Create DataTruncation object indicating a truncation on read
+ */
+ @Test
+ public void test() {
+ onRead = true;
+ DataTruncation e = new DataTruncation(index, parameter, onRead,
+ dataSize, transferSize);
+ assertTrue(e.getMessage().equals(dtReason)
+ && e.getSQLState().equals(READ_TRUNCATION)
+ && e.getCause() == null
+ && e.getErrorCode() == dterrorCode
+ && e.getParameter() == parameter
+ && e.getRead() == onRead
+ && e.getDataSize() == dataSize
+ && e.getTransferSize() == transferSize
+ && e.getIndex() == index);
+ }
+
+ /**
+ * Create DataTruncation object indicating a truncation on write
+ */
+ @Test
+ public void test1() {
+ onRead = false;
+ DataTruncation e = new DataTruncation(index, parameter, onRead,
+ dataSize, transferSize);
+ assertTrue(e.getMessage().equals(dtReason)
+ && e.getSQLState().equals(WRITE_TRUNCATION)
+ && e.getCause() == null
+ && e.getErrorCode() == dterrorCode
+ && e.getParameter() == parameter
+ && e.getRead() == onRead
+ && e.getDataSize() == dataSize
+ && e.getTransferSize() == transferSize
+ && e.getIndex() == index);
+ }
+
+ /**
+ * Create DataTruncation object indicating a truncation on read with a
+ * Throwable
+ */
+ @Test
+ public void test2() {
+ onRead = true;
+ DataTruncation e = new DataTruncation(index, parameter, onRead,
+ dataSize, transferSize, t);
+ assertTrue(e.getMessage().equals(dtReason)
+ && e.getSQLState().equals(READ_TRUNCATION)
+ && cause.equals(e.getCause().toString())
+ && e.getErrorCode() == dterrorCode
+ && e.getParameter() == parameter
+ && e.getRead() == onRead
+ && e.getDataSize() == dataSize
+ && e.getTransferSize() == transferSize
+ && e.getIndex() == index);
+ }
+
+ /**
+ * Create DataTruncation object indicating a truncation on read with null
+ * specified for the Throwable
+ */
+ @Test
+ public void test3() {
+ onRead = true;;
+ DataTruncation e = new DataTruncation(index, parameter, onRead,
+ dataSize, transferSize, null);
+ assertTrue(e.getMessage().equals(dtReason)
+ && e.getSQLState().equals(READ_TRUNCATION)
+ && e.getCause() == null
+ && e.getErrorCode() == dterrorCode
+ && e.getParameter() == parameter
+ && e.getRead() == onRead
+ && e.getDataSize() == dataSize
+ && e.getTransferSize() == transferSize
+ && e.getIndex() == index);
+ }
+
+ /**
+ * Create DataTruncation object indicating a truncation on read and you can
+ * pass a -1 for the index
+ */
+ @Test
+ public void test4() {
+ onRead = true;
+ int negIndex = -1;
+ DataTruncation e = new DataTruncation(negIndex, parameter, onRead,
+ dataSize, transferSize);
+ assertTrue(e.getMessage().equals(dtReason)
+ && e.getSQLState().equals(READ_TRUNCATION)
+ && e.getCause() == null
+ && e.getErrorCode() == dterrorCode
+ && e.getParameter() == parameter
+ && e.getRead() == onRead
+ && e.getDataSize() == dataSize
+ && e.getTransferSize() == transferSize
+ && e.getIndex() == negIndex);
+ }
+
+ /**
+ * Serialize a DataTruncation and make sure you can read it back properly
+ */
+ @Test
+ public void test5() throws Exception {
+ DataTruncation e = new DataTruncation(index, parameter, onRead,
+ dataSize, transferSize);
+ DataTruncation ex1 = createSerializedException(e);
+ assertTrue(e.getMessage().equals(dtReason)
+ && e.getSQLState().equals(READ_TRUNCATION)
+ && e.getCause() == null
+ && e.getErrorCode() == dterrorCode
+ && e.getParameter() == parameter
+ && e.getRead() == onRead
+ && e.getDataSize() == dataSize
+ && e.getTransferSize() == transferSize
+ && e.getIndex() == index);
+ }
+
+ /**
+ * Validate that the ordering of the returned Exceptions is correct using
+ * for-each loop
+ */
+ @Test
+ public void test11() {
+ DataTruncation ex = new DataTruncation(index, parameter, onRead,
+ dataSize, transferSize, t1);
+ DataTruncation ex1 = new DataTruncation(index, parameter, onRead,
+ dataSize, transferSize);
+ DataTruncation ex2 = new DataTruncation(index, parameter, onRead,
+ dataSize, transferSize, t2);
+ ex.setNextException(ex1);
+ ex.setNextException(ex2);
+ int num = 0;
+ for (Throwable e : ex) {
+ assertTrue(dtmsgs[num++].equals(e.getMessage()));
+ }
+ }
+
+ /**
+ * Validate that the ordering of the returned Exceptions is correct using
+ * traditional while loop
+ */
+ @Test
+ public void test12() {
+ DataTruncation ex = new DataTruncation(index, parameter, onRead,
+ dataSize, transferSize, t1);
+ DataTruncation ex1 = new DataTruncation(index, parameter, onRead,
+ dataSize, transferSize);
+ DataTruncation ex2 = new DataTruncation(index, parameter, onRead,
+ dataSize, transferSize, t2);
+ ex.setNextException(ex1);
+ ex.setNextException(ex2);
+ int num = 0;
+ SQLException sqe = ex;
+ while (sqe != null) {
+ assertTrue(dtmsgs[num++].equals(sqe.getMessage()));
+ Throwable c = sqe.getCause();
+ while (c != null) {
+ assertTrue(dtmsgs[num++].equals(c.getMessage()));
+ c = c.getCause();
+ }
+ sqe = sqe.getNextException();
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/sql/testng/test/sql/DateTests.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,373 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package test.sql;
+
+import java.sql.Date;
+import java.time.Instant;
+import java.time.LocalDate;
+import static org.testng.Assert.*;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+import util.BaseTest;
+
+public class DateTests extends BaseTest {
+
+ /*
+ * Validate an IllegalArgumentException is thrown for an invalid Date string
+ */
+ @Test(dataProvider = "invalidDateValues",
+ expectedExceptions = IllegalArgumentException.class)
+ public void test(String d) throws Exception {
+ Date.valueOf(d);
+ }
+
+ /*
+ * Test that a date created from a date string is equal to the value
+ * returned from toString()
+ */
+ @Test(dataProvider = "validDateValues")
+ public void test00(String d, String expectedD) {
+ Date d1 = Date.valueOf(d);
+ Date d2 = Date.valueOf(expectedD);
+ assertTrue(d1.equals(d2) && d2.equals(d1)
+ && d1.toString().equals(expectedD), "Error d1 != d2");
+ }
+
+ /*
+ * Validate that a Date.after() returns false when same date is compared
+ */
+ @Test
+ public void test01() {
+ Date d = Date.valueOf("1961-08-30");
+ assertFalse(d.after(d), "Error d.after(d) = true");
+ }
+
+ /*
+ * Validate that a Date.after() returns true when later date is compared to
+ * earlier date
+ */
+ @Test
+ public void test2() {
+ Date d = Date.valueOf("1961-08-30");
+ Date d2 = new Date(System.currentTimeMillis());
+ assertTrue(d2.after(d), "Error d2.after(d) = false");
+ }
+
+ /*
+ * Validate that a Date.after() returns false when earlier date is compared
+ * to later date
+ */
+ @Test
+ public void test3() {
+ Date d = Date.valueOf("1961-08-30");
+ Date d2 = new Date(d.getTime());
+ assertFalse(d.after(d2), "Error d.after(d2) = true");
+ }
+
+ /*
+ * Validate that a Date.after() returns false when date compared to another
+ * date created from the original date
+ */
+ @Test
+ public void test4() {
+ Date d = Date.valueOf("1961-08-30");
+ Date d2 = new Date(d.getTime());
+ assertFalse(d.after(d2), "Error d.after(d2) = true");
+ assertFalse(d2.after(d), "Error d2.after(d) = true");
+ }
+
+ /*
+ * Validate that a Date.before() returns false when same date is compared
+ */
+ @Test
+ public void test5() {
+ Date d = Date.valueOf("1961-08-30");
+ assertFalse(d.before(d), "Error d.before(d) = true");
+ }
+
+ /*
+ * Validate that a Date.before() returns true when earlier date is compared
+ * to later date
+ */
+ @Test
+ public void test6() {
+ Date d = Date.valueOf("1961-08-30");
+ Date d2 = new Date(System.currentTimeMillis());
+ assertTrue(d.before(d2), "Error d.before(d2) = false");
+ }
+
+ /*
+ * Validate that a Date.before() returns false when later date is compared
+ * to earlier date
+ */
+ @Test
+ public void test7() {
+ Date d = Date.valueOf("1961-08-30");
+ Date d2 = new Date(d.getTime());
+ assertFalse(d2.before(d), "Error d2.before(d) = true");
+ }
+
+ /*
+ * Validate that a Date.before() returns false when date compared to another
+ * date created from the original date
+ */
+ @Test
+ public void test8() {
+ Date d = Date.valueOf("1961-08-30");
+ Date d2 = new Date(d.getTime());
+ assertFalse(d.before(d2), "Error d.before(d2) = true");
+ assertFalse(d2.before(d), "Error d2.before(d) = true");
+ }
+
+ /*
+ * Validate that a Date.compareTo returns 0 when both Date objects are the
+ * same
+ */
+ @Test
+ public void test9() {
+ Date d = Date.valueOf("1961-08-30");
+ assertTrue(d.compareTo(d) == 0, "Error d.compareTo(d) !=0");
+ }
+
+ /*
+ * Validate that a Date.compareTo returns 0 when both Date objects represent
+ * the same date
+ */
+ @Test
+ public void test10() {
+ Date d = Date.valueOf("1961-08-30");
+ Date d2 = new Date(d.getTime());
+ assertTrue(d.compareTo(d2) == 0, "Error d.compareTo(d2) !=0");
+ }
+
+ /*
+ * Validate that a Date.compareTo returns -1 when comparing a date to a
+ * later date
+ */
+ @Test
+ public void test11() {
+ Date d = Date.valueOf("1961-08-30");
+ Date d2 = new Date(System.currentTimeMillis());
+ assertTrue(d.compareTo(d2) == -1, "Error d.compareTo(d2) != -1");
+ }
+
+ /*
+ * Validate that a Date.compareTo returns 1 when comparing a date to an
+ * earlier date
+ */
+ @Test
+ public void test12() {
+ Date d = Date.valueOf("1961-08-30");
+ Date d2 = new Date(System.currentTimeMillis());
+ assertTrue(d2.compareTo(d) == 1, "Error d.compareTo(d2) != 1");
+ }
+
+ /*
+ * Validate that a Date made from a LocalDate are equal
+ */
+ @Test
+ public void test13() {
+ Date d = Date.valueOf("1961-08-30");
+ LocalDate ldt = d.toLocalDate();
+ Date d2 = Date.valueOf(ldt);
+ assertTrue(d.equals(d2), "Error d != d2");
+ }
+
+ /*
+ * Validate that a Date LocalDate value, made from a LocalDate are equal
+ */
+ @Test
+ public void test14() {
+ LocalDate ldt = LocalDate.now();
+ Date d = Date.valueOf(ldt);
+ assertTrue(ldt.equals(d.toLocalDate()),
+ "Error LocalDate values are not equal");
+ }
+
+ /*
+ * Validate an NPE occurs when a null LocalDate is passed to valueOf
+ */
+ @Test(expectedExceptions = NullPointerException.class)
+ public void test15() throws Exception {
+ LocalDate ld = null;
+ Date.valueOf(ld);
+ }
+
+ /*
+ * Validate an UnsupportedOperationException occurs when toInstant() is
+ * called
+ */
+ @Test(expectedExceptions = UnsupportedOperationException.class)
+ public void test16() throws Exception {
+ Date d = Date.valueOf("1961-08-30");
+ Instant instant = d.toInstant();
+ }
+
+ /*
+ * Validate that two Date objects are equal when one is created from the
+ * toString() of the other
+ */
+ @Test
+ public void test17() {
+ Date d = Date.valueOf("1961-08-30");
+ Date d2 = Date.valueOf(d.toString());
+ assertTrue(d.equals(d2) && d2.equals(d), "Error d != d2");
+ }
+
+ /*
+ * Validate that two Date values one created using valueOf and another via a
+ * constructor are equal
+ */
+ @Test
+ public void test18() {
+
+ Date d = Date.valueOf("1961-08-30");
+ Date d2 = new Date(61, 7, 30);
+ assertTrue(d.equals(d2), "Error d != d2");
+ }
+
+ /*
+ * Validate that two Date values one created using getTime() of the other
+ * are equal
+ */
+ @Test
+ public void test19() {
+
+ Date d = Date.valueOf("1961-08-30");
+ Date d2 = new Date(d.getTime());
+ assertTrue(d.equals(d2), "Error d != d2");
+ }
+
+ /*
+ * Validate that a Date value is equal to itself
+ */
+ @Test
+ public void test20() {
+
+ Date d = Date.valueOf("1961-08-30");
+ assertTrue(d.equals(d), "Error d != d");
+ }
+
+ /*
+ * Validate an IllegalArgumentException is thrown for calling getHours
+ */
+ @Test(expectedExceptions = IllegalArgumentException.class)
+ public void test21() throws Exception {
+ Date d = Date.valueOf("1961-08-30");
+ d.getHours();
+ }
+
+ /*
+ * Validate an IllegalArgumentException is thrown for calling getMinutes
+ */
+ @Test(expectedExceptions = IllegalArgumentException.class)
+ public void test22() throws Exception {
+ Date d = Date.valueOf("1961-08-30");
+ d.getMinutes();
+ }
+
+ /*
+ * Validate an IllegalArgumentException is thrown for calling getSeconds
+ */
+ @Test(expectedExceptions = IllegalArgumentException.class)
+ public void test23() throws Exception {
+ Date d = Date.valueOf("1961-08-30");
+ d.getSeconds();
+ }
+
+ /*
+ * Validate an IllegalArgumentException is thrown for calling setHours
+ */
+ @Test(expectedExceptions = IllegalArgumentException.class)
+ public void test24() throws Exception {
+ Date d = Date.valueOf("1961-08-30");
+ d.setHours(8);
+ }
+
+ /*
+ * Validate an IllegalArgumentException is thrown for calling setMinutes
+ */
+ @Test(expectedExceptions = IllegalArgumentException.class)
+ public void test25() throws Exception {
+ Date d = Date.valueOf("1961-08-30");
+ d.setMinutes(0);
+ }
+
+ /*
+ * Validate an IllegalArgumentException is thrown for calling setSeconds
+ */
+ @Test(expectedExceptions = IllegalArgumentException.class)
+ public void test26() throws Exception {
+ Date d = Date.valueOf("1961-08-30");
+ d.setSeconds(0);
+ }
+
+ /*
+ * DataProvider used to provide Date which are not valid and are used
+ * to validate that an IllegalArgumentException will be thrown from the
+ * valueOf method
+ */
+ @DataProvider(name = "invalidDateValues")
+ private Object[][] invalidDateValues() {
+ return new Object[][]{
+ {"20009-11-01"},
+ {"09-11-01"},
+ {"-11-01"},
+ {"2009-111-01"},
+ {"2009--01"},
+ {"2009-13-01"},
+ {"2009-11-011"},
+ {"2009-11-"},
+ {"2009-11-00"},
+ {"2009-11-33"},
+ {"--"},
+ {""},
+ {null},
+ {"-"},
+ {"2009"},
+ {"2009-01"},
+ {"---"},
+ {"2009-13--1"},
+ {"1900-1-0"},
+ {"2009-01-01 10:50:01"},
+ {"1996-12-10 12:26:19.1"},
+ {"10:50:01"}
+ };
+ }
+
+ /*
+ * DataProvider used to provide Dates which are valid and are used
+ * to validate that an IllegalArgumentException will not be thrown from the
+ * valueOf method and the corect value from toString() is returned
+ */
+ @DataProvider(name = "validDateValues")
+ private Object[][] validDateValues() {
+ return new Object[][]{
+ {"2009-08-30", "2009-08-30"},
+ {"2009-01-8", "2009-01-08"},
+ {"2009-1-01", "2009-01-01"},
+ {"2009-1-1", "2009-01-01"}
+
+ };
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/sql/testng/test/sql/DriverManagerPermissionsTests.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,154 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package test.sql;
+
+import java.security.AccessControlException;
+import java.security.Policy;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+import util.BaseTest;
+import util.StubDriver;
+import util.TestPolicy;
+
+public class DriverManagerPermissionsTests extends BaseTest {
+
+ private static Policy policy;
+ private static SecurityManager sm;
+
+ /*
+ * Install a SecurityManager along with a base Policy to allow testNG to run
+ */
+ @BeforeClass
+ public static void setUpClass() throws Exception {
+ setPolicy(new TestPolicy());
+ System.setSecurityManager(new SecurityManager());
+ }
+
+ /*
+ * Install the original Policy and SecurityManager
+ */
+ @AfterClass
+ public static void tearDownClass() throws Exception {
+ System.setSecurityManager(sm);
+ setPolicy(policy);
+ }
+
+ /*
+ * Save off the original Policy and SecurityManager
+ */
+ public DriverManagerPermissionsTests() {
+ policy = Policy.getPolicy();
+ sm = System.getSecurityManager();
+ }
+
+ /*
+ * Validate that AccessControlException is thrown if SQLPermission("setLog")
+ * has not been granted
+ */
+ @Test(expectedExceptions = AccessControlException.class)
+ public void test() {
+ setPolicy(new TestPolicy());
+ DriverManager.setLogStream(null);
+ }
+
+ /*
+ * Validate that setLogStream succeeds if SQLPermission("setLog") has been
+ * granted
+ */
+ @Test
+ public void test1() {
+ Policy.setPolicy(new TestPolicy("setLog"));
+ DriverManager.setLogStream(null);
+ }
+
+ /*
+ * Validate that setLogStream succeeds if AllPermissions has been granted
+ */
+ @Test
+ public void test2() {
+ setPolicy(new TestPolicy("all"));
+ DriverManager.setLogStream(null);
+ }
+
+ /*
+ * Validate that AccessControlException is thrown if SQLPermission("setLog")
+ * has not been granted
+ */
+ @Test(expectedExceptions = AccessControlException.class)
+ public void test4() {
+ setPolicy(new TestPolicy());
+ DriverManager.setLogWriter(null);
+ }
+
+ /*
+ * Validate that setLogWriter succeeds if SQLPermission("setLog") has been
+ * granted
+ */
+ @Test
+ public void test5() {
+ setPolicy(new TestPolicy("setLog"));
+ DriverManager.setLogWriter(null);
+ }
+
+ /*
+ * Validate that setLogWriter succeeds if AllPermissions has been granted
+ */
+ @Test
+ public void test6() {
+ setPolicy(new TestPolicy("all"));
+ DriverManager.setLogWriter(null);
+ }
+
+ /*
+ * Validate that AccessControlException is thrown if
+ * SQLPermission("deregisterDriver") has not been granted
+ */
+ @Test(expectedExceptions = AccessControlException.class)
+ public void test7() throws SQLException {
+ setPolicy(new TestPolicy());
+ DriverManager.deregisterDriver(new StubDriver());
+ }
+
+ /*
+ * Validate that deregisterDriver succeeds if
+ * SQLPermission("deregisterDriver") has been granted
+ */
+ @Test
+ public void test8() throws SQLException {
+ setPolicy(new TestPolicy("deregisterDriver"));
+ DriverManager.deregisterDriver(new StubDriver());
+ }
+
+ /*
+ * Validate that deregisterDriver succeeds if AllPermissions has been
+ * granted
+ */
+ @Test
+ public void test9() throws SQLException {
+ setPolicy(new TestPolicy("all"));
+ DriverManager.deregisterDriver(new StubDriver());
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/sql/testng/test/sql/DriverManagerTests.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,354 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package test.sql;
+
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.CharArrayReader;
+import java.io.CharArrayWriter;
+import java.io.File;
+import java.io.InputStreamReader;
+import java.io.PrintStream;
+import java.io.PrintWriter;
+import java.sql.Driver;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import java.util.Properties;
+import static org.testng.Assert.*;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+import util.StubDriver;
+
+public class DriverManagerTests {
+
+ private final String StubDriverURL = "jdbc:tennis:boy";
+ private final String StubDriverDAURL = "jdbc:luckydog:tennis";
+ private final String InvalidURL = "jdbc:cardio:tennis";
+ private String[] results = {"output", "more output", "and more", "the end"};
+ private String noOutput = "should not find this";
+
+ public DriverManagerTests() {
+ }
+
+ @BeforeClass
+ public static void setUpClass() throws Exception {
+ }
+
+ @AfterClass
+ public static void tearDownClass() throws Exception {
+ }
+
+ @BeforeMethod
+ public void setUpMethod() throws Exception {
+ removeAllDrivers();
+ }
+
+ @AfterMethod
+ public void tearDownMethod() throws Exception {
+ }
+
+ /**
+ * Utility method to remove all registered drivers
+ */
+ private static void removeAllDrivers() {
+ java.util.Enumeration e = DriverManager.getDrivers();
+ while (e.hasMoreElements()) {
+ try {
+ DriverManager.deregisterDriver((Driver) (e.nextElement()));
+ } catch (SQLException ex) {
+ System.out.print(ex.getMessage());
+ }
+ }
+ }
+
+ /**
+ * Utility method to see if a driver is registered
+ */
+ private boolean isDriverRegistered(Driver d) {
+ boolean foundDriver = false;
+ java.util.Enumeration e = DriverManager.getDrivers();
+ while (e.hasMoreElements()) {
+ if (d == (Driver) e.nextElement()) {
+ foundDriver = true;
+ break;
+ }
+ }
+ return foundDriver;
+ }
+
+ /**
+ * Validate that values set using setLoginTimeout will be returned by
+ * getLoginTimeout
+ */
+ @Test
+ public void test() {
+ int[] vals = {-1, 0, 5};
+ for (int val : vals) {
+ DriverManager.setLoginTimeout(val);
+ assertEquals(val, DriverManager.getLoginTimeout());
+ }
+ }
+
+ /**
+ * Validate that NullPointerException is thrown when null is passed to
+ * registerDriver
+ */
+ @Test(expectedExceptions = NullPointerException.class)
+ public void test1() throws Exception {
+ Driver d = null;
+ DriverManager.registerDriver(d);
+ }
+
+ /**
+ * Validate that NullPointerException is thrown when null is passed to
+ * registerDriver
+ */
+ @Test(expectedExceptions = NullPointerException.class)
+ public void test2() throws Exception {
+ Driver d = null;
+ DriverManager.registerDriver(d, null);
+ }
+
+ /**
+ * Validate that a null value allows for deRegisterDriver to return
+ */
+ @Test
+ public void test3() throws Exception {
+ DriverManager.deregisterDriver(null);
+
+ }
+
+ /**
+ * Validate that SQLException is thrown when there is no Driver to service
+ * the URL
+ */
+ @Test(expectedExceptions = SQLException.class)
+ public void test4() throws Exception {
+ DriverManager.getConnection(InvalidURL);
+ }
+
+ /**
+ * Validate that SQLException is thrown when there is no Driver to service
+ * the URL
+ */
+ @Test(expectedExceptions = SQLException.class)
+ public void test5() throws Exception {
+ DriverManager.getConnection(InvalidURL, new Properties());
+ }
+
+ /**
+ * Validate that SQLException is thrown when there is no Driver to service
+ * the URL
+ */
+ @Test(expectedExceptions = SQLException.class)
+ public void test6() throws Exception {
+ DriverManager.getConnection(InvalidURL, "LuckyDog", "tennisanyone");
+ }
+
+ /**
+ * Validate that SQLException is thrown when null is passed for the URL
+ */
+ @Test(expectedExceptions = SQLException.class)
+ public void test7() throws Exception {
+ DriverManager.getConnection(null);
+ }
+
+ /**
+ * Validate that SQLException is thrown when null is passed for the URL
+ */
+ @Test(expectedExceptions = SQLException.class)
+ public void test8() throws Exception {
+ DriverManager.getConnection(null, new Properties());
+ }
+
+ /**
+ * Validate that SQLException is thrown when null is passed for the URL
+ */
+ @Test(expectedExceptions = SQLException.class)
+ public void test9() throws Exception {
+ DriverManager.getConnection(null, "LuckyDog", "tennisanyone");
+ }
+
+ /**
+ * Validate that SQLException is thrown when there is no Driver to service
+ * the URL
+ */
+ @Test(expectedExceptions = SQLException.class)
+ public void test10() throws Exception {
+ DriverManager.getDriver(InvalidURL);
+ }
+
+ /**
+ * Validate that SQLException is thrown when null is passed for the URL
+ */
+ @Test(expectedExceptions = SQLException.class)
+ public void test11() throws Exception {
+ DriverManager.getDriver(null);
+ }
+
+ /**
+ * Validate that a non-null Driver is returned by getDriver when a valid URL
+ * is specified
+ */
+ @Test
+ public void test12() throws Exception {
+
+ DriverManager.registerDriver(new StubDriver());
+ assertTrue(DriverManager.getDriver(StubDriverURL) != null);
+ }
+
+ /**
+ * Validate that SQLException is thrown when the URL is not valid for any of
+ * the registered drivers
+ */
+ @Test(expectedExceptions = SQLException.class)
+ public void test13() throws Exception {
+ DriverManager.registerDriver(new StubDriver());
+ DriverManager.getDriver(InvalidURL);
+ }
+
+ /**
+ * Validate that a Connection object is returned when a valid URL is
+ * specified to getConnection
+ *
+ */
+ @Test
+ public void test14() throws Exception {
+
+ DriverManager.registerDriver(new StubDriver());
+ assertTrue(
+ DriverManager.getConnection(StubDriverURL) != null);
+ assertTrue(DriverManager.getConnection(StubDriverURL,
+ "LuckyDog", "tennisanyone") != null);
+ Properties props = new Properties();
+ props.put("user", "LuckyDog");
+ props.put("password", "tennisanyone");
+ assertTrue(
+ DriverManager.getConnection(StubDriverURL,
+ props) != null);
+ }
+
+ /**
+ * Register a driver and make sure you find it via its URL. Deregister the
+ * driver and validate it is not longer registered
+ *
+ * @throws Exception
+ */
+ @Test()
+ public void test15() throws Exception {
+ DriverManager.registerDriver(new StubDriver());
+ Driver d = DriverManager.getDriver(StubDriverURL);
+ assertTrue(d != null);
+ assertTrue(isDriverRegistered(d));
+ DriverManager.deregisterDriver(d);
+ assertFalse(isDriverRegistered(d));
+ }
+
+ /**
+ * Validate that DriverAction.release is called when a driver is registered
+ * via registerDriver(Driver, DriverAction)
+ *
+ * @throws Exception
+ */
+ @Test
+ public void test16() throws Exception {
+ File file = new File(util.StubDriverDA.DriverActionCalled);
+ file.delete();
+ assertFalse(file.exists());
+ Driver d = null;
+ Class.forName("util.StubDriverDA");
+ d = DriverManager.getDriver(StubDriverDAURL);
+ DriverManager.deregisterDriver(d);
+ assertFalse(isDriverRegistered(d), "Driver is registered");
+ assertTrue(file.exists());
+ }
+
+ /**
+ * Create a PrintStream and use to send output via DriverManager.println
+ * Validate that if you disable the stream, the output sent is not present
+ */
+ @Test
+ public void tests17() throws Exception {
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ PrintStream ps = new PrintStream(os);
+ DriverManager.setLogStream(ps);
+ assertTrue(DriverManager.getLogStream() == ps);
+
+ DriverManager.println(results[0]);
+ DriverManager.setLogStream((PrintStream) null);
+ assertTrue(DriverManager.getLogStream() == null);
+ DriverManager.println(noOutput);
+ DriverManager.setLogStream(ps);
+ DriverManager.println(results[1]);
+ DriverManager.println(results[2]);
+ DriverManager.println(results[3]);
+ DriverManager.setLogStream((PrintStream) null);
+ DriverManager.println(noOutput);
+
+ /*
+ * Check we do not get the output when the stream is disabled
+ */
+ InputStreamReader is
+ = new InputStreamReader(new ByteArrayInputStream(os.toByteArray()));
+ BufferedReader reader = new BufferedReader(is);
+ for (String result : results) {
+ assertTrue(result.equals(reader.readLine()));
+ }
+ }
+
+ /**
+ * Create a PrintWriter and use to to send output via DriverManager.println
+ * Validate that if you disable the writer, the output sent is not present
+ */
+ @Test
+ public void tests18() throws Exception {
+ CharArrayWriter cw = new CharArrayWriter();
+ PrintWriter pw = new PrintWriter(cw);
+ DriverManager.setLogWriter(pw);
+ assertTrue(DriverManager.getLogWriter() == pw);
+
+ DriverManager.println(results[0]);
+ DriverManager.setLogWriter(null);
+ assertTrue(DriverManager.getLogWriter() == null);
+ DriverManager.println(noOutput);
+ DriverManager.setLogWriter(pw);
+ DriverManager.println(results[1]);
+ DriverManager.println(results[2]);
+ DriverManager.println(results[3]);
+ DriverManager.setLogWriter(null);
+ DriverManager.println(noOutput);
+
+ /*
+ * Check we do not get the output when the stream is disabled
+ */
+ BufferedReader reader
+ = new BufferedReader(new CharArrayReader(cw.toCharArray()));
+ for (String result : results) {
+ assertTrue(result.equals(reader.readLine()));
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/sql/testng/test/sql/SQLClientInfoExceptionTests.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,227 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package test.sql;
+
+import java.sql.ClientInfoStatus;
+import java.sql.SQLClientInfoException;
+import java.sql.SQLException;
+import java.util.HashMap;
+import static org.testng.Assert.*;
+import org.testng.annotations.Test;
+import util.BaseTest;
+
+public class SQLClientInfoExceptionTests extends BaseTest {
+
+ private final HashMap<String, ClientInfoStatus> map = new HashMap<>();
+
+ public SQLClientInfoExceptionTests() {
+ map.put("1", ClientInfoStatus.REASON_UNKNOWN_PROPERTY);
+ map.put("21", ClientInfoStatus.REASON_UNKNOWN_PROPERTY);
+ }
+
+ /**
+ * Create SQLClientInfoException and setting all objects to null
+ */
+ @Test
+ public void test() {
+ SQLClientInfoException e = new SQLClientInfoException(null);
+ assertTrue(e.getMessage() == null && e.getSQLState() == null
+ && e.getCause() == null && e.getErrorCode() == 0
+ && e.getFailedProperties() == null);
+ }
+
+ /**
+ * Create SQLClientInfoException with no-arg constructor
+ */
+ @Test
+ public void test1() {
+ SQLClientInfoException ex = new SQLClientInfoException();
+ assertTrue(ex.getMessage() == null
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0
+ && ex.getFailedProperties() == null);
+ }
+
+ /**
+ * Create SQLClientInfoException with null Throwable
+ */
+ @Test
+ public void test2() {
+
+ SQLClientInfoException ex = new SQLClientInfoException(map, null);
+ assertTrue(ex.getMessage() == null
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0
+ && ex.getFailedProperties().equals(map));
+ }
+
+ /**
+ * Create SQLClientInfoException with message
+ */
+ @Test
+ public void test3() {
+ SQLClientInfoException ex = new SQLClientInfoException(reason, map);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0
+ && ex.getFailedProperties().equals(map));
+ }
+
+ /**
+ * Create SQLClientInfoException with null Throwable
+ */
+ @Test
+ public void test4() {
+ SQLClientInfoException ex = new SQLClientInfoException(reason, map, null);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0
+ && ex.getFailedProperties().equals(map));
+ }
+
+ /**
+ * Create SQLClientInfoException with message, and SQLState
+ */
+ @Test
+ public void test5() {
+ SQLClientInfoException ex = new SQLClientInfoException(reason, state,
+ map);
+
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0
+ && ex.getFailedProperties().equals(map));
+ }
+
+ /**
+ * Create SQLClientInfoException with message, and SQLState
+ */
+ @Test
+ public void test6() {
+ SQLClientInfoException ex = new SQLClientInfoException(reason, state,
+ map, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0
+ && ex.getFailedProperties().equals(map));
+ }
+
+ /**
+ * Create SQLClientInfoException with message, SQLState, errorCode, and
+ * Throwable
+ */
+ @Test
+ public void test7() {
+ SQLClientInfoException ex = new SQLClientInfoException(reason, state,
+ errorCode, map);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && ex.getCause() == null
+ && ex.getErrorCode() == errorCode
+ && ex.getFailedProperties().equals(map));
+ }
+
+ /**
+ * Create SQLClientInfoException with message, SQLState, and error code
+ */
+ @Test
+ public void test8() {
+ SQLClientInfoException ex = new SQLClientInfoException(reason, state,
+ errorCode, map, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == errorCode
+ && ex.getFailedProperties().equals(map));
+ }
+
+ /**
+ * Serialize a SQLClientInfoException and make sure you can read it back
+ * properly
+ */
+ @Test
+ public void test10() throws Exception {
+ SQLClientInfoException e = new SQLClientInfoException(reason, state,
+ errorCode, map, t);
+ SQLClientInfoException ex1 =
+ createSerializedException(e);
+ assertTrue(reason.equals(ex1.getMessage())
+ && ex1.getSQLState().equals(state)
+ && cause.equals(ex1.getCause().toString())
+ && ex1.getErrorCode() == errorCode
+ && ex1.getFailedProperties().equals(map));
+ }
+
+ /**
+ * Validate that the ordering of the returned Exceptions is correct using
+ * for-each loop
+ */
+ @Test
+ public void test11() {
+ SQLClientInfoException ex = new SQLClientInfoException("Exception 1",
+ map, t1);
+ SQLClientInfoException ex1 = new SQLClientInfoException("Exception 2",
+ map);
+ SQLClientInfoException ex2 = new SQLClientInfoException("Exception 3",
+ map, t2);
+ ex.setNextException(ex1);
+ ex.setNextException(ex2);
+ int num = 0;
+ for (Throwable e : ex) {
+ assertTrue(msgs[num++].equals(e.getMessage()));
+ }
+ }
+
+ /**
+ * Validate that the ordering of the returned Exceptions is correct using
+ * traditional while loop
+ */
+ @Test
+ public void test12() {
+ SQLClientInfoException ex = new SQLClientInfoException("Exception 1",
+ map, t1);
+ SQLClientInfoException ex1 = new SQLClientInfoException("Exception 2",
+ map);
+ SQLClientInfoException ex2 = new SQLClientInfoException("Exception 3",
+ map, t2);
+ ex.setNextException(ex1);
+ ex.setNextException(ex2);
+ int num = 0;
+ SQLException sqe = ex;
+ while (sqe != null) {
+ assertTrue(msgs[num++].equals(sqe.getMessage()));
+ Throwable c = sqe.getCause();
+ while (c != null) {
+ assertTrue(msgs[num++].equals(c.getMessage()));
+ c = c.getCause();
+ }
+ sqe = sqe.getNextException();
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/sql/testng/test/sql/SQLDataExceptionTests.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,215 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package test.sql;
+
+import java.sql.SQLDataException;
+import java.sql.SQLException;
+import java.sql.SQLNonTransientException;
+import static org.testng.Assert.*;
+import org.testng.annotations.Test;
+import util.BaseTest;
+
+public class SQLDataExceptionTests extends BaseTest {
+
+ /**
+ * Create SQLDataException and setting all objects to null
+ */
+ @Test
+ public void test() {
+ SQLDataException e = new SQLDataException(null, null, errorCode, null);
+ assertTrue(e.getMessage() == null && e.getSQLState() == null
+ && e.getCause() == null && e.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLDataException with no-arg constructor
+ */
+ @Test
+ public void test1() {
+ SQLDataException ex = new SQLDataException();
+ assertTrue(ex.getMessage() == null
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLDataException with message
+ */
+ @Test
+ public void test2() {
+ SQLDataException ex = new SQLDataException(reason);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLDataException with message, and SQLState
+ */
+ @Test
+ public void test3() {
+ SQLDataException ex = new SQLDataException(reason, state);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLDataException with message, SQLState, and error code
+ */
+ @Test
+ public void test4() {
+ SQLDataException ex = new SQLDataException(reason, state, errorCode);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && ex.getCause() == null
+ && ex.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLDataException with message, SQLState, errorCode, and Throwable
+ */
+ @Test
+ public void test5() {
+ SQLDataException ex = new SQLDataException(reason, state, errorCode, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLDataException with message, SQLState, and Throwable
+ */
+ @Test
+ public void test6() {
+ SQLDataException ex = new SQLDataException(reason, state, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLDataException with message, and Throwable
+ */
+ @Test
+ public void test7() {
+ SQLDataException ex = new SQLDataException(reason, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState() == null
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLDataException with null Throwable
+ */
+ @Test
+ public void test8() {
+ SQLDataException ex = new SQLDataException((Throwable)null);
+ assertTrue(ex.getMessage() == null
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLDataException with Throwable
+ */
+ @Test
+ public void test9() {
+ SQLDataException ex = new SQLDataException(t);
+ assertTrue(ex.getMessage().equals(cause)
+ && ex.getSQLState() == null
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Serialize a SQLDataException and make sure you can read it back properly
+ */
+ @Test
+ public void test10() throws Exception {
+ SQLDataException e = new SQLDataException(reason, state, errorCode, t);
+ SQLDataException ex1 = createSerializedException(e);
+ assertTrue(reason.equals(ex1.getMessage())
+ && ex1.getSQLState().equals(state)
+ && cause.equals(ex1.getCause().toString())
+ && ex1.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Validate that the ordering of the returned Exceptions is correct
+ * using for-each loop
+ */
+ @Test
+ public void test11() {
+ SQLDataException ex = new SQLDataException("Exception 1", t1);
+ SQLDataException ex1 = new SQLDataException("Exception 2");
+ SQLDataException ex2 = new SQLDataException("Exception 3", t2);
+ ex.setNextException(ex1);
+ ex.setNextException(ex2);
+ int num = 0;
+ for (Throwable e : ex) {
+ assertTrue(msgs[num++].equals(e.getMessage()));
+ }
+ }
+
+ /**
+ * Validate that the ordering of the returned Exceptions is correct
+ * using traditional while loop
+ */
+ @Test
+ public void test12() {
+ SQLDataException ex = new SQLDataException("Exception 1", t1);
+ SQLDataException ex1 = new SQLDataException("Exception 2");
+ SQLDataException ex2 = new SQLDataException("Exception 3", t2);
+ ex.setNextException(ex1);
+ ex.setNextException(ex2);
+ int num = 0;
+ SQLException sqe = ex;
+ while (sqe != null) {
+ assertTrue(msgs[num++].equals(sqe.getMessage()));
+ Throwable c = sqe.getCause();
+ while (c != null) {
+ assertTrue(msgs[num++].equals(c.getMessage()));
+ c = c.getCause();
+ }
+ sqe = sqe.getNextException();
+ }
+ }
+
+ /**
+ * Create SQLDataException and validate it is an instance of
+ * SQLNonTransientException
+ */
+ @Test
+ public void test13() {
+ Exception ex = new SQLDataException();
+ assertTrue(ex instanceof SQLNonTransientException);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/sql/testng/test/sql/SQLExceptionTests.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,202 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package test.sql;
+
+import java.sql.SQLException;
+import static org.testng.Assert.*;
+import org.testng.annotations.Test;
+import util.BaseTest;
+
+public class SQLExceptionTests extends BaseTest {
+
+ /**
+ * Create SQLException and setting all objects to null
+ */
+ @Test
+ public void test() {
+ SQLException e = new SQLException(null, null, errorCode, null);
+ assertTrue(e.getMessage() == null && e.getSQLState() == null
+ && e.getCause() == null && e.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLException with no-arg constructor
+ */
+ @Test
+ public void test1() {
+ SQLException ex = new SQLException();
+ assertTrue(ex.getMessage() == null
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLException with message
+ */
+ @Test
+ public void test2() {
+ SQLException ex = new SQLException(reason);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLException with message, and SQLState
+ */
+ @Test
+ public void test3() {
+ SQLException ex = new SQLException(reason, state);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLException with message, SQLState, and error code
+ */
+ @Test
+ public void test4() {
+ SQLException ex = new SQLException(reason, state, errorCode);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && ex.getCause() == null
+ && ex.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLException with message, SQLState, errorCode, and Throwable
+ */
+ @Test
+ public void test5() {
+ SQLException ex = new SQLException(reason, state, errorCode, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLException with message, SQLState, and Throwable
+ */
+ @Test
+ public void test6() {
+ SQLException ex = new SQLException(reason, state, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLException with message, and Throwable
+ */
+ @Test
+ public void test7() {
+ SQLException ex = new SQLException(reason, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState() == null
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLException with null Throwable
+ */
+ @Test
+ public void test8() {
+ SQLException ex = new SQLException((Throwable)null);
+ assertTrue(ex.getMessage() == null
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLException with Throwable
+ */
+ @Test
+ public void test9() {
+ SQLException ex = new SQLException(t);
+ assertTrue(ex.getMessage().equals(cause)
+ && ex.getSQLState() == null
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Serialize a SQLException and make sure you can read it back properly
+ */
+ @Test
+ public void test10() throws Exception {
+ SQLException e = new SQLException(reason, state, errorCode, t);
+ SQLException ex1 = createSerializedException(e);
+ assertTrue(reason.equals(ex1.getMessage())
+ && ex1.getSQLState().equals(state)
+ && cause.equals(ex1.getCause().toString())
+ && ex1.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Validate that the ordering of the returned Exceptions is correct
+ * using for-each loop
+ */
+ @Test
+ public void test11() {
+ SQLException ex = new SQLException("Exception 1", t1);
+ SQLException ex1 = new SQLException("Exception 2");
+ SQLException ex2 = new SQLException("Exception 3", t2);
+ ex.setNextException(ex1);
+ ex.setNextException(ex2);
+ int num = 0;
+ for (Throwable e : ex) {
+ assertTrue(msgs[num++].equals(e.getMessage()));
+ }
+ }
+
+ /**
+ * Validate that the ordering of the returned Exceptions is correct
+ * using traditional while loop
+ */
+ @Test
+ public void test12() {
+ SQLException ex = new SQLException("Exception 1", t1);
+ SQLException ex1 = new SQLException("Exception 2");
+ SQLException ex2 = new SQLException("Exception 3", t2);
+ ex.setNextException(ex1);
+ ex.setNextException(ex2);
+ int num = 0;
+ while (ex != null) {
+ assertTrue(msgs[num++].equals(ex.getMessage()));
+ Throwable c = ex.getCause();
+ while (c != null) {
+ assertTrue(msgs[num++].equals(c.getMessage()));
+ c = c.getCause();
+ }
+ ex = ex.getNextException();
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/sql/testng/test/sql/SQLFeatureNotSupportedExceptionTests.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,232 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package test.sql;
+
+import java.sql.SQLException;
+import java.sql.SQLFeatureNotSupportedException;
+import java.sql.SQLNonTransientException;
+import static org.testng.Assert.*;
+import org.testng.annotations.Test;
+import util.BaseTest;
+
+public class SQLFeatureNotSupportedExceptionTests extends BaseTest {
+
+ /**
+ * Create SQLFeatureNotSupportedException and setting all objects to null
+ */
+ @Test
+ public void test() {
+ SQLFeatureNotSupportedException e =
+ new SQLFeatureNotSupportedException(null, null, errorCode, null);
+ assertTrue(e.getMessage() == null && e.getSQLState() == null
+ && e.getCause() == null && e.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLFeatureNotSupportedException with no-arg constructor
+ */
+ @Test
+ public void test1() {
+ SQLFeatureNotSupportedException ex = new SQLFeatureNotSupportedException();
+ assertTrue(ex.getMessage() == null
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLFeatureNotSupportedException with message
+ */
+ @Test
+ public void test2() {
+ SQLFeatureNotSupportedException ex =
+ new SQLFeatureNotSupportedException(reason);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLFeatureNotSupportedException with message, and SQLState
+ */
+ @Test
+ public void test3() {
+ SQLFeatureNotSupportedException ex =
+ new SQLFeatureNotSupportedException(reason, state);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLFeatureNotSupportedException with message, SQLState, and error code
+ */
+ @Test
+ public void test4() {
+ SQLFeatureNotSupportedException ex =
+ new SQLFeatureNotSupportedException(reason, state, errorCode);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && ex.getCause() == null
+ && ex.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLFeatureNotSupportedException with message, SQLState, errorCode, and Throwable
+ */
+ @Test
+ public void test5() {
+ SQLFeatureNotSupportedException ex =
+ new SQLFeatureNotSupportedException(reason, state, errorCode, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLFeatureNotSupportedException with message, SQLState, and Throwable
+ */
+ @Test
+ public void test6() {
+ SQLFeatureNotSupportedException ex =
+ new SQLFeatureNotSupportedException(reason, state, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLFeatureNotSupportedException with message, and Throwable
+ */
+ @Test
+ public void test7() {
+ SQLFeatureNotSupportedException ex =
+ new SQLFeatureNotSupportedException(reason, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState() == null
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLFeatureNotSupportedException with null Throwable
+ */
+ @Test
+ public void test8() {
+ SQLFeatureNotSupportedException ex =
+ new SQLFeatureNotSupportedException((Throwable) null);
+ assertTrue(ex.getMessage() == null
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLFeatureNotSupportedException with Throwable
+ */
+ @Test
+ public void test9() {
+ SQLFeatureNotSupportedException ex =
+ new SQLFeatureNotSupportedException(t);
+ assertTrue(ex.getMessage().equals(cause)
+ && ex.getSQLState() == null
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Serialize a SQLFeatureNotSupportedException and make sure you can read it back properly
+ */
+ @Test
+ public void test10() throws Exception {
+ SQLFeatureNotSupportedException e =
+ new SQLFeatureNotSupportedException(reason, state, errorCode, t);
+ SQLFeatureNotSupportedException ex1 =
+ createSerializedException(e);
+ assertTrue(reason.equals(ex1.getMessage())
+ && ex1.getSQLState().equals(state)
+ && cause.equals(ex1.getCause().toString())
+ && ex1.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Validate that the ordering of the returned Exceptions is correct
+ * using for-each loop
+ */
+ @Test
+ public void test11() {
+ SQLFeatureNotSupportedException ex =
+ new SQLFeatureNotSupportedException("Exception 1", t1);
+ SQLFeatureNotSupportedException ex1 =
+ new SQLFeatureNotSupportedException("Exception 2");
+ SQLFeatureNotSupportedException ex2 =
+ new SQLFeatureNotSupportedException("Exception 3", t2);
+ ex.setNextException(ex1);
+ ex.setNextException(ex2);
+ int num = 0;
+ for (Throwable e : ex) {
+ assertTrue(msgs[num++].equals(e.getMessage()));
+ }
+ }
+
+ /**
+ * Validate that the ordering of the returned Exceptions is correct
+ * using traditional while loop
+ */
+ @Test
+ public void test12() {
+ SQLFeatureNotSupportedException ex =
+ new SQLFeatureNotSupportedException("Exception 1", t1);
+ SQLFeatureNotSupportedException ex1 =
+ new SQLFeatureNotSupportedException("Exception 2");
+ SQLFeatureNotSupportedException ex2 =
+ new SQLFeatureNotSupportedException("Exception 3", t2);
+ ex.setNextException(ex1);
+ ex.setNextException(ex2);
+ int num = 0;
+ SQLException sqe = ex;
+ while (sqe != null) {
+ assertTrue(msgs[num++].equals(sqe.getMessage()));
+ Throwable c = sqe.getCause();
+ while (c != null) {
+ assertTrue(msgs[num++].equals(c.getMessage()));
+ c = c.getCause();
+ }
+ sqe = sqe.getNextException();
+ }
+ }
+
+ /**
+ * Create SQLFeatureNotSupportedException and validate it is an instance of
+ * SQLNonTransientException
+ */
+ @Test
+ public void test13() {
+ Exception ex = new SQLFeatureNotSupportedException();
+ assertTrue(ex instanceof SQLNonTransientException);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/sql/testng/test/sql/SQLIntegrityConstraintViolationExceptionTests.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,235 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package test.sql;
+
+import java.sql.SQLException;
+import java.sql.SQLIntegrityConstraintViolationException;
+import java.sql.SQLNonTransientException;
+import static org.testng.Assert.*;
+import org.testng.annotations.Test;
+import util.BaseTest;
+
+public class SQLIntegrityConstraintViolationExceptionTests extends BaseTest {
+
+ /**
+ * Create SQLIntegrityConstraintViolationException and setting all objects to null
+ */
+ @Test
+ public void test() {
+ SQLIntegrityConstraintViolationException e =
+ new SQLIntegrityConstraintViolationException(null,
+ null, errorCode, null);
+ assertTrue(e.getMessage() == null && e.getSQLState() == null
+ && e.getCause() == null && e.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLIntegrityConstraintViolationException with no-arg constructor
+ */
+ @Test
+ public void test1() {
+ SQLIntegrityConstraintViolationException ex =
+ new SQLIntegrityConstraintViolationException();
+ assertTrue(ex.getMessage() == null
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLIntegrityConstraintViolationException with message
+ */
+ @Test
+ public void test2() {
+ SQLIntegrityConstraintViolationException ex =
+ new SQLIntegrityConstraintViolationException(reason);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLIntegrityConstraintViolationException with message, and SQLState
+ */
+ @Test
+ public void test3() {
+ SQLIntegrityConstraintViolationException ex =
+ new SQLIntegrityConstraintViolationException(reason, state);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLIntegrityConstraintViolationException with message, SQLState, and error code
+ */
+ @Test
+ public void test4() {
+ SQLIntegrityConstraintViolationException ex =
+ new SQLIntegrityConstraintViolationException(reason, state, errorCode);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && ex.getCause() == null
+ && ex.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLIntegrityConstraintViolationException with message, SQLState, errorCode, and Throwable
+ */
+ @Test
+ public void test5() {
+ SQLIntegrityConstraintViolationException ex =
+ new SQLIntegrityConstraintViolationException(reason, state, errorCode, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLIntegrityConstraintViolationException with message, SQLState, and Throwable
+ */
+ @Test
+ public void test6() {
+ SQLIntegrityConstraintViolationException ex =
+ new SQLIntegrityConstraintViolationException(reason, state, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLIntegrityConstraintViolationException with message, and Throwable
+ */
+ @Test
+ public void test7() {
+ SQLIntegrityConstraintViolationException ex =
+ new SQLIntegrityConstraintViolationException(reason, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState() == null
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLIntegrityConstraintViolationException with null Throwable
+ */
+ @Test
+ public void test8() {
+ SQLIntegrityConstraintViolationException ex =
+ new SQLIntegrityConstraintViolationException((Throwable)null);
+ assertTrue(ex.getMessage() == null
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLIntegrityConstraintViolationException with Throwable
+ */
+ @Test
+ public void test9() {
+ SQLIntegrityConstraintViolationException ex =
+ new SQLIntegrityConstraintViolationException(t);
+ assertTrue(ex.getMessage().equals(cause)
+ && ex.getSQLState() == null
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Serialize a SQLIntegrityConstraintViolationException and make sure
+ * you can read it back properly
+ */
+ @Test
+ public void test10() throws Exception {
+ SQLIntegrityConstraintViolationException e =
+ new SQLIntegrityConstraintViolationException(reason, state, errorCode, t);
+ SQLIntegrityConstraintViolationException ex1 =
+ createSerializedException(e);
+ assertTrue(reason.equals(ex1.getMessage())
+ && ex1.getSQLState().equals(state)
+ && cause.equals(ex1.getCause().toString())
+ && ex1.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Validate that the ordering of the returned Exceptions is correct
+ * using for-each loop
+ */
+ @Test
+ public void test11() {
+ SQLIntegrityConstraintViolationException ex =
+ new SQLIntegrityConstraintViolationException("Exception 1", t1);
+ SQLIntegrityConstraintViolationException ex1 =
+ new SQLIntegrityConstraintViolationException("Exception 2");
+ SQLIntegrityConstraintViolationException ex2 =
+ new SQLIntegrityConstraintViolationException("Exception 3", t2);
+ ex.setNextException(ex1);
+ ex.setNextException(ex2);
+ int num = 0;
+ for (Throwable e : ex) {
+ assertTrue(msgs[num++].equals(e.getMessage()));
+ }
+ }
+
+ /**
+ * Validate that the ordering of the returned Exceptions is correct
+ * using traditional while loop
+ */
+ @Test
+ public void test12() {
+ SQLIntegrityConstraintViolationException ex =
+ new SQLIntegrityConstraintViolationException("Exception 1", t1);
+ SQLIntegrityConstraintViolationException ex1 =
+ new SQLIntegrityConstraintViolationException("Exception 2");
+ SQLIntegrityConstraintViolationException ex2 =
+ new SQLIntegrityConstraintViolationException("Exception 3", t2);
+ ex.setNextException(ex1);
+ ex.setNextException(ex2);
+ int num = 0;
+ SQLException sqe = ex;
+ while (sqe != null) {
+ assertTrue(msgs[num++].equals(sqe.getMessage()));
+ Throwable c = sqe.getCause();
+ while (c != null) {
+ assertTrue(msgs[num++].equals(c.getMessage()));
+ c = c.getCause();
+ }
+ sqe = sqe.getNextException();
+ }
+ }
+
+ /**
+ * Create SQLIntegrityConstraintViolationException and validate it is an instance of
+ * SQLNonTransientException
+ */
+ @Test
+ public void test13() {
+ Exception ex = new SQLIntegrityConstraintViolationException();
+ assertTrue(ex instanceof SQLNonTransientException);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/sql/testng/test/sql/SQLInvalidAuthorizationSpecExceptionTests.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,239 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package test.sql;
+
+import java.sql.SQLException;
+import java.sql.SQLInvalidAuthorizationSpecException;
+import java.sql.SQLNonTransientException;
+import static org.testng.Assert.*;
+import org.testng.annotations.Test;
+import util.BaseTest;
+
+public class SQLInvalidAuthorizationSpecExceptionTests extends BaseTest {
+
+ /**
+ * Create SQLInvalidAuthorizationSpecException and setting all objects to
+ * null
+ */
+ @Test
+ public void test() {
+ SQLInvalidAuthorizationSpecException e
+ = new SQLInvalidAuthorizationSpecException(null,
+ null, errorCode, null);
+ assertTrue(e.getMessage() == null && e.getSQLState() == null
+ && e.getCause() == null && e.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLInvalidAuthorizationSpecException with no-arg constructor
+ */
+ @Test
+ public void test1() {
+ SQLInvalidAuthorizationSpecException ex
+ = new SQLInvalidAuthorizationSpecException();
+ assertTrue(ex.getMessage() == null
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLInvalidAuthorizationSpecException with message
+ */
+ @Test
+ public void test2() {
+ SQLInvalidAuthorizationSpecException ex
+ = new SQLInvalidAuthorizationSpecException(reason);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLInvalidAuthorizationSpecException with message, and SQLState
+ */
+ @Test
+ public void test3() {
+ SQLInvalidAuthorizationSpecException ex
+ = new SQLInvalidAuthorizationSpecException(reason, state);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLInvalidAuthorizationSpecException with message, SQLState, and
+ * error code
+ */
+ @Test
+ public void test4() {
+ SQLInvalidAuthorizationSpecException ex
+ = new SQLInvalidAuthorizationSpecException(reason, state, errorCode);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && ex.getCause() == null
+ && ex.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLInvalidAuthorizationSpecException with message, SQLState,
+ * errorCode, and Throwable
+ */
+ @Test
+ public void test5() {
+ SQLInvalidAuthorizationSpecException ex
+ = new SQLInvalidAuthorizationSpecException(reason, state, errorCode, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLInvalidAuthorizationSpecException with message, SQLState, and
+ * Throwable
+ */
+ @Test
+ public void test6() {
+ SQLInvalidAuthorizationSpecException ex
+ = new SQLInvalidAuthorizationSpecException(reason, state, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLInvalidAuthorizationSpecException with message, and Throwable
+ */
+ @Test
+ public void test7() {
+ SQLInvalidAuthorizationSpecException ex
+ = new SQLInvalidAuthorizationSpecException(reason, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState() == null
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLInvalidAuthorizationSpecException with null Throwable
+ */
+ @Test
+ public void test8() {
+ SQLInvalidAuthorizationSpecException ex
+ = new SQLInvalidAuthorizationSpecException((Throwable) null);
+ assertTrue(ex.getMessage() == null
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLInvalidAuthorizationSpecException with Throwable
+ */
+ @Test
+ public void test9() {
+ SQLInvalidAuthorizationSpecException ex
+ = new SQLInvalidAuthorizationSpecException(t);
+ assertTrue(ex.getMessage().equals(cause)
+ && ex.getSQLState() == null
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Serialize a SQLInvalidAuthorizationSpecException and make sure you can
+ * read it back properly
+ */
+ @Test
+ public void test10() throws Exception {
+ SQLInvalidAuthorizationSpecException e
+ = new SQLInvalidAuthorizationSpecException(reason, state, errorCode, t);
+ SQLInvalidAuthorizationSpecException ex1 =
+ createSerializedException(e);
+ assertTrue(reason.equals(ex1.getMessage())
+ && ex1.getSQLState().equals(state)
+ && cause.equals(ex1.getCause().toString())
+ && ex1.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Validate that the ordering of the returned Exceptions is correct using
+ * for-each loop
+ */
+ @Test
+ public void test11() {
+ SQLInvalidAuthorizationSpecException ex
+ = new SQLInvalidAuthorizationSpecException("Exception 1", t1);
+ SQLInvalidAuthorizationSpecException ex1
+ = new SQLInvalidAuthorizationSpecException("Exception 2");
+ SQLInvalidAuthorizationSpecException ex2
+ = new SQLInvalidAuthorizationSpecException("Exception 3", t2);
+ ex.setNextException(ex1);
+ ex.setNextException(ex2);
+ int num = 0;
+ for (Throwable e : ex) {
+ assertTrue(msgs[num++].equals(e.getMessage()));
+ }
+ }
+
+ /**
+ * Validate that the ordering of the returned Exceptions is correct using
+ * traditional while loop
+ */
+ @Test
+ public void test12() {
+ SQLInvalidAuthorizationSpecException ex
+ = new SQLInvalidAuthorizationSpecException("Exception 1", t1);
+ SQLInvalidAuthorizationSpecException ex1
+ = new SQLInvalidAuthorizationSpecException("Exception 2");
+ SQLInvalidAuthorizationSpecException ex2
+ = new SQLInvalidAuthorizationSpecException("Exception 3", t2);
+ ex.setNextException(ex1);
+ ex.setNextException(ex2);
+ int num = 0;
+ SQLException sqe = ex;
+ while (sqe != null) {
+ assertTrue(msgs[num++].equals(sqe.getMessage()));
+ Throwable c = sqe.getCause();
+ while (c != null) {
+ assertTrue(msgs[num++].equals(c.getMessage()));
+ c = c.getCause();
+ }
+ sqe = sqe.getNextException();
+ }
+ }
+
+ /**
+ * Create SQLInvalidAuthorizationSpecException and validate it is an
+ * instance of SQLNonTransientException
+ */
+ @Test
+ public void test13() {
+ Exception ex = new SQLInvalidAuthorizationSpecException();
+ assertTrue(ex instanceof SQLNonTransientException);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/sql/testng/test/sql/SQLNonTransientConnectionExceptionTests.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,235 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package test.sql;
+
+import java.sql.SQLException;
+import java.sql.SQLNonTransientConnectionException;
+import java.sql.SQLNonTransientException;
+import static org.testng.Assert.*;
+import org.testng.annotations.Test;
+import util.BaseTest;
+
+public class SQLNonTransientConnectionExceptionTests extends BaseTest {
+
+ /**
+ * Create SQLNonTransientConnectionException and setting all objects to null
+ */
+ @Test
+ public void test() {
+ SQLNonTransientConnectionException e =
+ new SQLNonTransientConnectionException(null,
+ null, errorCode, null);
+ assertTrue(e.getMessage() == null && e.getSQLState() == null
+ && e.getCause() == null && e.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLNonTransientConnectionException with no-arg constructor
+ */
+ @Test
+ public void test1() {
+ SQLNonTransientConnectionException ex =
+ new SQLNonTransientConnectionException();
+ assertTrue(ex.getMessage() == null
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLNonTransientConnectionException with message
+ */
+ @Test
+ public void test2() {
+ SQLNonTransientConnectionException ex =
+ new SQLNonTransientConnectionException(reason);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLNonTransientConnectionException with message, and SQLState
+ */
+ @Test
+ public void test3() {
+ SQLNonTransientConnectionException ex =
+ new SQLNonTransientConnectionException(reason, state);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLNonTransientConnectionException with message, SQLState, and error code
+ */
+ @Test
+ public void test4() {
+ SQLNonTransientConnectionException ex =
+ new SQLNonTransientConnectionException(reason, state, errorCode);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && ex.getCause() == null
+ && ex.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLNonTransientConnectionException with message, SQLState, errorCode, and Throwable
+ */
+ @Test
+ public void test5() {
+ SQLNonTransientConnectionException ex =
+ new SQLNonTransientConnectionException(reason, state, errorCode, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLNonTransientConnectionException with message, SQLState, and Throwable
+ */
+ @Test
+ public void test6() {
+ SQLNonTransientConnectionException ex =
+ new SQLNonTransientConnectionException(reason, state, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLNonTransientConnectionException with message, and Throwable
+ */
+ @Test
+ public void test7() {
+ SQLNonTransientConnectionException ex =
+ new SQLNonTransientConnectionException(reason, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState() == null
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLNonTransientConnectionException with null Throwable
+ */
+ @Test
+ public void test8() {
+ SQLNonTransientConnectionException ex =
+ new SQLNonTransientConnectionException((Throwable)null);
+ assertTrue(ex.getMessage() == null
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLNonTransientConnectionException with Throwable
+ */
+ @Test
+ public void test9() {
+ SQLNonTransientConnectionException ex =
+ new SQLNonTransientConnectionException(t);
+ assertTrue(ex.getMessage().equals(cause)
+ && ex.getSQLState() == null
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Serialize a SQLNonTransientConnectionException and make sure you can
+ * read it back properly
+ */
+ @Test
+ public void test10() throws Exception {
+ SQLNonTransientConnectionException e =
+ new SQLNonTransientConnectionException(reason, state, errorCode, t);
+ SQLNonTransientConnectionException ex1 =
+ createSerializedException(e);
+ assertTrue(reason.equals(ex1.getMessage())
+ && ex1.getSQLState().equals(state)
+ && cause.equals(ex1.getCause().toString())
+ && ex1.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Validate that the ordering of the returned Exceptions is correct
+ * using for-each loop
+ */
+ @Test
+ public void test11() {
+ SQLNonTransientConnectionException ex =
+ new SQLNonTransientConnectionException("Exception 1", t1);
+ SQLNonTransientConnectionException ex1 =
+ new SQLNonTransientConnectionException("Exception 2");
+ SQLNonTransientConnectionException ex2 =
+ new SQLNonTransientConnectionException("Exception 3", t2);
+ ex.setNextException(ex1);
+ ex.setNextException(ex2);
+ int num = 0;
+ for (Throwable e : ex) {
+ assertTrue(msgs[num++].equals(e.getMessage()));
+ }
+ }
+
+ /**
+ * Validate that the ordering of the returned Exceptions is correct
+ * using traditional while loop
+ */
+ @Test
+ public void test12() {
+ SQLNonTransientConnectionException ex =
+ new SQLNonTransientConnectionException("Exception 1", t1);
+ SQLNonTransientConnectionException ex1 =
+ new SQLNonTransientConnectionException("Exception 2");
+ SQLNonTransientConnectionException ex2 =
+ new SQLNonTransientConnectionException("Exception 3", t2);
+ ex.setNextException(ex1);
+ ex.setNextException(ex2);
+ int num = 0;
+ SQLException sqe = ex;
+ while (sqe != null) {
+ assertTrue(msgs[num++].equals(sqe.getMessage()));
+ Throwable c = sqe.getCause();
+ while (c != null) {
+ assertTrue(msgs[num++].equals(c.getMessage()));
+ c = c.getCause();
+ }
+ sqe = sqe.getNextException();
+ }
+ }
+
+ /**
+ * Create SQLNonTransientConnectionException and validate it is an instance of
+ * SQLNonTransientException
+ */
+ @Test
+ public void test13() {
+ Exception ex = new SQLNonTransientConnectionException();
+ assertTrue(ex instanceof SQLNonTransientException);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/sql/testng/test/sql/SQLNonTransientExceptionTests.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,209 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package test.sql;
+
+import java.sql.SQLException;
+import java.sql.SQLNonTransientException;
+import static org.testng.Assert.*;
+import org.testng.annotations.Test;
+import util.BaseTest;
+
+public class SQLNonTransientExceptionTests extends BaseTest {
+
+ /**
+ * Create SQLNonTransientException and setting all objects to null
+ */
+ @Test
+ public void test() {
+ SQLNonTransientException e = new SQLNonTransientException(null,
+ null, errorCode, null);
+ assertTrue(e.getMessage() == null && e.getSQLState() == null
+ && e.getCause() == null && e.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLNonTransientException with no-arg constructor
+ */
+ @Test
+ public void test1() {
+ SQLNonTransientException ex = new SQLNonTransientException();
+ assertTrue(ex.getMessage() == null
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLNonTransientException with message
+ */
+ @Test
+ public void test2() {
+ SQLNonTransientException ex = new SQLNonTransientException(reason);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLNonTransientException with message, and SQLState
+ */
+ @Test
+ public void test3() {
+ SQLNonTransientException ex = new SQLNonTransientException(reason, state);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLNonTransientException with message, SQLState, and error code
+ */
+ @Test
+ public void test4() {;
+ SQLNonTransientException ex =
+ new SQLNonTransientException(reason, state, errorCode);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && ex.getCause() == null
+ && ex.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLNonTransientException with message, SQLState, errorCode, and Throwable
+ */
+ @Test
+ public void test5() {
+ SQLNonTransientException ex =
+ new SQLNonTransientException(reason, state, errorCode, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLNonTransientException with message, SQLState, and Throwable
+ */
+ @Test
+ public void test6() {
+ SQLNonTransientException ex = new SQLNonTransientException(reason, state, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLNonTransientException with message, and Throwable
+ */
+ @Test
+ public void test7() {
+ SQLNonTransientException ex = new SQLNonTransientException(reason, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState() == null
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLNonTransientException with null Throwable
+ */
+ @Test
+ public void test8() {
+ SQLNonTransientException ex = new SQLNonTransientException((Throwable)null);
+ assertTrue(ex.getMessage() == null
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLNonTransientException with Throwable
+ */
+ @Test
+ public void test9() {
+ SQLNonTransientException ex = new SQLNonTransientException(t);
+ assertTrue(ex.getMessage().equals(cause)
+ && ex.getSQLState() == null
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Serialize a SQLNonTransientException and make sure you can read it back properly
+ */
+ @Test
+ public void test10() throws Exception {
+ SQLNonTransientException e =
+ new SQLNonTransientException(reason, state, errorCode, t);
+ SQLNonTransientException ex1 =
+ createSerializedException(e);
+ assertTrue(reason.equals(ex1.getMessage())
+ && ex1.getSQLState().equals(state)
+ && cause.equals(ex1.getCause().toString())
+ && ex1.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Validate that the ordering of the returned Exceptions is correct
+ * using for-each loop
+ */
+ @Test
+ public void test11() {
+ SQLNonTransientException ex = new SQLNonTransientException("Exception 1", t1);
+ SQLNonTransientException ex1 = new SQLNonTransientException("Exception 2");
+ SQLNonTransientException ex2 = new SQLNonTransientException("Exception 3", t2);
+ ex.setNextException(ex1);
+ ex.setNextException(ex2);
+ int num = 0;
+ for (Throwable e : ex) {
+ assertTrue(msgs[num++].equals(e.getMessage()));
+ }
+ }
+
+ /**
+ * Validate that the ordering of the returned Exceptions is correct
+ * using traditional while loop
+ */
+ @Test
+ public void test12() {
+ SQLNonTransientException ex = new SQLNonTransientException("Exception 1", t1);
+ SQLNonTransientException ex1 = new SQLNonTransientException("Exception 2");
+ SQLNonTransientException ex2 = new SQLNonTransientException("Exception 3", t2);
+ ex.setNextException(ex1);
+ ex.setNextException(ex2);
+ int num = 0;
+ SQLException sqe = ex;
+ while (sqe != null) {
+ assertTrue(msgs[num++].equals(sqe.getMessage()));
+ Throwable c = sqe.getCause();
+ while (c != null) {
+ assertTrue(msgs[num++].equals(c.getMessage()));
+ c = c.getCause();
+ }
+ sqe = sqe.getNextException();
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/sql/testng/test/sql/SQLRecoverableExceptionTests.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,209 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package test.sql;
+
+import java.sql.SQLException;
+import java.sql.SQLRecoverableException;
+import static org.testng.Assert.*;
+import org.testng.annotations.Test;
+import util.BaseTest;
+
+public class SQLRecoverableExceptionTests extends BaseTest {
+
+ /**
+ * Create SQLRecoverableException and setting all objects to null
+ */
+ @Test
+ public void test() {
+ SQLRecoverableException e = new SQLRecoverableException(null,
+ null, errorCode, null);
+ assertTrue(e.getMessage() == null && e.getSQLState() == null
+ && e.getCause() == null && e.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLRecoverableException with no-arg constructor
+ */
+ @Test
+ public void test1() {
+ SQLRecoverableException ex = new SQLRecoverableException();
+ assertTrue(ex.getMessage() == null
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLRecoverableException with message
+ */
+ @Test
+ public void test2() {
+ SQLRecoverableException ex = new SQLRecoverableException(reason);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLRecoverableException with message, and SQLState
+ */
+ @Test
+ public void test3() {
+ SQLRecoverableException ex = new SQLRecoverableException(reason, state);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLRecoverableException with message, SQLState, and error code
+ */
+ @Test
+ public void test4() {
+ SQLRecoverableException ex =
+ new SQLRecoverableException(reason, state, errorCode);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && ex.getCause() == null
+ && ex.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLRecoverableException with message, SQLState, errorCode, and Throwable
+ */
+ @Test
+ public void test5() {
+ SQLRecoverableException ex =
+ new SQLRecoverableException(reason, state, errorCode, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLRecoverableException with message, SQLState, and Throwable
+ */
+ @Test
+ public void test6() {
+ SQLRecoverableException ex = new SQLRecoverableException(reason, state, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLRecoverableException with message, and Throwable
+ */
+ @Test
+ public void test7() {
+ SQLRecoverableException ex = new SQLRecoverableException(reason, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState() == null
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLRecoverableException with null Throwable
+ */
+ @Test
+ public void test8() {
+ SQLRecoverableException ex = new SQLRecoverableException((Throwable)null);
+ assertTrue(ex.getMessage() == null
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLRecoverableException with Throwable
+ */
+ @Test
+ public void test9() {
+ SQLRecoverableException ex = new SQLRecoverableException(t);
+ assertTrue(ex.getMessage().equals(cause)
+ && ex.getSQLState() == null
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Serialize a SQLRecoverableException and make sure you can read it back properly
+ */
+ @Test
+ public void test10() throws Exception {
+ SQLRecoverableException e =
+ new SQLRecoverableException(reason, state, errorCode, t);
+ SQLRecoverableException ex1 =
+ createSerializedException(e);
+ assertTrue(reason.equals(ex1.getMessage())
+ && ex1.getSQLState().equals(state)
+ && cause.equals(ex1.getCause().toString())
+ && ex1.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Validate that the ordering of the returned Exceptions is correct
+ * using for-each loop
+ */
+ @Test
+ public void test11() {
+ SQLRecoverableException ex = new SQLRecoverableException("Exception 1", t1);
+ SQLRecoverableException ex1 = new SQLRecoverableException("Exception 2");
+ SQLRecoverableException ex2 = new SQLRecoverableException("Exception 3", t2);
+ ex.setNextException(ex1);
+ ex.setNextException(ex2);
+ int num = 0;
+ for (Throwable e : ex) {
+ assertTrue(msgs[num++].equals(e.getMessage()));
+ }
+ }
+
+ /**
+ * Validate that the ordering of the returned Exceptions is correct
+ * using traditional while loop
+ */
+ @Test
+ public void test12() {
+ SQLRecoverableException ex = new SQLRecoverableException("Exception 1", t1);
+ SQLRecoverableException ex1 = new SQLRecoverableException("Exception 2");
+ SQLRecoverableException ex2 = new SQLRecoverableException("Exception 3", t2);
+ ex.setNextException(ex1);
+ ex.setNextException(ex2);
+ int num = 0;
+ SQLException sqe = ex;
+ while (sqe != null) {
+ assertTrue(msgs[num++].equals(sqe.getMessage()));
+ Throwable c = sqe.getCause();
+ while (c != null) {
+ assertTrue(msgs[num++].equals(c.getMessage()));
+ c = c.getCause();
+ }
+ sqe = sqe.getNextException();
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/sql/testng/test/sql/SQLSyntaxErrorExceptionTests.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,221 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package test.sql;
+
+import java.sql.SQLException;
+import java.sql.SQLNonTransientException;
+import java.sql.SQLSyntaxErrorException;
+import static org.testng.Assert.*;
+import org.testng.annotations.Test;
+import util.BaseTest;
+
+public class SQLSyntaxErrorExceptionTests extends BaseTest {
+
+ /**
+ * Create SQLSyntaxErrorException and setting all objects to null
+ */
+ @Test
+ public void test() {
+ SQLSyntaxErrorException e = new SQLSyntaxErrorException(null,
+ null, errorCode, null);
+ assertTrue(e.getMessage() == null && e.getSQLState() == null
+ && e.getCause() == null && e.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLSyntaxErrorException with no-arg constructor
+ */
+ @Test
+ public void test1() {
+ SQLSyntaxErrorException ex = new SQLSyntaxErrorException();
+ assertTrue(ex.getMessage() == null
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLSyntaxErrorException with message
+ */
+ @Test
+ public void test2() {
+ SQLSyntaxErrorException ex = new SQLSyntaxErrorException(reason);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLSyntaxErrorException with message, and SQLState
+ */
+ @Test
+ public void test3() {
+ SQLSyntaxErrorException ex = new SQLSyntaxErrorException(reason, state);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLSyntaxErrorException with message, SQLState, and error code
+ */
+ @Test
+ public void test4() {
+ SQLSyntaxErrorException ex =
+ new SQLSyntaxErrorException(reason, state, errorCode);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && ex.getCause() == null
+ && ex.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLSyntaxErrorException with message, SQLState, errorCode, and Throwable
+ */
+ @Test
+ public void test5() {
+ SQLSyntaxErrorException ex =
+ new SQLSyntaxErrorException(reason, state, errorCode, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLSyntaxErrorException with message, SQLState, and Throwable
+ */
+ @Test
+ public void test6() {
+ SQLSyntaxErrorException ex = new SQLSyntaxErrorException(reason, state, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLSyntaxErrorException with message, and Throwable
+ */
+ @Test
+ public void test7() {
+ SQLSyntaxErrorException ex = new SQLSyntaxErrorException(reason, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState() == null
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLSyntaxErrorException with null Throwable
+ */
+ @Test
+ public void test8() {
+ SQLSyntaxErrorException ex = new SQLSyntaxErrorException((Throwable)null);
+ assertTrue(ex.getMessage() == null
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLSyntaxErrorException with Throwable
+ */
+ @Test
+ public void test9() {
+ SQLSyntaxErrorException ex = new SQLSyntaxErrorException(t);
+ assertTrue(ex.getMessage().equals(cause)
+ && ex.getSQLState() == null
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Serialize a SQLSyntaxErrorException and make sure you can read it back properly
+ */
+ @Test
+ public void test10() throws Exception {
+
+ SQLSyntaxErrorException e =
+ new SQLSyntaxErrorException(reason, state, errorCode, t);
+ SQLSyntaxErrorException ex1 =
+ createSerializedException(e);
+ assertTrue(reason.equals(ex1.getMessage())
+ && ex1.getSQLState().equals(state)
+ && cause.equals(ex1.getCause().toString())
+ && ex1.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Validate that the ordering of the returned Exceptions is correct
+ * using for-each loop
+ */
+ @Test
+ public void test11() {
+ SQLSyntaxErrorException ex = new SQLSyntaxErrorException("Exception 1", t1);
+ SQLSyntaxErrorException ex1 = new SQLSyntaxErrorException("Exception 2");
+ SQLSyntaxErrorException ex2 = new SQLSyntaxErrorException("Exception 3", t2);
+ ex.setNextException(ex1);
+ ex.setNextException(ex2);
+ int num = 0;
+ for (Throwable e : ex) {
+ assertTrue(msgs[num++].equals(e.getMessage()));
+ }
+ }
+
+ /**
+ * Validate that the ordering of the returned Exceptions is correct
+ * using traditional while loop
+ */
+ @Test
+ public void test12() {
+ SQLSyntaxErrorException ex = new SQLSyntaxErrorException("Exception 1", t1);
+ SQLSyntaxErrorException ex1 = new SQLSyntaxErrorException("Exception 2");
+ SQLSyntaxErrorException ex2 = new SQLSyntaxErrorException("Exception 3", t2);
+ ex.setNextException(ex1);
+ ex.setNextException(ex2);
+ int num = 0;
+ SQLException sqe = ex;
+ while (sqe != null) {
+ assertTrue(msgs[num++].equals(sqe.getMessage()));
+ Throwable c = sqe.getCause();
+ while (c != null) {
+ assertTrue(msgs[num++].equals(c.getMessage()));
+ c = c.getCause();
+ }
+ sqe = sqe.getNextException();
+ }
+ }
+
+ /**
+ * Create SQLSyntaxErrorException and validate it is an instance of
+ * SQLNonTransientException
+ */
+ @Test
+ public void test13() {
+ Exception ex = new SQLSyntaxErrorException();
+ assertTrue(ex instanceof SQLNonTransientException);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/sql/testng/test/sql/SQLTimeoutExceptionTests.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,218 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package test.sql;
+
+import java.sql.SQLException;
+import java.sql.SQLTimeoutException;
+import java.sql.SQLTransientException;
+import static org.testng.Assert.*;
+import org.testng.annotations.Test;
+import util.BaseTest;
+
+public class SQLTimeoutExceptionTests extends BaseTest {
+
+ /**
+ * Create SQLTimeoutException and setting all objects to null
+ */
+ @Test
+ public void test() {
+ SQLTimeoutException e = new SQLTimeoutException(null,
+ null, errorCode, null);
+ assertTrue(e.getMessage() == null && e.getSQLState() == null
+ && e.getCause() == null && e.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLTimeoutException with no-arg constructor
+ */
+ @Test
+ public void test1() {
+ SQLTimeoutException ex = new SQLTimeoutException();
+ assertTrue(ex.getMessage() == null
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLTimeoutException with message
+ */
+ @Test
+ public void test2() {
+ SQLTimeoutException ex = new SQLTimeoutException(reason);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLTimeoutException with message, and SQLState
+ */
+ @Test
+ public void test3() {
+ SQLTimeoutException ex = new SQLTimeoutException(reason, state);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLTimeoutException with message, SQLState, and error code
+ */
+ @Test
+ public void test4() {
+ SQLTimeoutException ex = new SQLTimeoutException(reason, state, errorCode);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && ex.getCause() == null
+ && ex.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLTimeoutException with message, SQLState, errorCode, and Throwable
+ */
+ @Test
+ public void test5() {
+ SQLTimeoutException ex = new SQLTimeoutException(reason, state, errorCode, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLTimeoutException with message, SQLState, and Throwable
+ */
+ @Test
+ public void test6() {
+ SQLTimeoutException ex = new SQLTimeoutException(reason, state, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLTimeoutException with message, and Throwable
+ */
+ @Test
+ public void test7() {
+ SQLTimeoutException ex = new SQLTimeoutException(reason, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState() == null
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLTimeoutException with null Throwable
+ */
+ @Test
+ public void test8() {
+ SQLTimeoutException ex = new SQLTimeoutException((Throwable)null);
+ assertTrue(ex.getMessage() == null
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLTimeoutException with Throwable
+ */
+ @Test
+ public void test9() {
+ SQLTimeoutException ex = new SQLTimeoutException(t);
+ assertTrue(ex.getMessage().equals(cause)
+ && ex.getSQLState() == null
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Serialize a SQLTimeoutException and make sure you can read it back properly
+ */
+ @Test
+ public void test10() throws Exception {
+ SQLTimeoutException e =
+ new SQLTimeoutException(reason, state, errorCode, t);
+ SQLTimeoutException ex1 =
+ createSerializedException(e);
+ assertTrue(reason.equals(ex1.getMessage())
+ && ex1.getSQLState().equals(state)
+ && cause.equals(ex1.getCause().toString())
+ && ex1.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Validate that the ordering of the returned Exceptions is correct
+ * using for-each loop
+ */
+ @Test
+ public void test11() {
+ SQLTimeoutException ex = new SQLTimeoutException("Exception 1", t1);
+ SQLTimeoutException ex1 = new SQLTimeoutException("Exception 2");
+ SQLTimeoutException ex2 = new SQLTimeoutException("Exception 3", t2);
+ ex.setNextException(ex1);
+ ex.setNextException(ex2);
+ int num = 0;
+ for (Throwable e : ex) {
+ assertTrue(msgs[num++].equals(e.getMessage()));
+ }
+ }
+
+ /**
+ * Validate that the ordering of the returned Exceptions is correct
+ * using traditional while loop
+ */
+ @Test
+ public void test12() {
+ SQLTimeoutException ex = new SQLTimeoutException("Exception 1", t1);
+ SQLTimeoutException ex1 = new SQLTimeoutException("Exception 2");
+ SQLTimeoutException ex2 = new SQLTimeoutException("Exception 3", t2);
+ ex.setNextException(ex1);
+ ex.setNextException(ex2);
+ int num = 0;
+ SQLException sqe = ex;
+ while (sqe != null) {
+ assertTrue(msgs[num++].equals(sqe.getMessage()));
+ Throwable c = sqe.getCause();
+ while (c != null) {
+ assertTrue(msgs[num++].equals(c.getMessage()));
+ c = c.getCause();
+ }
+ sqe = sqe.getNextException();
+ }
+ }
+
+ /**
+ * Create SQLTimeoutException and validate it is an instance of
+ * SQLNonTransientException
+ */
+ @Test
+ public void test13() {
+ Exception ex = new SQLTimeoutException();
+ assertTrue(ex instanceof SQLTransientException);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/sql/testng/test/sql/SQLTransactionRollbackExceptionTests.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,233 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package test.sql;
+
+import java.sql.SQLException;
+import java.sql.SQLTransactionRollbackException;
+import java.sql.SQLTransientException;
+import static org.testng.Assert.*;
+import org.testng.annotations.Test;
+import util.BaseTest;
+
+public class SQLTransactionRollbackExceptionTests extends BaseTest {
+
+ /**
+ * Create SQLTransactionRollbackException and setting all objects to null
+ */
+ @Test
+ public void test() {
+ SQLTransactionRollbackException e =
+ new SQLTransactionRollbackException(null,
+ null, errorCode, null);
+ assertTrue(e.getMessage() == null && e.getSQLState() == null
+ && e.getCause() == null && e.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLTransactionRollbackException with no-arg constructor
+ */
+ @Test
+ public void test1() {
+ SQLTransactionRollbackException ex = new SQLTransactionRollbackException();
+ assertTrue(ex.getMessage() == null
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLTransactionRollbackException with message
+ */
+ @Test
+ public void test2() {
+ SQLTransactionRollbackException ex =
+ new SQLTransactionRollbackException(reason);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLTransactionRollbackException with message, and SQLState
+ */
+ @Test
+ public void test3() {
+ SQLTransactionRollbackException ex =
+ new SQLTransactionRollbackException(reason, state);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLTransactionRollbackException with message, SQLState, and error code
+ */
+ @Test
+ public void test4() {
+ SQLTransactionRollbackException ex =
+ new SQLTransactionRollbackException(reason, state, errorCode);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && ex.getCause() == null
+ && ex.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLTransactionRollbackException with message, SQLState, errorCode, and Throwable
+ */
+ @Test
+ public void test5() {
+ SQLTransactionRollbackException ex =
+ new SQLTransactionRollbackException(reason, state, errorCode, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLTransactionRollbackException with message, SQLState, and Throwable
+ */
+ @Test
+ public void test6() {
+ SQLTransactionRollbackException ex =
+ new SQLTransactionRollbackException(reason, state, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLTransactionRollbackException with message, and Throwable
+ */
+ @Test
+ public void test7() {
+ SQLTransactionRollbackException ex =
+ new SQLTransactionRollbackException(reason, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState() == null
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLTransactionRollbackException with null Throwable
+ */
+ @Test
+ public void test8() {
+ SQLTransactionRollbackException ex =
+ new SQLTransactionRollbackException((Throwable)null);
+ assertTrue(ex.getMessage() == null
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLTransactionRollbackException with Throwable
+ */
+ @Test
+ public void test9() {
+ SQLTransactionRollbackException ex =
+ new SQLTransactionRollbackException(t);
+ assertTrue(ex.getMessage().equals(cause)
+ && ex.getSQLState() == null
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Serialize a SQLTransactionRollbackException and make sure you can read it back properly
+ */
+ @Test
+ public void test10() throws Exception {
+ SQLTransactionRollbackException e =
+ new SQLTransactionRollbackException(reason, state, errorCode, t);
+ SQLTransactionRollbackException ex1 =
+ createSerializedException(e);
+ assertTrue(reason.equals(ex1.getMessage())
+ && ex1.getSQLState().equals(state)
+ && cause.equals(ex1.getCause().toString())
+ && ex1.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Validate that the ordering of the returned Exceptions is correct
+ * using for-each loop
+ */
+ @Test
+ public void test11() {
+ SQLTransactionRollbackException ex =
+ new SQLTransactionRollbackException("Exception 1", t1);
+ SQLTransactionRollbackException ex1 =
+ new SQLTransactionRollbackException("Exception 2");
+ SQLTransactionRollbackException ex2 =
+ new SQLTransactionRollbackException("Exception 3", t2);
+ ex.setNextException(ex1);
+ ex.setNextException(ex2);
+ int num = 0;
+ for (Throwable e : ex) {
+ assertTrue(msgs[num++].equals(e.getMessage()));
+ }
+ }
+
+ /**
+ * Validate that the ordering of the returned Exceptions is correct
+ * using traditional while loop
+ */
+ @Test
+ public void test12() {
+ SQLTransactionRollbackException ex =
+ new SQLTransactionRollbackException("Exception 1", t1);
+ SQLTransactionRollbackException ex1 =
+ new SQLTransactionRollbackException("Exception 2");
+ SQLTransactionRollbackException ex2 =
+ new SQLTransactionRollbackException("Exception 3", t2);
+ ex.setNextException(ex1);
+ ex.setNextException(ex2);
+ int num = 0;
+ SQLException sqe = ex;
+ while (sqe != null) {
+ assertTrue(msgs[num++].equals(sqe.getMessage()));
+ Throwable c = sqe.getCause();
+ while (c != null) {
+ assertTrue(msgs[num++].equals(c.getMessage()));
+ c = c.getCause();
+ }
+ sqe = sqe.getNextException();
+ }
+ }
+
+ /**
+ * Create SQLTransactionRollbackException and validate it is an instance of
+ * SQLNonTransientException
+ */
+ @Test
+ public void test13() {
+ Exception ex = new SQLTransactionRollbackException();
+ assertTrue(ex instanceof SQLTransientException);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/sql/testng/test/sql/SQLTransientConnectionExceptionTests.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,233 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package test.sql;
+
+import java.sql.SQLException;
+import java.sql.SQLTransientConnectionException;
+import java.sql.SQLTransientException;
+import static org.testng.Assert.*;
+import org.testng.annotations.Test;
+import util.BaseTest;
+
+public class SQLTransientConnectionExceptionTests extends BaseTest {
+
+ /**
+ * Create SQLTransientConnectionException and setting all objects to null
+ */
+ @Test
+ public void test() {
+ SQLTransientConnectionException e =
+ new SQLTransientConnectionException( null,
+ null, errorCode, null);
+ assertTrue(e.getMessage() == null && e.getSQLState() == null
+ && e.getCause() == null && e.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLTransientConnectionException with no-arg constructor
+ */
+ @Test
+ public void test1() {
+ SQLTransientConnectionException ex = new SQLTransientConnectionException();
+ assertTrue(ex.getMessage() == null
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLTransientConnectionException with message
+ */
+ @Test
+ public void test2() {
+ SQLTransientConnectionException ex =
+ new SQLTransientConnectionException(reason);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLTransientConnectionException with message, and SQLState
+ */
+ @Test
+ public void test3() {
+ SQLTransientConnectionException ex =
+ new SQLTransientConnectionException(reason, state);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLTransientConnectionException with message, SQLState, and error code
+ */
+ @Test
+ public void test4() {;
+ SQLTransientConnectionException ex =
+ new SQLTransientConnectionException(reason, state, errorCode);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && ex.getCause() == null
+ && ex.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLTransientConnectionException with message, SQLState, errorCode, and Throwable
+ */
+ @Test
+ public void test5() {
+ SQLTransientConnectionException ex =
+ new SQLTransientConnectionException(reason, state, errorCode, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLTransientConnectionException with message, SQLState, and Throwable
+ */
+ @Test
+ public void test6() {
+ SQLTransientConnectionException ex =
+ new SQLTransientConnectionException(reason, state, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLTransientConnectionException with message, and Throwable
+ */
+ @Test
+ public void test7() {
+ SQLTransientConnectionException ex =
+ new SQLTransientConnectionException(reason, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState() == null
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLTransientConnectionException with null Throwable
+ */
+ @Test
+ public void test8() {
+ SQLTransientConnectionException ex =
+ new SQLTransientConnectionException((Throwable)null);
+ assertTrue(ex.getMessage() == null
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLTransientConnectionException with Throwable
+ */
+ @Test
+ public void test9() {
+ SQLTransientConnectionException ex =
+ new SQLTransientConnectionException(t);
+ assertTrue(ex.getMessage().equals(cause)
+ && ex.getSQLState() == null
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Serialize a SQLTransientConnectionException and make sure you can read it back properly
+ */
+ @Test
+ public void test10() throws Exception {
+ SQLTransientConnectionException e =
+ new SQLTransientConnectionException(reason, state, errorCode, t);
+ SQLTransientConnectionException ex1 =
+ createSerializedException(e);
+ assertTrue(reason.equals(ex1.getMessage())
+ && ex1.getSQLState().equals(state)
+ && cause.equals(ex1.getCause().toString())
+ && ex1.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Validate that the ordering of the returned Exceptions is correct
+ * using for-each loop
+ */
+ @Test
+ public void test11() {
+ SQLTransientConnectionException ex =
+ new SQLTransientConnectionException("Exception 1", t1);
+ SQLTransientConnectionException ex1 =
+ new SQLTransientConnectionException("Exception 2");
+ SQLTransientConnectionException ex2 =
+ new SQLTransientConnectionException("Exception 3", t2);
+ ex.setNextException(ex1);
+ ex.setNextException(ex2);
+ int num = 0;
+ for (Throwable e : ex) {
+ assertTrue(msgs[num++].equals(e.getMessage()));
+ }
+ }
+
+ /**
+ * Validate that the ordering of the returned Exceptions is correct
+ * using traditional while loop
+ */
+ @Test
+ public void test12() {
+ SQLTransientConnectionException ex =
+ new SQLTransientConnectionException("Exception 1", t1);
+ SQLTransientConnectionException ex1 =
+ new SQLTransientConnectionException("Exception 2");
+ SQLTransientConnectionException ex2 =
+ new SQLTransientConnectionException("Exception 3", t2);
+ ex.setNextException(ex1);
+ ex.setNextException(ex2);
+ int num = 0;
+ SQLException sqe = ex;
+ while (sqe != null) {
+ assertTrue(msgs[num++].equals(sqe.getMessage()));
+ Throwable c = sqe.getCause();
+ while (c != null) {
+ assertTrue(msgs[num++].equals(c.getMessage()));
+ c = c.getCause();
+ }
+ sqe = sqe.getNextException();
+ }
+ }
+
+ /**
+ * Create SQLTransientConnectionException and validate it is an instance of
+ * SQLNonTransientException
+ */
+ @Test
+ public void test13() {
+ Exception ex = new SQLTransientConnectionException();
+ assertTrue(ex instanceof SQLTransientException);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/sql/testng/test/sql/SQLTransientExceptionTests.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,207 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package test.sql;
+
+import java.sql.SQLException;
+import java.sql.SQLTransientException;
+import static org.testng.Assert.*;
+import org.testng.annotations.Test;
+import util.BaseTest;
+
+public class SQLTransientExceptionTests extends BaseTest {
+
+ /**
+ * Create SQLTransientException and setting all objects to null
+ */
+ @Test
+ public void test() {
+ SQLTransientException e = new SQLTransientException(null,
+ null, errorCode, null);
+ assertTrue(e.getMessage() == null && e.getSQLState() == null
+ && e.getCause() == null && e.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLTransientException with no-arg constructor
+ */
+ @Test
+ public void test1() {
+ SQLTransientException ex = new SQLTransientException();
+ assertTrue(ex.getMessage() == null
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLTransientException with message
+ */
+ @Test
+ public void test2() {
+ SQLTransientException ex = new SQLTransientException(reason);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLTransientException with message, and SQLState
+ */
+ @Test
+ public void test3() {
+ SQLTransientException ex = new SQLTransientException(reason, state);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLTransientException with message, SQLState, and error code
+ */
+ @Test
+ public void test4() {
+ SQLTransientException ex = new SQLTransientException(reason, state, errorCode);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && ex.getCause() == null
+ && ex.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLTransientException with message, SQLState, errorCode, and Throwable
+ */
+ @Test
+ public void test5() {
+ SQLTransientException ex =
+ new SQLTransientException(reason, state, errorCode, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLTransientException with message, SQLState, and Throwable
+ */
+ @Test
+ public void test6() {
+ SQLTransientException ex = new SQLTransientException(reason, state, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLTransientException with message, and Throwable
+ */
+ @Test
+ public void test7() {
+ SQLTransientException ex = new SQLTransientException(reason, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState() == null
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLTransientException with null Throwable
+ */
+ @Test
+ public void test8() {
+ SQLTransientException ex = new SQLTransientException((Throwable)null);
+ assertTrue(ex.getMessage() == null
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLTransientException with Throwable
+ */
+ @Test
+ public void test9() {
+ SQLTransientException ex = new SQLTransientException(t);
+ assertTrue(ex.getMessage().equals(cause)
+ && ex.getSQLState() == null
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Serialize a SQLTransientException and make sure you can read it back properly
+ */
+ @Test
+ public void test10() throws Exception {
+ SQLTransientException e =
+ new SQLTransientException(reason, state, errorCode, t);
+ SQLTransientException ex1 = createSerializedException(e);
+ assertTrue(reason.equals(ex1.getMessage())
+ && ex1.getSQLState().equals(state)
+ && cause.equals(ex1.getCause().toString())
+ && ex1.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Validate that the ordering of the returned Exceptions is correct
+ * using for-each loop
+ */
+ @Test
+ public void test11() {
+ SQLTransientException ex = new SQLTransientException("Exception 1", t1);
+ SQLTransientException ex1 = new SQLTransientException("Exception 2");
+ SQLTransientException ex2 = new SQLTransientException("Exception 3", t2);
+ ex.setNextException(ex1);
+ ex.setNextException(ex2);
+ int num = 0;
+ for (Throwable e : ex) {
+ assertTrue(msgs[num++].equals(e.getMessage()));
+ }
+ }
+
+ /**
+ * Validate that the ordering of the returned Exceptions is correct
+ * using traditional while loop
+ */
+ @Test
+ public void test12() {
+ SQLTransientException ex = new SQLTransientException("Exception 1", t1);
+ SQLTransientException ex1 = new SQLTransientException("Exception 2");
+ SQLTransientException ex2 = new SQLTransientException("Exception 3", t2);
+ ex.setNextException(ex1);
+ ex.setNextException(ex2);
+ int num = 0;
+ SQLException sqe = ex;
+ while (sqe != null) {
+ assertTrue(msgs[num++].equals(sqe.getMessage()));
+ Throwable c = sqe.getCause();
+ while (c != null) {
+ assertTrue(msgs[num++].equals(c.getMessage()));
+ c = c.getCause();
+ }
+ sqe = sqe.getNextException();
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/sql/testng/test/sql/SQLWarningTests.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,249 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package test.sql;
+
+import java.sql.SQLException;
+import java.sql.SQLWarning;
+import static org.testng.Assert.*;
+import org.testng.annotations.Test;
+import util.BaseTest;
+
+public class SQLWarningTests extends BaseTest {
+
+ private final String[] warnings = {"Warning 1", "cause 1", "Warning 2",
+ "Warning 3", "cause 2"};
+
+ /**
+ * Create SQLWarning and setting all objects to null
+ */
+ @Test
+ public void test() {
+ SQLWarning e = new SQLWarning(null, null, errorCode, null);
+ assertTrue(e.getMessage() == null && e.getSQLState() == null
+ && e.getCause() == null && e.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLWarning with no-arg constructor
+ */
+ @Test
+ public void test1() {
+ SQLWarning ex = new SQLWarning();
+ assertTrue(ex.getMessage() == null
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLWarning with message
+ */
+ @Test
+ public void test2() {
+ SQLWarning ex = new SQLWarning(reason);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLWarning with message, and SQLState
+ */
+ @Test
+ public void test3() {
+
+ SQLWarning ex = new SQLWarning(reason, state);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLWarning with message, SQLState, and error code
+ */
+ @Test
+ public void test4() {
+ SQLWarning ex = new SQLWarning(reason, state, errorCode);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && ex.getCause() == null
+ && ex.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLWarning with message, SQLState, errorCode, and Throwable
+ */
+ @Test
+ public void test5() {
+ SQLWarning ex = new SQLWarning(reason, state, errorCode, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Create SQLWarning with message, SQLState, and Throwable
+ */
+ @Test
+ public void test6() {
+ SQLWarning ex = new SQLWarning(reason, state, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState().equals(state)
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLWarning with message, and Throwable
+ */
+ @Test
+ public void test7() {
+ SQLWarning ex = new SQLWarning(reason, t);
+ assertTrue(ex.getMessage().equals(reason)
+ && ex.getSQLState() == null
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLWarning with null Throwable
+ */
+ @Test
+ public void test8() {
+ SQLWarning ex = new SQLWarning((Throwable) null);
+ assertTrue(ex.getMessage() == null
+ && ex.getSQLState() == null
+ && ex.getCause() == null
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Create SQLWarning with Throwable
+ */
+ @Test
+ public void test9() {
+ SQLWarning ex = new SQLWarning(t);
+ assertTrue(ex.getMessage().equals(cause)
+ && ex.getSQLState() == null
+ && cause.equals(ex.getCause().toString())
+ && ex.getErrorCode() == 0);
+ }
+
+ /**
+ * Serialize a SQLWarning and make sure you can read it back properly
+ */
+ @Test
+ public void test10() throws Exception {
+ SQLWarning e = new SQLWarning(reason, state, errorCode, t);
+ SQLWarning ex1 = createSerializedException(e);
+ assertTrue(reason.equals(ex1.getMessage())
+ && ex1.getSQLState().equals(state)
+ && cause.equals(ex1.getCause().toString())
+ && ex1.getErrorCode() == errorCode);
+ }
+
+ /**
+ * Validate that the ordering of the returned Exceptions is correct using
+ * for-each loop
+ */
+ @Test
+ public void test11() {
+ SQLWarning ex = new SQLWarning("Exception 1", t1);
+ SQLWarning ex1 = new SQLWarning("Exception 2");
+ SQLWarning ex2 = new SQLWarning("Exception 3", t2);
+ ex.setNextException(ex1);
+ ex.setNextException(ex2);
+ int num = 0;
+ for (Throwable e : ex) {
+ assertTrue(msgs[num++].equals(e.getMessage()));
+ }
+ }
+
+ /**
+ * Validate that the ordering of the returned Exceptions is correct using
+ * traditional while loop
+ */
+ @Test
+ public void test12() {
+ SQLWarning ex = new SQLWarning("Exception 1", t1);
+ SQLWarning ex1 = new SQLWarning("Exception 2");
+ SQLWarning ex2 = new SQLWarning("Exception 3", t2);
+ ex.setNextException(ex1);
+ ex.setNextException(ex2);
+ int num = 0;
+ SQLException sqe = ex;
+ while (sqe != null) {
+ assertTrue(msgs[num++].equals(sqe.getMessage()));
+ Throwable c = sqe.getCause();
+ while (c != null) {
+ assertTrue(msgs[num++].equals(c.getMessage()));
+ c = c.getCause();
+ }
+ sqe = sqe.getNextException();
+ }
+ }
+
+ /**
+ * Validate that the ordering of the returned SQLWarning is correct using
+ * for-each loop
+ */
+ @Test
+ public void test13() {
+ SQLWarning ex = new SQLWarning("Warning 1", t1);
+ SQLWarning ex1 = new SQLWarning("Warning 2");
+ SQLWarning ex2 = new SQLWarning("Warning 3", t2);
+ ex.setNextWarning(ex1);
+ ex.setNextWarning(ex2);
+ int num = 0;
+ for (Throwable e : ex) {
+ assertTrue(warnings[num++].equals(e.getMessage()));
+ }
+ }
+
+ /**
+ * Validate that the ordering of the returned SQLWarning is correct using
+ * traditional while loop
+ */
+ @Test
+ public void test14() {
+ SQLWarning ex = new SQLWarning("Warning 1", t1);
+ SQLWarning ex1 = new SQLWarning("Warning 2");
+ SQLWarning ex2 = new SQLWarning("Warning 3", t2);
+ ex.setNextWarning(ex1);
+ ex.setNextWarning(ex2);
+ int num = 0;
+ SQLWarning sqe = ex;
+ while (sqe != null) {
+ assertTrue(warnings[num++].equals(sqe.getMessage()));
+ Throwable c = sqe.getCause();
+ while (c != null) {
+ assertTrue(msgs[num++].equals(c.getMessage()));
+ c = c.getCause();
+ }
+ sqe = sqe.getNextWarning();
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/sql/testng/test/sql/TimeTests.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,348 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package test.sql;
+
+import java.sql.Time;
+import java.time.LocalTime;
+import static org.testng.Assert.*;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+import util.BaseTest;
+
+public class TimeTests extends BaseTest {
+
+ /*
+ * Validate an IllegalArgumentException is thrown for calling getYear
+ */
+ @Test(expectedExceptions = IllegalArgumentException.class)
+ public void test01() {
+ Time t = Time.valueOf("08:30:59");
+ t.getYear();
+ }
+
+ /*
+ * Validate an IllegalArgumentException is thrown for calling getMonth
+ */
+ @Test(expectedExceptions = IllegalArgumentException.class)
+ public void test02() {
+ Time t = Time.valueOf("08:30:59");
+ t.getMonth();
+ }
+
+ /*
+ * Validate an IllegalArgumentException is thrown for calling getDay
+ */
+ @Test(expectedExceptions = IllegalArgumentException.class)
+ public void test03() {
+ Time t = Time.valueOf("08:30:59");
+ t.getDay();
+ }
+
+ /**
+ * Validate an IllegalArgumentException is thrown for calling getDate
+ */
+ @Test(expectedExceptions = IllegalArgumentException.class)
+ public void test04() {
+ Time t = Time.valueOf("08:30:59");
+ t.getDate();
+ }
+
+ /*
+ * Validate an IllegalArgumentException is thrown for calling setYear
+ */
+ @Test(expectedExceptions = IllegalArgumentException.class)
+ public void test05() {
+ Time t = Time.valueOf("08:30:59");
+ t.setYear(8);
+ }
+
+ /*
+ * Validate an IllegalArgumentException is thrown for calling setMonth
+ */
+ @Test(expectedExceptions = IllegalArgumentException.class)
+ public void test06() {
+ Time t = Time.valueOf("08:30:59");
+ t.setMonth(8);
+ }
+
+ /*
+ * Validate an IllegalArgumentException is thrown for calling setDate
+ */
+ @Test(expectedExceptions = IllegalArgumentException.class)
+ public void test07() {
+ Time t = Time.valueOf("08:30:59");
+ t.setDate(30);
+ }
+
+ /*
+ * Validate an IllegalArgumentException is thrown for calling getDate
+ */
+ @Test(expectedExceptions = IllegalArgumentException.class)
+ public void test08() {
+ Time t = Time.valueOf("08:30:59");
+ t.getDate();
+ }
+
+ /*
+ * Validate that a Time made from a toLocalTime() LocalTime are equal
+ */
+ @Test
+ public void test09() {
+ Time t = Time.valueOf("08:30:59");
+ Time t2 = Time.valueOf(t.toLocalTime());
+ assertTrue(t.equals(t2), "Error t != t2");
+ }
+
+ /*
+ * Validate that a Time LocalTime value, made from a LocalTime are equal
+ */
+ @Test
+ public void test10() {
+ LocalTime lt = LocalTime.of(8, 30, 59);
+ Time t = Time.valueOf(lt);
+ System.out.println("lt=" + lt + ",t=" + t.toLocalTime());
+ assertTrue(lt.equals(t.toLocalTime()),
+ "Error LocalTime values are not equal");
+ }
+
+ /*
+ * Validate an NPE occurs when a null LocalDate is passed to valueOf
+ */
+ @Test(expectedExceptions = NullPointerException.class)
+ public void test11() throws Exception {
+ LocalTime ld = null;
+ Time.valueOf(ld);
+ }
+
+ /*
+ * Validate an UnsupportedOperationException occurs when toInstant() is
+ * called
+ */
+ @Test(expectedExceptions = UnsupportedOperationException.class)
+ public void test12() throws Exception {
+ Time t = new Time(System.currentTimeMillis());
+ t.toInstant();
+ }
+
+ /*
+ * Validate that two Time objects are equal when one is created from the
+ * toString() of the other and that the correct value is returned from
+ * toString()
+ */
+ @Test(dataProvider = "validTimeValues")
+ public void test13(String time, String expected) {
+ Time t1 = Time.valueOf(time);
+ Time t2 = Time.valueOf(t1.toString());
+ assertTrue(t1.equals(t2) && t2.equals(t1)
+ && t1.toString().equals(expected), "Error t1 != t2");
+ }
+
+ /*
+ * Validate that two Time values one created using valueOf and another via a
+ * constructor are equal
+ */
+ @Test
+ public void test14() {
+ Time t = Time.valueOf("08:30:59");
+ Time t2 = new Time(8, 30, 59);
+ assertTrue(t.equals(t2) && t2.equals(t), "Error t != t2");
+ }
+
+ /*
+ * Validate that two Time values one created using valueOf and another via a
+ * constructor are equal
+ */
+ @Test
+ public void test15() {
+ Time t = Time.valueOf("08:30:59");
+ Time t2 = new Time(t.getTime());
+ assertTrue(t.equals(t2) && t2.equals(t), "Error t != t2");
+ }
+
+ /*
+ * Validate an IllegalArgumentException is thrown for an invalid Time string
+ */
+ @Test(dataProvider = "invalidTimeValues",
+ expectedExceptions = IllegalArgumentException.class)
+ public void test16(String time) throws Exception {
+ Time.valueOf(time);
+ }
+
+ /*
+ * Validate that Time.after() returns false when same date is compared
+ */
+ @Test
+ public void test17() {
+ Time t = Time.valueOf("08:30:59");
+ assertFalse(t.after(t), "Error t.after(t) = true");
+ }
+
+ /*
+ * Validate that Time.after() returns true when later date is compared to
+ * earlier date
+ */
+ @Test
+ public void test18() {
+ Time t = Time.valueOf("08:30:59");
+ Time t2 = new Time(System.currentTimeMillis());
+ assertTrue(t2.after(t), "Error t2.after(t) = false");
+ }
+
+ /*
+ * Validate that Time.after() returns false when earlier date is compared to
+ * itself
+ */
+ @Test
+ public void test19() {
+ Time t = Time.valueOf("08:30:59");
+ Time t2 = new Time(t.getTime());
+ assertFalse(t.after(t2), "Error t.after(t2) = true");
+ assertFalse(t2.after(t), "Error t2.after(t) = true");
+ }
+
+ /*
+ * Validate that Time.before() returns false when same date is compared
+ */
+ @Test
+ public void test20() {
+ Time t = Time.valueOf("08:30:59");
+ assertFalse(t.before(t), "Error t.before(t) = true");
+ }
+
+ /*
+ * Validate that Time.before() returns true when earlier date is compared to
+ * later date
+ */
+ @Test
+ public void test21() {
+ Time t = Time.valueOf("08:30:59");
+ Time t2 = new Time(System.currentTimeMillis());
+ assertTrue(t.before(t2), "Error t.before(t2) = false");
+ }
+
+ /*
+ * Validate that Time.before() returns false when earlier date is compared
+ * to itself
+ */
+ @Test
+ public void test22() {
+ Time t = Time.valueOf("08:30:59");
+ Time t2 = new Time(t.getTime());
+ assertFalse(t.before(t2), "Error t.after(t2) = true");
+ assertFalse(t2.before(t), "Error t2.after(t) = true");
+ }
+
+ /*
+ * Validate that Time.compareTo returns 0 when both Date objects are the
+ * same
+ */
+ @Test
+ public void test23() {
+ Time t = Time.valueOf("08:30:59");
+ assertTrue(t.compareTo(t) == 0, "Error t.compareTo(t) !=0");
+ }
+
+ /*
+ * Validate thatTime.compareTo returns 0 when both Time objects are the same
+ */
+ @Test
+ public void test24() {
+ Time t = Time.valueOf("08:30:59");
+ Time t2 = new Time(t.getTime());
+ assertTrue(t.compareTo(t2) == 0, "Error t.compareTo(t2) !=0");
+ }
+
+ /*
+ * Validate that Time.compareTo returns 1 when comparing a later Time to an
+ * earlier Time
+ */
+ @Test
+ public void test25() {
+ Time t = Time.valueOf("08:30:59");
+ Time t2 = new Time(t.getTime() + 1);
+ assertTrue(t2.compareTo(t) == 1, "Error t2.compareTo(t) !=1");
+ }
+
+ /*
+ * Validate thatTime.compareTo returns 1 when comparing a later Time to an
+ * earlier Time
+ */
+ @Test
+ public void test26() {
+ Time t = Time.valueOf("08:30:59");
+ Time t2 = new Time(t.getTime() + 1);
+ assertTrue(t.compareTo(t2) == -1, "Error t.compareTo(t2) != -1");
+ }
+
+ /*
+ * DataProvider used to provide Time values which are not valid and are used
+ * to validate that an IllegalArgumentException will be thrown from the
+ * valueOf method
+ */
+ @DataProvider(name = "invalidTimeValues")
+ private Object[][] invalidTimeValues() {
+ return new Object[][]{
+ {"2009-11-01 10:50:01"},
+ {"1961-08-30 10:50:01.1"},
+ {"1961-08-30"},
+ {"00:00:00."},
+ {"10:50:0.1"},
+ {":00:00"},
+ {"00::00"},
+ {"00:00:"},
+ {"::"},
+ {" : : "},
+ {"0a:00:00"},
+ {"00:bb:00"},
+ {"00:01:cc"},
+ {"08:10:Batman"},
+ {"08:10:10:10"},
+ {"08:10"},
+ {"a:b:c"},
+ {null},
+ {"8:"}
+ };
+ }
+
+ /*
+ * DataProvider used to provide Time values which are valid and are used
+ * to validate that an IllegalArgumentException will not be thrown from the
+ * valueOf method. It also contains the expected return value from
+ * toString()
+ */
+ @DataProvider(name = "validTimeValues")
+ private Object[][] validTimeValues() {
+ return new Object[][]{
+ {"10:50:01", "10:50:01"},
+ {"01:1:1", "01:01:01"},
+ {"01:01:1", "01:01:01"},
+ {"1:01:1", "01:01:01"},
+ {"2:02:02", "02:02:02"},
+ {"2:02:2", "02:02:02"},
+ {"10:50:1", "10:50:01"},
+ {"00:00:00", "00:00:00"},
+ {"08:30:59", "08:30:59"},
+ {"9:0:1", "09:00:01"}
+ };
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/sql/testng/test/sql/TimestampTests.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,777 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package test.sql;
+
+import java.sql.Date;
+import java.sql.Time;
+import java.sql.Timestamp;
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.util.Calendar;
+import java.util.TimeZone;
+import static org.testng.Assert.*;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+import util.BaseTest;
+
+public class TimestampTests extends BaseTest {
+
+ private static TimeZone defaultTimeZone = null;
+
+ /*
+ * Need to set and use a custom TimeZone which does not
+ * observe daylight savings time for this test.
+ */
+ @BeforeClass
+ public static void setUpClass() throws Exception {
+ defaultTimeZone = TimeZone.getDefault();
+ TimeZone tzone = TimeZone.getTimeZone("GMT+01");
+ assertFalse(tzone.observesDaylightTime());
+ TimeZone.setDefault(tzone);
+ }
+
+ /*
+ * Conservatively reset the default time zone after test.
+ */
+ @AfterClass
+ public static void tearDownClass() throws Exception {
+ TimeZone.setDefault(defaultTimeZone);
+ }
+
+ /*
+ * Validate an IllegalArgumentException is thrown for an invalid Timestamp
+ */
+ @Test(dataProvider = "invalidTimestampValues",
+ expectedExceptions = IllegalArgumentException.class)
+ public void test(String ts) throws Exception {
+ Timestamp.valueOf(ts);
+ }
+
+ /*
+ * Validate that two Timestamp are equal when the leading 0 in seconds is
+ * omitted
+ */
+ @Test
+ public void test01() throws Exception {
+ String testTS = "2009-01-01 10:50:00";
+ String ExpectedTS = "2009-01-01 10:50:0";
+ Timestamp ts = Timestamp.valueOf(testTS);
+ Timestamp ts2 = Timestamp.valueOf(ExpectedTS);
+ assertEquals(ts, ts2, "Error ts1 != ts2");
+ }
+
+ /*
+ * Validate two Timestamps created from the same string are equal
+ */
+ @Test
+ public void test02() throws Exception {
+ String testTS = "2009-01-01 10:50:0";
+ Timestamp ts = Timestamp.valueOf(testTS);
+ Timestamp ts2 = Timestamp.valueOf(testTS);
+ assertEquals(ts, ts2, "Error ts1 != ts2");
+ }
+
+ /*
+ * Validate that two Timestamp values one with leading 0s for month and day
+ * equals same string without the leading 0s.
+ */
+ @Test
+ public void test03() throws Exception {
+ String testTS = "2009-1-1 10:50:0";
+ String ExpectedTS = "2009-01-01 10:50:0";
+ Timestamp ts = Timestamp.valueOf(testTS);
+ Timestamp ts2 = Timestamp.valueOf(ExpectedTS);
+ assertEquals(ts, ts2, "Error ts1 != ts2");
+ }
+
+ /*
+ * Validate that two Timestamp values one with leading 0s for day omitted
+ * are equal
+ */
+ @Test
+ public void test04() throws Exception {
+ String testTS = "2009-01-1 10:50:0";
+ String ExpectedTS = "2009-01-01 10:50:0";
+ Timestamp ts = Timestamp.valueOf(testTS);
+ Timestamp ts2 = Timestamp.valueOf(ExpectedTS);
+ assertEquals(ts, ts2, "Error ts1 != ts2");
+ }
+
+ /*
+ * Validate that two Timestamp values one with leading 0s for month omitted
+ * and both with leading 0s for seconds omitted are equal
+ */
+ @Test
+ public void test05() throws Exception {
+ String testTS = "2009-1-01 10:50:0";
+ String ExpectedTS = "2009-01-01 10:50:0";
+ Timestamp ts = Timestamp.valueOf(testTS);
+ Timestamp ts2 = Timestamp.valueOf(ExpectedTS);
+ assertEquals(ts, ts2, "Error ts1 != ts2");
+ }
+
+ /*
+ * Validate that two Timestamp values one with leading 0s for month omitted
+ */
+ @Test
+ public void test06() throws Exception {
+ String testTS = "2005-1-01 10:20:50.00";
+ String ExpectedTS = "2005-01-01 10:20:50.00";
+ Timestamp ts = Timestamp.valueOf(testTS);
+ Timestamp ts2 = Timestamp.valueOf(ExpectedTS);
+ assertEquals(ts, ts2, "Error ts1 != ts2");
+ }
+
+ /*
+ * Validate that two Timestamp values one created using valueOf and another
+ * via a constructor are equal
+ */
+ @Test
+ public void test07() {
+
+ Timestamp ts1 = Timestamp.valueOf("1996-12-13 14:15:25.001");
+ Timestamp ts2 = new Timestamp(96, 11, 13, 14, 15, 25, 1000000);
+ assertTrue(ts1.equals(ts2), "Error ts1 != ts2");
+ }
+
+ /*
+ * Validate that two Timestamp values one created using valueOf and another
+ * via a constructor are equal
+ */
+ @Test
+ public void test08() {
+ Timestamp ts1 = Timestamp.valueOf("1996-12-13 14:15:25.001");
+ Timestamp ts2 = new Timestamp(ts1.getTime());
+ assertTrue(ts1.equals(ts2), "Error ts1 != ts2");
+ }
+
+ /*
+ * Validate that two Timestamp values one created using valueOf and another
+ * via a constructor are equal
+ */
+ @Test
+ public void test09() {
+
+ Timestamp ts1 = Timestamp.valueOf("1996-12-13 14:15:25.0");
+ Timestamp ts2 = new Timestamp(96, 11, 13, 14, 15, 25, 0);
+ assertTrue(ts1.equals(ts2), "Error ts1 != ts2");
+ }
+
+ /*
+ * Validate that a Timestamp cannot be equal to null
+ */
+ @Test
+ public void test10() {
+
+ Timestamp ts1 = Timestamp.valueOf("1961-08-30 14:15:25.745634");
+ Timestamp ts2 = null;
+ assertFalse(ts1.equals(ts2), "Error ts1 == null");
+ }
+
+ /*
+ * Validate that a Timestamp is equal to another timestamp created with the
+ * using the same value but not equal to a Timestamp which is one day later
+ */
+ @Test
+ public void test11() {
+
+ Timestamp ts1 = Timestamp.valueOf("1996-12-10 12:26:19.12");
+ Timestamp ts2 = Timestamp.valueOf("1996-12-10 12:26:19.12");
+ Timestamp ts3 = Timestamp.valueOf("1996-12-11 12:24:19.12");
+ assertTrue(ts1.equals(ts2) && ts2.equals(ts1), "Error ts1 != ts2");
+ assertFalse(ts1.equals(ts3) && ts3.equals(ts1), "Error ts1 == ts3");
+
+ }
+
+ /*
+ * Validate that a Timestamp is equal to itself
+ */
+ @Test
+ public void test12() {
+ Timestamp ts1 = Timestamp.valueOf("1996-10-15 12:26:19.12");
+ assertTrue(ts1.equals(ts1), "Error ts1 != ts1");
+ }
+
+ /*
+ * Validate that two Timestamps are equal when one is created from the
+ * toString() of the other
+ */
+ @Test(dataProvider = "validTimestampValues")
+ public void test13(String ts, String expectedTS) {
+ Timestamp ts1 = Timestamp.valueOf(ts);
+ Timestamp ts2 = Timestamp.valueOf(ts1.toString());
+ assertTrue(ts1.equals(ts2) && ts2.equals(ts1)
+ && ts1.toString().equals(expectedTS), "Error ts1 != ts2");
+ }
+
+ // Before Tests
+ /*
+ * Validate that Timestamp ts1 is before Timestamp ts2
+ */
+ @Test
+ public void test14() {
+ Timestamp ts1 = Timestamp.valueOf("1996-12-13 14:15:25.745634");
+ Timestamp ts2 = Timestamp.valueOf("1996-12-13 15:15:25.645634");
+ assertTrue(ts1.before(ts2), "Error ts1 not before ts2");
+ }
+
+ /*
+ * Validate that Timestamp ts1 is before Timestamp ts2
+ */
+ @Test
+ public void test15() {
+ Timestamp ts1 = Timestamp.valueOf("1961-08-30 14:15:25");
+ Timestamp ts2 = Timestamp.valueOf("1999-12-13 15:15:25");
+ assertTrue(ts1.before(ts2), "Error ts1 not before ts2");
+ }
+
+ /*
+ * Validate that Timestamp ts1 is before Timestamp ts2
+ */
+ @Test
+ public void test16() {
+
+ Timestamp ts1 = Timestamp.valueOf("1999-12-13 14:15:25.745634");
+ Timestamp ts2 = Timestamp.valueOf("1999-11-13 15:15:25.645634");
+ assertFalse(ts1.before(ts2), "Error ts1 before ts2");
+ }
+
+ /*
+ * Validate that a NullPointerException is thrown if a null is passed to
+ * the before method
+ */
+ @Test(expectedExceptions = NullPointerException.class)
+ public void test17() throws Exception {
+ Timestamp ts1 = Timestamp.valueOf("1996-12-13 14:15:25.745634");
+ ts1.before(null);
+ }
+
+ /*
+ * Validate a Timestamp cannot be before itself
+ */
+ @Test
+ public void test18() {
+ Timestamp ts1 = Timestamp.valueOf("1999-11-10 12:26:19.3456543");
+ assertFalse(ts1.before(ts1), "Error ts1 before ts1!");
+ }
+
+ /*
+ * Create 3 Timestamps and make sure the 1st is before the other two
+ * Timestamps which are each greater than the one before it
+ */
+ @Test
+ public void test19() {
+
+ Timestamp ts1 = new Timestamp(1234560000);
+ Timestamp ts2 = new Timestamp(1234567000);
+ Timestamp ts3 = new Timestamp(1234569000);
+ assertTrue(ts1.before(ts2) && ts2.before(ts3) && ts1.before(ts3));
+ }
+
+ /*
+ * Validate that Timestamp ts1 is not after Timestamp ts2
+ */
+ @Test
+ public void test20() {
+ Timestamp ts1 = Timestamp.valueOf("1999-12-13 14:15:25.745634");
+ Timestamp ts2 = Timestamp.valueOf("1999-12-13 15:15:25.645634");
+ assertFalse(ts1.after(ts2), "Error ts1 is after ts2");
+
+ }
+
+ /*
+ * Validate that Timestamp ts1 is after Timestamp ts2
+ */
+ @Test
+ public void test21() {
+ Timestamp ts1 = Timestamp.valueOf("1996-12-13 14:15:25.745634");
+ Timestamp ts2 = Timestamp.valueOf("1996-11-13 15:15:25.645634");
+ assertTrue(ts1.after(ts2), "Error ts1 not after ts2");
+ }
+
+ /*
+ * Validate that a NullPointerException is thrown if a null is passed to the
+ * after method
+ */
+ @Test(expectedExceptions = NullPointerException.class)
+ public void test22() throws Exception {
+ Timestamp ts1 = Timestamp.valueOf("1966-08-30 08:08:08");
+ ts1.after(null);
+ }
+
+ /*
+ * Validate that a Timestamp cannot be after itself
+ */
+ @Test
+ public void test23() {
+ Timestamp ts1 = Timestamp.valueOf("1999-11-10 12:26:19.3456543");
+ assertFalse(ts1.after(ts1), "Error ts1 is after itself");
+ }
+
+ /*
+ * Validate that a Timestamp after() works correctly with Timestamp created
+ * using milliseconds
+ */
+ @Test
+ public void test24() {
+
+ Timestamp ts1 = new Timestamp(1234568000);
+ Timestamp ts2 = new Timestamp(1234565000);
+ Timestamp ts3 = new Timestamp(1234562000);
+ assertTrue(ts1.after(ts2) && ts2.after(ts3) && ts1.after(ts3));
+ }
+
+ /*
+ * Validate compareTo returns 0 for Timestamps that are the same
+ */
+ @Test
+ public void test25() {
+ Timestamp ts1 = Timestamp.valueOf("1966-08-30 08:08:08");
+ Timestamp ts2 = new Timestamp(ts1.getTime());
+ assertTrue(ts1.compareTo(ts2) == 0, "Error ts1 != ts2");
+ }
+
+ /*
+ * Validate compareTo returns -1 for when the 1st Timestamp is earlier than
+ * the 2nd Timestamp
+ */
+ @Test
+ public void test26() {
+ Timestamp ts1 = Timestamp.valueOf("1966-08-30 08:08:08");
+ Timestamp ts2 = new Timestamp(ts1.getTime() + 1000);
+ assertTrue(ts1.compareTo(ts2) == -1, "Error ts1 not before ts2");
+ assertTrue(ts2.compareTo(ts1) == 1, "Error ts1 is not before ts2");
+ }
+
+ /*
+ * Validate compareTo returns 1 for when the 1st Timestamp is later than the
+ * 2nd Timestamp
+ */
+ @Test
+ public void test27() {
+ Timestamp ts1 = Timestamp.valueOf("1966-08-30 08:08:08");
+ Timestamp ts2 = new Timestamp(ts1.getTime() - 1000);
+ assertTrue(ts1.compareTo(ts2) == 1, "Error ts1 not after ts2");
+ assertTrue(ts2.compareTo(ts1) == -1, "Error ts1 not after ts2");
+ }
+
+ /*
+ * Validate compareTo returns 0 for Timestamps that are the same
+ */
+ @Test
+ public void test28() {
+ Timestamp ts1 = Timestamp.valueOf("1966-08-30 08:08:08");
+ java.util.Date ts2 = new java.util.Date(ts1.getTime());
+ assertTrue(ts1.compareTo(ts2) == 0, "Error ts1 != ts2");
+ }
+
+ /*
+ * Validate compareTo returns 0 for Timestamps that are the same
+ */
+ @Test
+ public void test29() {
+ Timestamp ts1 = Timestamp.valueOf("1966-08-30 08:08:08");
+ java.util.Date d = new java.util.Date(ts1.getTime());
+ assertFalse(ts1.equals(d), "Error ts1 == d");
+ }
+
+ /*
+ * Validate compareTo returns 0 for Timestamps that are the same
+ */
+ @Test
+ public void test30() {
+ Timestamp ts1 = Timestamp.valueOf("1966-08-30 08:08:08");
+ java.util.Date d = new Timestamp(ts1.getTime());
+ assertTrue(ts1.equals(d), "Error ts1 != d");
+ }
+
+ /*
+ * Validate equals returns false when a Date object is passed to equals
+ */
+ @Test
+ public void test31() {
+ Timestamp ts1 = Timestamp.valueOf("1966-08-30 08:08:08");
+ Date d = new Date(ts1.getTime());
+ assertFalse(ts1.equals(d), "Error ts1 != d");
+ }
+
+ /*
+ * Validate equals returns false when a Date object is passed to equals
+ */
+ @Test
+ public void test32() {
+ Timestamp ts1 = Timestamp.valueOf("1966-08-30 08:08:08");
+ java.util.Date d = new Date(ts1.getTime());
+ assertFalse(ts1.equals(d), "Error ts1 != d");
+ }
+
+ /*
+ * Validate equals returns false when a Time object is passed to equals
+ */
+ @Test
+ public void test33() {
+ Timestamp ts1 = Timestamp.valueOf("1966-08-30 08:08:08");
+ Time t1 = new Time(ts1.getTime());
+ assertFalse(ts1.equals(t1), "Error ts1 == t1");
+ }
+
+ /*
+ * Validate equals returns false when a String object is passed to equals
+ */
+ @Test
+ public void test34() {
+ Timestamp ts1 = Timestamp.valueOf("1966-08-30 08:08:08");
+ assertFalse(ts1.equals("1966-08-30 08:08:08"), "Error ts1 == a String");
+ }
+
+ /*
+ * Validate getTime() returns the same value from 2 timeStamps created by
+ */
+ @Test
+ public void test35() {
+ Timestamp ts1 = Timestamp.valueOf("1966-08-30 08:08:08");
+ Timestamp ts2 = Timestamp.valueOf("1966-08-30 08:08:08");
+ assertTrue(ts2.getTime() == ts1.getTime(),
+ "ts1.getTime() != ts2.getTime()");
+ assertTrue(ts1.equals(ts2), "Error ts1 != ts2");
+ }
+
+ /*
+ * Validate getTime() returns the same value from 2 timeStamps when
+ * setTime() is used to specify the same value for both Timestamps
+ */
+ @Test
+ public void test36() {
+ Timestamp ts1 = Timestamp.valueOf("1966-08-30 08:08:08");
+ Timestamp ts2 = Timestamp.valueOf("1961-08-30 00:00:00");
+ ts2.setTime(ts1.getTime());
+ assertTrue(ts2.getTime() == ts1.getTime(),
+ "ts1.getTime() != ts2.getTime()");
+ assertTrue(ts1.equals(ts2), "Error ts1 != ts2");
+ }
+
+ /*
+ * Validate an IllegalArgumentException is thrown for an invalid nanos value
+ */
+ @Test(expectedExceptions = IllegalArgumentException.class)
+ public void test38() throws Exception {
+ Timestamp ts1 = Timestamp.valueOf("1961-08-30 00:00:00");
+ ts1.setNanos(-1);
+
+ }
+
+ /*
+ * Validate an IllegalArgumentException is thrown for an invalid nanos value
+ */
+ @Test(expectedExceptions = IllegalArgumentException.class)
+ public void test39() throws Exception {
+ int nanos = 999999999;
+ Timestamp ts1 = Timestamp.valueOf("1961-08-30 00:00:00");
+ ts1.setNanos(nanos + 1);
+ }
+
+ /*
+ * Validate you can set nanos to 999999999
+ */
+ @Test
+ public void test40() throws Exception {
+ int nanos = 999999999;
+ Timestamp ts1 = Timestamp.valueOf("1961-08-30 00:00:00");
+ ts1.setNanos(nanos);
+ assertTrue(ts1.getNanos() == nanos, "Error Invalid Nanos value");
+ }
+
+ /*
+ * Validate you can set nanos to 0
+ */
+ @Test
+ public void test41() throws Exception {
+ int nanos = 0;
+ Timestamp ts1 = Timestamp.valueOf("1961-08-30 00:00:00");
+ ts1.setNanos(nanos);
+ assertTrue(ts1.getNanos() == nanos, "Error Invalid Nanos value");
+ }
+
+ /*
+ * Validate that a Timestamp made from a LocalDateTime are equal
+ */
+ @Test
+ public void test42() throws Exception {
+ Timestamp ts1 = Timestamp.valueOf("1961-08-30 00:00:00");
+ LocalDateTime ldt = ts1.toLocalDateTime();
+ Timestamp ts2 = Timestamp.valueOf(ldt);
+ assertTrue(ts1.equals(ts2), "Error ts1 != ts2");
+ }
+
+ /*
+ * Validate that a Timestamp LocalDateTime value, made from a LocalDateTime
+ * are equal
+ */
+ @Test
+ public void test43() throws Exception {
+ LocalDateTime ldt = LocalDateTime.now();
+ Timestamp ts2 = Timestamp.valueOf(ldt);
+ assertTrue(ldt.equals(ts2.toLocalDateTime()),
+ "Error LocalDateTime values are not equal");
+ }
+
+ /*
+ * Validate an NPE occurs when a null LocalDateTime is passed to valueOF
+ */
+ @Test(expectedExceptions = NullPointerException.class)
+ public void test44() throws Exception {
+ LocalDateTime ldt = null;
+ Timestamp.valueOf(ldt);
+ }
+
+ /*
+ * Validate that a Timestamp made from a Instant are equal
+ */
+ @Test
+ public void test45() throws Exception {
+ Timestamp ts1 = Timestamp.valueOf("1961-08-30 00:00:00");
+ Instant instant = ts1.toInstant();
+ Timestamp ts2 = Timestamp.from(instant);
+ assertTrue(ts1.equals(ts2), "Error ts1 != ts2");
+ }
+
+ /*
+ * Validate that a Timestamp made from a Instant are equal
+ */
+ @Test
+ public void test46() throws Exception {
+ Instant instant = Instant.now();
+ Timestamp ts2 = Timestamp.from(instant);
+ assertTrue(instant.equals(ts2.toInstant()),
+ "Error Instant values do not match");
+ }
+
+ /*
+ * Validate an NPE occurs when a null instant is passed to from
+ */
+ @Test(expectedExceptions = NullPointerException.class)
+ public void test47() throws Exception {
+ Instant instant = null;
+ Timestamp.from(instant);
+ }
+
+ // Added SQE tests
+ /*
+ * Create a Timestamp and a 2nd Timestamp that is 1 month earlier and
+ * validate that it is not before or after the original Timestamp
+ */
+ @Test
+ public void test48() {
+ Calendar cal = Calendar.getInstance();
+ Timestamp ts1 = new Timestamp(System.currentTimeMillis());
+ cal.setTimeInMillis(ts1.getTime());
+ cal.add(Calendar.MONTH, -1);
+ cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
+ Timestamp ts2 = new Timestamp(cal.getTimeInMillis());
+ assertFalse(ts1.before(ts2) || ts2.after(ts1));
+ }
+
+ /*
+ * Create two Timestamps and validate that compareTo returns 1 to indicate
+ * the 1st Timestamp is greater than the 2nd Timestamp
+ */
+ @Test
+ public void test49() {
+ Calendar cal = Calendar.getInstance();
+ Timestamp ts1 = new Timestamp(System.currentTimeMillis());
+ cal.setTimeInMillis(ts1.getTime());
+ cal.add(Calendar.MONTH, -1);
+ cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
+ Timestamp ts2 = new Timestamp(cal.getTimeInMillis());
+ assertTrue(ts1.compareTo(ts2) == 1);
+ }
+
+ /*
+ * Create two Timestamps and validate that the 1st Timestamp is not equal to
+ * the 2nd Timestamp but equal to itself
+ */
+ @Test
+ public void test50() {
+ Calendar cal = Calendar.getInstance();
+ Timestamp ts1 = new Timestamp(System.currentTimeMillis());
+ cal.setTimeInMillis(ts1.getTime());
+ cal.add(Calendar.MONTH, -1);
+ cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
+ Timestamp ts2 = new Timestamp(cal.getTimeInMillis());
+ assertTrue(!ts1.equals(ts2) && ts1.equals(ts1));
+ }
+
+ /*
+ * Validate that two Timestamps are equal when one is created from the
+ * toString() of the other
+ */
+ @Test(dataProvider = "validateNanos")
+ public void test51(String ts, int nanos) {
+ Timestamp ts1 = Timestamp.valueOf(ts);
+ Timestamp ts2 = Timestamp.valueOf(ts1.toString());
+ assertTrue(ts1.getNanos() == nanos && ts1.equals(ts2),
+ "Error with Nanos");
+ }
+
+ @Test(dataProvider = "validTimestampLongValues")
+ public void test52(long value, String ts) {
+ Timestamp ts1 = new Timestamp(value);
+ assertEquals(ts1.toString(), ts, "ts1.toString() != ts");
+ }
+
+ /*
+ * DataProvider used to provide Timestamps which are not valid and are used
+ * to validate that an IllegalArgumentException will be thrown from the
+ * valueOf method
+ */
+ @DataProvider(name = "invalidTimestampValues")
+ private Object[][] invalidTimestampValues() {
+ return new Object[][]{
+ {"2009-11-01-01 10:50:01"},
+ {"aaaa-11-01-01 10:50"},
+ {"aaaa-11-01 10:50"},
+ {"1961--30 00:00:00"},
+ {"--30 00:00:00"},
+ {"-- 00:00:00"},
+ {"1961-1- 00:00:00"},
+ {"2009-11-01"},
+ {"10:50:01"},
+ {"1961-a-30 00:00:00"},
+ {"1961-01-bb 00:00:00"},
+ {"1961-08-30 00:00:00."},
+ {"1961-08-30 :00:00"},
+ {"1961-08-30 00::00"},
+ {"1961-08-30 00:00:"},
+ {"1961-08-30 ::"},
+ {"1961-08-30 0a:00:00"},
+ {"1961-08-30 00:bb:00"},
+ {"1961-08-30 00:01:cc"},
+ {"1961-08-30 00:00:00.01a"},
+ {"1961-08-30 00:00:00.a"},
+ {"1996-12-10 12:26:19.1234567890"},
+ {null}
+ };
+ }
+
+ /*
+ * DataProvider used to provide Timestamps which are valid and are used
+ * to validate that an IllegalArgumentException will not be thrown from the
+ * valueOf method and the corect value from toString() is returned
+ */
+ @DataProvider(name = "validTimestampValues")
+ private Object[][] validTimestampValues() {
+ return new Object[][]{
+ {"1961-08-30 00:00:00", "1961-08-30 00:00:00.0"},
+ {"1961-08-30 11:22:33", "1961-08-30 11:22:33.0"},
+ {"1961-8-30 00:00:00", "1961-08-30 00:00:00.0"},
+ {"1966-08-1 00:00:00", "1966-08-01 00:00:00.0"},
+ {"1996-12-10 12:26:19.1", "1996-12-10 12:26:19.1"},
+ {"1996-12-10 12:26:19.12", "1996-12-10 12:26:19.12"},
+ {"1996-12-10 12:26:19.123", "1996-12-10 12:26:19.123"},
+ {"1996-12-10 12:26:19.1234", "1996-12-10 12:26:19.1234"},
+ {"1996-12-10 12:26:19.12345", "1996-12-10 12:26:19.12345"},
+ {"1996-12-10 12:26:19.123456", "1996-12-10 12:26:19.123456"},
+ {"1996-12-10 12:26:19.1234567", "1996-12-10 12:26:19.1234567"},
+ {"1996-12-10 12:26:19.12345678", "1996-12-10 12:26:19.12345678"},
+ {"1996-12-10 12:26:19.123456789", "1996-12-10 12:26:19.123456789"},
+ {"1996-12-10 12:26:19.000000001", "1996-12-10 12:26:19.000000001"},
+ {"1996-12-10 12:26:19.000000012", "1996-12-10 12:26:19.000000012"},
+ {"1996-12-10 12:26:19.000000123", "1996-12-10 12:26:19.000000123"},
+ {"1996-12-10 12:26:19.000001234", "1996-12-10 12:26:19.000001234"},
+ {"1996-12-10 12:26:19.000012345", "1996-12-10 12:26:19.000012345"},
+ {"1996-12-10 12:26:19.000123456", "1996-12-10 12:26:19.000123456"},
+ {"1996-12-10 12:26:19.001234567", "1996-12-10 12:26:19.001234567"},
+ {"1996-12-10 12:26:19.12345678", "1996-12-10 12:26:19.12345678"},
+ {"1996-12-10 12:26:19.0", "1996-12-10 12:26:19.0"},
+ {"1996-12-10 12:26:19.01230", "1996-12-10 12:26:19.0123"}
+ };
+ }
+
+ @DataProvider(name = "validTimestampLongValues")
+ private Object[][] validTimestampLongValues() {
+ return new Object[][]{
+ {1L, "1970-01-01 01:00:00.001"},
+ {-3600*1000L - 1, "1969-12-31 23:59:59.999"},
+ {-(20000L*365*24*60*60*1000), "18018-08-28 01:00:00.0"},
+ {Timestamp.valueOf("1961-08-30 11:22:33").getTime(), "1961-08-30 11:22:33.0"},
+ {Timestamp.valueOf("1961-08-30 11:22:33.54321000").getTime(), "1961-08-30 11:22:33.543"}, // nanoprecision lost
+ {new Timestamp(114, 10, 10, 10, 10, 10, 100000000).getTime(), "2014-11-10 10:10:10.1"},
+ {new Timestamp(0, 10, 10, 10, 10, 10, 100000).getTime(), "1900-11-10 10:10:10.0"}, // nanoprecision lost
+ {new Date(114, 10, 10).getTime(), "2014-11-10 00:00:00.0"},
+ {new Date(0, 10, 10).getTime(), "1900-11-10 00:00:00.0"},
+ {LocalDateTime.of(1960, 10, 10, 10, 10, 10, 50000).atZone(ZoneId.of("America/Los_Angeles"))
+ .toInstant().toEpochMilli(), "1960-10-10 19:10:10.0"},
+
+ // millisecond timestamps wraps around at year 1, so Long.MIN_VALUE looks similar
+ // Long.MAX_VALUE, while actually representing 292278994 BCE
+ {Long.MIN_VALUE, "292278994-08-17 08:12:55.192"},
+ {Long.MAX_VALUE + 1, "292278994-08-17 08:12:55.192"},
+ {Long.MAX_VALUE, "292278994-08-17 08:12:55.807"},
+ {Long.MIN_VALUE - 1, "292278994-08-17 08:12:55.807"},
+
+ // wrap around point near 0001-01-01, test that we never get a negative year:
+ {-(1970L*365*24*60*60*1000), "0001-04-25 01:00:00.0"},
+ {-(1970L*365*24*60*60*1000 + 115*24*60*60*1000L), "0001-12-31 01:00:00.0"},
+ {-(1970L*365*24*60*60*1000 + 115*24*60*60*1000L - 23*60*60*1000L), "0001-01-01 00:00:00.0"},
+
+ {LocalDateTime.of(0, 1, 1, 10, 10, 10, 50000).atZone(ZoneId.of("America/Los_Angeles"))
+ .toInstant().toEpochMilli() - 2*24*60*60*1000L, "0001-01-01 19:03:08.0"}, // 1 BCE
+ {LocalDateTime.of(0, 1, 1, 10, 10, 10, 50000).atZone(ZoneId.of("America/Los_Angeles"))
+ .toInstant().toEpochMilli() - 3*24*60*60*1000L, "0002-12-31 19:03:08.0"} // 2 BCE
+ };
+ }
+
+ /*
+ * DataProvider used to provide Timestamp and Nanos values in order to
+ * validate that the correct Nanos value is generated from the specified
+ * Timestamp
+ */
+ @DataProvider(name = "validateNanos")
+ private Object[][] validateNanos() {
+ return new Object[][]{
+ {"1961-08-30 00:00:00", 0},
+ {"1996-12-10 12:26:19.1", 100000000},
+ {"1996-12-10 12:26:19.12", 120000000},
+ {"1996-12-10 12:26:19.123", 123000000},
+ {"1996-12-10 12:26:19.1234", 123400000},
+ {"1996-12-10 12:26:19.12345", 123450000},
+ {"1996-12-10 12:26:19.123456", 123456000},
+ {"1996-12-10 12:26:19.1234567", 123456700},
+ {"1996-12-10 12:26:19.12345678", 123456780},
+ {"1996-12-10 12:26:19.123456789", 123456789},
+ {"1996-12-10 12:26:19.000000001", 1},
+ {"1996-12-10 12:26:19.000000012", 12},
+ {"1996-12-10 12:26:19.000000123", 123},
+ {"1996-12-10 12:26:19.000001234", 1234},
+ {"1996-12-10 12:26:19.000012345", 12345},
+ {"1996-12-10 12:26:19.000123456", 123456},
+ {"1996-12-10 12:26:19.001234567", 1234567},
+ {"1996-12-10 12:26:19.012345678", 12345678},
+ {"1996-12-10 12:26:19.0", 0},
+ {"1996-12-10 12:26:19.01230", 12300000}
+ };
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/sql/testng/util/BaseTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,126 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package util;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.security.Policy;
+import java.sql.JDBCType;
+import java.sql.SQLException;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.DataProvider;
+
+public class BaseTest {
+
+ protected final String reason = "reason";
+ protected final String state = "SQLState";
+ protected final String cause = "java.lang.Throwable: cause";
+ protected final Throwable t = new Throwable("cause");
+ protected final Throwable t1 = new Throwable("cause 1");
+ protected final Throwable t2 = new Throwable("cause 2");
+ protected final int errorCode = 21;
+ protected final String[] msgs = {"Exception 1", "cause 1", "Exception 2",
+ "Exception 3", "cause 2"};
+
+ @BeforeClass
+ public static void setUpClass() throws Exception {
+ }
+
+ @AfterClass
+ public static void tearDownClass() throws Exception {
+ }
+
+ @BeforeMethod
+ public void setUpMethod() throws Exception {
+ }
+
+ @AfterMethod
+ public void tearDownMethod() throws Exception {
+ }
+
+ /*
+ * Take some form of SQLException, serialize and deserialize it
+ */
+ @SuppressWarnings("unchecked")
+ protected <T extends SQLException> T
+ createSerializedException(T ex)
+ throws IOException, ClassNotFoundException {
+ return (T) serializeDeserializeObject(ex);
+ }
+
+ /*
+ * Utility method to serialize and deserialize an object
+ */
+ @SuppressWarnings("unchecked")
+ protected <T> T serializeDeserializeObject(T o)
+ throws IOException, ClassNotFoundException {
+ T o1;
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ try (ObjectOutputStream oos = new ObjectOutputStream(baos)) {
+ oos.writeObject(o);
+ }
+ try (ObjectInputStream ois
+ = new ObjectInputStream(new ByteArrayInputStream(baos.toByteArray()))) {
+ o1 = (T) ois.readObject();
+ }
+ return o1;
+ }
+
+ /*
+ * Utility Method used to set the current Policy
+ */
+ protected static void setPolicy(Policy p) {
+ Policy.setPolicy(p);
+ }
+
+ /*
+ * DataProvider used to specify the value to set and check for
+ * methods using boolean values
+ */
+ @DataProvider(name = "trueFalse")
+ protected Object[][] trueFalse() {
+ return new Object[][]{
+ {true},
+ {false}
+ };
+ }
+
+ /*
+ * DataProvider used to specify the standard JDBC Types
+ */
+ @DataProvider(name = "jdbcTypes")
+ protected Object[][] jdbcTypes() {
+ Object[][] o = new Object[JDBCType.values().length][1];
+ int pos = 0;
+ for (JDBCType c : JDBCType.values()) {
+ o[pos++][0] = c.getVendorTypeNumber();
+ }
+ return o;
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/sql/testng/util/DriverActionImpl.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package util;
+
+import java.sql.DriverAction;
+
+/**
+ * Simple implementation of DriverAction which calls back into the Driver when
+ * release is called.
+ */
+class DriverActionImpl implements DriverAction {
+
+ public DriverActionImpl(StubDriverDA d) {
+ driver = d;
+ }
+
+ private final StubDriverDA driver;
+
+ @Override
+ public void deregister() {
+ driver.release();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/sql/testng/util/SerializedBatchUpdateException.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package util;
+
+public class SerializedBatchUpdateException {
+ /**
+ * Serialized BatchUpdateException from JDBC 4.0 with the following values
+ * reason = "This was the error msg"
+ * SQLState = "user defined sqlState"
+ * vendor Code = 99999
+ * Update Counts = {1, 2, 21}
+ * cause = = "java.lang.Throwable: throw 1"
+ */
+ public static byte[] DATA = {
+ (byte) 0xac, (byte) 0xed, (byte) 0x0, (byte) 0x5, (byte) 0x73, (byte) 0x72, (byte) 0x0, (byte) 0x1d, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x73, (byte) 0x71, (byte) 0x6c, (byte) 0x2e, (byte) 0x42, (byte) 0x61, (byte) 0x74, (byte) 0x63, (byte) 0x68, (byte) 0x55, (byte) 0x70, (byte) 0x64, (byte) 0x61, (byte) 0x74, (byte) 0x65, (byte) 0x45, (byte) 0x78, (byte) 0x63, (byte) 0x65,
+ (byte) 0x70, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x52, (byte) 0xf4, (byte) 0x73, (byte) 0xc0, (byte) 0xc1, (byte) 0x8b, (byte) 0xe, (byte) 0x5d, (byte) 0x3, (byte) 0x0, (byte) 0x2, (byte) 0x5b, (byte) 0x0, (byte) 0x10, (byte) 0x6c, (byte) 0x6f, (byte) 0x6e, (byte) 0x67, (byte) 0x55, (byte) 0x70, (byte) 0x64, (byte) 0x61, (byte) 0x74, (byte) 0x65, (byte) 0x43, (byte) 0x6f, (byte) 0x75,
+ (byte) 0x6e, (byte) 0x74, (byte) 0x73, (byte) 0x74, (byte) 0x0, (byte) 0x2, (byte) 0x5b, (byte) 0x4a, (byte) 0x5b, (byte) 0x0, (byte) 0xc, (byte) 0x75, (byte) 0x70, (byte) 0x64, (byte) 0x61, (byte) 0x74, (byte) 0x65, (byte) 0x43, (byte) 0x6f, (byte) 0x75, (byte) 0x6e, (byte) 0x74, (byte) 0x73, (byte) 0x74, (byte) 0x0, (byte) 0x2, (byte) 0x5b, (byte) 0x49, (byte) 0x78, (byte) 0x72, (byte) 0x0, (byte) 0x15,
+ (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x73, (byte) 0x71, (byte) 0x6c, (byte) 0x2e, (byte) 0x53, (byte) 0x51, (byte) 0x4c, (byte) 0x45, (byte) 0x78, (byte) 0x63, (byte) 0x65, (byte) 0x70, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x1d, (byte) 0xa1, (byte) 0xe9, (byte) 0x30, (byte) 0xdb, (byte) 0x3e, (byte) 0x75, (byte) 0xdc, (byte) 0x2, (byte) 0x0, (byte) 0x3,
+ (byte) 0x49, (byte) 0x0, (byte) 0xa, (byte) 0x76, (byte) 0x65, (byte) 0x6e, (byte) 0x64, (byte) 0x6f, (byte) 0x72, (byte) 0x43, (byte) 0x6f, (byte) 0x64, (byte) 0x65, (byte) 0x4c, (byte) 0x0, (byte) 0x8, (byte) 0x53, (byte) 0x51, (byte) 0x4c, (byte) 0x53, (byte) 0x74, (byte) 0x61, (byte) 0x74, (byte) 0x65, (byte) 0x74, (byte) 0x0, (byte) 0x12, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61,
+ (byte) 0x2f, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2f, (byte) 0x53, (byte) 0x74, (byte) 0x72, (byte) 0x69, (byte) 0x6e, (byte) 0x67, (byte) 0x3b, (byte) 0x4c, (byte) 0x0, (byte) 0x4, (byte) 0x6e, (byte) 0x65, (byte) 0x78, (byte) 0x74, (byte) 0x74, (byte) 0x0, (byte) 0x17, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2f, (byte) 0x73, (byte) 0x71, (byte) 0x6c,
+ (byte) 0x2f, (byte) 0x53, (byte) 0x51, (byte) 0x4c, (byte) 0x45, (byte) 0x78, (byte) 0x63, (byte) 0x65, (byte) 0x70, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x3b, (byte) 0x78, (byte) 0x72, (byte) 0x0, (byte) 0x13, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2e, (byte) 0x45, (byte) 0x78, (byte) 0x63, (byte) 0x65,
+ (byte) 0x70, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0xd0, (byte) 0xfd, (byte) 0x1f, (byte) 0x3e, (byte) 0x1a, (byte) 0x3b, (byte) 0x1c, (byte) 0xc4, (byte) 0x2, (byte) 0x0, (byte) 0x0, (byte) 0x78, (byte) 0x72, (byte) 0x0, (byte) 0x13, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2e, (byte) 0x54, (byte) 0x68,
+ (byte) 0x72, (byte) 0x6f, (byte) 0x77, (byte) 0x61, (byte) 0x62, (byte) 0x6c, (byte) 0x65, (byte) 0xd5, (byte) 0xc6, (byte) 0x35, (byte) 0x27, (byte) 0x39, (byte) 0x77, (byte) 0xb8, (byte) 0xcb, (byte) 0x3, (byte) 0x0, (byte) 0x4, (byte) 0x4c, (byte) 0x0, (byte) 0x5, (byte) 0x63, (byte) 0x61, (byte) 0x75, (byte) 0x73, (byte) 0x65, (byte) 0x74, (byte) 0x0, (byte) 0x15, (byte) 0x4c, (byte) 0x6a, (byte) 0x61,
+ (byte) 0x76, (byte) 0x61, (byte) 0x2f, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2f, (byte) 0x54, (byte) 0x68, (byte) 0x72, (byte) 0x6f, (byte) 0x77, (byte) 0x61, (byte) 0x62, (byte) 0x6c, (byte) 0x65, (byte) 0x3b, (byte) 0x4c, (byte) 0x0, (byte) 0xd, (byte) 0x64, (byte) 0x65, (byte) 0x74, (byte) 0x61, (byte) 0x69, (byte) 0x6c, (byte) 0x4d, (byte) 0x65, (byte) 0x73, (byte) 0x73, (byte) 0x61,
+ (byte) 0x67, (byte) 0x65, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x4, (byte) 0x5b, (byte) 0x0, (byte) 0xa, (byte) 0x73, (byte) 0x74, (byte) 0x61, (byte) 0x63, (byte) 0x6b, (byte) 0x54, (byte) 0x72, (byte) 0x61, (byte) 0x63, (byte) 0x65, (byte) 0x74, (byte) 0x0, (byte) 0x1e, (byte) 0x5b, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2f, (byte) 0x6c, (byte) 0x61,
+ (byte) 0x6e, (byte) 0x67, (byte) 0x2f, (byte) 0x53, (byte) 0x74, (byte) 0x61, (byte) 0x63, (byte) 0x6b, (byte) 0x54, (byte) 0x72, (byte) 0x61, (byte) 0x63, (byte) 0x65, (byte) 0x45, (byte) 0x6c, (byte) 0x65, (byte) 0x6d, (byte) 0x65, (byte) 0x6e, (byte) 0x74, (byte) 0x3b, (byte) 0x4c, (byte) 0x0, (byte) 0x14, (byte) 0x73, (byte) 0x75, (byte) 0x70, (byte) 0x70, (byte) 0x72, (byte) 0x65, (byte) 0x73, (byte) 0x73,
+ (byte) 0x65, (byte) 0x64, (byte) 0x45, (byte) 0x78, (byte) 0x63, (byte) 0x65, (byte) 0x70, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x73, (byte) 0x74, (byte) 0x0, (byte) 0x10, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2f, (byte) 0x75, (byte) 0x74, (byte) 0x69, (byte) 0x6c, (byte) 0x2f, (byte) 0x4c, (byte) 0x69, (byte) 0x73, (byte) 0x74, (byte) 0x3b, (byte) 0x78,
+ (byte) 0x70, (byte) 0x73, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x7, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0xc, (byte) 0x74, (byte) 0x0, (byte) 0x7, (byte) 0x74, (byte) 0x68, (byte) 0x72, (byte) 0x6f, (byte) 0x77, (byte) 0x20, (byte) 0x31, (byte) 0x75, (byte) 0x72, (byte) 0x0, (byte) 0x1e, (byte) 0x5b, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61,
+ (byte) 0x2e, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2e, (byte) 0x53, (byte) 0x74, (byte) 0x61, (byte) 0x63, (byte) 0x6b, (byte) 0x54, (byte) 0x72, (byte) 0x61, (byte) 0x63, (byte) 0x65, (byte) 0x45, (byte) 0x6c, (byte) 0x65, (byte) 0x6d, (byte) 0x65, (byte) 0x6e, (byte) 0x74, (byte) 0x3b, (byte) 0x2, (byte) 0x46, (byte) 0x2a, (byte) 0x3c, (byte) 0x3c, (byte) 0xfd, (byte) 0x22, (byte) 0x39,
+ (byte) 0x2, (byte) 0x0, (byte) 0x0, (byte) 0x78, (byte) 0x70, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x2, (byte) 0x73, (byte) 0x72, (byte) 0x0, (byte) 0x1b, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2e, (byte) 0x53, (byte) 0x74, (byte) 0x61, (byte) 0x63, (byte) 0x6b, (byte) 0x54, (byte) 0x72, (byte) 0x61, (byte) 0x63,
+ (byte) 0x65, (byte) 0x45, (byte) 0x6c, (byte) 0x65, (byte) 0x6d, (byte) 0x65, (byte) 0x6e, (byte) 0x74, (byte) 0x61, (byte) 0x9, (byte) 0xc5, (byte) 0x9a, (byte) 0x26, (byte) 0x36, (byte) 0xdd, (byte) 0x85, (byte) 0x2, (byte) 0x0, (byte) 0x4, (byte) 0x49, (byte) 0x0, (byte) 0xa, (byte) 0x6c, (byte) 0x69, (byte) 0x6e, (byte) 0x65, (byte) 0x4e, (byte) 0x75, (byte) 0x6d, (byte) 0x62, (byte) 0x65, (byte) 0x72,
+ (byte) 0x4c, (byte) 0x0, (byte) 0xe, (byte) 0x64, (byte) 0x65, (byte) 0x63, (byte) 0x6c, (byte) 0x61, (byte) 0x72, (byte) 0x69, (byte) 0x6e, (byte) 0x67, (byte) 0x43, (byte) 0x6c, (byte) 0x61, (byte) 0x73, (byte) 0x73, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x4, (byte) 0x4c, (byte) 0x0, (byte) 0x8, (byte) 0x66, (byte) 0x69, (byte) 0x6c, (byte) 0x65, (byte) 0x4e, (byte) 0x61, (byte) 0x6d,
+ (byte) 0x65, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x4, (byte) 0x4c, (byte) 0x0, (byte) 0xa, (byte) 0x6d, (byte) 0x65, (byte) 0x74, (byte) 0x68, (byte) 0x6f, (byte) 0x64, (byte) 0x4e, (byte) 0x61, (byte) 0x6d, (byte) 0x65, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x4, (byte) 0x78, (byte) 0x70, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x23, (byte) 0x74, (byte) 0x0,
+ (byte) 0x17, (byte) 0x43, (byte) 0x72, (byte) 0x65, (byte) 0x61, (byte) 0x74, (byte) 0x65, (byte) 0x42, (byte) 0x61, (byte) 0x74, (byte) 0x63, (byte) 0x68, (byte) 0x45, (byte) 0x78, (byte) 0x63, (byte) 0x65, (byte) 0x70, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x53, (byte) 0x65, (byte) 0x72, (byte) 0x74, (byte) 0x0, (byte) 0x1c, (byte) 0x43, (byte) 0x72, (byte) 0x65, (byte) 0x61, (byte) 0x74,
+ (byte) 0x65, (byte) 0x42, (byte) 0x61, (byte) 0x74, (byte) 0x63, (byte) 0x68, (byte) 0x45, (byte) 0x78, (byte) 0x63, (byte) 0x65, (byte) 0x70, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x53, (byte) 0x65, (byte) 0x72, (byte) 0x2e, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x74, (byte) 0x0, (byte) 0x9, (byte) 0x77, (byte) 0x72, (byte) 0x69, (byte) 0x74, (byte) 0x65, (byte) 0x54,
+ (byte) 0x65, (byte) 0x73, (byte) 0x74, (byte) 0x73, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x10, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x1a, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x12, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x13, (byte) 0x74, (byte) 0x0, (byte) 0x4, (byte) 0x6d, (byte) 0x61, (byte) 0x69, (byte) 0x6e, (byte) 0x70, (byte) 0x78,
+ (byte) 0x74, (byte) 0x0, (byte) 0x16, (byte) 0x54, (byte) 0x68, (byte) 0x69, (byte) 0x73, (byte) 0x20, (byte) 0x77, (byte) 0x61, (byte) 0x73, (byte) 0x20, (byte) 0x74, (byte) 0x68, (byte) 0x65, (byte) 0x20, (byte) 0x65, (byte) 0x72, (byte) 0x72, (byte) 0x6f, (byte) 0x72, (byte) 0x20, (byte) 0x6d, (byte) 0x73, (byte) 0x67, (byte) 0x75, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0xe, (byte) 0x0,
+ (byte) 0x0, (byte) 0x0, (byte) 0x2, (byte) 0x73, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x10, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x28, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x12, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x13, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x14, (byte) 0x73, (byte) 0x71, (byte) 0x0, (byte) 0x7e,
+ (byte) 0x0, (byte) 0x10, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x1a, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x12, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x13, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x16, (byte) 0x70, (byte) 0x78, (byte) 0x0, (byte) 0x1, (byte) 0x86, (byte) 0x9f, (byte) 0x74, (byte) 0x0, (byte) 0x15, (byte) 0x75, (byte) 0x73,
+ (byte) 0x65, (byte) 0x72, (byte) 0x20, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x69, (byte) 0x6e, (byte) 0x65, (byte) 0x64, (byte) 0x20, (byte) 0x73, (byte) 0x71, (byte) 0x6c, (byte) 0x53, (byte) 0x74, (byte) 0x61, (byte) 0x74, (byte) 0x65, (byte) 0x70, (byte) 0x75, (byte) 0x72, (byte) 0x0, (byte) 0x2, (byte) 0x5b, (byte) 0x4a, (byte) 0x78, (byte) 0x20, (byte) 0x4, (byte) 0xb5, (byte) 0x12, (byte) 0xb1,
+ (byte) 0x75, (byte) 0x93, (byte) 0x2, (byte) 0x0, (byte) 0x0, (byte) 0x78, (byte) 0x70, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x3, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x1, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x2, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0,
+ (byte) 0x0, (byte) 0x0, (byte) 0x15, (byte) 0x75, (byte) 0x72, (byte) 0x0, (byte) 0x2, (byte) 0x5b, (byte) 0x49, (byte) 0x4d, (byte) 0xba, (byte) 0x60, (byte) 0x26, (byte) 0x76, (byte) 0xea, (byte) 0xb2, (byte) 0xa5, (byte) 0x2, (byte) 0x0, (byte) 0x0, (byte) 0x78, (byte) 0x70, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x3, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x1, (byte) 0x0, (byte) 0x0,
+ (byte) 0x0, (byte) 0x2, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x15, (byte) 0x78
+ };
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/sql/testng/util/StubConnection.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,315 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package util;
+
+import java.sql.Array;
+import java.sql.Blob;
+import java.sql.CallableStatement;
+import java.sql.Clob;
+import java.sql.Connection;
+import java.sql.DatabaseMetaData;
+import java.sql.NClob;
+import java.sql.PreparedStatement;
+import java.sql.SQLClientInfoException;
+import java.sql.SQLException;
+import java.sql.SQLWarning;
+import java.sql.SQLXML;
+import java.sql.Savepoint;
+import java.sql.Statement;
+import java.sql.Struct;
+import java.util.Map;
+import java.util.Properties;
+import java.util.concurrent.Executor;
+
+public class StubConnection implements Connection {
+
+ @Override
+ public Statement createStatement() throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public PreparedStatement prepareStatement(String sql) throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public CallableStatement prepareCall(String sql) throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public String nativeSQL(String sql) throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public void setAutoCommit(boolean autoCommit) throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public boolean getAutoCommit() throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public void commit() throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public void rollback() throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public void close() throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public boolean isClosed() throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public DatabaseMetaData getMetaData() throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public void setReadOnly(boolean readOnly) throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public boolean isReadOnly() throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public void setCatalog(String catalog) throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public String getCatalog() throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public void setTransactionIsolation(int level) throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public int getTransactionIsolation() throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public SQLWarning getWarnings() throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public void clearWarnings() throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public Statement createStatement(int resultSetType, int resultSetConcurrency) throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency) throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency) throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public Map<String, Class<?>> getTypeMap() throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public void setTypeMap(Map<String, Class<?>> map) throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public void setHoldability(int holdability) throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public int getHoldability() throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public Savepoint setSavepoint() throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public Savepoint setSavepoint(String name) throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public void rollback(Savepoint savepoint) throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public void releaseSavepoint(Savepoint savepoint) throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public Statement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public PreparedStatement prepareStatement(String sql, int autoGeneratedKeys) throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public PreparedStatement prepareStatement(String sql, int[] columnIndexes) throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public PreparedStatement prepareStatement(String sql, String[] columnNames) throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public Clob createClob() throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public Blob createBlob() throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public NClob createNClob() throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public SQLXML createSQLXML() throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public boolean isValid(int timeout) throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public void setClientInfo(String name, String value) throws SQLClientInfoException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public void setClientInfo(Properties properties) throws SQLClientInfoException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public String getClientInfo(String name) throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public Properties getClientInfo() throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public Array createArrayOf(String typeName, Object[] elements) throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public Struct createStruct(String typeName, Object[] attributes) throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public void setSchema(String schema) throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public String getSchema() throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public void abort(Executor executor) throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public void setNetworkTimeout(Executor executor, int milliseconds) throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public int getNetworkTimeout() throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public <T> T unwrap(Class<T> iface) throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public boolean isWrapperFor(Class<?> iface) throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/sql/testng/util/StubDriver.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package util;
+
+import java.sql.Connection;
+import java.sql.Driver;
+import java.sql.DriverPropertyInfo;
+import java.sql.SQLException;
+import java.sql.SQLFeatureNotSupportedException;
+import java.util.Properties;
+import java.util.logging.Logger;
+
+public class StubDriver implements Driver {
+
+ public StubDriver() {
+ }
+
+ @Override
+ public Connection connect(String url, Properties info) throws SQLException {
+ if (acceptsURL(url)) {
+ return new StubConnection();
+ }
+ return null;
+ }
+
+ @Override
+ public boolean acceptsURL(String url) throws SQLException {
+ return url.matches("^jdbc:tennis:.*");
+ }
+
+ @Override
+ public DriverPropertyInfo[] getPropertyInfo(String url, Properties info) throws SQLException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public int getMajorVersion() {
+ return 1;
+ }
+
+ @Override
+ public int getMinorVersion() {
+ return 0;
+ }
+
+ @Override
+ public boolean jdbcCompliant() {
+ return true;
+ }
+
+ @Override
+ public Logger getParentLogger() throws SQLFeatureNotSupportedException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/sql/testng/util/StubDriverDA.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package util;
+
+import java.io.File;
+import java.io.IOException;
+import java.sql.DriverAction;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * Simple java.sql.Driver stub class that registers the driver via a static
+ * block with a DriverAction Implementation
+ * @author ljanders
+ */
+public class StubDriverDA extends StubDriver {
+
+ public static final String DriverActionCalled = "DriverActionCalled.txt";
+
+ static DriverAction da;
+
+ static {
+ try {
+ DriverManager.registerDriver(new StubDriverDA(), da);
+ } catch (SQLException ex) {
+ Logger.getLogger(StubDriverDA.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ }
+
+ public StubDriverDA() {
+ da = new DriverActionImpl(this);
+ }
+
+ @Override
+ public boolean acceptsURL(String url) throws SQLException {
+ return url.matches("^jdbc:luckydog:.*");
+ }
+
+ /**
+ * This method will write out a text file when called by the
+ * DriverActionImpl.release method when DriverManager.deregisterDriver
+ * is called. This is used by DriverManagerTests to validate that
+ * DriverAction.release was called
+ */
+ protected void release() {
+ File file = new File(DriverActionCalled);
+ try {
+ file.createNewFile();
+ } catch (IOException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/sql/testng/util/TestPolicy.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,135 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package util;
+
+import java.io.FilePermission;
+import java.security.AllPermission;
+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 java.security.SecurityPermission;
+import java.sql.SQLPermission;
+import java.util.Enumeration;
+import java.util.PropertyPermission;
+import java.util.StringJoiner;
+
+/*
+ * Simple Policy class that supports the required Permissions to validate the
+ * JDBC concrete classes
+ */
+public class TestPolicy extends Policy {
+
+ final PermissionCollection permissions = new Permissions();
+
+ /**
+ * Constructor which sets the minimum permissions allowing testNG to work
+ * with a SecurityManager
+ */
+ public TestPolicy() {
+ setMinimalPermissions();
+ }
+
+ /*
+ * Constructor which determines which permissions are defined for this
+ * Policy used by the JDBC tests Possible values are: all (ALLPermissions),
+ * setLog (SQLPemission("setLog"), deregisterDriver
+ * (SQLPermission("deregisterDriver") (SQLPermission("deregisterDriver"),
+ * and setSyncFactory(SQLPermission(setSyncFactory),
+ *
+ * @param policy Permissions to set
+ */
+ public TestPolicy(String policy) {
+
+ switch (policy) {
+ case "all":
+ permissions.add(new AllPermission());
+ break;
+ case "setLog":
+ setMinimalPermissions();
+ permissions.add(new SQLPermission("setLog"));
+ break;
+ case "deregisterDriver":
+ setMinimalPermissions();
+ permissions.add(new SQLPermission("deregisterDriver"));
+ break;
+ case "setSyncFactory":
+ setMinimalPermissions();
+ permissions.add(new SQLPermission("setSyncFactory"));
+ break;
+ default:
+ setMinimalPermissions();
+ }
+ }
+
+ /*
+ * Defines the minimal permissions required by testNG when running these
+ * tests
+ */
+ private void setMinimalPermissions() {
+ permissions.add(new SecurityPermission("getPolicy"));
+ permissions.add(new SecurityPermission("setPolicy"));
+ permissions.add(new RuntimePermission("getClassLoader"));
+ permissions.add(new RuntimePermission("setSecurityManager"));
+ permissions.add(new RuntimePermission("createSecurityManager"));
+ permissions.add(new PropertyPermission("testng.show.stack.frames",
+ "read"));
+ permissions.add(new PropertyPermission("line.separator", "read"));
+ permissions.add(new PropertyPermission("fileStringBuffer", "read"));
+ permissions.add(new PropertyPermission("dataproviderthreadcount", "read"));
+ permissions.add(new PropertyPermission("java.io.tmpdir", "read"));
+ permissions.add(new FilePermission("<<ALL FILES>>",
+ "read, write, delete"));
+ }
+
+ /*
+ * Overloaded methods from the Policy class
+ */
+ @Override
+ public String toString() {
+ StringJoiner sj = new StringJoiner("\n", "policy: ", "");
+ Enumeration<Permission> perms = permissions.elements();
+ while (perms.hasMoreElements()) {
+ sj.add(perms.nextElement().toString());
+ }
+ return sj.toString();
+
+ }
+
+ @Override
+ public PermissionCollection getPermissions(ProtectionDomain domain) {
+ return permissions;
+ }
+
+ @Override
+ public PermissionCollection getPermissions(CodeSource codesource) {
+ return permissions;
+ }
+
+ @Override
+ public boolean implies(ProtectionDomain domain, Permission perm) {
+ return permissions.implies(perm);
+ }
+}
--- a/jdk/test/java/sql/util/BaseTest.java Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package util;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.security.Policy;
-import java.sql.SQLException;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
-
-public class BaseTest {
-
- protected final String reason = "reason";
- protected final String state = "SQLState";
- protected final String cause = "java.lang.Throwable: cause";
- protected final Throwable t = new Throwable("cause");
- protected final Throwable t1 = new Throwable("cause 1");
- protected final Throwable t2 = new Throwable("cause 2");
- protected final int errorCode = 21;
- protected final String[] msgs = {"Exception 1", "cause 1", "Exception 2",
- "Exception 3", "cause 2"};
-
- @BeforeClass
- public static void setUpClass() throws Exception {
- }
-
- @AfterClass
- public static void tearDownClass() throws Exception {
- }
-
- @BeforeMethod
- public void setUpMethod() throws Exception {
- }
-
- @AfterMethod
- public void tearDownMethod() throws Exception {
- }
-
- /*
- * Take some form of SQLException, serialize and deserialize it
- */
- @SuppressWarnings("unchecked")
- protected <T extends SQLException> T
- createSerializedException(T ex)
- throws IOException, ClassNotFoundException {
- return (T) serializeDeserializeObject(ex);
- }
-
- /*
- * Utility method to serialize and deserialize an object
- */
- @SuppressWarnings("unchecked")
- protected <T> T serializeDeserializeObject(T o)
- throws IOException, ClassNotFoundException {
- T o1;
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- try (ObjectOutputStream oos = new ObjectOutputStream(baos)) {
- oos.writeObject(o);
- }
- try (ObjectInputStream ois
- = new ObjectInputStream(new ByteArrayInputStream(baos.toByteArray()))) {
- o1 = (T) ois.readObject();
- }
- return o1;
- }
-
- /*
- * Utility Method used to set the current Policy
- */
- protected static void setPolicy(Policy p) {
- Policy.setPolicy(p);
- }
-}
--- a/jdk/test/java/sql/util/DriverActionImpl.java Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package util;
-
-import java.sql.DriverAction;
-
-/**
- * Simple implementation of DriverAction which calls back into the Driver when
- * release is called.
- */
-class DriverActionImpl implements DriverAction {
-
- public DriverActionImpl(StubDriverDA d) {
- driver = d;
- }
-
- private final StubDriverDA driver;
-
- @Override
- public void deregister() {
- driver.release();
- }
-}
--- a/jdk/test/java/sql/util/SerializedBatchUpdateException.java Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package util;
-
-public class SerializedBatchUpdateException {
- /**
- * Serialized BatchUpdateException from JDBC 4.0 with the following values
- * reason = "This was the error msg"
- * SQLState = "user defined sqlState"
- * vendor Code = 99999
- * Update Counts = {1, 2, 21}
- * cause = = "java.lang.Throwable: throw 1"
- */
- public static byte[] DATA = {
- (byte) 0xac, (byte) 0xed, (byte) 0x0, (byte) 0x5, (byte) 0x73, (byte) 0x72, (byte) 0x0, (byte) 0x1d, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x73, (byte) 0x71, (byte) 0x6c, (byte) 0x2e, (byte) 0x42, (byte) 0x61, (byte) 0x74, (byte) 0x63, (byte) 0x68, (byte) 0x55, (byte) 0x70, (byte) 0x64, (byte) 0x61, (byte) 0x74, (byte) 0x65, (byte) 0x45, (byte) 0x78, (byte) 0x63, (byte) 0x65,
- (byte) 0x70, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x52, (byte) 0xf4, (byte) 0x73, (byte) 0xc0, (byte) 0xc1, (byte) 0x8b, (byte) 0xe, (byte) 0x5d, (byte) 0x3, (byte) 0x0, (byte) 0x2, (byte) 0x5b, (byte) 0x0, (byte) 0x10, (byte) 0x6c, (byte) 0x6f, (byte) 0x6e, (byte) 0x67, (byte) 0x55, (byte) 0x70, (byte) 0x64, (byte) 0x61, (byte) 0x74, (byte) 0x65, (byte) 0x43, (byte) 0x6f, (byte) 0x75,
- (byte) 0x6e, (byte) 0x74, (byte) 0x73, (byte) 0x74, (byte) 0x0, (byte) 0x2, (byte) 0x5b, (byte) 0x4a, (byte) 0x5b, (byte) 0x0, (byte) 0xc, (byte) 0x75, (byte) 0x70, (byte) 0x64, (byte) 0x61, (byte) 0x74, (byte) 0x65, (byte) 0x43, (byte) 0x6f, (byte) 0x75, (byte) 0x6e, (byte) 0x74, (byte) 0x73, (byte) 0x74, (byte) 0x0, (byte) 0x2, (byte) 0x5b, (byte) 0x49, (byte) 0x78, (byte) 0x72, (byte) 0x0, (byte) 0x15,
- (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x73, (byte) 0x71, (byte) 0x6c, (byte) 0x2e, (byte) 0x53, (byte) 0x51, (byte) 0x4c, (byte) 0x45, (byte) 0x78, (byte) 0x63, (byte) 0x65, (byte) 0x70, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x1d, (byte) 0xa1, (byte) 0xe9, (byte) 0x30, (byte) 0xdb, (byte) 0x3e, (byte) 0x75, (byte) 0xdc, (byte) 0x2, (byte) 0x0, (byte) 0x3,
- (byte) 0x49, (byte) 0x0, (byte) 0xa, (byte) 0x76, (byte) 0x65, (byte) 0x6e, (byte) 0x64, (byte) 0x6f, (byte) 0x72, (byte) 0x43, (byte) 0x6f, (byte) 0x64, (byte) 0x65, (byte) 0x4c, (byte) 0x0, (byte) 0x8, (byte) 0x53, (byte) 0x51, (byte) 0x4c, (byte) 0x53, (byte) 0x74, (byte) 0x61, (byte) 0x74, (byte) 0x65, (byte) 0x74, (byte) 0x0, (byte) 0x12, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61,
- (byte) 0x2f, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2f, (byte) 0x53, (byte) 0x74, (byte) 0x72, (byte) 0x69, (byte) 0x6e, (byte) 0x67, (byte) 0x3b, (byte) 0x4c, (byte) 0x0, (byte) 0x4, (byte) 0x6e, (byte) 0x65, (byte) 0x78, (byte) 0x74, (byte) 0x74, (byte) 0x0, (byte) 0x17, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2f, (byte) 0x73, (byte) 0x71, (byte) 0x6c,
- (byte) 0x2f, (byte) 0x53, (byte) 0x51, (byte) 0x4c, (byte) 0x45, (byte) 0x78, (byte) 0x63, (byte) 0x65, (byte) 0x70, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x3b, (byte) 0x78, (byte) 0x72, (byte) 0x0, (byte) 0x13, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2e, (byte) 0x45, (byte) 0x78, (byte) 0x63, (byte) 0x65,
- (byte) 0x70, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0xd0, (byte) 0xfd, (byte) 0x1f, (byte) 0x3e, (byte) 0x1a, (byte) 0x3b, (byte) 0x1c, (byte) 0xc4, (byte) 0x2, (byte) 0x0, (byte) 0x0, (byte) 0x78, (byte) 0x72, (byte) 0x0, (byte) 0x13, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2e, (byte) 0x54, (byte) 0x68,
- (byte) 0x72, (byte) 0x6f, (byte) 0x77, (byte) 0x61, (byte) 0x62, (byte) 0x6c, (byte) 0x65, (byte) 0xd5, (byte) 0xc6, (byte) 0x35, (byte) 0x27, (byte) 0x39, (byte) 0x77, (byte) 0xb8, (byte) 0xcb, (byte) 0x3, (byte) 0x0, (byte) 0x4, (byte) 0x4c, (byte) 0x0, (byte) 0x5, (byte) 0x63, (byte) 0x61, (byte) 0x75, (byte) 0x73, (byte) 0x65, (byte) 0x74, (byte) 0x0, (byte) 0x15, (byte) 0x4c, (byte) 0x6a, (byte) 0x61,
- (byte) 0x76, (byte) 0x61, (byte) 0x2f, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2f, (byte) 0x54, (byte) 0x68, (byte) 0x72, (byte) 0x6f, (byte) 0x77, (byte) 0x61, (byte) 0x62, (byte) 0x6c, (byte) 0x65, (byte) 0x3b, (byte) 0x4c, (byte) 0x0, (byte) 0xd, (byte) 0x64, (byte) 0x65, (byte) 0x74, (byte) 0x61, (byte) 0x69, (byte) 0x6c, (byte) 0x4d, (byte) 0x65, (byte) 0x73, (byte) 0x73, (byte) 0x61,
- (byte) 0x67, (byte) 0x65, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x4, (byte) 0x5b, (byte) 0x0, (byte) 0xa, (byte) 0x73, (byte) 0x74, (byte) 0x61, (byte) 0x63, (byte) 0x6b, (byte) 0x54, (byte) 0x72, (byte) 0x61, (byte) 0x63, (byte) 0x65, (byte) 0x74, (byte) 0x0, (byte) 0x1e, (byte) 0x5b, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2f, (byte) 0x6c, (byte) 0x61,
- (byte) 0x6e, (byte) 0x67, (byte) 0x2f, (byte) 0x53, (byte) 0x74, (byte) 0x61, (byte) 0x63, (byte) 0x6b, (byte) 0x54, (byte) 0x72, (byte) 0x61, (byte) 0x63, (byte) 0x65, (byte) 0x45, (byte) 0x6c, (byte) 0x65, (byte) 0x6d, (byte) 0x65, (byte) 0x6e, (byte) 0x74, (byte) 0x3b, (byte) 0x4c, (byte) 0x0, (byte) 0x14, (byte) 0x73, (byte) 0x75, (byte) 0x70, (byte) 0x70, (byte) 0x72, (byte) 0x65, (byte) 0x73, (byte) 0x73,
- (byte) 0x65, (byte) 0x64, (byte) 0x45, (byte) 0x78, (byte) 0x63, (byte) 0x65, (byte) 0x70, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x73, (byte) 0x74, (byte) 0x0, (byte) 0x10, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2f, (byte) 0x75, (byte) 0x74, (byte) 0x69, (byte) 0x6c, (byte) 0x2f, (byte) 0x4c, (byte) 0x69, (byte) 0x73, (byte) 0x74, (byte) 0x3b, (byte) 0x78,
- (byte) 0x70, (byte) 0x73, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x7, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0xc, (byte) 0x74, (byte) 0x0, (byte) 0x7, (byte) 0x74, (byte) 0x68, (byte) 0x72, (byte) 0x6f, (byte) 0x77, (byte) 0x20, (byte) 0x31, (byte) 0x75, (byte) 0x72, (byte) 0x0, (byte) 0x1e, (byte) 0x5b, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61,
- (byte) 0x2e, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2e, (byte) 0x53, (byte) 0x74, (byte) 0x61, (byte) 0x63, (byte) 0x6b, (byte) 0x54, (byte) 0x72, (byte) 0x61, (byte) 0x63, (byte) 0x65, (byte) 0x45, (byte) 0x6c, (byte) 0x65, (byte) 0x6d, (byte) 0x65, (byte) 0x6e, (byte) 0x74, (byte) 0x3b, (byte) 0x2, (byte) 0x46, (byte) 0x2a, (byte) 0x3c, (byte) 0x3c, (byte) 0xfd, (byte) 0x22, (byte) 0x39,
- (byte) 0x2, (byte) 0x0, (byte) 0x0, (byte) 0x78, (byte) 0x70, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x2, (byte) 0x73, (byte) 0x72, (byte) 0x0, (byte) 0x1b, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2e, (byte) 0x53, (byte) 0x74, (byte) 0x61, (byte) 0x63, (byte) 0x6b, (byte) 0x54, (byte) 0x72, (byte) 0x61, (byte) 0x63,
- (byte) 0x65, (byte) 0x45, (byte) 0x6c, (byte) 0x65, (byte) 0x6d, (byte) 0x65, (byte) 0x6e, (byte) 0x74, (byte) 0x61, (byte) 0x9, (byte) 0xc5, (byte) 0x9a, (byte) 0x26, (byte) 0x36, (byte) 0xdd, (byte) 0x85, (byte) 0x2, (byte) 0x0, (byte) 0x4, (byte) 0x49, (byte) 0x0, (byte) 0xa, (byte) 0x6c, (byte) 0x69, (byte) 0x6e, (byte) 0x65, (byte) 0x4e, (byte) 0x75, (byte) 0x6d, (byte) 0x62, (byte) 0x65, (byte) 0x72,
- (byte) 0x4c, (byte) 0x0, (byte) 0xe, (byte) 0x64, (byte) 0x65, (byte) 0x63, (byte) 0x6c, (byte) 0x61, (byte) 0x72, (byte) 0x69, (byte) 0x6e, (byte) 0x67, (byte) 0x43, (byte) 0x6c, (byte) 0x61, (byte) 0x73, (byte) 0x73, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x4, (byte) 0x4c, (byte) 0x0, (byte) 0x8, (byte) 0x66, (byte) 0x69, (byte) 0x6c, (byte) 0x65, (byte) 0x4e, (byte) 0x61, (byte) 0x6d,
- (byte) 0x65, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x4, (byte) 0x4c, (byte) 0x0, (byte) 0xa, (byte) 0x6d, (byte) 0x65, (byte) 0x74, (byte) 0x68, (byte) 0x6f, (byte) 0x64, (byte) 0x4e, (byte) 0x61, (byte) 0x6d, (byte) 0x65, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x4, (byte) 0x78, (byte) 0x70, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x23, (byte) 0x74, (byte) 0x0,
- (byte) 0x17, (byte) 0x43, (byte) 0x72, (byte) 0x65, (byte) 0x61, (byte) 0x74, (byte) 0x65, (byte) 0x42, (byte) 0x61, (byte) 0x74, (byte) 0x63, (byte) 0x68, (byte) 0x45, (byte) 0x78, (byte) 0x63, (byte) 0x65, (byte) 0x70, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x53, (byte) 0x65, (byte) 0x72, (byte) 0x74, (byte) 0x0, (byte) 0x1c, (byte) 0x43, (byte) 0x72, (byte) 0x65, (byte) 0x61, (byte) 0x74,
- (byte) 0x65, (byte) 0x42, (byte) 0x61, (byte) 0x74, (byte) 0x63, (byte) 0x68, (byte) 0x45, (byte) 0x78, (byte) 0x63, (byte) 0x65, (byte) 0x70, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x53, (byte) 0x65, (byte) 0x72, (byte) 0x2e, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x74, (byte) 0x0, (byte) 0x9, (byte) 0x77, (byte) 0x72, (byte) 0x69, (byte) 0x74, (byte) 0x65, (byte) 0x54,
- (byte) 0x65, (byte) 0x73, (byte) 0x74, (byte) 0x73, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x10, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x1a, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x12, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x13, (byte) 0x74, (byte) 0x0, (byte) 0x4, (byte) 0x6d, (byte) 0x61, (byte) 0x69, (byte) 0x6e, (byte) 0x70, (byte) 0x78,
- (byte) 0x74, (byte) 0x0, (byte) 0x16, (byte) 0x54, (byte) 0x68, (byte) 0x69, (byte) 0x73, (byte) 0x20, (byte) 0x77, (byte) 0x61, (byte) 0x73, (byte) 0x20, (byte) 0x74, (byte) 0x68, (byte) 0x65, (byte) 0x20, (byte) 0x65, (byte) 0x72, (byte) 0x72, (byte) 0x6f, (byte) 0x72, (byte) 0x20, (byte) 0x6d, (byte) 0x73, (byte) 0x67, (byte) 0x75, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0xe, (byte) 0x0,
- (byte) 0x0, (byte) 0x0, (byte) 0x2, (byte) 0x73, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x10, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x28, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x12, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x13, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x14, (byte) 0x73, (byte) 0x71, (byte) 0x0, (byte) 0x7e,
- (byte) 0x0, (byte) 0x10, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x1a, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x12, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x13, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x16, (byte) 0x70, (byte) 0x78, (byte) 0x0, (byte) 0x1, (byte) 0x86, (byte) 0x9f, (byte) 0x74, (byte) 0x0, (byte) 0x15, (byte) 0x75, (byte) 0x73,
- (byte) 0x65, (byte) 0x72, (byte) 0x20, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x69, (byte) 0x6e, (byte) 0x65, (byte) 0x64, (byte) 0x20, (byte) 0x73, (byte) 0x71, (byte) 0x6c, (byte) 0x53, (byte) 0x74, (byte) 0x61, (byte) 0x74, (byte) 0x65, (byte) 0x70, (byte) 0x75, (byte) 0x72, (byte) 0x0, (byte) 0x2, (byte) 0x5b, (byte) 0x4a, (byte) 0x78, (byte) 0x20, (byte) 0x4, (byte) 0xb5, (byte) 0x12, (byte) 0xb1,
- (byte) 0x75, (byte) 0x93, (byte) 0x2, (byte) 0x0, (byte) 0x0, (byte) 0x78, (byte) 0x70, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x3, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x1, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x2, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0,
- (byte) 0x0, (byte) 0x0, (byte) 0x15, (byte) 0x75, (byte) 0x72, (byte) 0x0, (byte) 0x2, (byte) 0x5b, (byte) 0x49, (byte) 0x4d, (byte) 0xba, (byte) 0x60, (byte) 0x26, (byte) 0x76, (byte) 0xea, (byte) 0xb2, (byte) 0xa5, (byte) 0x2, (byte) 0x0, (byte) 0x0, (byte) 0x78, (byte) 0x70, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x3, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x1, (byte) 0x0, (byte) 0x0,
- (byte) 0x0, (byte) 0x2, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x15, (byte) 0x78
- };
-}
--- a/jdk/test/java/sql/util/StubBlob.java Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package util;
-
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.sql.Blob;
-import java.sql.SQLException;
-
-
-public class StubBlob implements Blob {
- public long length() throws SQLException {
- return 0;
- }
- public byte[] getBytes(long pos, int length)
- throws SQLException {
- return null;
- }
- public InputStream getBinaryStream()
- throws SQLException {
- return null;
- }
- public long position(byte[] pattern, long start)
- throws SQLException {
- return 0;
- }
- public long position(Blob pattern, long start)
- throws SQLException {
- return 0;
- }
- public int setBytes(long pos, byte[] bytes)
- throws SQLException {
- return 0;
- }
- public int setBytes(long pos, byte[] bytes, int offset, int len)
- throws SQLException {
- return 0;
- }
- public OutputStream setBinaryStream(long pos)
- throws SQLException {
- return null;
- }
- public void truncate(long len)
- throws SQLException {
- }
- /* 6.0 implementation */
-
- public void free() throws SQLException {}
-
- public InputStream getBinaryStream(long pos, long length) throws SQLException {
- return null;
- }
-}
--- a/jdk/test/java/sql/util/StubConnection.java Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,315 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package util;
-
-import java.sql.Array;
-import java.sql.Blob;
-import java.sql.CallableStatement;
-import java.sql.Clob;
-import java.sql.Connection;
-import java.sql.DatabaseMetaData;
-import java.sql.NClob;
-import java.sql.PreparedStatement;
-import java.sql.SQLClientInfoException;
-import java.sql.SQLException;
-import java.sql.SQLWarning;
-import java.sql.SQLXML;
-import java.sql.Savepoint;
-import java.sql.Statement;
-import java.sql.Struct;
-import java.util.Map;
-import java.util.Properties;
-import java.util.concurrent.Executor;
-
-public class StubConnection implements Connection {
-
- @Override
- public Statement createStatement() throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public PreparedStatement prepareStatement(String sql) throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public CallableStatement prepareCall(String sql) throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public String nativeSQL(String sql) throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public void setAutoCommit(boolean autoCommit) throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public boolean getAutoCommit() throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public void commit() throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public void rollback() throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public void close() throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public boolean isClosed() throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public DatabaseMetaData getMetaData() throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public void setReadOnly(boolean readOnly) throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public boolean isReadOnly() throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public void setCatalog(String catalog) throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public String getCatalog() throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public void setTransactionIsolation(int level) throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public int getTransactionIsolation() throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public SQLWarning getWarnings() throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public void clearWarnings() throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public Statement createStatement(int resultSetType, int resultSetConcurrency) throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency) throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency) throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public Map<String, Class<?>> getTypeMap() throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public void setTypeMap(Map<String, Class<?>> map) throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public void setHoldability(int holdability) throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public int getHoldability() throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public Savepoint setSavepoint() throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public Savepoint setSavepoint(String name) throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public void rollback(Savepoint savepoint) throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public void releaseSavepoint(Savepoint savepoint) throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public Statement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public PreparedStatement prepareStatement(String sql, int autoGeneratedKeys) throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public PreparedStatement prepareStatement(String sql, int[] columnIndexes) throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public PreparedStatement prepareStatement(String sql, String[] columnNames) throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public Clob createClob() throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public Blob createBlob() throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public NClob createNClob() throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public SQLXML createSQLXML() throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public boolean isValid(int timeout) throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public void setClientInfo(String name, String value) throws SQLClientInfoException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public void setClientInfo(Properties properties) throws SQLClientInfoException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public String getClientInfo(String name) throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public Properties getClientInfo() throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public Array createArrayOf(String typeName, Object[] elements) throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public Struct createStruct(String typeName, Object[] attributes) throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public void setSchema(String schema) throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public String getSchema() throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public void abort(Executor executor) throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public void setNetworkTimeout(Executor executor, int milliseconds) throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public int getNetworkTimeout() throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public <T> T unwrap(Class<T> iface) throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public boolean isWrapperFor(Class<?> iface) throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-}
--- a/jdk/test/java/sql/util/StubDriver.java Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package util;
-
-import java.sql.Connection;
-import java.sql.Driver;
-import java.sql.DriverPropertyInfo;
-import java.sql.SQLException;
-import java.sql.SQLFeatureNotSupportedException;
-import java.util.Properties;
-import java.util.logging.Logger;
-
-public class StubDriver implements Driver {
-
- public StubDriver() {
- }
-
- @Override
- public Connection connect(String url, Properties info) throws SQLException {
- if (acceptsURL(url)) {
- return new StubConnection();
- }
- return null;
- }
-
- @Override
- public boolean acceptsURL(String url) throws SQLException {
- return url.matches("^jdbc:tennis:.*");
- }
-
- @Override
- public DriverPropertyInfo[] getPropertyInfo(String url, Properties info) throws SQLException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public int getMajorVersion() {
- return 1;
- }
-
- @Override
- public int getMinorVersion() {
- return 0;
- }
-
- @Override
- public boolean jdbcCompliant() {
- return true;
- }
-
- @Override
- public Logger getParentLogger() throws SQLFeatureNotSupportedException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-}
--- a/jdk/test/java/sql/util/StubDriverDA.java Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package util;
-
-import java.io.File;
-import java.io.IOException;
-import java.sql.DriverAction;
-import java.sql.DriverManager;
-import java.sql.SQLException;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-/**
- * Simple java.sql.Driver stub class that registers the driver via a static
- * block with a DriverAction Implementation
- * @author ljanders
- */
-public class StubDriverDA extends StubDriver {
-
- public static final String DriverActionCalled = "DriverActionCalled.txt";
-
- static DriverAction da;
-
- static {
- try {
- DriverManager.registerDriver(new StubDriverDA(), da);
- } catch (SQLException ex) {
- Logger.getLogger(StubDriverDA.class.getName()).log(Level.SEVERE, null, ex);
- }
- }
-
- public StubDriverDA() {
- da = new DriverActionImpl(this);
- }
-
- @Override
- public boolean acceptsURL(String url) throws SQLException {
- return url.matches("^jdbc:luckydog:.*");
- }
-
- /**
- * This method will write out a text file when called by the
- * DriverActionImpl.release method when DriverManager.deregisterDriver
- * is called. This is used by DriverManagerTests to validate that
- * DriverAction.release was called
- */
- protected void release() {
- File file = new File(DriverActionCalled);
- try {
- file.createNewFile();
- } catch (IOException ex) {
- throw new RuntimeException(ex);
- }
- }
-}
--- a/jdk/test/java/sql/util/TestPolicy.java Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,135 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package util;
-
-import java.io.FilePermission;
-import java.security.AllPermission;
-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 java.security.SecurityPermission;
-import java.sql.SQLPermission;
-import java.util.Enumeration;
-import java.util.PropertyPermission;
-import java.util.StringJoiner;
-
-/*
- * Simple Policy class that supports the required Permissions to validate the
- * JDBC concrete classes
- */
-public class TestPolicy extends Policy {
-
- final PermissionCollection permissions = new Permissions();
-
- /**
- * Constructor which sets the minimum permissions allowing testNG to work
- * with a SecurityManager
- */
- public TestPolicy() {
- setMinimalPermissions();
- }
-
- /*
- * Constructor which determines which permissions are defined for this
- * Policy used by the JDBC tests Possible values are: all (ALLPermissions),
- * setLog (SQLPemission("setLog"), deregisterDriver
- * (SQLPermission("deregisterDriver") (SQLPermission("deregisterDriver"),
- * and setSyncFactory(SQLPermission(setSyncFactory),
- *
- * @param policy Permissions to set
- */
- public TestPolicy(String policy) {
-
- switch (policy) {
- case "all":
- permissions.add(new AllPermission());
- break;
- case "setLog":
- setMinimalPermissions();
- permissions.add(new SQLPermission("setLog"));
- break;
- case "deregisterDriver":
- setMinimalPermissions();
- permissions.add(new SQLPermission("deregisterDriver"));
- break;
- case "setSyncFactory":
- setMinimalPermissions();
- permissions.add(new SQLPermission("setSyncFactory"));
- break;
- default:
- setMinimalPermissions();
- }
- }
-
- /*
- * Defines the minimal permissions required by testNG when running these
- * tests
- */
- private void setMinimalPermissions() {
- permissions.add(new SecurityPermission("getPolicy"));
- permissions.add(new SecurityPermission("setPolicy"));
- permissions.add(new RuntimePermission("getClassLoader"));
- permissions.add(new RuntimePermission("setSecurityManager"));
- permissions.add(new RuntimePermission("createSecurityManager"));
- permissions.add(new PropertyPermission("testng.show.stack.frames",
- "read"));
- permissions.add(new PropertyPermission("line.separator", "read"));
- permissions.add(new PropertyPermission("fileStringBuffer", "read"));
- permissions.add(new PropertyPermission("dataproviderthreadcount", "read"));
- permissions.add(new PropertyPermission("java.io.tmpdir", "read"));
- permissions.add(new FilePermission("<<ALL FILES>>",
- "read, write, delete"));
- }
-
- /*
- * Overloaded methods from the Policy class
- */
- @Override
- public String toString() {
- StringJoiner sj = new StringJoiner("\n", "policy: ", "");
- Enumeration<Permission> perms = permissions.elements();
- while (perms.hasMoreElements()) {
- sj.add(perms.nextElement().toString());
- }
- return sj.toString();
-
- }
-
- @Override
- public PermissionCollection getPermissions(ProtectionDomain domain) {
- return permissions;
- }
-
- @Override
- public PermissionCollection getPermissions(CodeSource codesource) {
- return permissions;
- }
-
- @Override
- public boolean implies(ProtectionDomain domain, Permission perm) {
- return permissions.implies(perm);
- }
-}
--- a/jdk/test/javax/sql/testng/TEST.properties Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/javax/sql/testng/TEST.properties Fri Oct 31 18:18:58 2014 +0000
@@ -1,3 +1,4 @@
# JDBC unit tests uses TestNG
TestNG.dirs= .
othervm.dirs= .
+lib.dirs = /java/sql/testng
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/sql/testng/test/rowset/RowSetMetaDataTests.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,555 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package test.rowset;
+
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.sql.Types;
+import javax.sql.RowSetMetaData;
+import javax.sql.rowset.RowSetMetaDataImpl;
+import static org.testng.Assert.*;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+import util.BaseTest;
+
+public class RowSetMetaDataTests extends BaseTest {
+
+ // Max columns used in the tests
+ private final int MAX_COLUMNS = 5;
+ // Instance to be used within the tests
+ private RowSetMetaDataImpl rsmd;
+
+ @BeforeMethod
+ public void setUpMethod() throws Exception {
+ rsmd = new RowSetMetaDataImpl();
+ rsmd.setColumnCount(MAX_COLUMNS);
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test(Integer col) throws Exception {
+ rsmd.getCatalogName(col);
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test01(Integer col) throws Exception {
+ rsmd.getColumnClassName(col);
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test02(Integer col) throws Exception {
+ rsmd.getColumnDisplaySize(col);
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test03(Integer col) throws Exception {
+ rsmd.getColumnLabel(col);
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test04(Integer col) throws Exception {
+ rsmd.getColumnName(col);
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test05(Integer col) throws Exception {
+ rsmd.getColumnType(col);
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test06(Integer col) throws Exception {
+ rsmd.getColumnTypeName(col);
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test07(Integer col) throws Exception {
+ rsmd.getPrecision(col);
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test08(Integer col) throws Exception {
+ rsmd.getScale(col);
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test09(Integer col) throws Exception {
+ rsmd.getSchemaName(col);
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test10(Integer col) throws Exception {
+ rsmd.getTableName(col);
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test11(Integer col) throws Exception {
+ rsmd.isAutoIncrement(col);
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test12(Integer col) throws Exception {
+ rsmd.isCaseSensitive(col);
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test13(Integer col) throws Exception {
+ rsmd.isCurrency(col);
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test14(Integer col) throws Exception {
+ rsmd.isDefinitelyWritable(col);
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test15(Integer col) throws Exception {
+ rsmd.isNullable(col);
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test16(Integer col) throws Exception {
+ rsmd.isReadOnly(col);
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test17(Integer col) throws Exception {
+ rsmd.isSearchable(col);
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test18(Integer col) throws Exception {
+ rsmd.isSigned(col);
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test19(Integer col) throws Exception {
+ rsmd.isWritable(col);
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test20(Integer col) throws Exception {
+ rsmd.setAutoIncrement(col, true);
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test21(Integer col) throws Exception {
+ rsmd.setCaseSensitive(col, true);
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test22(Integer col) throws Exception {
+ rsmd.setCatalogName(col, null);
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test23(Integer col) throws Exception {
+ rsmd.setColumnDisplaySize(col, 5);
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test24(Integer col) throws Exception {
+ rsmd.setColumnLabel(col, "label");
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test25(Integer col) throws Exception {
+ rsmd.setColumnName(col, "F1");
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test26(Integer col) throws Exception {
+ rsmd.setColumnType(col, Types.CHAR);
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test27(Integer col) throws Exception {
+ rsmd.setColumnTypeName(col, "F1");
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test28(Integer col) throws Exception {
+ rsmd.setCurrency(col, true);
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test29(Integer col) throws Exception {
+ rsmd.setNullable(col, ResultSetMetaData.columnNoNulls);
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test30(Integer col) throws Exception {
+ rsmd.setPrecision(col, 2);
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test31(Integer col) throws Exception {
+ rsmd.setScale(col, 2);
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test32(Integer col) throws Exception {
+ rsmd.setSchemaName(col, "Gotham");
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test33(Integer col) throws Exception {
+ rsmd.setSearchable(col, false);
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test34(Integer col) throws Exception {
+ rsmd.setSigned(col, false);
+ }
+
+ /*
+ * Validate a SQLException is thrown for an invalid column index
+ */
+ @Test(dataProvider = "invalidColumnRanges",
+ expectedExceptions = SQLException.class)
+ public void test35(Integer col) throws Exception {
+ rsmd.setTableName(col, "SUPERHEROS");
+ }
+
+ /*
+ * Validate that the correct class name is returned for the column
+ * Note: Once setColumnClassName is added to RowSetMetaData, this
+ * method will need to change.
+ */
+ @Test(dataProvider = "columnClassNames")
+ public void test36(Integer type, String name) throws Exception {
+ rsmd.setColumnType(1, type);
+ assertTrue(rsmd.getColumnClassName(1).equals(name));
+ }
+
+ /*
+ * Validate that all of the methods are accessible and the correct value
+ * is returned for each column
+ */
+ @Test(dataProvider = "columnRanges")
+ public void test37(Integer col) throws Exception {
+ rsmd.setAutoIncrement(col, true);
+ assertTrue(rsmd.isAutoIncrement(col));
+ rsmd.setCaseSensitive(col, true);
+ assertTrue(rsmd.isCaseSensitive(col));
+ rsmd.setCatalogName(col, "Gotham");
+ assertTrue(rsmd.getCatalogName(col).equals("Gotham"));
+ rsmd.setColumnDisplaySize(col, 20);
+ assertTrue(rsmd.getColumnDisplaySize(col) == 20);
+ rsmd.setColumnLabel(col, "F1");
+ assertTrue(rsmd.getColumnLabel(col).equals("F1"));
+ rsmd.setColumnName(col, "F1");
+ assertTrue(rsmd.getColumnName(col).equals("F1"));
+ rsmd.setColumnType(col, Types.INTEGER);
+ assertTrue(rsmd.getColumnType(col) == Types.INTEGER);
+ assertTrue(rsmd.getColumnClassName(col).equals(Integer.class.getName()));
+ rsmd.setColumnTypeName(col, "INTEGER");
+ assertTrue(rsmd.getColumnTypeName(col).equals("INTEGER"));
+ rsmd.setCurrency(col, true);
+ assertTrue(rsmd.isCurrency(col));
+ rsmd.setNullable(col, ResultSetMetaData.columnNoNulls);
+ assertTrue(rsmd.isNullable(col) == ResultSetMetaData.columnNoNulls);
+ rsmd.setPrecision(col, 2);
+ assertTrue(rsmd.getPrecision(col) == 2);
+ rsmd.setScale(col, 2);
+ assertTrue(rsmd.getScale(col) == 2);
+ rsmd.setSchemaName(col, "GOTHAM");
+ assertTrue(rsmd.getSchemaName(col).equals("GOTHAM"));
+ rsmd.setSearchable(col, false);
+ assertFalse(rsmd.isSearchable(col));
+ rsmd.setSigned(col, false);
+ assertFalse(rsmd.isSigned(col));
+ rsmd.setTableName(col, "SUPERHEROS");
+ assertTrue(rsmd.getTableName(col).equals("SUPERHEROS"));
+ rsmd.isReadOnly(col);
+ rsmd.isDefinitelyWritable(col);
+ rsmd.isWritable(col);
+
+ }
+
+ /*
+ * Validate that the proper values are accepted by setNullable
+ */
+ @Test(dataProvider = "validSetNullableValues")
+ public void test38(Integer val) throws Exception {
+ rsmd.setNullable(1, val);
+ }
+
+ /*
+ * Validate that the correct type is returned for the column
+ */
+ @Test(dataProvider = "jdbcTypes")
+ public void test39(Integer type) throws Exception {
+ rsmd.setColumnType(1, type);
+ assertTrue(type == rsmd.getColumnType(1));
+ }
+
+ /*
+ * Validate that the correct value is returned from the isXXX methods
+ */
+ @Test(dataProvider = "trueFalse")
+ public void test40(Boolean b) throws Exception {
+ rsmd.setAutoIncrement(1, b);
+ rsmd.setCaseSensitive(1, b);
+ rsmd.setCurrency(1, b);
+ rsmd.setSearchable(1, b);
+ rsmd.setSigned(1, b);
+ assertTrue(rsmd.isAutoIncrement(1) == b);
+ assertTrue(rsmd.isCaseSensitive(1) == b);
+ assertTrue(rsmd.isCurrency(1) == b);
+ assertTrue(rsmd.isSearchable(1) == b);
+ assertTrue(rsmd.isSigned(1) == b);
+ }
+
+ /*
+ * Validate isWrapperFor and unwrap work correctly
+ */
+ @SuppressWarnings("unchecked")
+ @Test
+ public void test99() throws Exception {
+ RowSetMetaData rsmd1 = rsmd;
+ ResultSetMetaData rsmd2 = rsmd;
+ Class clzz = rsmd.getClass();
+ assertTrue(rsmd1.isWrapperFor(clzz));
+ assertTrue(rsmd2.isWrapperFor(clzz));
+ RowSetMetaDataImpl rsmdi = (RowSetMetaDataImpl) rsmd2.unwrap(clzz);
+
+ // False should be returned
+ assertFalse(rsmd1.isWrapperFor(this.getClass()));
+ assertFalse(rsmd2.isWrapperFor(this.getClass()));
+ }
+
+ /*
+ * DataProvider used to provide Date which are not valid and are used
+ * to validate that an IllegalArgumentException will be thrown from the
+ * valueOf method
+ */
+ @DataProvider(name = "validSetNullableValues")
+ private Object[][] validSetNullableValues() {
+ return new Object[][]{
+ {ResultSetMetaData.columnNoNulls},
+ {ResultSetMetaData.columnNullable},
+ {ResultSetMetaData.columnNullableUnknown}
+ };
+ }
+
+ /*
+ * DataProvider used to provide column indexes that are out of range so that
+ * SQLException is thrown
+ */
+ @DataProvider(name = "invalidColumnRanges")
+ private Object[][] invalidColumnRanges() {
+ return new Object[][]{
+ {-1},
+ {0},
+ {MAX_COLUMNS + 1}
+ };
+ }
+
+ /*
+ * DataProvider used to provide the valid column ranges for the
+ * RowSetMetaDataImpl object
+ */
+ @DataProvider(name = "columnRanges")
+ private Object[][] columnRanges() {
+ Object[][] o = new Object[MAX_COLUMNS][1];
+ for (int i = 1; i <= MAX_COLUMNS; i++) {
+ o[i - 1][0] = i;
+ }
+ return o;
+ }
+
+ /*
+ * DataProvider used to specify the value to set via setColumnType and
+ * the expected value to be returned from getColumnClassName
+ */
+ @DataProvider(name = "columnClassNames")
+ private Object[][] columnClassNames() {
+ return new Object[][]{
+ {Types.CHAR, "java.lang.String"},
+ {Types.NCHAR, "java.lang.String"},
+ {Types.VARCHAR, "java.lang.String"},
+ {Types.NVARCHAR, "java.lang.String"},
+ {Types.LONGVARCHAR, "java.lang.String"},
+ {Types.LONGNVARCHAR, "java.lang.String"},
+ {Types.NUMERIC, "java.math.BigDecimal"},
+ {Types.DECIMAL, "java.math.BigDecimal"},
+ {Types.BIT, "java.lang.Boolean"},
+ {Types.TINYINT, "java.lang.Byte"},
+ {Types.SMALLINT, "java.lang.Short"},
+ {Types.INTEGER, "java.lang.Integer"},
+ {Types.FLOAT, "java.lang.Double"},
+ {Types.DOUBLE, "java.lang.Double"},
+ {Types.BINARY, "byte[]"},
+ {Types.VARBINARY, "byte[]"},
+ {Types.LONGVARBINARY, "byte[]"},
+ {Types.DATE, "java.sql.Date"},
+ {Types.TIME, "java.sql.Time"},
+ {Types.TIMESTAMP, "java.sql.Timestamp"},
+ {Types.CLOB, "java.sql.Clob"},
+ {Types.BLOB, "java.sql.Blob"}
+
+ };
+
+ }
+
+}
--- a/jdk/test/javax/sql/testng/util/BaseTest.java Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package util;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.security.Policy;
-import java.sql.SQLException;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
-
-public class BaseTest {
-
- protected final String reason = "reason";
- protected final String state = "SQLState";
- protected final String cause = "java.lang.Throwable: cause";
- protected final Throwable t = new Throwable("cause");
- protected final Throwable t1 = new Throwable("cause 1");
- protected final Throwable t2 = new Throwable("cause 2");
- protected final int errorCode = 21;
- protected final String[] msgs = {"Exception 1", "cause 1", "Exception 2",
- "Exception 3", "cause 2"};
-
- @BeforeClass
- public static void setUpClass() throws Exception {
- }
-
- @AfterClass
- public static void tearDownClass() throws Exception {
- }
-
- @BeforeMethod
- public void setUpMethod() throws Exception {
- }
-
- @AfterMethod
- public void tearDownMethod() throws Exception {
- }
-
- /*
- * Take some form of SQLException, serialize and deserialize it
- */
- @SuppressWarnings("unchecked")
- protected <T extends SQLException> T
- createSerializedException(T ex)
- throws IOException, ClassNotFoundException {
- return (T) serializeDeserializeObject(ex);
- }
-
- /*
- * Utility method to serialize and deserialize an object
- */
- @SuppressWarnings("unchecked")
- protected <T> T serializeDeserializeObject(T o)
- throws IOException, ClassNotFoundException {
- T o1;
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- try (ObjectOutputStream oos = new ObjectOutputStream(baos)) {
- oos.writeObject(o);
- }
- try (ObjectInputStream ois
- = new ObjectInputStream(new ByteArrayInputStream(baos.toByteArray()))) {
- o1 = (T) ois.readObject();
- }
- return o1;
- }
-
- /*
- * Utility Method used to set the current Policy
- */
- protected static void setPolicy(Policy p) {
- Policy.setPolicy(p);
- }
-}
--- a/jdk/test/javax/sql/testng/util/TestPolicy.java Fri Oct 31 09:37:17 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,135 +0,0 @@
-/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package util;
-
-import java.io.FilePermission;
-import java.security.AllPermission;
-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 java.security.SecurityPermission;
-import java.sql.SQLPermission;
-import java.util.Enumeration;
-import java.util.PropertyPermission;
-import java.util.StringJoiner;
-
-/*
- * Simple Policy class that supports the required Permissions to validate the
- * JDBC concrete classes
- */
-public class TestPolicy extends Policy {
-
- final PermissionCollection permissions = new Permissions();
-
- /**
- * Constructor which sets the minimum permissions allowing testNG to work
- * with a SecurityManager
- */
- public TestPolicy() {
- setMinimalPermissions();
- }
-
- /*
- * Constructor which determines which permissions are defined for this
- * Policy used by the JDBC tests Possible values are: all (ALLPermissions),
- * setLog (SQLPemission("setLog"), deregisterDriver
- * (SQLPermission("deregisterDriver") (SQLPermission("deregisterDriver"),
- * and setSyncFactory(SQLPermission(setSyncFactory),
- *
- * @param policy Permissions to set
- */
- public TestPolicy(String policy) {
-
- switch (policy) {
- case "all":
- permissions.add(new AllPermission());
- break;
- case "setLog":
- setMinimalPermissions();
- permissions.add(new SQLPermission("setLog"));
- break;
- case "deregisterDriver":
- setMinimalPermissions();
- permissions.add(new SQLPermission("deregisterDriver"));
- break;
- case "setSyncFactory":
- setMinimalPermissions();
- permissions.add(new SQLPermission("setSyncFactory"));
- break;
- default:
- setMinimalPermissions();
- }
- }
-
- /*
- * Defines the minimal permissions required by testNG when running these
- * tests
- */
- private void setMinimalPermissions() {
- permissions.add(new SecurityPermission("getPolicy"));
- permissions.add(new SecurityPermission("setPolicy"));
- permissions.add(new RuntimePermission("getClassLoader"));
- permissions.add(new RuntimePermission("setSecurityManager"));
- permissions.add(new RuntimePermission("createSecurityManager"));
- permissions.add(new PropertyPermission("testng.show.stack.frames",
- "read"));
- permissions.add(new PropertyPermission("line.separator", "read"));
- permissions.add(new PropertyPermission("fileStringBuffer", "read"));
- permissions.add(new PropertyPermission("dataproviderthreadcount", "read"));
- permissions.add(new PropertyPermission("java.io.tmpdir", "read"));
- permissions.add(new FilePermission("<<ALL FILES>>",
- "read, write, delete"));
- }
-
- /*
- * Overloaded methods from the Policy class
- */
- @Override
- public String toString() {
- StringJoiner sj = new StringJoiner("\n", "policy: ", "");
- Enumeration<Permission> perms = permissions.elements();
- while (perms.hasMoreElements()) {
- sj.add(perms.nextElement().toString());
- }
- return sj.toString();
-
- }
-
- @Override
- public PermissionCollection getPermissions(ProtectionDomain domain) {
- return permissions;
- }
-
- @Override
- public PermissionCollection getPermissions(CodeSource codesource) {
- return permissions;
- }
-
- @Override
- public boolean implies(ProtectionDomain domain, Permission perm) {
- return permissions.implies(perm);
- }
-}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/JLayer/8054543/bug8054543.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+ /*
+ * @test
+ * @summary Setting a border on a JLayer causes an Exceptions
+ * @author Alexander Potochkin
+ * @run main bug8054543
+ */
+
+import javax.swing.*;
+import javax.swing.border.Border;
+import java.awt.*;
+
+public class bug8054543 {
+
+ public bug8054543() {
+ JLayer<JComponent> layer = new JLayer<>();
+ Border border = BorderFactory.createLineBorder(Color.GREEN);
+ JButton view = new JButton("JButton");
+
+ layer.setBorder(border);
+ check(layer.getBorder(), null);
+
+ layer.setBorder(null);
+ check(layer.getBorder(), null);
+
+ layer.setView(view);
+ check(layer.getBorder(), view.getBorder());
+
+ layer.setBorder(border);
+ check(border, view.getBorder());
+
+ layer.setBorder(null);
+ check(layer.getBorder(), view.getBorder());
+ }
+
+ private void check(Object o1, Object o2) {
+ if (o1 != o2) {
+ throw new RuntimeException("Test failed");
+ }
+ }
+
+ public static void main(String... args) throws Exception {
+ SwingUtilities.invokeAndWait(new Runnable() {
+ public void run() {
+ new bug8054543();
+ }
+ });
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/JRadioButton/8033699/bug8033699.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,255 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+ /*
+ * @test
+ * @library ../../regtesthelpers
+ * @build Util
+ * @bug 8033699
+ * @summary Incorrect radio button behavior when pressing tab key
+ * @author Vivi An
+ * @run main bug8033699
+ */
+
+import javax.swing.*;
+import javax.swing.event.*;
+import java.awt.event.*;
+import java.awt.*;
+import sun.awt.SunToolkit;
+
+public class bug8033699 {
+ private static Robot robot;
+ private static SunToolkit toolkit;
+
+ private static JButton btnStart;
+ private static ButtonGroup btnGrp;
+ private static JButton btnEnd;
+ private static JButton btnMiddle;
+ private static JRadioButton radioBtn1;
+ private static JRadioButton radioBtn2;
+ private static JRadioButton radioBtn3;
+ private static JRadioButton radioBtnSingle;
+
+ public static void main(String args[]) throws Throwable {
+ SwingUtilities.invokeAndWait(new Runnable() {
+ public void run() {
+ createAndShowGUI();
+ }
+ });
+
+ robot = new Robot();
+ Thread.sleep(100);
+
+ robot.setAutoDelay(100);
+ toolkit = (SunToolkit) Toolkit.getDefaultToolkit();
+
+ // tab key test grouped radio button
+ runTest1();
+
+ // tab key test non-grouped radio button
+ runTest2();
+
+ // shift tab key test grouped and non grouped radio button
+ runTest3();
+
+ // left/up key test in grouped radio button
+ runTest4();
+
+ // down/right key test in grouped radio button
+ runTest5();
+
+ // tab from radio button in group to next component in the middle of button group layout
+ runTest6();
+
+ // tab to radio button in group from component in the middle of button group layout
+ runTest7();
+
+ // down key circle back to first button in grouped radio button
+ runTest8();
+ }
+
+ private static void createAndShowGUI() {
+ JFrame mainFrame = new JFrame("Bug 8033699 - 8 Tests for Grouped/Non Group Radio Buttons");
+
+ btnStart = new JButton("Start");
+ btnEnd = new JButton("End");
+ btnMiddle = new JButton("Middle");
+
+ JPanel box = new JPanel();
+ box.setLayout(new BoxLayout(box, BoxLayout.Y_AXIS));
+ box.setBorder(BorderFactory.createTitledBorder("Grouped Radio Buttons"));
+ radioBtn1 = new JRadioButton("A");
+ radioBtn2 = new JRadioButton("B");
+ radioBtn3 = new JRadioButton("C");
+
+ ButtonGroup btnGrp = new ButtonGroup();
+ btnGrp.add(radioBtn1);
+ btnGrp.add(radioBtn2);
+ btnGrp.add(radioBtn3);
+ radioBtn1.setSelected(true);
+
+ box.add(radioBtn1);
+ box.add(radioBtn2);
+ box.add(btnMiddle);
+ box.add(radioBtn3);
+
+ radioBtnSingle = new JRadioButton("Not Grouped");
+ radioBtnSingle.setSelected(true);
+
+ mainFrame.getContentPane().add(btnStart);
+ mainFrame.getContentPane().add(box);
+ mainFrame.getContentPane().add(radioBtnSingle);
+ mainFrame.getContentPane().add(btnEnd);
+
+ mainFrame.getRootPane().setDefaultButton(btnStart);
+ btnStart.requestFocus();
+
+ mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ mainFrame.setLayout(new BoxLayout(mainFrame.getContentPane(), BoxLayout.Y_AXIS));
+
+ mainFrame.setSize(300, 300);
+ mainFrame.setLocation(200, 200);
+ mainFrame.setVisible(true);
+ mainFrame.toFront();
+ }
+
+ // Radio button Group as a single component when traversing through tab key
+ private static void runTest1() throws Exception{
+ hitKey(robot, KeyEvent.VK_TAB);
+ hitKey(robot, KeyEvent.VK_TAB);
+
+ SwingUtilities.invokeAndWait(new Runnable() {
+ public void run() {
+ if (KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner() != radioBtnSingle) {
+ System.out.println("Radio Button Group Go To Next Component through Tab Key failed");
+ throw new RuntimeException("Focus is not on Radio Button Single as Expected");
+ }
+ }
+ });
+ }
+
+ // Non-Grouped Radio button as a single component when traversing through tab key
+ private static void runTest2() throws Exception{
+ hitKey(robot, KeyEvent.VK_TAB);
+ SwingUtilities.invokeAndWait(new Runnable() {
+ public void run() {
+ if (KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner() != btnEnd) {
+ System.out.println("Non Grouped Radio Button Go To Next Component through Tab Key failed");
+ throw new RuntimeException("Focus is not on Button End as Expected");
+ }
+ }
+ });
+ }
+
+ // Non-Grouped Radio button and Group Radio button as a single component when traversing through shift-tab key
+ private static void runTest3() throws Exception{
+ hitKey(robot, KeyEvent.VK_SHIFT, KeyEvent.VK_TAB);
+ hitKey(robot, KeyEvent.VK_SHIFT, KeyEvent.VK_TAB);
+ SwingUtilities.invokeAndWait(new Runnable() {
+ public void run() {
+ if (KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner() != radioBtn3) {
+ System.out.println("Radio button Group/Non Grouped Radio Button SHIFT-Tab Key Test failed");
+ throw new RuntimeException("Focus is not on Radio Button C as Expected");
+ }
+ }
+ });
+ }
+
+ // Using arrow key to move focus in radio button group
+ private static void runTest4() throws Exception{
+ hitKey(robot, KeyEvent.VK_UP);
+ hitKey(robot, KeyEvent.VK_LEFT);
+ SwingUtilities.invokeAndWait(new Runnable() {
+ public void run() {
+ if (KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner() != radioBtn1) {
+ System.out.println("Radio button Group UP/LEFT Arrow Key Move Focus Failed");
+ throw new RuntimeException("Focus is not on Radio Button A as Expected");
+ }
+ }
+ });
+ }
+
+ private static void runTest5() throws Exception{
+ hitKey(robot, KeyEvent.VK_DOWN);
+ hitKey(robot, KeyEvent.VK_RIGHT);
+ SwingUtilities.invokeAndWait(new Runnable() {
+ public void run() {
+ if (KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner() != radioBtn3) {
+ System.out.println("Radio button Group Left/Up Arrow Key Move Focus Failed");
+ throw new RuntimeException("Focus is not on Radio Button C as Expected");
+ }
+ }
+ });
+ }
+
+ private static void runTest6() throws Exception{
+ hitKey(robot, KeyEvent.VK_DOWN);
+ hitKey(robot, KeyEvent.VK_DOWN);
+ SwingUtilities.invokeAndWait(new Runnable() {
+ public void run() {
+ if (KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner() != radioBtn2) {
+ System.out.println("Radio button Group Circle Back To First Button Test");
+ throw new RuntimeException("Focus is not on Radio Button A as Expected");
+ }
+ }
+ });
+ }
+
+ private static void runTest7() throws Exception{
+ hitKey(robot, KeyEvent.VK_TAB);
+ SwingUtilities.invokeAndWait(new Runnable() {
+ public void run() {
+ if (KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner() != btnMiddle) {
+ System.out.println("Separate Component added in button group layout");
+ throw new RuntimeException("Focus is not on Middle Button as Expected");
+ }
+ }
+ });
+ }
+
+ private static void runTest8() throws Exception{
+ hitKey(robot, KeyEvent.VK_TAB);
+ SwingUtilities.invokeAndWait(new Runnable() {
+ public void run() {
+ if (KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner() != radioBtn3) {
+ System.out.println("Separate Component added in button group layout");
+ throw new RuntimeException("Focus is not on Radio Button C as Expected");
+ }
+ }
+ });
+ }
+
+ private static void hitKey(Robot robot, int keycode) {
+ robot.keyPress(keycode);
+ robot.keyRelease(keycode);
+ toolkit.realSync();
+ }
+
+ private static void hitKey(Robot robot, int mode, int keycode) {
+ robot.keyPress(mode);
+ robot.keyPress(keycode);
+ robot.keyRelease(mode);
+ robot.keyRelease(keycode);
+ toolkit.realSync();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/JTabbedPane/7170310/bug7170310.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,124 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.Rectangle;
+import java.awt.Toolkit;
+import javax.swing.JComponent;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+import javax.swing.JTabbedPane;
+import javax.swing.JViewport;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+import sun.awt.SunToolkit;
+
+/**
+ * @test
+ * @bug 7170310
+ * @author Alexey Ivanov
+ * @summary Selected tab should be scrolled into view.
+ * @run main bug7170310
+ */
+public class bug7170310 {
+ private static final int TABS_NUMBER = 3;
+
+ private static volatile JTabbedPane tabbedPane;
+ private static volatile int count = 1;
+
+ private static volatile JFrame frame;
+
+ private static volatile Exception exception = null;
+
+ public static void main(String[] args) throws Exception {
+ try {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ SwingUtilities.invokeAndWait(bug7170310::createAndShowUI);
+
+ SunToolkit toolkit = (SunToolkit) Toolkit.getDefaultToolkit();
+ toolkit.realSync();
+
+ for (int i = 0; i < TABS_NUMBER; i++) {
+ SwingUtilities.invokeAndWait(bug7170310::addTab);
+ toolkit.realSync();
+ }
+
+ SwingUtilities.invokeAndWait(bug7170310::check);
+
+ if (exception != null) {
+ System.out.println("Test failed: " + exception.getMessage());
+ throw exception;
+ } else {
+ System.out.printf("Test passed");
+ }
+ } finally {
+ frame.dispose();
+ }
+ }
+
+ private static void createAndShowUI() {
+ frame = new JFrame("bug7170310");
+ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ frame.setSize(200, 100);
+
+ tabbedPane = new JTabbedPane();
+ tabbedPane.addTab("Main Tab", new JPanel());
+
+ tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
+
+ frame.getContentPane().add(tabbedPane);
+ frame.setVisible(true);
+ }
+
+ private static void addTab() {
+ tabbedPane.addTab("Added Tab " + count++, new JPanel());
+ tabbedPane.setSelectedIndex(tabbedPane.getTabCount() - 1);
+ }
+
+ private static void check() {
+ try {
+ JViewport vp = null;
+ for (Component c : tabbedPane.getComponents()) {
+ if (c instanceof JViewport) {
+ vp = (JViewport) c;
+ break;
+ }
+ }
+
+ JComponent v = (JComponent) vp.getView();
+ Rectangle vr = vp.getViewRect();
+ Dimension vs = v.getSize();
+
+ // The tab view must be scrolled to the end so that the last tab is visible
+ if (vs.width != (vr.x + vr.width)) {
+ throw new RuntimeException("tabScroller.tabPanel view is positioned incorrectly: "
+ + vs.width + " vs " + (vr.x + vr.width));
+ }
+ } catch (Exception e) {
+ exception = e;
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/text/html/HTMLDocument/8058120/bug8058120.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,109 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/* @test
+ * @bug 8058120
+ * @summary Rendering / caret errors with HTMLDocument
+ * @author Dmitry Markov
+ * @run main bug8058120
+ */
+
+import sun.awt.SunToolkit;
+
+import javax.swing.*;
+import javax.swing.text.Element;
+import javax.swing.text.html.HTML;
+import javax.swing.text.html.HTMLDocument;
+import javax.swing.text.html.HTMLEditorKit;
+import java.awt.*;
+
+public class bug8058120 {
+ private static SunToolkit toolkit = (SunToolkit) Toolkit.getDefaultToolkit();
+ private static HTMLDocument document = null;
+ private static final String text = "<p id = 'ab'>ab</p>";
+ private static final String textToInsert = "c";
+
+ public static void main(String[] args) {
+ SwingUtilities.invokeLater(new Runnable() {
+ @Override
+ public void run() {
+ createAndShowGUI();
+ }
+ });
+
+ toolkit.realSync();
+
+ SwingUtilities.invokeLater(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ document.insertAfterEnd(document.getElement("ab"), textToInsert);
+ } catch (Exception ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+ });
+
+ toolkit.realSync();
+
+ SwingUtilities.invokeLater(new Runnable() {
+ @Override
+ public void run() {
+ Element parent = document.getElement("ab").getParentElement();
+ int count = parent.getElementCount();
+ if (count != 2) {
+ throw new RuntimeException("Test Failed! Unexpected Element count = "+count);
+ }
+ Element insertedElement = parent.getElement(count - 1);
+ if (!HTML.Tag.IMPLIED.toString().equals(insertedElement.getName())) {
+ throw new RuntimeException("Test Failed! Inserted text is not wrapped by " + HTML.Tag.IMPLIED + " tag");
+ }
+ }
+ });
+ }
+
+ private static void createAndShowGUI() {
+ try {
+ UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
+ } catch (Exception ex) {
+ throw new RuntimeException(ex);
+ }
+
+ JFrame frame = new JFrame("bug8058120");
+ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+
+ JEditorPane editorPane = new JEditorPane();
+ editorPane.setContentType("text/html");
+ editorPane.setEditorKit(new HTMLEditorKit());
+
+ document = (HTMLDocument) editorPane.getDocument();
+
+ editorPane.setText(text);
+
+ frame.add(editorPane);
+ frame.setSize(200, 200);
+ frame.setVisible(true);
+ }
+}
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/xml/jaxp/testng/parse/jdk7156085/UTF8ReaderBug.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2014 Google, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package parse.jdk7156085;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import org.xml.sax.InputSource;
+import org.xml.sax.helpers.DefaultHandler;
+import org.testng.annotations.Test;
+
+/**
+ * JDK-7156085: ArrayIndexOutOfBoundsException throws in UTF8Reader of SAXParser
+ * https://bugs.openjdk.java.net/browse/JDK-7156085
+ *
+ * XERCESJ-1257: buffer overflow in UTF8Reader for characters out of BMP
+ * https://issues.apache.org/jira/browse/XERCESJ-1257
+ */
+public class UTF8ReaderBug {
+ @Test
+ public void shouldAcceptSupplementaryCharacters() throws Throwable {
+ StringBuilder b = new StringBuilder("<xml>");
+ for(int i = 5; i < 8223; i++) {
+ b.append(' ');
+ }
+ // Add surrogate characters which overflow the buffer. This shows the need to place an
+ // overflow check at --
+ // com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(UTF8Reader.java:544)
+ b.append("\uD835\uDC37");
+ b.append("</xml>");
+ sendToParser(b.toString());
+ }
+
+ private static void sendToParser(String b) throws Throwable {
+ byte[] input = b.getBytes("UTF-8");
+ ByteArrayInputStream in = new ByteArrayInputStream(input);
+
+ SAXParserFactory spf = SAXParserFactory.newInstance();
+ SAXParser p = spf.newSAXParser();
+ p.parse(new InputSource(in), new DefaultHandler());
+ }
+}
--- a/jdk/test/jdk/nio/zipfs/Basic.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/jdk/nio/zipfs/Basic.java Fri Oct 31 18:18:58 2014 +0000
@@ -35,7 +35,7 @@
* @summary Basic test for zip provider
*
* @run main Basic
- * @run main/othervm/policy=test.policy Basic
+ * @run main/othervm/java.security.policy=test.policy Basic
*/
public class Basic {
--- a/jdk/test/jdk/nio/zipfs/PathOps.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/jdk/nio/zipfs/PathOps.java Fri Oct 31 18:18:58 2014 +0000
@@ -33,7 +33,7 @@
* @summary Tests path operations for zip provider.
*
* @run main PathOps
- * @run main/othervm/policy=test.policy.readonly PathOps
+ * @run main/othervm/java.security.policy=test.policy.readonly PathOps
*/
public class PathOps {
--- a/jdk/test/jdk/nio/zipfs/ZFSTests.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/jdk/nio/zipfs/ZFSTests.java Fri Oct 31 18:18:58 2014 +0000
@@ -26,7 +26,7 @@
* @summary ZipFileSystem regression tests
*
* @run main ZFSTests
- * @run main/othervm/policy=test.policy ZFSTests
+ * @run main/othervm/java.security.policy=test.policy ZFSTests
*/
--- a/jdk/test/jdk/nio/zipfs/ZipFSTester.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/jdk/nio/zipfs/ZipFSTester.java Fri Oct 31 18:18:58 2014 +0000
@@ -43,7 +43,7 @@
* 7157656 8002390 7012868 7012856 8015728 8038500 8040059
* @summary Test Zip filesystem provider
* @run main ZipFSTester
- * @run main/othervm/policy=test.policy ZipFSTester
+ * @run main/othervm/java.security.policy=test.policy ZipFSTester
*/
public class ZipFSTester {
--- a/jdk/test/jdk/nio/zipfs/test.policy Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/jdk/nio/zipfs/test.policy Fri Oct 31 18:18:58 2014 +0000
@@ -1,9 +1,3 @@
-grant codeBase "file:${java.home}/lib/ext/zipfs.jar" {
- permission java.io.FilePermission "<<ALL FILES>>", "read,write";
- permission java.lang.RuntimePermission "fileSystemProvider";
- permission java.util.PropertyPermission "*", "read";
-};
-
grant {
permission java.io.FilePermission "<<ALL FILES>>","read,write,delete";
permission java.util.PropertyPermission "test.jdk","read";
--- a/jdk/test/jdk/nio/zipfs/test.policy.readonly Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/jdk/nio/zipfs/test.policy.readonly Fri Oct 31 18:18:58 2014 +0000
@@ -1,9 +1,3 @@
-grant codeBase "file:${java.home}/lib/ext/zipfs.jar" {
- permission java.io.FilePermission "<<ALL FILES>>", "read,write";
- permission java.lang.RuntimePermission "fileSystemProvider";
- permission java.util.PropertyPermission "*", "read";
-};
-
grant {
permission java.io.FilePermission "<<ALL FILES>>","read";
permission java.util.PropertyPermission "test.jdk","read";
--- a/jdk/test/lib/testlibrary/jdk/testlibrary/ProcessTools.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/lib/testlibrary/jdk/testlibrary/ProcessTools.java Fri Oct 31 18:18:58 2014 +0000
@@ -319,13 +319,14 @@
return output;
} catch (Throwable t) {
+ if (p != null) {
+ p.destroyForcibly().waitFor();
+ }
+
failed = true;
System.out.println("executeProcess() failed: " + t);
throw t;
} finally {
- if (p != null) {
- p.destroyForcibly().waitFor();
- }
if (failed) {
System.err.println(getProcessLog(pb, output));
}
--- a/jdk/test/sun/java2d/DirectX/OnScreenRenderingResizeTest/OnScreenRenderingResizeTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/sun/java2d/DirectX/OnScreenRenderingResizeTest/OnScreenRenderingResizeTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -89,8 +89,13 @@
public void update(Graphics g) {}
};
frame.setBackground(bgColor);
+ frame.setUndecorated(true);
frame.pack();
- frame.setSize(FRAME_W, FRAME_H);
+
+ GraphicsConfiguration gc = frame.getGraphicsConfiguration();
+ Rectangle gcBounds = gc.getBounds();
+ frame.setBounds(gcBounds.width / 4, gcBounds.height / 4, FRAME_W, FRAME_H);
+
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
done = true;
@@ -108,9 +113,8 @@
ex.printStackTrace();
}
- GraphicsConfiguration gc = frame.getGraphicsConfiguration();
- int maxW = gc.getBounds().width /2;
- int maxH = gc.getBounds().height/2;
+ int maxW = gcBounds.width /2;
+ int maxH = gcBounds.height/2;
int minW = frame.getWidth();
int minH = frame.getHeight();
int incW = 10, incH = 10, cnt = 0;
@@ -155,6 +159,7 @@
Insets in = frame.getInsets();
frame.getGraphics().drawImage(output, in.left, in.top, null);
if (cnt == 90 && robot != null) {
+ robot.waitForIdle();
// area where we blitted to should be either white or green
Point p = frame.getLocationOnScreen();
p.translate(in.left+10, in.top+10);
@@ -172,7 +177,7 @@
frame.getWidth()-in.left-in.right,
frame.getHeight()-in.top-in.bottom-5-IMAGE_H));
int accepted2[] = { Color.white.getRGB() };
- checkBI(bi, accepted1);
+ checkBI(bi, accepted2);
}
Thread.yield();
--- a/jdk/test/sun/nio/cs/TestUTF_16.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/sun/nio/cs/TestUTF_16.java Fri Oct 31 18:18:58 2014 +0000
@@ -150,7 +150,7 @@
if (CoderResult.OVERFLOW !=
Charset.forName("UTF_16")
.newDecoder()
- .decode((ByteBuffer)(ByteBuffer.allocate(4)
+ .decode((ByteBuffer.allocate(4)
.put(new byte[]
{(byte)0xd8,(byte)0x00,
(byte)0xdc,(byte)0x01})
--- a/jdk/test/sun/nio/cs/TestUTF_32.java Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/sun/nio/cs/TestUTF_32.java Fri Oct 31 18:18:58 2014 +0000
@@ -184,7 +184,7 @@
if (CoderResult.OVERFLOW !=
Charset.forName("UTF_32")
.newDecoder()
- .decode((ByteBuffer)(ByteBuffer.allocate(4)
+ .decode((ByteBuffer.allocate(4)
.put(new byte[]
{(byte)0,(byte)1, (byte)0,(byte)01})
.flip()),
--- a/jdk/test/sun/security/pkcs11/KeyStore/Basic.policy Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/sun/security/pkcs11/KeyStore/Basic.policy Fri Oct 31 18:18:58 2014 +0000
@@ -1,17 +1,3 @@
-grant codeBase "file:${java.home}/lib/ext/sunpkcs11.jar" {
- permission java.lang.RuntimePermission "accessClassInPackage.sun.security.*";
- permission java.lang.RuntimePermission "accessClassInPackage.sun.nio.ch";
- permission java.lang.RuntimePermission "loadLibrary.j2pkcs11";
- permission java.util.PropertyPermission "*", "read";
- permission java.security.SecurityPermission "putProviderProperty.*";
- permission java.security.SecurityPermission "clearProviderProperties.*";
- permission java.security.SecurityPermission "removeProviderProperty.*";
- permission java.security.SecurityPermission "getProperty.auth.login.defaultCallbackHandler";
- permission java.security.SecurityPermission "authProvider.*";
- // Needed for reading PKCS11 config file and NSS library check
- permission java.io.FilePermission "<<ALL FILES>>", "read";
-};
-
grant codebase "file:${user.dir}${/}loader.jar" {
permission java.security.AllPermission;
};
--- a/jdk/test/sun/security/pkcs11/Provider/Login.policy Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/sun/security/pkcs11/Provider/Login.policy Fri Oct 31 18:18:58 2014 +0000
@@ -1,18 +1,3 @@
-grant codeBase "file:${java.home}/lib/ext/sunpkcs11.jar" {
- permission java.lang.RuntimePermission "accessClassInPackage.sun.security.*";
- permission java.lang.RuntimePermission "accessClassInPackage.sun.nio.ch";
- permission java.lang.RuntimePermission "loadLibrary.j2pkcs11";
- permission java.util.PropertyPermission "*", "read";
- permission java.security.SecurityPermission "putProviderProperty.*";
- permission java.security.SecurityPermission "clearProviderProperties.*";
- permission java.security.SecurityPermission "removeProviderProperty.*";
- permission java.security.SecurityPermission "getProperty.auth.login.defaultCallbackHandler";
-
- permission java.security.SecurityPermission "authProvider.*";
- // Needed for reading PKCS11 config file and NSS library check
- permission java.io.FilePermission "<<ALL FILES>>", "read";
-};
-
grant {
permission java.util.PropertyPermission "*", "read, write";
permission java.lang.RuntimePermission "loadLibrary.*";
@@ -23,6 +8,5 @@
permission java.io.FilePermission "<<ALL FILES>>", "read";
permission java.security.SecurityPermission "setProperty.auth.login.defaultCallbackHandler";
- permission java.security.SecurityPermission "authProvider.SunPKCS11-NSS"
-;
+ permission java.security.SecurityPermission "authProvider.SunPKCS11-NSS";
};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/tools/keytool/ExportPrivateKeyNoPwd.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.security.*;
+
+/*
+ * Export a private key from the named keychain entry without supplying a
+ * password. See JDK-8062264.
+ *
+ * NOTE: Keychain access controls must already have been lowered to permit
+ * the target entry to be accessed.
+ */
+public class ExportPrivateKeyNoPwd {
+
+ public static final void main(String[] args) throws Exception {
+
+ if (args.length != 1) {
+ throw new Exception(
+ "ExportPrivateKeyNoPwd: must supply name of a keystore entry");
+ }
+ String alias = args[0];
+
+ KeyStore ks = KeyStore.getInstance("KeychainStore");
+ System.out.println("ExportPrivateKeyNoPwd: loading keychains...");
+ ks.load(null, null);
+
+ System.out.println("ExportPrivateKeyNoPwd: exporting key...");
+ Key key = ks.getKey(alias, null);
+ if (key instanceof PrivateKey) {
+ System.out.println("ExportPrivateKeyNoPwd: exported " +
+ key.getAlgorithm() + " private key from '" + alias + "'");
+ } else {
+ throw new Exception("Error exporting private key from keychain");
+ }
+ }
+}
+
--- a/jdk/test/sun/security/tools/keytool/ListKeychainStore.sh Fri Oct 31 09:37:17 2014 -0700
+++ b/jdk/test/sun/security/tools/keytool/ListKeychainStore.sh Fri Oct 31 18:18:58 2014 +0000
@@ -22,7 +22,7 @@
#
# @test
-# @bug 7133495 8041740
+# @bug 7133495 8041740 8062264
# @summary [macosx] KeyChain KeyStore implementation retrieves only one private key entry
if [ "${TESTJAVA}" = "" ] ; then
@@ -30,6 +30,9 @@
TESTJAVA=`dirname $JAVAC_CMD`/..
fi
+if [ "${TESTSRC}" = "" ] ; then
+ TESTSRC="."
+fi
if [ "${TESTCLASSES}" = "" ] ; then
TESTCLASSES=`pwd`
fi
@@ -59,10 +62,6 @@
COUNT=`$KEYTOOL -list | grep PrivateKeyEntry | wc -l`
echo "Found $COUNT private key entries in the Keychain keystores"
-if [ $COUNT -gt 1 ]; then
- exit 0
-fi
-
# Create a temporary PKCS12 keystore containing 3 public/private keypairs
RESULT=`$CLEANUP_P12`
@@ -107,8 +106,9 @@
echo "Unlocked the temporary keychain"
# Import the keypairs from the PKCS12 keystore into the keychain
+# (The '-A' option is used to lower the temporary keychain's access controls)
-security import $TEMPORARY_P12 -k $TEMPORARY_KC -f pkcs12 -P $PWD
+security import $TEMPORARY_P12 -k $TEMPORARY_KC -f pkcs12 -P $PWD -A
if [ $? -ne 0 ]; then
echo "Error: cannot import keypairs from PKCS12 keystore into the keychain"
RESULT=`$CLEANUP_P12`
@@ -128,26 +128,39 @@
# Recount the number of private key entries in the Keychain keystores
-COUNT=`$KEYTOOL -list | grep PrivateKeyEntry | wc -l`
-echo "Found $COUNT private key entries in the Keychain keystore"
-if [ $COUNT -lt 3 ]; then
- echo "Error: expected >2 private key entries in the Keychain keystores"
+RECOUNT=`$KEYTOOL -list | grep PrivateKeyEntry | wc -l`
+echo "Found $RECOUNT private key entries in the Keychain keystore"
+if [ $RECOUNT -lt `expr $COUNT + 3` ]; then
+ echo "Error: expected >$COUNT private key entries in the Keychain keystores"
RESULT=`$CLEANUP_P12`
RESULT=`$CLEANUP_KC`
exit 5
fi
+# Export a private key from the keychain (without supplying a password)
+# Access controls have already been lowered (see 'security import ... -A' above)
+
+${TESTJAVA}/bin/javac ${TESTJAVACOPTS} ${TESTTOOLVMOPTS} -d . ${TESTSRC}/ExportPrivateKeyNoPwd.java || exit 6
+echo | ${TESTJAVA}/bin/java ${TESTVMOPTS} ExportPrivateKeyNoPwd x
+if [ $? -ne 0 ]; then
+ echo "Error exporting private key from the temporary keychain"
+ RESULT=`$CLEANUP_P12`
+ RESULT=`$CLEANUP_KC`
+ exit 6
+fi
+echo "Exported a private key from the temporary keychain"
+
RESULT=`$CLEANUP_P12`
if [ $? -ne 0 ]; then
echo "Error: cannot remove the temporary PKCS12 keystore"
- exit 6
+ exit 7
fi
echo "Removed the temporary PKCS12 keystore"
RESULT=`$CLEANUP_KC`
if [ $? -ne 0 ]; then
echo "Error: cannot remove the temporary keychain"
- exit 7
+ exit 8
fi
echo "Removed the temporary keychain"
--- a/langtools/.hgtags Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/.hgtags Fri Oct 31 18:18:58 2014 +0000
@@ -279,3 +279,4 @@
e18407fcede818b30709913784cb6b904030531d jdk9-b34
b8e7bbdd806465a916e64413c283075ceb0a782c jdk9-b35
c536541235e566701ff772700c15de14b75e2979 jdk9-b36
+478972d90f7bf5002615c5b2fb1ec3e0338fcadd jdk9-b37
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/JavacFileManager.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/JavacFileManager.java Fri Oct 31 18:18:58 2014 +0000
@@ -76,6 +76,7 @@
*/
public class JavacFileManager extends BaseFileManager implements StandardJavaFileManager {
+ @SuppressWarnings("cast")
public static char[] toArray(CharBuffer buffer) {
if (buffer.hasArray())
return ((CharBuffer)buffer.compact().flip()).array();
@@ -129,6 +130,8 @@
if (register)
context.put(JavaFileManager.class, this);
setContext(context);
+ if (System.getProperty("show.fm.open.close") != null)
+ System.err.println("JavacFileManager.open " + this.hashCode());
}
/**
@@ -570,6 +573,8 @@
*/
@DefinedBy(Api.COMPILER)
public void close() {
+ if (System.getProperty("show.fm.open.close") != null)
+ System.err.println("JavacFileManager.close " + this.hashCode());
for (Iterator<Archive> i = archives.values().iterator(); i.hasNext(); ) {
Archive a = i.next();
i.remove();
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/CRTable.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/CRTable.java Fri Oct 31 18:18:58 2014 +0000
@@ -517,6 +517,13 @@
result = sr;
}
+ @Override
+ public void visitTypeUnion(JCTypeUnion tree) {
+ SourceRange sr = new SourceRange(startPos(tree), endPos(tree));
+ sr.mergeWith(csp(tree.alternatives));
+ result = sr;
+ }
+
public void visitWildcard(JCWildcard tree) {
result = null;
}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/util/BaseFileManager.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/util/BaseFileManager.java Fri Oct 31 18:18:58 2014 +0000
@@ -235,6 +235,7 @@
return encName;
}
+ @SuppressWarnings("cast")
public CharBuffer decode(ByteBuffer inbuf, boolean ignoreEncodingErrors) {
String encodingName = getEncodingName();
CharsetDecoder decoder;
@@ -315,6 +316,7 @@
* @return a byte buffer containing the contents of the stream
* @throws IOException if an error occurred while reading the stream
*/
+ @SuppressWarnings("cast")
public ByteBuffer makeByteBuffer(InputStream in)
throws IOException {
int limit = in.available();
@@ -343,6 +345,7 @@
/**
* A single-element cache of direct byte buffers.
*/
+ @SuppressWarnings("cast")
private static class ByteBufferCache {
private ByteBuffer cached;
ByteBuffer get(int capacity) {
--- a/langtools/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/Start.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/Start.java Fri Oct 31 18:18:58 2014 +0000
@@ -88,6 +88,9 @@
*/
private boolean apiMode;
+ private JavaFileManager fileManager;
+ private boolean closeFileManagerOnExit;
+
Start(String programName,
PrintWriter errWriter,
PrintWriter warnWriter,
@@ -239,6 +242,12 @@
messager.error(Messager.NOPOS, "main.fatal.exception");
failed = true;
} finally {
+ if (fileManager != null && closeFileManagerOnExit) {
+ try {
+ fileManager.close();
+ } catch (IOException ignore) {
+ }
+ }
messager.exitNotice();
messager.flush();
}
@@ -270,7 +279,8 @@
}
- JavaFileManager fileManager = context.get(JavaFileManager.class);
+ fileManager = context.get(JavaFileManager.class);
+
setDocletInvoker(docletClass, fileManager, argv);
compOpts = Options.instance(context);
@@ -333,6 +343,7 @@
if (fileManager == null) {
JavacFileManager.preRegister(context);
fileManager = context.get(JavaFileManager.class);
+ closeFileManagerOnExit = true;
}
if (fileManager instanceof BaseFileManager) {
((BaseFileManager) fileManager).handleOptions(fileManagerOpts);
--- a/langtools/test/tools/all/RunCodingRules.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/all/RunCodingRules.java Fri Oct 31 18:18:58 2014 +0000
@@ -77,41 +77,42 @@
}
JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm = javaCompiler.getStandardFileManager(null, null, null);
- DiagnosticListener<JavaFileObject> noErrors = diagnostic -> {
- Assert.check(diagnostic.getKind() != Diagnostic.Kind.ERROR, diagnostic.toString());
- };
+ try (StandardJavaFileManager fm = javaCompiler.getStandardFileManager(null, null, null)) {
+ DiagnosticListener<JavaFileObject> noErrors = diagnostic -> {
+ Assert.check(diagnostic.getKind() != Diagnostic.Kind.ERROR, diagnostic.toString());
+ };
- List<File> crulesFiles = Files.walk(crulesDir)
- .filter(entry -> entry.getFileName().toString().endsWith(".java"))
- .filter(entry -> entry.getParent().endsWith("crules"))
- .map(entry -> entry.toFile())
- .collect(Collectors.toList());
+ List<File> crulesFiles = Files.walk(crulesDir)
+ .filter(entry -> entry.getFileName().toString().endsWith(".java"))
+ .filter(entry -> entry.getParent().endsWith("crules"))
+ .map(entry -> entry.toFile())
+ .collect(Collectors.toList());
- Path crulesTarget = targetDir.resolve("crules");
- Files.createDirectories(crulesTarget);
- List<String> crulesOptions = Arrays.asList("-d", crulesTarget.toString());
- javaCompiler.getTask(null, fm, noErrors, crulesOptions, null,
- fm.getJavaFileObjectsFromFiles(crulesFiles)).call();
- Path registration = crulesTarget.resolve("META-INF/services/com.sun.source.util.Plugin");
- Files.createDirectories(registration.getParent());
- try (Writer metaInfServices = Files.newBufferedWriter(registration, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING)) {
- metaInfServices.write("crules.CodingRulesAnalyzerPlugin\n");
- }
+ Path crulesTarget = targetDir.resolve("crules");
+ Files.createDirectories(crulesTarget);
+ List<String> crulesOptions = Arrays.asList("-d", crulesTarget.toString());
+ javaCompiler.getTask(null, fm, noErrors, crulesOptions, null,
+ fm.getJavaFileObjectsFromFiles(crulesFiles)).call();
+ Path registration = crulesTarget.resolve("META-INF/services/com.sun.source.util.Plugin");
+ Files.createDirectories(registration.getParent());
+ try (Writer metaInfServices = Files.newBufferedWriter(registration, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING)) {
+ metaInfServices.write("crules.CodingRulesAnalyzerPlugin\n");
+ }
- List<File> sources = sourceDirs.stream()
- .flatMap(dir -> silentFilesWalk(dir))
- .filter(entry -> entry.getFileName().toString().endsWith(".java"))
- .map(p -> p.toFile())
- .collect(Collectors.toList());
+ List<File> sources = sourceDirs.stream()
+ .flatMap(dir -> silentFilesWalk(dir))
+ .filter(entry -> entry.getFileName().toString().endsWith(".java"))
+ .map(p -> p.toFile())
+ .collect(Collectors.toList());
- Path sourceTarget = targetDir.resolve("classes");
- Files.createDirectories(sourceTarget);
- String processorPath = crulesTarget.toString() + File.pathSeparator + crulesDir.toString();
- List<String> options = Arrays.asList("-d", sourceTarget.toString(),
- "-processorpath", processorPath, "-Xplugin:coding_rules");
- javaCompiler.getTask(null, fm, noErrors, options, null,
- fm.getJavaFileObjectsFromFiles(sources)).call();
+ Path sourceTarget = targetDir.resolve("classes");
+ Files.createDirectories(sourceTarget);
+ String processorPath = crulesTarget.toString() + File.pathSeparator + crulesDir.toString();
+ List<String> options = Arrays.asList("-d", sourceTarget.toString(),
+ "-processorpath", processorPath, "-Xplugin:coding_rules");
+ javaCompiler.getTask(null, fm, noErrors, options, null,
+ fm.getJavaFileObjectsFromFiles(sources)).call();
+ }
}
Stream<Path> silentFilesWalk(Path dir) throws IllegalStateException {
--- a/langtools/test/tools/javac/6341866/T6341866.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/6341866/T6341866.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -113,58 +113,59 @@
JavaCompiler javac = ToolProvider.getSystemJavaCompiler();
MyDiagListener dl = new MyDiagListener();
- StandardJavaFileManager fm = javac.getStandardFileManager(dl, null, null);
+ try (StandardJavaFileManager fm = javac.getStandardFileManager(dl, null, null)) {
- // Note: class A references class B, so compile A if we want implicit compilation
- File file = (implicitType != ImplicitType.NONE) ? a_java : b_java;
- Iterable<? extends JavaFileObject> files = fm.getJavaFileObjects(file);
-
- //System.err.println("compile: " + opts + " " + files);
+ // Note: class A references class B, so compile A if we want implicit compilation
+ File file = (implicitType != ImplicitType.NONE) ? a_java : b_java;
+ Iterable<? extends JavaFileObject> files = fm.getJavaFileObjects(file);
- boolean ok = javac.getTask(null, fm, dl, opts, null, files).call();
- if (!ok) {
- error("compilation failed");
- return false;
- }
+ //System.err.println("compile: " + opts + " " + files);
- // check implicit compilation results if necessary
- if (implicitType != ImplicitType.NONE) {
- boolean expectClass = (implicitType != ImplicitType.OPT_NONE);
- if (b_class.exists() != expectClass) {
- if (b_class.exists())
- error("B implicitly compiled unexpectedly");
- else
- error("B not impliictly compiled");
+ boolean ok = javac.getTask(null, fm, dl, opts, null, files).call();
+ if (!ok) {
+ error("compilation failed");
return false;
}
- }
+
+ // check implicit compilation results if necessary
+ if (implicitType != ImplicitType.NONE) {
+ boolean expectClass = (implicitType != ImplicitType.OPT_NONE);
+ if (b_class.exists() != expectClass) {
+ if (b_class.exists())
+ error("B implicitly compiled unexpectedly");
+ else
+ error("B not impliictly compiled");
+ return false;
+ }
+ }
- // check message key results
- String expectKey = null;
- if (implicitType == ImplicitType.OPT_UNSET) {
- switch (annoType) {
- case SERVICE:
- expectKey = "compiler.warn.proc.use.proc.or.implicit";
- break;
- case SPECIFY:
- expectKey = "compiler.warn.proc.use.implicit";
- break;
+ // check message key results
+ String expectKey = null;
+ if (implicitType == ImplicitType.OPT_UNSET) {
+ switch (annoType) {
+ case SERVICE:
+ expectKey = "compiler.warn.proc.use.proc.or.implicit";
+ break;
+ case SPECIFY:
+ expectKey = "compiler.warn.proc.use.implicit";
+ break;
+ }
}
+
+ if (expectKey == null) {
+ if (dl.diagCodes.size() != 0) {
+ error("no diagnostics expected");
+ return false;
+ }
+ } else {
+ if (!(dl.diagCodes.size() == 1 && dl.diagCodes.get(0).equals(expectKey))) {
+ error("unexpected diagnostics generated");
+ return false;
+ }
+ }
+
+ return true;
}
-
- if (expectKey == null) {
- if (dl.diagCodes.size() != 0) {
- error("no diagnostics expected");
- return false;
- }
- } else {
- if (!(dl.diagCodes.size() == 1 && dl.diagCodes.get(0).equals(expectKey))) {
- error("unexpected diagnostics generated");
- return false;
- }
- }
-
- return true;
}
static void createProcessorServices(String name) throws IOException {
--- a/langtools/test/tools/javac/6400872/T6400872.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/6400872/T6400872.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -58,8 +58,7 @@
throws IOException {
System.err.println("compile...");
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm = compiler.getStandardFileManager(null, null, null);
- try {
+ try (StandardJavaFileManager fm = compiler.getStandardFileManager(null, null, null)) {
Iterable<? extends JavaFileObject> fileObjects =
fm.getJavaFileObjectsFromFiles(Arrays.asList(files));
@@ -78,8 +77,6 @@
compiler.getTask(null, fm, null, options, null, fileObjects);
if (!task.call())
throw new AssertionError("compilation failed");
- } finally {
- fm.close();
}
}
--- a/langtools/test/tools/javac/6402516/Checker.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/6402516/Checker.java Fri Oct 31 18:18:58 2014 +0000
@@ -54,25 +54,26 @@
};
JavacTool tool = JavacTool.create();
- StandardJavaFileManager fm = tool.getStandardFileManager(dl, null, null);
- Iterable<? extends JavaFileObject> files =
- fm.getJavaFileObjectsFromFiles(getFiles(testSrc, fileNames));
- task = tool.getTask(null, fm, dl, null, null, files);
- Iterable<? extends CompilationUnitTree> units = task.parse();
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(dl, null, null)) {
+ Iterable<? extends JavaFileObject> files =
+ fm.getJavaFileObjectsFromFiles(getFiles(testSrc, fileNames));
+ task = tool.getTask(null, fm, dl, null, null, files);
+ Iterable<? extends CompilationUnitTree> units = task.parse();
- if (errors)
- throw new AssertionError("errors occurred creating trees");
+ if (errors)
+ throw new AssertionError("errors occurred creating trees");
- ScopeScanner s = new ScopeScanner();
- for (CompilationUnitTree unit: units) {
- TreePath p = new TreePath(unit);
- s.scan(p, getTrees());
- additionalChecks(getTrees(), unit);
+ ScopeScanner s = new ScopeScanner();
+ for (CompilationUnitTree unit: units) {
+ TreePath p = new TreePath(unit);
+ s.scan(p, getTrees());
+ additionalChecks(getTrees(), unit);
+ }
+ task = null;
+
+ if (errors)
+ throw new AssertionError("errors occurred checking scopes");
}
- task = null;
-
- if (errors)
- throw new AssertionError("errors occurred checking scopes");
}
// default impl: split ref at ";" and call checkLocal(scope, ref_segment) on scope and its enclosing scopes
--- a/langtools/test/tools/javac/6440583/T6440583.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/6440583/T6440583.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -40,30 +40,31 @@
String testSrc = System.getProperty("test.src", ".");
String testClasses = System.getProperty("test.classes", ".");
JavacTool tool = JavacTool.create();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- Iterable<? extends JavaFileObject> files =
- fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, "A.java")));
- JavacTask task = tool.getTask(null, fm, null, null, null, files);
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ Iterable<? extends JavaFileObject> files =
+ fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, "A.java")));
+ JavacTask task = tool.getTask(null, fm, null, null, null, files);
- Iterable<? extends Tree> trees = task.parse();
+ Iterable<? extends Tree> trees = task.parse();
- TreeScanner<Boolean,Void> checker = new TreeScanner<Boolean,Void>() {
- public Boolean visitErroneous(ErroneousTree tree, Void ignore) {
- JCErroneous etree = (JCErroneous) tree;
- List<? extends Tree> errs = etree.getErrorTrees();
- System.err.println("errs: " + errs);
- if (errs == null || errs.size() == 0)
- throw new AssertionError("no error trees found");
- found = true;
- return true;
- }
- };
+ TreeScanner<Boolean,Void> checker = new TreeScanner<Boolean,Void>() {
+ public Boolean visitErroneous(ErroneousTree tree, Void ignore) {
+ JCErroneous etree = (JCErroneous) tree;
+ List<? extends Tree> errs = etree.getErrorTrees();
+ System.err.println("errs: " + errs);
+ if (errs == null || errs.size() == 0)
+ throw new AssertionError("no error trees found");
+ found = true;
+ return true;
+ }
+ };
- for (Tree tree: trees)
- checker.scan(tree, null);
+ for (Tree tree: trees)
+ checker.scan(tree, null);
- if (!found)
- throw new AssertionError("no ErroneousTree nodes found");
+ if (!found)
+ throw new AssertionError("no ErroneousTree nodes found");
+ }
}
private static boolean found;
--- a/langtools/test/tools/javac/6902720/Test.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/6902720/Test.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -54,38 +54,39 @@
void test(File test) throws Exception {
JavacTool tool1 = JavacTool.create();
- StandardJavaFileManager fm = tool1.getStandardFileManager(null, null, null);
- Iterable<? extends JavaFileObject> files = fm.getJavaFileObjects(test);
+ try (StandardJavaFileManager fm = tool1.getStandardFileManager(null, null, null)) {
+ Iterable<? extends JavaFileObject> files = fm.getJavaFileObjects(test);
- // parse test file into a tree, and write it out to a stringbuffer using Pretty
- JavacTask t1 = tool1.getTask(null, fm, null, null, null, files);
- StringWriter sw = new StringWriter();
- PrintWriter pw = new PrintWriter(sw);
- Iterable<? extends CompilationUnitTree> trees = t1.parse();
- for (CompilationUnitTree tree: trees) {
- new Pretty(pw, true).printExpr((JCTree) tree);
- }
- pw.close();
+ // parse test file into a tree, and write it out to a stringbuffer using Pretty
+ JavacTask t1 = tool1.getTask(null, fm, null, null, null, files);
+ StringWriter sw = new StringWriter();
+ PrintWriter pw = new PrintWriter(sw);
+ Iterable<? extends CompilationUnitTree> trees = t1.parse();
+ for (CompilationUnitTree tree: trees) {
+ new Pretty(pw, true).printExpr((JCTree) tree);
+ }
+ pw.close();
- final String out = sw.toString();
- System.err.println("generated code:\n" + out + "\n");
+ final String out = sw.toString();
+ System.err.println("generated code:\n" + out + "\n");
- // verify the generated code is valid Java by compiling it
- JavacTool tool2 = JavacTool.create();
- JavaFileObject fo = new SimpleJavaFileObject(URI.create("output"), JavaFileObject.Kind.SOURCE) {
- @Override
- public CharSequence getCharContent(boolean ignoreEncodingErrors) {
- return out;
- }
- };
- JavacTask t2 = tool2.getTask(null, fm, null, null, null, Collections.singleton(fo));
- boolean ok = t2.call();
- if (!ok)
- throw new Exception("compilation of generated code failed");
+ // verify the generated code is valid Java by compiling it
+ JavacTool tool2 = JavacTool.create();
+ JavaFileObject fo = new SimpleJavaFileObject(URI.create("output"), JavaFileObject.Kind.SOURCE) {
+ @Override
+ public CharSequence getCharContent(boolean ignoreEncodingErrors) {
+ return out;
+ }
+ };
+ JavacTask t2 = tool2.getTask(null, fm, null, null, null, Collections.singleton(fo));
+ boolean ok = t2.call();
+ if (!ok)
+ throw new Exception("compilation of generated code failed");
- File expectedClass = new File(test.getName().replace(".java", ".class"));
- if (!expectedClass.exists())
- throw new Exception(expectedClass + " not found");
+ File expectedClass = new File(test.getName().replace(".java", ".class"));
+ if (!expectedClass.exists())
+ throw new Exception(expectedClass + " not found");
+ }
}
}
--- a/langtools/test/tools/javac/7003595/T7003595.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/7003595/T7003595.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -49,9 +49,6 @@
/** global decls ***/
- // Create a single file manager and reuse it for each compile to save time.
- static StandardJavaFileManager fm = JavacTool.create().getStandardFileManager(null, null, null);
-
//statistics
static int checkCount = 0;
@@ -112,15 +109,18 @@
}
public static void main(String... args) throws Exception {
- for (ClassKind ck1 : ClassKind.values()) {
- String cname1 = "C1";
- for (ClassKind ck2 : ClassKind.values()) {
- if (!ck1.isAllowed(ck2)) continue;
- String cname2 = "C2";
- for (ClassKind ck3 : ClassKind.values()) {
- if (!ck2.isAllowed(ck3)) continue;
- String cname3 = "C3";
- new T7003595(new ClassKind[] {ck1, ck2, ck3}, new String[] { cname1, cname2, cname3 }).compileAndCheck();
+ // Create a single file manager and reuse it for each compile to save time.
+ try (StandardJavaFileManager fm = JavacTool.create().getStandardFileManager(null, null, null)) {
+ for (ClassKind ck1 : ClassKind.values()) {
+ String cname1 = "C1";
+ for (ClassKind ck2 : ClassKind.values()) {
+ if (!ck1.isAllowed(ck2)) continue;
+ String cname2 = "C2";
+ for (ClassKind ck3 : ClassKind.values()) {
+ if (!ck2.isAllowed(ck3)) continue;
+ String cname3 = "C3";
+ new T7003595(fm, new ClassKind[] {ck1, ck2, ck3}, new String[] { cname1, cname2, cname3 }).compileAndCheck();
+ }
}
}
}
@@ -132,8 +132,10 @@
ClassKind[] cks;
String[] cnames;
+ StandardJavaFileManager fm;
- T7003595(ClassKind[] cks, String[] cnames) {
+ T7003595(StandardJavaFileManager fm, ClassKind[] cks, String[] cnames) {
+ this.fm = fm;
this.cks = cks;
this.cnames = cnames;
}
--- a/langtools/test/tools/javac/7079713/TestCircularClassfile.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/7079713/TestCircularClassfile.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -100,13 +100,14 @@
public static void main(String... args) throws Exception {
JavaCompiler comp = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null);
- int count = 0;
- for (SourceKind sk1 : SourceKind.values()) {
- for (SourceKind sk2 : SourceKind.values()) {
- for (TestKind tk : TestKind.values()) {
- for (ClientKind ck : ClientKind.values()) {
- new TestCircularClassfile("sub_"+count++, sk1, sk2, tk, ck).check(comp, fm);
+ try (StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null)) {
+ int count = 0;
+ for (SourceKind sk1 : SourceKind.values()) {
+ for (SourceKind sk2 : SourceKind.values()) {
+ for (TestKind tk : TestKind.values()) {
+ for (ClientKind ck : ClientKind.values()) {
+ new TestCircularClassfile("sub_"+count++, sk1, sk2, tk, ck).check(comp, fm);
+ }
}
}
}
--- a/langtools/test/tools/javac/7142086/T7142086.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/7142086/T7142086.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -96,10 +96,11 @@
void run(List<JavaFileObject> sources) throws Exception {
DiagnosticChecker dc = new DiagnosticChecker();
JavaCompiler comp = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null);
- JavacTask ct = (JavacTask)comp.getTask(null, fm, dc,
- null, null, sources);
- ct.analyze();
+ try (StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null)) {
+ JavacTask ct = (JavacTask)comp.getTask(null, fm, dc,
+ null, null, sources);
+ ct.analyze();
+ }
}
static class DiagnosticChecker implements javax.tools.DiagnosticListener<JavaFileObject> {
--- a/langtools/test/tools/javac/NoStringToLower.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/NoStringToLower.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -54,31 +54,32 @@
*/
boolean run(String... args) throws Exception {
JavaCompiler c = ToolProvider.getSystemJavaCompiler();
- JavaFileManager fm = c.getStandardFileManager(null, null, null);
- JavaFileManager.Location javacLoc = findJavacLocation(fm);
- String[] pkgs = {
- "javax.annotation.processing",
- "javax.lang.model",
- "javax.tools",
- "com.sun.source",
- "com.sun.tools.classfile",
- "com.sun.tools.doclet",
- "com.sun.tools.doclint",
- "com.sun.tools.javac",
- "com.sun.tools.javadoc",
- "com.sun.tools.javah",
- "com.sun.tools.javap",
- "com.sun.tools.jdeps",
- "com.sun.tools.sjavac"
- };
- for (String pkg: pkgs) {
- for (JavaFileObject fo: fm.list(javacLoc,
- pkg, EnumSet.of(JavaFileObject.Kind.CLASS), true)) {
- scan(fo);
+ try (JavaFileManager fm = c.getStandardFileManager(null, null, null)) {
+ JavaFileManager.Location javacLoc = findJavacLocation(fm);
+ String[] pkgs = {
+ "javax.annotation.processing",
+ "javax.lang.model",
+ "javax.tools",
+ "com.sun.source",
+ "com.sun.tools.classfile",
+ "com.sun.tools.doclet",
+ "com.sun.tools.doclint",
+ "com.sun.tools.javac",
+ "com.sun.tools.javadoc",
+ "com.sun.tools.javah",
+ "com.sun.tools.javap",
+ "com.sun.tools.jdeps",
+ "com.sun.tools.sjavac"
+ };
+ for (String pkg: pkgs) {
+ for (JavaFileObject fo: fm.list(javacLoc,
+ pkg, EnumSet.of(JavaFileObject.Kind.CLASS), true)) {
+ scan(fo);
+ }
}
+
+ return (errors == 0);
}
-
- return (errors == 0);
}
// depending on how the test is run, javac may be on bootclasspath or classpath
--- a/langtools/test/tools/javac/Paths/6638501/JarFromManifestFailure.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/Paths/6638501/JarFromManifestFailure.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -71,28 +71,29 @@
}
}
- static void compile(File classOutDir, Iterable<File> classPath, File... files) {
+ static void compile(File classOutDir, Iterable<File> classPath, File... files) throws IOException {
System.err.println("compile...");
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm = compiler.getStandardFileManager(null, null, null);
- Iterable<? extends JavaFileObject> fileObjects =
- fm.getJavaFileObjectsFromFiles(Arrays.asList(files));
+ try (StandardJavaFileManager fm = compiler.getStandardFileManager(null, null, null)) {
+ Iterable<? extends JavaFileObject> fileObjects =
+ fm.getJavaFileObjectsFromFiles(Arrays.asList(files));
- List<String> options = new ArrayList<String>();
- if (classOutDir != null) {
- options.add("-d");
- options.add(classOutDir.getPath());
+ List<String> options = new ArrayList<String>();
+ if (classOutDir != null) {
+ options.add("-d");
+ options.add(classOutDir.getPath());
+ }
+ if (classPath != null) {
+ options.add("-classpath");
+ options.add(join(classPath, File.pathSeparator));
+ }
+ options.add("-verbose");
+
+ JavaCompiler.CompilationTask task =
+ compiler.getTask(null, fm, null, options, null, fileObjects);
+ if (!task.call())
+ throw new AssertionError("compilation failed");
}
- if (classPath != null) {
- options.add("-classpath");
- options.add(join(classPath, File.pathSeparator));
- }
- options.add("-verbose");
-
- JavaCompiler.CompilationTask task =
- compiler.getTask(null, fm, null, options, null, fileObjects);
- if (!task.call())
- throw new AssertionError("compilation failed");
}
static void jar(File jar, Iterable<File> classPath, File base, File... files)
--- a/langtools/test/tools/javac/Paths/TestCompileJARInClassPath.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/Paths/TestCompileJARInClassPath.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -116,17 +116,18 @@
javax.tools.JavaCompiler javac = ToolProvider.getSystemJavaCompiler();
DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<>();
- StandardJavaFileManager stdFileManager = javac.getStandardFileManager(diagnostics, null, null);
+ try (StandardJavaFileManager stdFileManager = javac.getStandardFileManager(diagnostics, null, null)) {
- List<File> files = new ArrayList<>();
- files.add(clientJarFile);
+ List<File> files = new ArrayList<>();
+ files.add(clientJarFile);
- stdFileManager.setLocation(StandardLocation.CLASS_PATH, files);
+ stdFileManager.setLocation(StandardLocation.CLASS_PATH, files);
+
+ Iterable<? extends JavaFileObject> sourceFiles = stdFileManager.getJavaFileObjects(sourceFileToCompile);
- Iterable<? extends JavaFileObject> sourceFiles = stdFileManager.getJavaFileObjects(sourceFileToCompile);
-
- if (!javac.getTask(null, stdFileManager, diagnostics, null, null, sourceFiles).call()) {
- throw new AssertionError("compilation failed");
+ if (!javac.getTask(null, stdFileManager, diagnostics, null, null, sourceFiles).call()) {
+ throw new AssertionError("compilation failed");
+ }
}
}
}
--- a/langtools/test/tools/javac/T6265400.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/T6265400.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -44,10 +44,11 @@
throw new NullPointerException(SILLY_BILLY);
}
};
- StandardJavaFileManager fm = javac.getStandardFileManager(dl, null, null);
- Iterable<? extends JavaFileObject> files =
- fm.getJavaFileObjectsFromStrings(Arrays.asList("badfile.java"));
- javac.getTask(null, fm, dl, null, null, files).call();
+ try (StandardJavaFileManager fm = javac.getStandardFileManager(dl, null, null)) {
+ Iterable<? extends JavaFileObject> files =
+ fm.getJavaFileObjectsFromStrings(Arrays.asList("badfile.java"));
+ javac.getTask(null, fm, dl, null, null, files).call();
+ }
}
catch (RuntimeException e) {
Throwable cause = e.getCause();
--- a/langtools/test/tools/javac/T6340549.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/T6340549.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -44,13 +44,14 @@
try {
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager jfm = compiler.getStandardFileManager(null, null, null);
- jfm.setLocation(StandardLocation.CLASS_PATH, Arrays.asList(new File(".")));
+ try (StandardJavaFileManager jfm = compiler.getStandardFileManager(null, null, null)) {
+ jfm.setLocation(StandardLocation.CLASS_PATH, Arrays.asList(new File(".")));
- for (JavaFileObject jfo : jfm.list(StandardLocation.CLASS_PATH,
- "", EnumSet.of(Kind.OTHER), false)) {
- if (new File(jfo.getName()).isDirectory()) {
- throw new AssertionError("Found directory: " + jfo);
+ for (JavaFileObject jfo : jfm.list(StandardLocation.CLASS_PATH,
+ "", EnumSet.of(Kind.OTHER), false)) {
+ if (new File(jfo.getName()).isDirectory()) {
+ throw new AssertionError("Found directory: " + jfo);
+ }
}
}
} finally {
--- a/langtools/test/tools/javac/T6351767.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/T6351767.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -38,52 +38,52 @@
public static void main(String... args) throws Exception {
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
- JavaFileManager jfm = compiler.getStandardFileManager(null, null, null);
+ try (JavaFileManager jfm = compiler.getStandardFileManager(null, null, null)) {
- // test null
- try {
- jfm.list(StandardLocation.SOURCE_PATH, null, EnumSet.of(Kind.SOURCE), false);
- error("NPE not thrown");
- }
- catch (NullPointerException e) {
- // expected
- }
+ // test null
+ try {
+ jfm.list(StandardLocation.SOURCE_PATH, null, EnumSet.of(Kind.SOURCE), false);
+ error("NPE not thrown");
+ }
+ catch (NullPointerException e) {
+ // expected
+ }
- // test null fileKinds
- try {
- jfm.list(StandardLocation.SOURCE_PATH, "", null, false);
- error("NPE not thrown");
- }
- catch (NullPointerException e) {
- // expected
- }
+ // test null fileKinds
+ try {
+ jfm.list(StandardLocation.SOURCE_PATH, "", null, false);
+ error("NPE not thrown");
+ }
+ catch (NullPointerException e) {
+ // expected
+ }
- // test good package
- boolean found = false;
- for (JavaFileObject jfo : jfm.list(StandardLocation.PLATFORM_CLASS_PATH,
- "java.lang",
- EnumSet.of(Kind.CLASS),
- false)) {
- System.err.println("found " + jfo.toUri());
- if (jfo.isNameCompatible("Object", Kind.CLASS))
- found = true;
- }
- if (!found)
- error("expected file, java/lang/Object.class, not found");
+ // test good package
+ boolean found = false;
+ for (JavaFileObject jfo : jfm.list(StandardLocation.PLATFORM_CLASS_PATH,
+ "java.lang",
+ EnumSet.of(Kind.CLASS),
+ false)) {
+ System.err.println("found " + jfo.toUri());
+ if (jfo.isNameCompatible("Object", Kind.CLASS))
+ found = true;
+ }
+ if (!found)
+ error("expected file, java/lang/Object.class, not found");
- found = false;
- // test good package (VM name)
- for (JavaFileObject jfo : jfm.list(StandardLocation.PLATFORM_CLASS_PATH,
- "java/lang",
- EnumSet.of(Kind.CLASS),
- false)) {
- System.err.println("found " + jfo.toUri());
- if (jfo.isNameCompatible("Object", Kind.CLASS))
- found = true;
+ found = false;
+ // test good package (VM name)
+ for (JavaFileObject jfo : jfm.list(StandardLocation.PLATFORM_CLASS_PATH,
+ "java/lang",
+ EnumSet.of(Kind.CLASS),
+ false)) {
+ System.err.println("found " + jfo.toUri());
+ if (jfo.isNameCompatible("Object", Kind.CLASS))
+ found = true;
+ }
+ if (!found)
+ error("expected file, java/lang/Object.class, not found");
}
- if (!found)
- error("expected file, java/lang/Object.class, not found");
-
}
static void error(String msg) {
--- a/langtools/test/tools/javac/T6361619.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/T6361619.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -57,17 +57,18 @@
}
};
- StandardJavaFileManager fm = tool.getStandardFileManager(dl, null, null);
- Iterable<? extends JavaFileObject> f =
- fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrcDir,
- self + ".java")));
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(dl, null, null)) {
+ Iterable<? extends JavaFileObject> f =
+ fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrcDir,
+ self + ".java")));
- JavacTask task = tool.getTask(out, fm, dl, flags, null, f);
- MyTaskListener tl = new MyTaskListener(task);
- task.setTaskListener(tl);
+ JavacTask task = tool.getTask(out, fm, dl, flags, null, f);
+ MyTaskListener tl = new MyTaskListener(task);
+ task.setTaskListener(tl);
- // should complete, without exceptions
- task.call();
+ // should complete, without exceptions
+ task.call();
+ }
}
public boolean process(Set<? extends TypeElement> elems, RoundEnvironment renv) {
--- a/langtools/test/tools/javac/T6395974.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/T6395974.java Fri Oct 31 18:18:58 2014 +0000
@@ -44,24 +44,25 @@
String testSrc = System.getProperty("test.src");
JavacTool tool = JavacTool.create();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- Iterable<?extends JavaFileObject> f =
- fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, self + ".java")));
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ Iterable<?extends JavaFileObject> f =
+ fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, self + ".java")));
- PrintWriter out = new PrintWriter(System.err, true);
+ PrintWriter out = new PrintWriter(System.err, true);
- JavacTaskImpl task = (JavacTaskImpl) tool.getTask(out,
- fm,
- null,
- Arrays.asList("-processor",
- "Foo.java"),
- null,
- f);
+ JavacTaskImpl task = (JavacTaskImpl) tool.getTask(out,
+ fm,
+ null,
+ Arrays.asList("-processor",
+ "Foo.java"),
+ null,
+ f);
- MyTaskListener tl = new MyTaskListener();
- task.setTaskListener(tl);
+ MyTaskListener tl = new MyTaskListener();
+ task.setTaskListener(tl);
- task.call();
+ task.call();
+ }
}
static class MyTaskListener implements TaskListener {
--- a/langtools/test/tools/javac/T6397044.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/T6397044.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -42,14 +42,15 @@
String srcDir = System.getProperty("test.src", ".");
String self = T6397044.class.getName();
JavacTool tool = JavacTool.create();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- Iterable<? extends JavaFileObject> files
- = fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(srcDir, self + ".java")));
- JavacTask task = tool.getTask(null, fm, null, null, null, files);
- Iterable<? extends CompilationUnitTree> trees = task.parse();
- Checker checker = new Checker();
- for (CompilationUnitTree tree: trees)
- checker.check(tree);
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ Iterable<? extends JavaFileObject> files
+ = fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(srcDir, self + ".java")));
+ JavacTask task = tool.getTask(null, fm, null, null, null, files);
+ Iterable<? extends CompilationUnitTree> trees = task.parse();
+ Checker checker = new Checker();
+ for (CompilationUnitTree tree: trees)
+ checker.check(tree);
+ }
}
public int x_public;
--- a/langtools/test/tools/javac/T6397286.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/T6397286.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -40,29 +40,30 @@
String self = T6397286.class.getName();
JavacTool tool = JavacTool.create();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- Iterable<? extends JavaFileObject> files =
- fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrcDir, self + ".java")));
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ Iterable<? extends JavaFileObject> files =
+ fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrcDir, self + ".java")));
- JavacTask task = tool.getTask(null, fm, null, null, null, files);
- task.setTaskListener(new TaskListener() {
- public void started(TaskEvent e) {
- throw new TaskEventError(e);
- }
- public void finished(TaskEvent e) {
+ JavacTask task = tool.getTask(null, fm, null, null, null, files);
+ task.setTaskListener(new TaskListener() {
+ public void started(TaskEvent e) {
+ throw new TaskEventError(e);
+ }
+ public void finished(TaskEvent e) {
+ }
+ });
+
+ try {
+ task.call();
+ throw new AssertionError("no exception thrown");
+ } catch (RuntimeException e) {
+ if (e.getCause() instanceof TaskEventError) {
+ TaskEventError tee = (TaskEventError) e.getCause();
+ System.err.println("Exception thrown for " + tee.event + " as expected");
+ } else {
+ e.printStackTrace();
+ throw new AssertionError("TaskEventError not thrown");
}
- });
-
- try {
- task.call();
- throw new AssertionError("no exception thrown");
- } catch (RuntimeException e) {
- if (e.getCause() instanceof TaskEventError) {
- TaskEventError tee = (TaskEventError) e.getCause();
- System.err.println("Exception thrown for " + tee.event + " as expected");
- } else {
- e.printStackTrace();
- throw new AssertionError("TaskEventError not thrown");
}
}
}
--- a/langtools/test/tools/javac/T6403466.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/T6403466.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -51,24 +51,25 @@
public static void main(String[] args) throws IOException {
JavacTool tool = JavacTool.create();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- Iterable<? extends JavaFileObject> files =
- fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrcDir, self + ".java")));
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ Iterable<? extends JavaFileObject> files =
+ fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrcDir, self + ".java")));
+
+ Iterable<String> options = Arrays.asList("-processorpath", testClassDir,
+ "-processor", self,
+ "-s", ".",
+ "-d", ".");
+ JavacTask task = tool.getTask(out, fm, null, options, null, files);
- Iterable<String> options = Arrays.asList("-processorpath", testClassDir,
- "-processor", self,
- "-s", ".",
- "-d", ".");
- JavacTask task = tool.getTask(out, fm, null, options, null, files);
+ VerifyingTaskListener vtl = new VerifyingTaskListener(new File(testSrcDir, self + ".out"));
+ task.setTaskListener(vtl);
- VerifyingTaskListener vtl = new VerifyingTaskListener(new File(testSrcDir, self + ".out"));
- task.setTaskListener(vtl);
+ if (!task.call())
+ throw new AssertionError("compilation failed");
- if (!task.call())
- throw new AssertionError("compilation failed");
-
- if (vtl.iter.hasNext() || vtl.errors)
- throw new AssertionError("comparison against golden file failed.");
+ if (vtl.iter.hasNext() || vtl.errors)
+ throw new AssertionError("comparison against golden file failed.");
+ }
}
public boolean process(Set<? extends TypeElement> annos, RoundEnvironment rEnv) {
--- a/langtools/test/tools/javac/T6406771.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/T6406771.java Fri Oct 31 18:18:58 2014 +0000
@@ -33,21 +33,22 @@
// White-space after this point does not matter
- public static void main(String[] args) {
+ public static void main(String[] args) throws IOException {
String self = T6406771.class.getName();
String testSrc = System.getProperty("test.src");
String testClasses = System.getProperty("test.classes");
JavacTool tool = JavacTool.create();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- JavaFileObject f = fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, self+".java"))).iterator().next();
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ JavaFileObject f = fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, self+".java"))).iterator().next();
- List<String> opts = Arrays.asList("-d", ".", "-processorpath", testClasses, "-processor", self, "-proc:only");
+ List<String> opts = Arrays.asList("-d", ".", "-processorpath", testClasses, "-processor", self, "-proc:only");
- JavacTask task = tool.getTask(null, fm, null, opts, null, Arrays.asList(f));
+ JavacTask task = tool.getTask(null, fm, null, opts, null, Arrays.asList(f));
- if (!task.call())
- throw new AssertionError("failed");
+ if (!task.call())
+ throw new AssertionError("failed");
+ }
}
public boolean process(Set<? extends TypeElement> elems, RoundEnvironment rEnv) {
--- a/langtools/test/tools/javac/T6407066.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/T6407066.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -37,20 +37,21 @@
String testClasses = System.getProperty("test.classes", ".");
JavaCompiler tool = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager jfm = tool.getStandardFileManager(null, null, null);
+ try (StandardJavaFileManager jfm = tool.getStandardFileManager(null, null, null)) {
- List<File> path = new ArrayList<File>();
- path.add(new File("BadDirectory"));
- path.add(new File(testSrc));
- path.add(new File("BadFile.jar"));
+ List<File> path = new ArrayList<File>();
+ path.add(new File("BadDirectory"));
+ path.add(new File(testSrc));
+ path.add(new File("BadFile.jar"));
- jfm.setLocation(StandardLocation.SOURCE_PATH, path);
+ jfm.setLocation(StandardLocation.SOURCE_PATH, path);
- List<File> path2 = new ArrayList<File>();
- for (File f: jfm.getLocation(StandardLocation.SOURCE_PATH))
- path2.add(f);
+ List<File> path2 = new ArrayList<File>();
+ for (File f: jfm.getLocation(StandardLocation.SOURCE_PATH))
+ path2.add(f);
- if (!path.equals(path2))
- throw new AssertionError("path not preserved");
+ if (!path.equals(path2))
+ throw new AssertionError("path not preserved");
+ }
}
}
--- a/langtools/test/tools/javac/T6410706.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/T6410706.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -44,21 +44,22 @@
String testClasses = System.getProperty("test.classes", ".");
JavacTool tool = JavacTool.create();
MyDiagListener dl = new MyDiagListener();
- StandardJavaFileManager fm = tool.getStandardFileManager(dl, null, null);
- fm.setLocation(StandardLocation.CLASS_OUTPUT, Arrays.asList(new File(testClasses)));
- Iterable<? extends JavaFileObject> files =
- fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, T6410706.class.getName()+".java")));
- JavacTask task = tool.getTask(null, fm, dl, null, null, files);
- task.parse();
- task.analyze();
- task.generate();
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(dl, null, null)) {
+ fm.setLocation(StandardLocation.CLASS_OUTPUT, Arrays.asList(new File(testClasses)));
+ Iterable<? extends JavaFileObject> files =
+ fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, T6410706.class.getName()+".java")));
+ JavacTask task = tool.getTask(null, fm, dl, null, null, files);
+ task.parse();
+ task.analyze();
+ task.generate();
- // expect 2 notes:
- // Note: T6410706.java uses or overrides a deprecated API.
- // Note: Recompile with -Xlint:deprecation for details.
+ // expect 2 notes:
+ // Note: T6410706.java uses or overrides a deprecated API.
+ // Note: Recompile with -Xlint:deprecation for details.
- if (dl.notes != 2)
- throw new AssertionError(dl.notes + " notes given");
+ if (dl.notes != 2)
+ throw new AssertionError(dl.notes + " notes given");
+ }
}
private static class MyDiagListener implements DiagnosticListener<JavaFileObject>
--- a/langtools/test/tools/javac/T6458823/T6458823.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/T6458823/T6458823.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -55,33 +55,34 @@
}
DiagnosticCollector<JavaFileObject> diagColl =
new DiagnosticCollector<JavaFileObject>();
- StandardJavaFileManager fm = compiler.getStandardFileManager(null, null, null);
- List<String> options = new ArrayList<String>();
- options.add("-processor");
- options.add("MyProcessor");
- options.add("-proc:only");
- List<File> files = new ArrayList<File>();
- files.add(new File(T6458823.class.getResource("TestClass.java").toURI()));
- final CompilationTask task = compiler.getTask(null, fm, diagColl,
- options, null, fm.getJavaFileObjectsFromFiles(files));
- task.call();
- int diagCount = 0;
- for (Diagnostic<? extends JavaFileObject> diag : diagColl.getDiagnostics()) {
- if (diag.getKind() != Diagnostic.Kind.WARNING) {
- throw new AssertionError("Only warnings expected");
+ try (StandardJavaFileManager fm = compiler.getStandardFileManager(null, null, null)) {
+ List<String> options = new ArrayList<String>();
+ options.add("-processor");
+ options.add("MyProcessor");
+ options.add("-proc:only");
+ List<File> files = new ArrayList<File>();
+ files.add(new File(T6458823.class.getResource("TestClass.java").toURI()));
+ final CompilationTask task = compiler.getTask(null, fm, diagColl,
+ options, null, fm.getJavaFileObjectsFromFiles(files));
+ task.call();
+ int diagCount = 0;
+ for (Diagnostic<? extends JavaFileObject> diag : diagColl.getDiagnostics()) {
+ if (diag.getKind() != Diagnostic.Kind.WARNING) {
+ throw new AssertionError("Only warnings expected");
+ }
+ System.out.println(diag);
+ if (diag.getPosition() == Diagnostic.NOPOS) {
+ throw new AssertionError("No position info in message");
+ }
+ if (diag.getSource() == null) {
+ throw new AssertionError("No source info in message");
+ }
+ diagCount++;
}
- System.out.println(diag);
- if (diag.getPosition() == Diagnostic.NOPOS) {
- throw new AssertionError("No position info in message");
+ if (diagCount != 2) {
+ throw new AssertionError("unexpected number of warnings: " +
+ diagCount + ", expected: 2");
}
- if (diag.getSource() == null) {
- throw new AssertionError("No source info in message");
- }
- diagCount++;
- }
- if (diagCount != 2) {
- throw new AssertionError("unexpected number of warnings: " +
- diagCount + ", expected: 2");
}
}
}
--- a/langtools/test/tools/javac/T6665791.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/T6665791.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -47,29 +47,30 @@
write(test_java, test);
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager manager =
- compiler.getStandardFileManager(null, null, null);
- Iterable<? extends JavaFileObject> units = manager.getJavaFileObjects(test_java);
- final StringWriter sw = new StringWriter();
- JavacTask task = (JavacTask) compiler.getTask(sw, manager, null, null,
- null, units);
+ try (StandardJavaFileManager manager =
+ compiler.getStandardFileManager(null, null, null)) {
+ Iterable<? extends JavaFileObject> units = manager.getJavaFileObjects(test_java);
+ final StringWriter sw = new StringWriter();
+ JavacTask task = (JavacTask) compiler.getTask(sw, manager, null, null,
+ null, units);
- new TreeScanner<Boolean, Void>() {
- @Override
- public Boolean visitClass(ClassTree arg0, Void arg1) {
- sw.write(arg0.toString());
- return super.visitClass(arg0, arg1);
- }
- }.scan(task.parse(), null);
+ new TreeScanner<Boolean, Void>() {
+ @Override
+ public Boolean visitClass(ClassTree arg0, Void arg1) {
+ sw.write(arg0.toString());
+ return super.visitClass(arg0, arg1);
+ }
+ }.scan(task.parse(), null);
- System.out.println("output:");
- System.out.println(sw.toString());
- String found = sw.toString().replaceAll("\\s+", " ").trim();
- String expect = test.replaceAll("\\s+", " ").trim();
- if (!expect.equals(found)) {
- System.out.println("expect: " + expect);
- System.out.println("found: " + found);
- throw new Exception("unexpected output");
+ System.out.println("output:");
+ System.out.println(sw.toString());
+ String found = sw.toString().replaceAll("\\s+", " ").trim();
+ String expect = test.replaceAll("\\s+", " ").trim();
+ if (!expect.equals(found)) {
+ System.out.println("expect: " + expect);
+ System.out.println("found: " + found);
+ throw new Exception("unexpected output");
+ }
}
}
--- a/langtools/test/tools/javac/T6705935.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/T6705935.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -45,46 +45,47 @@
java_home = java_home.getParentFile();
JavaCompiler c = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm = c.getStandardFileManager(null, null, null);
- //System.err.println("platform class path: " + asList(fm.getLocation(StandardLocation.PLATFORM_CLASS_PATH)));
+ try (StandardJavaFileManager fm = c.getStandardFileManager(null, null, null)) {
+ //System.err.println("platform class path: " + asList(fm.getLocation(StandardLocation.PLATFORM_CLASS_PATH)));
+
+ for (JavaFileObject fo: fm.list(StandardLocation.PLATFORM_CLASS_PATH,
+ "java.lang",
+ Collections.singleton(JavaFileObject.Kind.CLASS),
+ false)) {
+ test++;
- for (JavaFileObject fo: fm.list(StandardLocation.PLATFORM_CLASS_PATH,
- "java.lang",
- Collections.singleton(JavaFileObject.Kind.CLASS),
- false)) {
- test++;
+ if (!(fo instanceof ZipFileObject || fo instanceof ZipFileIndexFileObject)) {
+ System.out.println("Skip " + fo.getClass().getSimpleName() + " " + fo.getName());
+ skip++;
+ continue;
+ }
- if (!(fo instanceof ZipFileObject || fo instanceof ZipFileIndexFileObject)) {
- System.out.println("Skip " + fo.getClass().getSimpleName() + " " + fo.getName());
- skip++;
- continue;
+ //System.err.println(fo.getName());
+ String p = fo.getName();
+ int bra = p.indexOf("(");
+ int ket = p.indexOf(")");
+ //System.err.println(bra + "," + ket + "," + p.length());
+ if (bra == -1 || ket != p.length() -1)
+ throw new Exception("unexpected path: " + p + "[" + bra + "," + ket + "," + p.length());
+ String part1 = p.substring(0, bra);
+ String part2 = p.substring(bra + 1, ket);
+ //System.err.println("[" + part1 + "|" + part2 + "]" + " " + java_home);
+ if (part1.equals(part2) || !part1.startsWith(java_home.getPath()))
+ throw new Exception("bad path: " + p);
+
}
- //System.err.println(fo.getName());
- String p = fo.getName();
- int bra = p.indexOf("(");
- int ket = p.indexOf(")");
- //System.err.println(bra + "," + ket + "," + p.length());
- if (bra == -1 || ket != p.length() -1)
- throw new Exception("unexpected path: " + p + "[" + bra + "," + ket + "," + p.length());
- String part1 = p.substring(0, bra);
- String part2 = p.substring(bra + 1, ket);
- //System.err.println("[" + part1 + "|" + part2 + "]" + " " + java_home);
- if (part1.equals(part2) || !part1.startsWith(java_home.getPath()))
- throw new Exception("bad path: " + p);
+ if (test == 0)
+ throw new Exception("no files found");
- }
-
- if (test == 0)
- throw new Exception("no files found");
+ if (skip == 0)
+ System.out.println(test + " files found");
+ else
+ System.out.println(test + " files found, " + skip + " files skipped");
- if (skip == 0)
- System.out.println(test + " files found");
- else
- System.out.println(test + " files found, " + skip + " files skipped");
-
- if (test == skip)
- System.out.println("Warning: all files skipped; no platform classes found in zip files.");
+ if (test == skip)
+ System.out.println("Warning: all files skipped; no platform classes found in zip files.");
+ }
}
private <T> List<T> asList(Iterable<? extends T> items) {
--- a/langtools/test/tools/javac/T6900149.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/T6900149.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -37,14 +37,15 @@
DiagnosticCollector<JavaFileObject> diag =
new DiagnosticCollector<JavaFileObject>();
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm =
- compiler.getStandardFileManager(null, null, null);
- File emptyFile = createTempFile("Empty.java");
- File[] files = new File[] { emptyFile, emptyFile };
- CompilationTask task = compiler.getTask(null, fm, diag,
- null, null, fm.getJavaFileObjects(files));
- if (! task.call()) {
- throw new AssertionError("compilation failed");
+ try (StandardJavaFileManager fm =
+ compiler.getStandardFileManager(null, null, null)) {
+ File emptyFile = createTempFile("Empty.java");
+ File[] files = new File[] { emptyFile, emptyFile };
+ CompilationTask task = compiler.getTask(null, fm, diag,
+ null, null, fm.getJavaFileObjects(files));
+ if (! task.call()) {
+ throw new AssertionError("compilation failed");
+ }
}
}
--- a/langtools/test/tools/javac/T6956462/T6956462.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/T6956462/T6956462.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -44,14 +44,15 @@
if (compiler == null) {
throw new RuntimeException("can't get javax.tools.JavaCompiler!");
}
- StandardJavaFileManager fm = compiler.getStandardFileManager(null, null, null);
- List<File> files = new ArrayList<File>();
- files.add(new File(T6956462.class.getResource("TestClass.java").toURI()));
- final CompilationTask task = compiler.getTask(null, fm, null,
- null, null, fm.getJavaFileObjectsFromFiles(files));
- JavacTask javacTask = (JavacTask) task;
- for (CompilationUnitTree cu : javacTask.parse()) {
- cu.accept(new MyVisitor(javacTask), null);
+ try (StandardJavaFileManager fm = compiler.getStandardFileManager(null, null, null)) {
+ List<File> files = new ArrayList<File>();
+ files.add(new File(T6956462.class.getResource("TestClass.java").toURI()));
+ final CompilationTask task = compiler.getTask(null, fm, null,
+ null, null, fm.getJavaFileObjectsFromFiles(files));
+ JavacTask javacTask = (JavacTask) task;
+ for (CompilationUnitTree cu : javacTask.parse()) {
+ cu.accept(new MyVisitor(javacTask), null);
+ }
}
}
--- a/langtools/test/tools/javac/T6956638.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/T6956638.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -96,34 +96,35 @@
List<String> compileOptions = Arrays.asList("-d", classesDir.getPath());
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
DiagnosticCollector<JavaFileObject> diagnosticCollector = new DiagnosticCollector<JavaFileObject>();
- StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnosticCollector, null, null);
- Iterable<? extends JavaFileObject> sourceFileObjects = fileManager.getJavaFileObjects(sourceFiles);
- System.err.println("1- javac given java source JavaFileObjects " + sourceFileObjects);
- JavaCompiler.CompilationTask task = compiler.getTask(compilerOutputStream, fileManager, null, compileOptions, null, sourceFileObjects);
- JavacTask javacTask = (JavacTask) task;
+ try (StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnosticCollector, null, null)) {
+ Iterable<? extends JavaFileObject> sourceFileObjects = fileManager.getJavaFileObjects(sourceFiles);
+ System.err.println("1- javac given java source JavaFileObjects " + sourceFileObjects);
+ JavaCompiler.CompilationTask task = compiler.getTask(compilerOutputStream, fileManager, null, compileOptions, null, sourceFileObjects);
+ JavacTask javacTask = (JavacTask) task;
- Iterable<? extends CompilationUnitTree> parsedTrees = javacTask.parse();
- Iterable<? extends Element> analyzedTrees = javacTask.analyze();
- Iterable<? extends JavaFileObject> generatedFiles = javacTask.generate();
+ Iterable<? extends CompilationUnitTree> parsedTrees = javacTask.parse();
+ Iterable<? extends Element> analyzedTrees = javacTask.analyze();
+ Iterable<? extends JavaFileObject> generatedFiles = javacTask.generate();
- System.err.println("2- parsed:" + size(parsedTrees) + " analysed:" + size(analyzedTrees) + " generated:" + size(generatedFiles));
+ System.err.println("2- parsed:" + size(parsedTrees) + " analysed:" + size(analyzedTrees) + " generated:" + size(generatedFiles));
- System.err.print("3-");
- for (JavaFileObject f : generatedFiles)
- System.err.print(" " + f);
- System.err.println("");
+ System.err.print("3-");
+ for (JavaFileObject f : generatedFiles)
+ System.err.print(" " + f);
+ System.err.println("");
- System.err.print("5-");
- for (File f : classesDir.listFiles())
- System.err.print(" " + f);
- System.err.println("");
+ System.err.print("5-");
+ for (File f : classesDir.listFiles())
+ System.err.print(" " + f);
+ System.err.println("");
- System.err.println("----");
- System.err.println(compilerOutputStream.toString());
+ System.err.println("----");
+ System.err.println(compilerOutputStream.toString());
- if (size(generatedFiles) != size(parsedTrees)) {
- throw new Exception("wrong number of files generated: " + size(generatedFiles)
- + " expected: " + size(parsedTrees));
+ if (size(generatedFiles) != size(parsedTrees)) {
+ throw new Exception("wrong number of files generated: " + size(generatedFiles)
+ + " expected: " + size(parsedTrees));
+ }
}
}
--- a/langtools/test/tools/javac/T7142672/Bug.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/T7142672/Bug.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -58,28 +58,29 @@
}
};
- StandardJavaFileManager sjfm = javac.getStandardFileManager(dl,null,null);
+ try (StandardJavaFileManager sjfm = javac.getStandardFileManager(dl,null,null)) {
- List<String> opts = new ArrayList<String>();
- opts.add("-proc:only");
- opts.add("-processor");
- opts.add("AnnoProcessor");
+ List<String> opts = new ArrayList<String>();
+ opts.add("-proc:only");
+ opts.add("-processor");
+ opts.add("AnnoProcessor");
- boolean xxx;
+ boolean xxx;
- System.err.println("\n-- " + name);
- task2 = javac.getTask(pw, sjfm, dl, opts, Arrays.asList(name), null);
- xxx = task2.call();
+ System.err.println("\n-- " + name);
+ task2 = javac.getTask(pw, sjfm, dl, opts, Arrays.asList(name), null);
+ xxx = task2.call();
- String out = sw.toString();
- System.err.println(out);
- if (out.contains("Assert")) {
- System.err.println("--Failed: Assertion failure");
- System.exit(1);
- }
- if (!out.contains(expectedMsg)) {
- System.err.println("--Failed: Expected diagnostic not found");
- System.exit(1);
+ String out = sw.toString();
+ System.err.println(out);
+ if (out.contains("Assert")) {
+ System.err.println("--Failed: Assertion failure");
+ System.exit(1);
+ }
+ if (!out.contains(expectedMsg)) {
+ System.err.println("--Failed: Expected diagnostic not found");
+ System.exit(1);
+ }
}
}
}
--- a/langtools/test/tools/javac/T7159016.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/T7159016.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -45,6 +45,7 @@
import javax.lang.model.element.TypeElement;
import javax.tools.Diagnostic;
import javax.tools.JavaCompiler;
+import javax.tools.StandardJavaFileManager;
import javax.tools.ToolProvider;
public class T7159016 {
@@ -58,11 +59,13 @@
w.close();
}
JavaCompiler jc = ToolProvider.getSystemJavaCompiler();
- JavaCompiler.CompilationTask task = jc.getTask(null, null, null, null, null,
- jc.getStandardFileManager(null, null, null).getJavaFileObjects(src));
- task.setProcessors(Collections.singleton(new Proc()));
- if (!task.call()) {
- throw new Error("Test failed");
+ try (StandardJavaFileManager fm = jc.getStandardFileManager(null, null, null)) {
+ JavaCompiler.CompilationTask task = jc.getTask(null, fm, null, null, null,
+ fm.getJavaFileObjects(src));
+ task.setProcessors(Collections.singleton(new Proc()));
+ if (!task.call()) {
+ throw new Error("Test failed");
+ }
}
}
--- a/langtools/test/tools/javac/T8003967/DetectMutableStaticFields.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/T8003967/DetectMutableStaticFields.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -179,18 +179,19 @@
ConstantPoolException,
InvalidDescriptor {
JavaCompiler tool = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- JavaFileManager.Location location =
- StandardLocation.locationFor(resource.getPath());
- fm.setLocation(location, com.sun.tools.javac.util.List.of(
- new File(resource.getPath())));
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ JavaFileManager.Location location =
+ StandardLocation.locationFor(resource.getPath());
+ fm.setLocation(location, com.sun.tools.javac.util.List.of(
+ new File(resource.getPath())));
- for (JavaFileObject file : fm.list(location, "", EnumSet.of(CLASS), true)) {
- String className = fm.inferBinaryName(location, file);
- int index = className.lastIndexOf('.');
- String pckName = index == -1 ? "" : className.substring(0, index);
- if (shouldAnalyzePackage(pckName)) {
- analyzeClassFile(ClassFile.read(file.openInputStream()));
+ for (JavaFileObject file : fm.list(location, "", EnumSet.of(CLASS), true)) {
+ String className = fm.inferBinaryName(location, file);
+ int index = className.lastIndexOf('.');
+ String pckName = index == -1 ? "" : className.substring(0, index);
+ if (shouldAnalyzePackage(pckName)) {
+ analyzeClassFile(ClassFile.read(file.openInputStream()));
+ }
}
}
}
--- a/langtools/test/tools/javac/T8010737/ParameterNamesAreNotCopiedToAnonymousInitTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/T8010737/ParameterNamesAreNotCopiedToAnonymousInitTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -132,73 +132,74 @@
throws IOException {
Assert.checkNonNull(paramsToCheck, nonNullParamPositionsMsg);
JavaCompiler c = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm = c.getStandardFileManager(null, null, null);
- Iterable<? extends JavaFileObject> fos =
- fm.getJavaFileObjectsFromFiles(
- Arrays.asList(new File(System.getProperty("test.src"),
- this.getClass().getName() + ".java")));
- JavacTask task = (JavacTask) c.getTask(null, fm, null,
- Arrays.asList("-d", System.getProperty("user.dir")), null, fos);
+ try (StandardJavaFileManager fm = c.getStandardFileManager(null, null, null)) {
+ Iterable<? extends JavaFileObject> fos =
+ fm.getJavaFileObjectsFromFiles(
+ Arrays.asList(new File(System.getProperty("test.src"),
+ this.getClass().getName() + ".java")));
+ JavacTask task = (JavacTask) c.getTask(null, fm, null,
+ Arrays.asList("-d", System.getProperty("user.dir")), null, fos);
+
+ BasicJavacTask impl = (BasicJavacTask)task;
+ Context context = impl.getContext();
+ final Names names = Names.instance(context);
+
+ task.addTaskListener(new TaskListener() {
- BasicJavacTask impl = (BasicJavacTask)task;
- Context context = impl.getContext();
- final Names names = Names.instance(context);
+ @Override
+ public void started(TaskEvent e) {}
- task.addTaskListener(new TaskListener() {
+ @Override
+ public void finished(TaskEvent e) {
+ class TheTreeScanner extends TreeScanner {
+ boolean foundAndCorrect = false;
- @Override
- public void started(TaskEvent e) {}
+ @Override
+ public void visitMethodDef(JCTree.JCMethodDecl tree) {
+ ClassSymbol clazz = (ClassSymbol)tree.sym.owner;
+ if (clazz.owner.name.toString().equals(classOwnerName) &&
+ tree.sym.name == names.init) {
- @Override
- public void finished(TaskEvent e) {
- class TheTreeScanner extends TreeScanner {
- boolean foundAndCorrect = false;
+ int currentParamPos = 0;
+ int paramArrayIndex = 0;
- @Override
- public void visitMethodDef(JCTree.JCMethodDecl tree) {
- ClassSymbol clazz = (ClassSymbol)tree.sym.owner;
- if (clazz.owner.name.toString().equals(classOwnerName) &&
- tree.sym.name == names.init) {
-
- int currentParamPos = 0;
- int paramArrayIndex = 0;
+ List<VarSymbol> params = tree.sym.params;
+ while (params.nonEmpty() && paramArrayIndex < paramsToCheck.size()) {
+ VarSymbol param = params.head;
+ if (currentParamPos == paramsToCheck.get(paramArrayIndex)) {
+ if (!param.name.toString()
+ .equals(paramNames.get(paramArrayIndex))) {
+ error(paramNameNotCopiedAssertionMsg);
+ }
+ paramArrayIndex++;
+ }
+ currentParamPos++;
+ params = params.tail;
+ }
+ foundAndCorrect = paramArrayIndex >= paramsToCheck.size();
+ }
+ super.visitMethodDef(tree);
+ }
+ }
- List<VarSymbol> params = tree.sym.params;
- while (params.nonEmpty() && paramArrayIndex < paramsToCheck.size()) {
- VarSymbol param = params.head;
- if (currentParamPos == paramsToCheck.get(paramArrayIndex)) {
- if (!param.name.toString()
- .equals(paramNames.get(paramArrayIndex))) {
- error(paramNameNotCopiedAssertionMsg);
- }
- paramArrayIndex++;
- }
- currentParamPos++;
- params = params.tail;
- }
- foundAndCorrect = paramArrayIndex >= paramsToCheck.size();
+ if (e.getKind() == TaskEvent.Kind.ANALYZE) {
+ CompilationUnitTree compUnitTree = e.getCompilationUnit();
+ boolean foundAndCorrect = false;
+ for (Tree tree : compUnitTree.getTypeDecls()) {
+ TheTreeScanner scanner = new TheTreeScanner();
+ scanner.scan((JCTree) tree);
+ foundAndCorrect = foundAndCorrect | scanner.foundAndCorrect;
}
- super.visitMethodDef(tree);
+ if (!foundAndCorrect) {
+ error(seekMethodNotFound);
+ }
}
}
+ });
- if (e.getKind() == TaskEvent.Kind.ANALYZE) {
- CompilationUnitTree compUnitTree = e.getCompilationUnit();
- boolean foundAndCorrect = false;
- for (Tree tree : compUnitTree.getTypeDecls()) {
- TheTreeScanner scanner = new TheTreeScanner();
- scanner.scan((JCTree) tree);
- foundAndCorrect = foundAndCorrect | scanner.foundAndCorrect;
- }
- if (!foundAndCorrect) {
- error(seekMethodNotFound);
- }
- }
+ if (!task.call()) {
+ error(compilationFailed);
}
- });
-
- if (!task.call()) {
- error(compilationFailed);
}
}
--- a/langtools/test/tools/javac/TryWithResources/InterruptedExceptionTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/TryWithResources/InterruptedExceptionTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -117,16 +117,17 @@
//create default shared JavaCompiler - reused across multiple compilations
JavaCompiler comp = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null);
+ try (StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null)) {
- for (XlintOption xlint : XlintOption.values()) {
- for (SuppressLevel suppress_decl : SuppressLevel.values()) {
- for (SuppressLevel suppress_use : SuppressLevel.values()) {
- for (ClassKind ck : ClassKind.values()) {
- for (ExceptionKind ek_decl : ExceptionKind.values()) {
- for (ExceptionKind ek_use : ExceptionKind.values()) {
- new InterruptedExceptionTest(xlint, suppress_decl,
- suppress_use, ck, ek_decl, ek_use).run(comp, fm);
+ for (XlintOption xlint : XlintOption.values()) {
+ for (SuppressLevel suppress_decl : SuppressLevel.values()) {
+ for (SuppressLevel suppress_use : SuppressLevel.values()) {
+ for (ClassKind ck : ClassKind.values()) {
+ for (ExceptionKind ek_decl : ExceptionKind.values()) {
+ for (ExceptionKind ek_use : ExceptionKind.values()) {
+ new InterruptedExceptionTest(xlint, suppress_decl,
+ suppress_use, ck, ek_decl, ek_use).run(comp, fm);
+ }
}
}
}
--- a/langtools/test/tools/javac/TryWithResources/UnusedResourcesTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/TryWithResources/UnusedResourcesTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -161,20 +161,24 @@
}
public static void main(String... args) throws Exception {
- for (XlintOption xlint : XlintOption.values()) {
- for (SuppressLevel suppressLevel : SuppressLevel.values()) {
- for (ResourceUsage usage1 : ResourceUsage.values()) {
- for (ResourceUsage usage2 : ResourceUsage.values()) {
- for (ResourceUsage usage3 : ResourceUsage.values()) {
- test(xlint,
- suppressLevel,
- usage1,
- usage2,
- usage3);
+ try {
+ for (XlintOption xlint : XlintOption.values()) {
+ for (SuppressLevel suppressLevel : SuppressLevel.values()) {
+ for (ResourceUsage usage1 : ResourceUsage.values()) {
+ for (ResourceUsage usage2 : ResourceUsage.values()) {
+ for (ResourceUsage usage3 : ResourceUsage.values()) {
+ test(xlint,
+ suppressLevel,
+ usage1,
+ usage2,
+ usage3);
+ }
}
}
}
}
+ } finally {
+ fm.close();
}
}
--- a/langtools/test/tools/javac/annotations/neg/8022765/VerifyAnnotationsAttributed.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/annotations/neg/8022765/VerifyAnnotationsAttributed.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -41,38 +41,39 @@
File testSrc = new File(System.getProperty("test.src"));
File testFile = new File(testSrc, args[0]);
if (!testFile.canRead()) throw new IllegalStateException("Cannot read the test source");
- JavacFileManager fm = JavacTool.create().getStandardFileManager(null, null, null);
- JavacTask task = JavacTool.create().getTask(null,
- fm,
- null,
- Collections.<String>emptyList(),
- null,
- fm.getJavaFileObjects(testFile));
- final Trees trees = Trees.instance(task);
- final CompilationUnitTree cut = task.parse().iterator().next();
- task.analyze();
+ try (JavacFileManager fm = JavacTool.create().getStandardFileManager(null, null, null)) {
+ JavacTask task = JavacTool.create().getTask(null,
+ fm,
+ null,
+ Collections.<String>emptyList(),
+ null,
+ fm.getJavaFileObjects(testFile));
+ final Trees trees = Trees.instance(task);
+ final CompilationUnitTree cut = task.parse().iterator().next();
+ task.analyze();
- //ensure all the annotation attributes are annotated meaningfully
- //all the attributes in the test file should contain either an identifier
- //or a select, so only checking those for a reasonable Element/Symbol.
- new TreePathScanner<Void, Void>() {
- @Override
- public Void visitIdentifier(IdentifierTree node, Void p) {
- verifyAttributedMeaningfully();
- return super.visitIdentifier(node, p);
- }
- @Override
- public Void visitMemberSelect(MemberSelectTree node, Void p) {
- verifyAttributedMeaningfully();
- return super.visitMemberSelect(node, p);
- }
- private void verifyAttributedMeaningfully() {
- Element el = trees.getElement(getCurrentPath());
+ //ensure all the annotation attributes are annotated meaningfully
+ //all the attributes in the test file should contain either an identifier
+ //or a select, so only checking those for a reasonable Element/Symbol.
+ new TreePathScanner<Void, Void>() {
+ @Override
+ public Void visitIdentifier(IdentifierTree node, Void p) {
+ verifyAttributedMeaningfully();
+ return super.visitIdentifier(node, p);
+ }
+ @Override
+ public Void visitMemberSelect(MemberSelectTree node, Void p) {
+ verifyAttributedMeaningfully();
+ return super.visitMemberSelect(node, p);
+ }
+ private void verifyAttributedMeaningfully() {
+ Element el = trees.getElement(getCurrentPath());
- if (el == null || el.getKind() == ElementKind.OTHER) {
- throw new IllegalStateException("Not attributed properly: " + getCurrentPath().getParentPath().getLeaf());
+ if (el == null || el.getKind() == ElementKind.OTHER) {
+ throw new IllegalStateException("Not attributed properly: " + getCurrentPath().getParentPath().getLeaf());
+ }
}
- }
- }.scan(cut, null);
+ }.scan(cut, null);
+ }
}
}
--- a/langtools/test/tools/javac/annotations/repeatingAnnotations/combo/Helper.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/annotations/repeatingAnnotations/combo/Helper.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -102,29 +102,31 @@
throw new RuntimeException("can't get javax.tools.JavaCompiler!");
}
- StandardJavaFileManager fm = compiler.getStandardFileManager(null, null, null);
-
- // Assuming filesCount can maximum be 2 and if true, one file is package-info.java
- if (isPkgInfoPresent(files)) {
- JavacTask task = (JavacTask) compiler.getTask(null, fm, diagnostics, null, null, files);
- try {
- fm.setLocation(StandardLocation.CLASS_OUTPUT, Arrays.asList(destDir));
- task.generate();
- } catch (IOException ioe) {
- throw new RuntimeException("Compilation failed for package level tests", ioe);
+ try (StandardJavaFileManager fm = compiler.getStandardFileManager(null, null, null)) {
+ // Assuming filesCount can maximum be 2 and if true, one file is package-info.java
+ if (isPkgInfoPresent(files)) {
+ JavacTask task = (JavacTask) compiler.getTask(null, fm, diagnostics, null, null, files);
+ try {
+ fm.setLocation(StandardLocation.CLASS_OUTPUT, Arrays.asList(destDir));
+ task.generate();
+ } catch (IOException ioe) {
+ throw new RuntimeException("Compilation failed for package level tests", ioe);
+ }
+ int err = 0;
+ for (Diagnostic<? extends JavaFileObject> d : diagnostics.getDiagnostics()) {
+ if(d.getKind() == Diagnostic.Kind.ERROR) {
+ err++;
+ }
+ }
+ ok = (err == 0);
+ } else {
+ CompilationTask task = compiler.getTask(null, null, diagnostics, null, null, files);
+ ok = task.call();
}
- int err = 0;
- for (Diagnostic<? extends JavaFileObject> d : diagnostics.getDiagnostics()) {
- if(d.getKind() == Diagnostic.Kind.ERROR) {
- err++;
- }
- }
- ok = (err == 0);
- } else {
- CompilationTask task = compiler.getTask(null, null, diagnostics, null, null, files);
- ok = task.call();
+ return ok;
+ } catch (IOException e) {
+ throw new Error(e);
}
- return ok;
}
static private boolean isPkgInfoPresent(Iterable<? extends JavaFileObject> files) {
--- a/langtools/test/tools/javac/annotations/typeAnnotations/api/AnnotatedArrayOrder.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/api/AnnotatedArrayOrder.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -46,18 +46,18 @@
public static void main(String[] args) throws Exception {
PrintWriter out = new PrintWriter(System.out, true);
JavacTool tool = JavacTool.create();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- File testSrc = new File(System.getProperty("test.src"));
- Iterable<? extends JavaFileObject> f =
- fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, "AnnotatedArrayOrder.java")));
- JavacTask task = tool.getTask(out, fm, null, null, null, f);
- Iterable<? extends CompilationUnitTree> trees = task.parse();
- out.flush();
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ File testSrc = new File(System.getProperty("test.src"));
+ Iterable<? extends JavaFileObject> f =
+ fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, "AnnotatedArrayOrder.java")));
+ JavacTask task = tool.getTask(out, fm, null, null, null, f);
+ Iterable<? extends CompilationUnitTree> trees = task.parse();
+ out.flush();
- Scanner s = new Scanner();
- for (CompilationUnitTree t: trees)
- s.scan(t, null);
-
+ Scanner s = new Scanner();
+ for (CompilationUnitTree t: trees)
+ s.scan(t, null);
+ }
}
private static class Scanner extends TreeScanner<Void,Void> {
--- a/langtools/test/tools/javac/annotations/typeAnnotations/api/ArrayCreationTree.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/api/ArrayCreationTree.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -48,18 +48,18 @@
public static void main(String[] args) throws Exception {
PrintWriter out = new PrintWriter(System.out, true);
JavacTool tool = JavacTool.create();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- File testSrc = new File(System.getProperty("test.src"));
- Iterable<? extends JavaFileObject> f =
- fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, "ArrayCreationTree.java")));
- JavacTask task = tool.getTask(out, fm, null, null, null, f);
- Iterable<? extends CompilationUnitTree> trees = task.parse();
- out.flush();
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ File testSrc = new File(System.getProperty("test.src"));
+ Iterable<? extends JavaFileObject> f =
+ fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, "ArrayCreationTree.java")));
+ JavacTask task = tool.getTask(out, fm, null, null, null, f);
+ Iterable<? extends CompilationUnitTree> trees = task.parse();
+ out.flush();
- Scanner s = new Scanner();
- for (CompilationUnitTree t: trees)
- s.scan(t, null);
-
+ Scanner s = new Scanner();
+ for (CompilationUnitTree t: trees)
+ s.scan(t, null);
+ }
}
private static class Scanner extends TreeScanner<Void,Void> {
--- a/langtools/test/tools/javac/annotations/typeAnnotations/api/ArrayPositionConsistency.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/api/ArrayPositionConsistency.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -47,18 +47,18 @@
public static void main(String[] args) throws Exception {
PrintWriter out = new PrintWriter(System.out, true);
JavacTool tool = JavacTool.create();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- File testSrc = new File(System.getProperty("test.src"));
- Iterable<? extends JavaFileObject> f =
- fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, "ArrayPositionConsistency.java")));
- JavacTask task = tool.getTask(out, fm, null, null, null, f);
- Iterable<? extends CompilationUnitTree> trees = task.parse();
- out.flush();
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ File testSrc = new File(System.getProperty("test.src"));
+ Iterable<? extends JavaFileObject> f =
+ fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, "ArrayPositionConsistency.java")));
+ JavacTask task = tool.getTask(out, fm, null, null, null, f);
+ Iterable<? extends CompilationUnitTree> trees = task.parse();
+ out.flush();
- Scanner s = new Scanner();
- for (CompilationUnitTree t: trees)
- s.scan(t, null);
-
+ Scanner s = new Scanner();
+ for (CompilationUnitTree t: trees)
+ s.scan(t, null);
+ }
}
private static class Scanner extends TreeScanner<Void,Void> {
--- a/langtools/test/tools/javac/annotations/typeAnnotations/failures/CheckErrorsForSource7.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/failures/CheckErrorsForSource7.java Fri Oct 31 18:18:58 2014 +0000
@@ -72,77 +72,78 @@
File testSrc = new File(System.getProperty("test.src"));
File testFile = new File(testSrc, args[0]);
if (!testFile.canRead()) throw new IllegalStateException("Cannot read the test source");
- JavacFileManager fm = JavacTool.create().getStandardFileManager(null, null, null);
+ try (JavacFileManager fm = JavacTool.create().getStandardFileManager(null, null, null)) {
- //gather spans of the @TA annotations into typeAnnotationSpans:
- JavacTask task = JavacTool.create().getTask(null,
- fm,
- null,
- Collections.<String>emptyList(),
- null,
- fm.getJavaFileObjects(testFile));
- final Trees trees = Trees.instance(task);
- final CompilationUnitTree cut = task.parse().iterator().next();
- final List<int[]> typeAnnotationSpans = new ArrayList<>();
+ //gather spans of the @TA annotations into typeAnnotationSpans:
+ JavacTask task = JavacTool.create().getTask(null,
+ fm,
+ null,
+ Collections.<String>emptyList(),
+ null,
+ fm.getJavaFileObjects(testFile));
+ final Trees trees = Trees.instance(task);
+ final CompilationUnitTree cut = task.parse().iterator().next();
+ final List<int[]> typeAnnotationSpans = new ArrayList<>();
- new TreePathScanner<Void, Void>() {
- @Override
- public Void visitAnnotation(AnnotationTree node, Void p) {
- if (node.getAnnotationType().getKind() == Kind.IDENTIFIER &&
- ((IdentifierTree) node.getAnnotationType()).getName().contentEquals("TA")) {
- int start = (int) trees.getSourcePositions().getStartPosition(cut, node);
- int end = (int) trees.getSourcePositions().getEndPosition(cut, node);
- typeAnnotationSpans.add(new int[] {start, end});
+ new TreePathScanner<Void, Void>() {
+ @Override
+ public Void visitAnnotation(AnnotationTree node, Void p) {
+ if (node.getAnnotationType().getKind() == Kind.IDENTIFIER &&
+ ((IdentifierTree) node.getAnnotationType()).getName().contentEquals("TA")) {
+ int start = (int) trees.getSourcePositions().getStartPosition(cut, node);
+ int end = (int) trees.getSourcePositions().getEndPosition(cut, node);
+ typeAnnotationSpans.add(new int[] {start, end});
+ }
+ return null;
}
- return null;
- }
- }.scan(cut, null);
+ }.scan(cut, null);
- //sort the spans in the reverse order, to simplify removing them from the source:
- Collections.sort(typeAnnotationSpans, new Comparator<int[]>() {
- @Override
- public int compare(int[] o1, int[] o2) {
- return o2[0] - o1[0];
- }
- });
+ //sort the spans in the reverse order, to simplify removing them from the source:
+ Collections.sort(typeAnnotationSpans, new Comparator<int[]>() {
+ @Override
+ public int compare(int[] o1, int[] o2) {
+ return o2[0] - o1[0];
+ }
+ });
- //verify the errors are produce correctly:
- String originalSource = cut.getSourceFile().getCharContent(false).toString();
+ //verify the errors are produce correctly:
+ String originalSource = cut.getSourceFile().getCharContent(false).toString();
- for (int[] toKeep : typeAnnotationSpans) {
- //prepare updated source code by removing all the annotations except the toKeep one:
- String updated = originalSource;
+ for (int[] toKeep : typeAnnotationSpans) {
+ //prepare updated source code by removing all the annotations except the toKeep one:
+ String updated = originalSource;
- for (int[] span : typeAnnotationSpans) {
- if (span == toKeep) continue;
+ for (int[] span : typeAnnotationSpans) {
+ if (span == toKeep) continue;
- updated = updated.substring(0, span[0]) + updated.substring(span[1]);
- }
+ updated = updated.substring(0, span[0]) + updated.substring(span[1]);
+ }
- //parse and verify:
- JavaFileObject updatedFile = new TestFO(cut.getSourceFile().toUri(), updated);
- DiagnosticCollector<JavaFileObject> errors = new DiagnosticCollector<>();
- JavacTask task2 = JavacTool.create().getTask(null,
- fm,
- errors,
- Arrays.asList("-source", "7"),
- null,
- Arrays.asList(updatedFile));
- task2.parse();
+ //parse and verify:
+ JavaFileObject updatedFile = new TestFO(cut.getSourceFile().toUri(), updated);
+ DiagnosticCollector<JavaFileObject> errors = new DiagnosticCollector<>();
+ JavacTask task2 = JavacTool.create().getTask(null,
+ fm,
+ errors,
+ Arrays.asList("-source", "7"),
+ null,
+ Arrays.asList(updatedFile));
+ task2.parse();
+
+ boolean found = false;
- boolean found = false;
-
- for (Diagnostic<? extends JavaFileObject> d : errors.getDiagnostics()) {
- if (d.getKind() == Diagnostic.Kind.ERROR && EXPECTED_ERRORS.contains(d.getCode())) {
- if (found) {
- throw new IllegalStateException("More than one expected error found.");
+ for (Diagnostic<? extends JavaFileObject> d : errors.getDiagnostics()) {
+ if (d.getKind() == Diagnostic.Kind.ERROR && EXPECTED_ERRORS.contains(d.getCode())) {
+ if (found) {
+ throw new IllegalStateException("More than one expected error found.");
+ }
+ found = true;
}
- found = true;
}
+
+ if (!found)
+ throw new IllegalStateException("Did not produce proper errors for: " + updated);
}
-
- if (!found)
- throw new IllegalStateException("Did not produce proper errors for: " + updated);
}
}
--- a/langtools/test/tools/javac/api/6406133/T6406133.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/6406133/T6406133.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -106,6 +106,8 @@
}
public static void main(String... args) throws Exception {
- new T6406133().test();
+ try (T6406133 t = new T6406133()) {
+ t.test();
+ }
}
}
--- a/langtools/test/tools/javac/api/6410643/T6410643.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/6410643/T6410643.java Fri Oct 31 18:18:58 2014 +0000
@@ -31,6 +31,7 @@
* @run main T6410643
*/
+import java.io.IOException;
import javax.tools.JavaFileObject;
import static java.util.Collections.singleton;
@@ -68,7 +69,10 @@
testGetTask(s, s, f);
System.err.println("Test result: PASSED");
}
- public static void main(String... args) {
- new T6410643().test(args);
+
+ public static void main(String... args) throws IOException {
+ try (T6410643 t = new T6410643()) {
+ t.test(args);
+ }
}
}
--- a/langtools/test/tools/javac/api/6411310/T6411310.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/6411310/T6411310.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -54,6 +54,8 @@
}
public static void main(String... args) throws IOException {
- new T6411310().test(args);
+ try (T6411310 t = new T6411310()) {
+ t.test(args);
+ }
}
}
--- a/langtools/test/tools/javac/api/6411333/T6411333.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/6411333/T6411333.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -82,7 +82,10 @@
testRelativeUri("util/List.java", false);
testRelativeUri("/util/List.java", true);
}
- public static void main(String... args) {
- new T6411333().test(args);
+
+ public static void main(String... args) throws IOException {
+ try (T6411333 t = new T6411333()) {
+ t.test(args);
+ }
}
}
--- a/langtools/test/tools/javac/api/6412656/T6412656.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/6412656/T6412656.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@
* @run main T6412656
*/
+import java.io.IOException;
import java.util.Set;
import java.util.Collections;
import javax.lang.model.element.TypeElement;
@@ -52,8 +53,10 @@
System.out.println("OK");
}
- public static void main(String... args) {
- new T6412656().test(args);
+ public static void main(String... args) throws IOException {
+ try (T6412656 t = new T6412656()) {
+ t.test(args);
+ }
}
@SupportedAnnotationTypes("*")
--- a/langtools/test/tools/javac/api/6415780/T6415780.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/6415780/T6415780.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -32,6 +32,7 @@
* @run main T6415780
*/
+import java.io.IOException;
import static javax.tools.StandardLocation.CLASS_PATH;
public class T6415780 extends ToolTester {
@@ -39,8 +40,9 @@
System.out.println(fm.getClassLoader(CLASS_PATH).toString()); // null-check
}
- public static void main(String... args) {
- T6415780 tester = new T6415780();
- tester.test();
+ public static void main(String... args) throws IOException {
+ try (T6415780 tester = new T6415780()) {
+ tester.test();
+ }
}
}
--- a/langtools/test/tools/javac/api/6418694/T6418694.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/6418694/T6418694.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -32,6 +32,7 @@
* @run main T6418694
*/
+import java.io.IOException;
import javax.tools.StandardLocation;
public class T6418694 extends ToolTester {
@@ -52,7 +53,9 @@
}
}
}
- public static void main(String... args) {
- new T6418694().test(args);
+ public static void main(String... args) throws IOException {
+ try (T6418694 t = new T6418694()) {
+ t.test(args);
+ }
}
}
--- a/langtools/test/tools/javac/api/6420409/T6420409.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/6420409/T6420409.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -46,21 +46,22 @@
public static void main(String... args) throws IOException {
final JavaCompiler tool = ToolProvider.getSystemJavaCompiler();
- final StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- fm.setLocation(SOURCE_PATH, Arrays.asList(test_classes)); // switcheroo !!!
- fm.setLocation(CLASS_PATH, Arrays.asList(test_src));
- fm.setLocation(CLASS_OUTPUT, Arrays.asList(test_classes));
- final Iterable<? extends JavaFileObject> compilationUnits =
- fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(test_src, "T6420409.java")));
- tool.getTask(null,
- fm,
- null,
- Arrays.asList("-proc:none"),
- null,
- compilationUnits).call();
- test(fm.getLocation(CLASS_PATH), test_src, CLASS_PATH);
- test(fm.getLocation(SOURCE_PATH), test_classes, SOURCE_PATH);
- test(fm.getLocation(CLASS_OUTPUT), test_classes, CLASS_OUTPUT);
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ fm.setLocation(SOURCE_PATH, Arrays.asList(test_classes)); // switcheroo !!!
+ fm.setLocation(CLASS_PATH, Arrays.asList(test_src));
+ fm.setLocation(CLASS_OUTPUT, Arrays.asList(test_classes));
+ final Iterable<? extends JavaFileObject> compilationUnits =
+ fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(test_src, "T6420409.java")));
+ tool.getTask(null,
+ fm,
+ null,
+ Arrays.asList("-proc:none"),
+ null,
+ compilationUnits).call();
+ test(fm.getLocation(CLASS_PATH), test_src, CLASS_PATH);
+ test(fm.getLocation(SOURCE_PATH), test_classes, SOURCE_PATH);
+ test(fm.getLocation(CLASS_OUTPUT), test_classes, CLASS_OUTPUT);
+ }
}
static void test(Iterable<? extends File> path, File file, Location location) {
--- a/langtools/test/tools/javac/api/6420464/T6420464.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/6420464/T6420464.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -38,15 +38,16 @@
public static void main(String... args) throws IOException {
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager mgr = compiler.getStandardFileManager(null, null, null);
- mgr.setLocation(StandardLocation.SOURCE_PATH, Collections.singleton(test_src));
- JavaFileObject f = mgr.getJavaFileForInput(StandardLocation.SOURCE_PATH,
- "T6420464",
- JavaFileObject.Kind.SOURCE);
- if (!f.isNameCompatible("T6420464", JavaFileObject.Kind.SOURCE))
- throw new AssertionError("isNameCompatible(SOURCE) fails on " + f.toUri());
- if (f.isNameCompatible("T6420464", JavaFileObject.Kind.OTHER))
- throw new AssertionError("isNameCompatible(OTHER) fails on " + f.toUri());
- System.out.println("OK");
+ try (StandardJavaFileManager mgr = compiler.getStandardFileManager(null, null, null)) {
+ mgr.setLocation(StandardLocation.SOURCE_PATH, Collections.singleton(test_src));
+ JavaFileObject f = mgr.getJavaFileForInput(StandardLocation.SOURCE_PATH,
+ "T6420464",
+ JavaFileObject.Kind.SOURCE);
+ if (!f.isNameCompatible("T6420464", JavaFileObject.Kind.SOURCE))
+ throw new AssertionError("isNameCompatible(SOURCE) fails on " + f.toUri());
+ if (f.isNameCompatible("T6420464", JavaFileObject.Kind.OTHER))
+ throw new AssertionError("isNameCompatible(OTHER) fails on " + f.toUri());
+ System.out.println("OK");
+ }
}
}
--- a/langtools/test/tools/javac/api/6421111/T6421111.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/6421111/T6421111.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -33,6 +33,7 @@
*/
import java.io.File;
+import java.io.IOException;
import java.net.URI;
import java.util.Arrays;
import java.util.Collections;
@@ -101,8 +102,10 @@
return SourceVersion.latest();
}
}
- public static void main(String... args) {
- new T6421111().test(args);
+ public static void main(String... args) throws IOException {
+ try (T6421111 t = new T6421111()) {
+ t.test(args);
+ }
}
public static AssertionError error(String format, Object... args) {
return new AssertionError(String.format(format, args));
--- a/langtools/test/tools/javac/api/6421756/T6421756.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/6421756/T6421756.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -32,6 +32,7 @@
* @run main T6421756
*/
+import java.io.IOException;
import java.util.Collections;
public class T6421756 extends ToolTester {
@@ -44,7 +45,9 @@
System.out.println("OK: got expected error " + e.getLocalizedMessage());
}
}
- public static void main(String... args) {
- new T6421756().test(args);
+ public static void main(String... args) throws IOException {
+ try (T6421756 t = new T6421756()) {
+ t.test(args);
+ }
}
}
--- a/langtools/test/tools/javac/api/6422215/T6422215.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/6422215/T6422215.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -46,7 +46,9 @@
System.out.println("OK: caught expected exception: " + e.getLocalizedMessage());
}
}
- public static void main(String... args) {
- new T6422215().test(args);
+ public static void main(String... args) throws IOException {
+ try (T6422215 t = new T6422215()) {
+ t.test(args);
+ }
}
}
--- a/langtools/test/tools/javac/api/6422327/T6422327.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/6422327/T6422327.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -32,6 +32,7 @@
*/
import java.io.File;
+import java.io.IOException;
public class T6422327 extends ToolTester {
void test(String... args) {
@@ -43,7 +44,9 @@
System.err.println("OK, got expected exception: " + e.getLocalizedMessage());
}
}
- public static void main(String... args) {
- new T6422327().test(args);
+ public static void main(String... args) throws IOException {
+ try (T6422327 t = new T6422327()) {
+ t.test(args);
+ }
}
}
--- a/langtools/test/tools/javac/api/6423003/T6423003.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/6423003/T6423003.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -32,6 +32,7 @@
* @run main T6423003
*/
+import java.io.IOException;
import java.util.Arrays;
public class T6423003 extends ToolTester {
@@ -44,7 +45,9 @@
}
throw new AssertionError("Expected IllegalStateException not thrown");
}
- public static void main(String... args) {
- new T6423003().test(args);
+ public static void main(String... args) throws IOException {
+ try (T6423003 t = new T6423003()) {
+ t.test(args);
+ }
}
}
--- a/langtools/test/tools/javac/api/6431257/T6431257.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/6431257/T6431257.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -67,6 +67,8 @@
}
public static void main(String... args) throws IOException {
- new T6431257().test(args);
+ try (T6431257 t = new T6431257()) {
+ t.test(args);
+ }
}
}
--- a/langtools/test/tools/javac/api/6431435/T6431435.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/6431435/T6431435.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -39,18 +39,19 @@
String testSrc = System.getProperty("test.src", ".");
String testClasses = System.getProperty("test.classes", ".");
JavacTool tool = JavacTool.create();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- fm.setLocation(StandardLocation.CLASS_OUTPUT, Arrays.asList(new File(".")));
- fm.setLocation(StandardLocation.SOURCE_PATH, Arrays.asList(new File(testSrc)));
- Iterable<? extends JavaFileObject> files = fm.getJavaFileObjectsFromFiles(Arrays.asList(
- new File(testSrc, "A.java")));
- JavacTask task = tool.getTask(null, fm, null, null, null, files);
- boolean ok = true;
- ok &= check("parse", task.parse(), 1); // A.java
- ok &= check("analyze", task.analyze(), 3); // A, Foo, p.B
- ok &= check("generate", task.generate(), 5); // A, Foo, Foo$Baz, Foo$1, p.B
- if (!ok)
- throw new AssertionError("Test failed");
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ fm.setLocation(StandardLocation.CLASS_OUTPUT, Arrays.asList(new File(".")));
+ fm.setLocation(StandardLocation.SOURCE_PATH, Arrays.asList(new File(testSrc)));
+ Iterable<? extends JavaFileObject> files = fm.getJavaFileObjectsFromFiles(Arrays.asList(
+ new File(testSrc, "A.java")));
+ JavacTask task = tool.getTask(null, fm, null, null, null, files);
+ boolean ok = true;
+ ok &= check("parse", task.parse(), 1); // A.java
+ ok &= check("analyze", task.analyze(), 3); // A, Foo, p.B
+ ok &= check("generate", task.generate(), 5); // A, Foo, Foo$Baz, Foo$1, p.B
+ if (!ok)
+ throw new AssertionError("Test failed");
+ }
}
private static boolean check(String name, Iterable<?> iter, int expect) {
--- a/langtools/test/tools/javac/api/6437349/T6437349.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/6437349/T6437349.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -51,6 +51,8 @@
throw new AssertionError();
}
public static void main(String... args) throws IOException {
- new T6437349().test(args);
+ try (T6437349 t = new T6437349()) {
+ t.test(args);
+ }
}
}
--- a/langtools/test/tools/javac/api/6437999/T6437999.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/6437999/T6437999.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -86,6 +86,8 @@
throw new AssertionError("Error in UTF-8 mode");
}
public static void main(String... args) throws IOException {
- new T6437999().test(args);
+ try (T6437999 t = new T6437999()) {
+ t.test(args);
+ }
}
}
--- a/langtools/test/tools/javac/api/6440333/T6440333.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/6440333/T6440333.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -50,6 +50,8 @@
}
}
public static void main(String... args) throws IOException {
- new T6440333().test(args);
+ try (T6440333 t = new T6440333()) {
+ t.test(args);
+ }
}
}
--- a/langtools/test/tools/javac/api/6440528/T6440528.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/6440528/T6440528.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -66,6 +66,8 @@
}
public static void main(String... args) throws Exception {
- new T6440528().test(args);
+ try (T6440528 t = new T6440528()) {
+ t.test(args);
+ }
}
}
--- a/langtools/test/tools/javac/api/6468404/T6468404.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/6468404/T6468404.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -88,8 +88,10 @@
if (!task.call())
throw new AssertionError();
}
- public static void main(String... args) {
- new T6468404().test(args);
+ public static void main(String... args) throws IOException {
+ try (T6468404 t = new T6468404()) {
+ t.test(args);
+ }
}
}
--- a/langtools/test/tools/javac/api/6731573/T6731573.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/6731573/T6731573.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -106,6 +106,8 @@
}
public static void main(String... args) throws Exception {
- new T6731573().test();
+ try (T6731573 t = new T6731573()) {
+ t.test();
+ }
}
}
--- a/langtools/test/tools/javac/api/6733837/T6733837.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/6733837/T6733837.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@
* @run main T6733837
*/
+import java.io.IOException;
import java.io.StringWriter;
import java.io.PrintWriter;
import java.net.URI;
@@ -43,8 +44,10 @@
public class T6733837 extends ToolTester {
- public static void main(String... args) {
- new T6733837().exec();
+ public static void main(String... args) throws IOException {
+ try (T6733837 t = new T6733837()) {
+ t.exec();
+ }
}
public void exec() {
--- a/langtools/test/tools/javac/api/7086261/T7086261.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/7086261/T7086261.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -66,10 +66,11 @@
void test() throws Throwable {
JavaCompiler javac = ToolProvider.getSystemJavaCompiler();
- JavaFileManager jfm = javac.getStandardFileManager(null, null, null);
- JavaCompiler.CompilationTask task =
- javac.getTask(null, jfm, new DiagnosticChecker(), null, null, Arrays.asList(new ErroneousSource()));
- task.call();
+ try (JavaFileManager jfm = javac.getStandardFileManager(null, null, null)) {
+ JavaCompiler.CompilationTask task =
+ javac.getTask(null, jfm, new DiagnosticChecker(), null, null, Arrays.asList(new ErroneousSource()));
+ task.call();
+ }
}
public static void main(String[] args) throws Throwable {
--- a/langtools/test/tools/javac/api/8007344/Test.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/8007344/Test.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -83,14 +83,15 @@
File testSrc = new File(System.getProperty("test.src"));
File thisFile = new File(testSrc, getClass().getName() + ".java");
JavacTool javac = JavacTool.create();
- StandardJavaFileManager fm = javac.getStandardFileManager(null, null, null);
- fm.setLocation(StandardLocation.CLASS_OUTPUT, Arrays.asList(new File(".")));
- Iterable<? extends JavaFileObject> fos = fm.getJavaFileObjects(thisFile);
- testAnnoProcessor(javac, fm, fos, out, EXPECT_DOC_COMMENTS);
- testTaskListener(javac, fm, fos, out, EXPECT_DOC_COMMENTS);
+ try (StandardJavaFileManager fm = javac.getStandardFileManager(null, null, null)) {
+ fm.setLocation(StandardLocation.CLASS_OUTPUT, Arrays.asList(new File(".")));
+ Iterable<? extends JavaFileObject> fos = fm.getJavaFileObjects(thisFile);
+ testAnnoProcessor(javac, fm, fos, out, EXPECT_DOC_COMMENTS);
+ testTaskListener(javac, fm, fos, out, EXPECT_DOC_COMMENTS);
- if (errors > 0)
- throw new Exception(errors + " errors occurred");
+ if (errors > 0)
+ throw new Exception(errors + " errors occurred");
+ }
}
void testAnnoProcessor(JavacTool javac, StandardJavaFileManager fm,
--- a/langtools/test/tools/javac/api/Sibling.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/Sibling.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -39,17 +39,18 @@
public class Sibling {
public static void main(String... args) throws IOException {
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm = compiler.getStandardFileManager(null, null, null);
- JavaFileObject sibling =
- fm.getJavaFileObjectsFromFiles(Arrays.asList(new File("Test.java")))
- .iterator().next();
- JavaFileObject classFile = fm.getJavaFileForOutput(CLASS_OUTPUT,
- "foo.bar.baz.Test",
- CLASS,
- sibling);
- File file = new File("Test.class").getAbsoluteFile();
- if (!classFile.toUri().equals(file.toURI()))
- throw new AssertionError("Expected " + file.toURI() + ", got " +
- classFile.toUri());
+ try (StandardJavaFileManager fm = compiler.getStandardFileManager(null, null, null)) {
+ JavaFileObject sibling =
+ fm.getJavaFileObjectsFromFiles(Arrays.asList(new File("Test.java")))
+ .iterator().next();
+ JavaFileObject classFile = fm.getJavaFileForOutput(CLASS_OUTPUT,
+ "foo.bar.baz.Test",
+ CLASS,
+ sibling);
+ File file = new File("Test.class").getAbsoluteFile();
+ if (!classFile.toUri().equals(file.toURI()))
+ throw new AssertionError("Expected " + file.toURI() + ", got " +
+ classFile.toUri());
+ }
}
}
--- a/langtools/test/tools/javac/api/T6258271.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/T6258271.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -33,7 +33,7 @@
import javax.tools.*;
public class T6258271 {
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
JavaCompiler javac = ToolProvider.getSystemJavaCompiler();
DiagnosticListener<JavaFileObject> dl = new DiagnosticListener<JavaFileObject>() {
public void report(Diagnostic<? extends JavaFileObject> message) {
@@ -43,9 +43,10 @@
System.out.println(message);
}
};
- StandardJavaFileManager fm = javac.getStandardFileManager(dl, null, null);
- Iterable<? extends JavaFileObject> files =
- fm.getJavaFileObjectsFromStrings(Arrays.asList("nofile.java"));
- javac.getTask(null, fm, dl, null, null, files).call();
+ try (StandardJavaFileManager fm = javac.getStandardFileManager(dl, null, null)) {
+ Iterable<? extends JavaFileObject> files =
+ fm.getJavaFileObjectsFromStrings(Arrays.asList("nofile.java"));
+ javac.getTask(null, fm, dl, null, null, files).call();
+ }
}
}
--- a/langtools/test/tools/javac/api/T6265137.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/T6265137.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -29,11 +29,12 @@
*/
import java.io.File;
+import java.io.IOException;
import java.util.Arrays;
import javax.tools.*;
public class T6265137 {
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
JavaCompiler javac = ToolProvider.getSystemJavaCompiler();
DiagnosticListener<JavaFileObject> dl = new DiagnosticListener<JavaFileObject>() {
public void report(Diagnostic<? extends JavaFileObject> message) {
@@ -45,10 +46,11 @@
System.out.flush();
}
};
- StandardJavaFileManager fm = javac.getStandardFileManager(dl, null, null);
- String srcdir = System.getProperty("test.src");
- Iterable<? extends JavaFileObject> files =
- fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(srcdir, "T6265137a.java")));
- javac.getTask(null, fm, dl, Arrays.asList("-target","9"), null, files).call();
+ try (StandardJavaFileManager fm = javac.getStandardFileManager(dl, null, null)) {
+ String srcdir = System.getProperty("test.src");
+ Iterable<? extends JavaFileObject> files =
+ fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(srcdir, "T6265137a.java")));
+ javac.getTask(null, fm, dl, Arrays.asList("-target","9"), null, files).call();
+ }
}
}
--- a/langtools/test/tools/javac/api/T6306137.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/T6306137.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -87,10 +87,18 @@
}
}
+ void close() throws IOException {
+ fm.close();
+ }
+
public static void main(String[] args) throws IOException {
T6306137 self = new T6306137();
- self.test("utf-8", true);
- self.test("ascii", false);
- self.test("utf-8", true);
+ try {
+ self.test("utf-8", true);
+ self.test("ascii", false);
+ self.test("utf-8", true);
+ } finally {
+ self.close();
+ }
}
}
--- a/langtools/test/tools/javac/api/T6345974.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/T6345974.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -45,17 +45,18 @@
public static void main(String[] args) throws Exception {
PrintWriter out = new PrintWriter(System.out, true);
JavacTool tool = JavacTool.create();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- File testSrc = new File(System.getProperty("test.src"));
- Iterable<? extends JavaFileObject> f =
- fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, "T6345974.java")));
- JavacTask task = tool.getTask(out, fm, null, null, null, f);
- Iterable<? extends CompilationUnitTree> trees = task.parse();
- out.flush();
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ File testSrc = new File(System.getProperty("test.src"));
+ Iterable<? extends JavaFileObject> f =
+ fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, "T6345974.java")));
+ JavacTask task = tool.getTask(out, fm, null, null, null, f);
+ Iterable<? extends CompilationUnitTree> trees = task.parse();
+ out.flush();
- Scanner s = new Scanner();
- for (CompilationUnitTree t: trees)
- s.scan(t, null);
+ Scanner s = new Scanner();
+ for (CompilationUnitTree t: trees)
+ s.scan(t, null);
+ }
}
private static class Scanner extends TreeScanner<Void,Void> {
--- a/langtools/test/tools/javac/api/T6357331.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/T6357331.java Fri Oct 31 18:18:58 2014 +0000
@@ -33,42 +33,43 @@
public class T6357331
{
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
JavaCompiler tool = ToolProvider.getSystemJavaCompiler();
PrintWriter out = new PrintWriter(new StringWriter());
List<String> opts = Arrays.asList("-d", ".");
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- File thisFile = new File(System.getProperty("test.src"), "T6357331.java");
- Iterable<? extends JavaFileObject> files = fm.getJavaFileObjects(thisFile);
- final JavacTask task = (JavacTask) (tool.getTask(out, fm, null, opts, null, files));
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ File thisFile = new File(System.getProperty("test.src"), "T6357331.java");
+ Iterable<? extends JavaFileObject> files = fm.getJavaFileObjects(thisFile);
+ final JavacTask task = (JavacTask) (tool.getTask(out, fm, null, opts, null, files));
- // set a listener to verify that IllegalStateException is not thrown
- // during the compilation
- task.setTaskListener(new TaskListener() {
- public void started(TaskEvent e) {
- task.getElements();
- task.getTypes();
- }
- public void finished(TaskEvent e) { }
- });
+ // set a listener to verify that IllegalStateException is not thrown
+ // during the compilation
+ task.setTaskListener(new TaskListener() {
+ public void started(TaskEvent e) {
+ task.getElements();
+ task.getTypes();
+ }
+ public void finished(TaskEvent e) { }
+ });
+
+ task.call();
- task.call();
+ // now the compilation is over, we expect IllegalStateException (not NPE)
+ try {
+ task.getElements();
+ throw new AssertionError("IllegalStateException not thrown");
+ }
+ catch (IllegalStateException e) {
+ // expected
+ }
- // now the compilation is over, we expect IllegalStateException (not NPE)
- try {
- task.getElements();
- throw new AssertionError("IllegalStateException not thrown");
- }
- catch (IllegalStateException e) {
- // expected
- }
-
- try {
- task.getTypes();
- throw new AssertionError("IllegalStateException not thrown");
- }
- catch (IllegalStateException e) {
- // expected
+ try {
+ task.getTypes();
+ throw new AssertionError("IllegalStateException not thrown");
+ }
+ catch (IllegalStateException e) {
+ // expected
+ }
}
}
}
--- a/langtools/test/tools/javac/api/T6358786.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/T6358786.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -44,16 +44,17 @@
public class T6358786 {
public static void main(String... args) throws IOException {
JavaCompiler tool = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- String srcdir = System.getProperty("test.src");
- File file = new File(srcdir, args[0]);
- JavacTaskImpl task = (JavacTaskImpl)tool.getTask(null, fm, null, null, null, fm.getJavaFileObjectsFromFiles(Arrays.asList(file)));
- Elements elements = task.getElements();
- for (TypeElement clazz : task.enter(task.parse())) {
- String doc = elements.getDocComment(clazz);
- if (doc == null)
- throw new AssertionError(clazz.getSimpleName() + ": no doc comment");
- System.out.format("%s: %s%n", clazz.getSimpleName(), doc);
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ String srcdir = System.getProperty("test.src");
+ File file = new File(srcdir, args[0]);
+ JavacTaskImpl task = (JavacTaskImpl)tool.getTask(null, fm, null, null, null, fm.getJavaFileObjectsFromFiles(Arrays.asList(file)));
+ Elements elements = task.getElements();
+ for (TypeElement clazz : task.enter(task.parse())) {
+ String doc = elements.getDocComment(clazz);
+ if (doc == null)
+ throw new AssertionError(clazz.getSimpleName() + ": no doc comment");
+ System.out.format("%s: %s%n", clazz.getSimpleName(), doc);
+ }
}
}
}
--- a/langtools/test/tools/javac/api/T6358955.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/T6358955.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -36,34 +36,35 @@
public class T6358955 {
public static void main(String[] args) throws Exception {
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager jfm = compiler.getStandardFileManager(null, null, null);
+ try (StandardJavaFileManager jfm = compiler.getStandardFileManager(null, null, null)) {
- File dir = new File("temp" + args.hashCode());
- if (!dir.exists())
- dir.mkdir();
- if (!dir.isDirectory())
- throw new AssertionError("Not a directory " + dir);
+ File dir = new File("temp" + args.hashCode());
+ if (!dir.exists())
+ dir.mkdir();
+ if (!dir.isDirectory())
+ throw new AssertionError("Not a directory " + dir);
- try {
- jfm.setLocation(StandardLocation.CLASS_OUTPUT,
- Arrays.asList(dir.getCanonicalFile().getParentFile()));
try {
- jfm.getFileForInput(StandardLocation.CLASS_OUTPUT, "", dir.getPath());
- throw new AssertionError("IllegalArgumentException not thrown");
- } catch (IllegalArgumentException e) {
- System.out.println("OK: " + e.getLocalizedMessage());
- }
- try {
- jfm.getJavaFileObjectsFromFiles(Arrays.asList(dir));
- throw new AssertionError("IllegalArgumentException not thrown");
- } catch (IllegalArgumentException e) {
- System.out.println("OK: " + e.getLocalizedMessage());
- }
- } finally {
- try {
- dir.delete(); // cleanup
- } catch (Throwable t) {
- t.printStackTrace();
+ jfm.setLocation(StandardLocation.CLASS_OUTPUT,
+ Arrays.asList(dir.getCanonicalFile().getParentFile()));
+ try {
+ jfm.getFileForInput(StandardLocation.CLASS_OUTPUT, "", dir.getPath());
+ throw new AssertionError("IllegalArgumentException not thrown");
+ } catch (IllegalArgumentException e) {
+ System.out.println("OK: " + e.getLocalizedMessage());
+ }
+ try {
+ jfm.getJavaFileObjectsFromFiles(Arrays.asList(dir));
+ throw new AssertionError("IllegalArgumentException not thrown");
+ } catch (IllegalArgumentException e) {
+ System.out.println("OK: " + e.getLocalizedMessage());
+ }
+ } finally {
+ try {
+ dir.delete(); // cleanup
+ } catch (Throwable t) {
+ t.printStackTrace();
+ }
}
}
}
--- a/langtools/test/tools/javac/api/T6392782.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/T6392782.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -38,21 +38,22 @@
public static void main(String... args) throws IOException {
String testSrc = System.getProperty("test.src", ".");
JavacTool tool = JavacTool.create();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- Iterable<? extends JavaFileObject> files =
- fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, T6392782.class.getName()+".java")));
- JavacTask task = tool.getTask(null, fm, null, null, null, files);
- Iterable<? extends Tree> trees = task.parse();
- TreeScanner<Integer,Void> scanner = new MyScanner();
- check(scanner, 6, scanner.scan(trees, null));
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ Iterable<? extends JavaFileObject> files =
+ fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, T6392782.class.getName()+".java")));
+ JavacTask task = tool.getTask(null, fm, null, null, null, files);
+ Iterable<? extends Tree> trees = task.parse();
+ TreeScanner<Integer,Void> scanner = new MyScanner();
+ check(scanner, 6, scanner.scan(trees, null));
- CountNodes nodeCounter = new CountNodes();
- // 359 nodes with the regular parser; 360 nodes with EndPosParser
- // We automatically switch to EndPosParser when calling JavacTask.parse()
- check(nodeCounter, 360, nodeCounter.scan(trees, null));
+ CountNodes nodeCounter = new CountNodes();
+ // 359 nodes with the regular parser; 360 nodes with EndPosParser
+ // We automatically switch to EndPosParser when calling JavacTask.parse()
+ check(nodeCounter, 362, nodeCounter.scan(trees, null));
- CountIdentifiers idCounter = new CountIdentifiers();
- check(idCounter, 107, idCounter.scan(trees, null));
+ CountIdentifiers idCounter = new CountIdentifiers();
+ check(idCounter, 107, idCounter.scan(trees, null));
+ }
}
private static void check(TreeScanner<?,?> scanner, int expect, int found) {
--- a/langtools/test/tools/javac/api/T6397104.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/T6397104.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -65,16 +65,15 @@
void test(boolean hasLocation, File siblingFile, String relName, String expectedPath)
throws Exception
{
- StandardJavaFileManager fm;
- if (hasLocation) {
- for (Location location : StandardLocation.values()) {
- fm = tool.getStandardFileManager(null, null, null);
- fm.setLocation(location, Arrays.asList(new File(".")));
- test(fm, location, siblingFile, relName, expectedPath);
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ if (hasLocation) {
+ for (Location location : StandardLocation.values()) {
+ fm.setLocation(location, Arrays.asList(new File(".")));
+ test(fm, location, siblingFile, relName, expectedPath);
+ }
+ } else {
+ test(fm, CLASS_OUTPUT, siblingFile, relName, expectedPath);
}
- } else {
- fm = tool.getStandardFileManager(null, null, null);
- test(fm, CLASS_OUTPUT, siblingFile, relName, expectedPath);
}
}
--- a/langtools/test/tools/javac/api/T6400205.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/T6400205.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -28,22 +28,24 @@
* @author Peter von der Ah\u00e9
*/
+import java.io.IOException;
import javax.tools.*;
import static javax.tools.StandardLocation.*;
public class T6400205 {
- public static void main(String... args) {
- JavaFileManager fm =
- ToolProvider.getSystemJavaCompiler().getStandardFileManager(null, null, null);
- try {
- fm.getClassLoader(null);
- throw new AssertionError("NullPointerException not thrown");
- } catch (NullPointerException e) {
- // expected result
+ public static void main(String... args) throws IOException {
+ try (JavaFileManager fm =
+ ToolProvider.getSystemJavaCompiler().getStandardFileManager(null, null, null)) {
+ try {
+ fm.getClassLoader(null);
+ throw new AssertionError("NullPointerException not thrown");
+ } catch (NullPointerException e) {
+ // expected result
+ }
+ ClassLoader cl = fm.getClassLoader(locationFor("bogus"));
+ if (cl != null)
+ throw new AssertionError("non-null class loader for bogus location");
+ System.err.println("Test PASSED.");
}
- ClassLoader cl = fm.getClassLoader(locationFor("bogus"));
- if (cl != null)
- throw new AssertionError("non-null class loader for bogus location");
- System.err.println("Test PASSED.");
}
}
--- a/langtools/test/tools/javac/api/T6400207.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/T6400207.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -61,28 +61,29 @@
}
public static void main(String... args) throws Exception {
- JavaFileManager fm =
- ToolProvider.getSystemJavaCompiler().getStandardFileManager(null, null, null);
- JavaFileManager.Location bogusLocation = locationFor("bogus");
- JavaFileManager.Location knownLocation = CLASS_PATH;
- String packageName = "java.lang";
- Set<JavaFileObject.Kind> kinds = EnumSet.of(CLASS);
+ try (JavaFileManager fm =
+ ToolProvider.getSystemJavaCompiler().getStandardFileManager(null, null, null)) {
+ JavaFileManager.Location bogusLocation = locationFor("bogus");
+ JavaFileManager.Location knownLocation = CLASS_PATH;
+ String packageName = "java.lang";
+ Set<JavaFileObject.Kind> kinds = EnumSet.of(CLASS);
- for (StandardLocation location : StandardLocation.values()) {
- if (location != locationFor(location.getName()))
- throw new AssertionError(location + " != locationFor(" +
- location.getName() + ")");
+ for (StandardLocation location : StandardLocation.values()) {
+ if (location != locationFor(location.getName()))
+ throw new AssertionError(location + " != locationFor(" +
+ location.getName() + ")");
+ }
+
+ testList(fm, null, null, null);
+ testList(fm, bogusLocation, packageName, kinds);
+ testList(fm, knownLocation, packageName, kinds);
+ testList(fm, null, packageName, kinds);
+ testList(fm, knownLocation, null, kinds);
+ testList(fm, knownLocation, packageName, null);
+ testList(fm, bogusLocation, null, kinds);
+ testList(fm, bogusLocation, packageName, null);
+
+ System.err.println("Test PASSED.");
}
-
- testList(fm, null, null, null);
- testList(fm, bogusLocation, packageName, kinds);
- testList(fm, knownLocation, packageName, kinds);
- testList(fm, null, packageName, kinds);
- testList(fm, knownLocation, null, kinds);
- testList(fm, knownLocation, packageName, null);
- testList(fm, bogusLocation, null, kinds);
- testList(fm, bogusLocation, packageName, null);
-
- System.err.println("Test PASSED.");
}
}
--- a/langtools/test/tools/javac/api/T6412669.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/T6412669.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -64,22 +64,23 @@
//System.err.println("toolsClasses: " + toolsClasses);
JavacTool tool = JavacTool.create();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- fm.setLocation(StandardLocation.CLASS_PATH, Arrays.asList(testClasses, toolsClasses));
- Iterable<? extends JavaFileObject> files =
- fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, T6412669.class.getName()+".java")));
- String[] opts = { "-proc:only", "-processor", T6412669.class.getName()};
- StringWriter sw = new StringWriter();
- JavacTask task = tool.getTask(sw, fm, null, Arrays.asList(opts), null, files);
- boolean ok = task.call();
- String out = sw.toString();
- if (!out.isEmpty())
- System.err.println(out);
- if (!ok)
- throw new AssertionError("compilation of test program failed");
- // verify we found an annotated element to exercise the SourcePositions API
- if (!out.contains("processing element"))
- throw new AssertionError("expected text not found in compilation output");
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ fm.setLocation(StandardLocation.CLASS_PATH, Arrays.asList(testClasses, toolsClasses));
+ Iterable<? extends JavaFileObject> files =
+ fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, T6412669.class.getName()+".java")));
+ String[] opts = { "-proc:only", "-processor", T6412669.class.getName()};
+ StringWriter sw = new StringWriter();
+ JavacTask task = tool.getTask(sw, fm, null, Arrays.asList(opts), null, files);
+ boolean ok = task.call();
+ String out = sw.toString();
+ if (!out.isEmpty())
+ System.err.println(out);
+ if (!ok)
+ throw new AssertionError("compilation of test program failed");
+ // verify we found an annotated element to exercise the SourcePositions API
+ if (!out.contains("processing element"))
+ throw new AssertionError("expected text not found in compilation output");
+ }
}
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
--- a/langtools/test/tools/javac/api/T6419926.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/T6419926.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -35,17 +35,18 @@
public class T6419926 {
public static void main(String[] argv) throws Exception {
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager mgr = compiler.getStandardFileManager( new DiagnosticCollector<JavaFileObject>(), null, null);
- System.out.println( new File( new File(".").toURI() ).getAbsolutePath() );
- mgr.setLocation(StandardLocation.CLASS_OUTPUT,
- Collections.singleton(new File(".")));
+ try (StandardJavaFileManager mgr = compiler.getStandardFileManager( new DiagnosticCollector<JavaFileObject>(), null, null)) {
+ System.out.println( new File( new File(".").toURI() ).getAbsolutePath() );
+ mgr.setLocation(StandardLocation.CLASS_OUTPUT,
+ Collections.singleton(new File(".")));
- FileObject fo = mgr.getFileForOutput(StandardLocation.CLASS_OUTPUT,
- "", "file.to.delete", null);
- URI uri = fo.toUri();
- System.out.println( uri );
+ FileObject fo = mgr.getFileForOutput(StandardLocation.CLASS_OUTPUT,
+ "", "file.to.delete", null);
+ URI uri = fo.toUri();
+ System.out.println( uri );
- if (!"file".equals(uri.getScheme()))
- throw new Exception("unexpected scheme for uri: " + uri.getScheme());
+ if (!"file".equals(uri.getScheme()))
+ throw new Exception("unexpected scheme for uri: " + uri.getScheme());
+ }
}
}
--- a/langtools/test/tools/javac/api/T6430241.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/T6430241.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -134,21 +134,22 @@
System.err.println("test task API: " + pcp);
JavacTool tool = JavacTool.create();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
- if (pcp != null)
- fm.setLocation(StandardLocation.PLATFORM_CLASS_PATH, pcp);
+ if (pcp != null)
+ fm.setLocation(StandardLocation.PLATFORM_CLASS_PATH, pcp);
- Iterable<? extends JavaFileObject> files = fm.getJavaFileObjects(testFile);
+ Iterable<? extends JavaFileObject> files = fm.getJavaFileObjects(testFile);
- StringWriter sw = new StringWriter();
- PrintWriter pw = new PrintWriter(sw);
- JavacTask task = tool.getTask(pw, fm, null, null, null, files);
- boolean ok = task.call();
- String out = showOutput(sw.toString());
+ StringWriter sw = new StringWriter();
+ PrintWriter pw = new PrintWriter(sw);
+ JavacTask task = tool.getTask(pw, fm, null, null, null, files);
+ boolean ok = task.call();
+ String out = showOutput(sw.toString());
- checkCompilationOK(ok);
- checkOutput(out, expectWarnings);
+ checkCompilationOK(ok);
+ checkOutput(out, expectWarnings);
+ }
}
//----- utility methods
--- a/langtools/test/tools/javac/api/T6431879.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/T6431879.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -39,18 +39,18 @@
String testSrc = System.getProperty("test.src", ".");
String testClasses = System.getProperty("test.classes", ".");
JavacTool tool = JavacTool.create();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- Iterable<? extends JavaFileObject> files =
- fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, T6431879.class.getName()+".java")));
- JavacTask task = tool.getTask(null, fm, null, null, null, files);
- Iterable<? extends CompilationUnitTree> trees = task.parse();
- TreeScanner<Void,Trees> dependencyScanner = new DependencyScanner();
- Trees treeUtil = Trees.instance(task);
- for (CompilationUnitTree unit : trees) {
- //System.err.println("scan " + unit);
- dependencyScanner.scan(unit, treeUtil);
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ Iterable<? extends JavaFileObject> files =
+ fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, T6431879.class.getName()+".java")));
+ JavacTask task = tool.getTask(null, fm, null, null, null, files);
+ Iterable<? extends CompilationUnitTree> trees = task.parse();
+ TreeScanner<Void,Trees> dependencyScanner = new DependencyScanner();
+ Trees treeUtil = Trees.instance(task);
+ for (CompilationUnitTree unit : trees) {
+ //System.err.println("scan " + unit);
+ dependencyScanner.scan(unit, treeUtil);
+ }
}
-
}
private static class DependencyScanner<R,P> extends TreePathScanner<R,P> {
--- a/langtools/test/tools/javac/api/T6483788.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/T6483788.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -42,14 +42,15 @@
void run() throws Exception {
File jar = createJar();
JavaCompiler c = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm = c.getStandardFileManager(null, null, null);
- fm.setLocation(StandardLocation.CLASS_PATH, Collections.singleton(jar));
- JavaFileObject fo = fm.getJavaFileForInput(StandardLocation.CLASS_PATH, "dummy", JavaFileObject.Kind.CLASS);
- System.err.println("file: " + fo);
- URI uri = fo.toUri();
- System.err.println("uri: " + uri);
- if (uri.toString().contains(" "))
- throw new Exception("unexpected space character found");
+ try (StandardJavaFileManager fm = c.getStandardFileManager(null, null, null)) {
+ fm.setLocation(StandardLocation.CLASS_PATH, Collections.singleton(jar));
+ JavaFileObject fo = fm.getJavaFileForInput(StandardLocation.CLASS_PATH, "dummy", JavaFileObject.Kind.CLASS);
+ System.err.println("file: " + fo);
+ URI uri = fo.toUri();
+ System.err.println("uri: " + uri);
+ if (uri.toString().contains(" "))
+ throw new Exception("unexpected space character found");
+ }
}
File createJar() throws IOException {
--- a/langtools/test/tools/javac/api/T6501502.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/T6501502.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -46,16 +46,18 @@
// we test a number of platform-independent paths.
void run() throws Exception {
JavaCompiler c = ToolProvider.getSystemJavaCompiler();
- fm = c.getStandardFileManager(null, null, null);
- System.err.println(System.getProperties());
- File tmpDir = new File(System.getProperty("java.io.tmpdir"));
- File testSrcDir = new File(System.getProperty("test.src"));
- File testClassesDir = new File(System.getProperty("test.classes"));
- test(new File("abc.tmp"));
- test(new File(tmpDir, "bad.file"));
- test(new File(testSrcDir, "T6501501.java"));
- test(new File(testClassesDir, "T6501501.class"));
- test(new File("a b"));
+ try (StandardJavaFileManager sfm = c.getStandardFileManager(null, null, null)) {
+ fm = sfm;
+ System.err.println(System.getProperties());
+ File tmpDir = new File(System.getProperty("java.io.tmpdir"));
+ File testSrcDir = new File(System.getProperty("test.src"));
+ File testClassesDir = new File(System.getProperty("test.classes"));
+ test(new File("abc.tmp"));
+ test(new File(tmpDir, "bad.file"));
+ test(new File(testSrcDir, "T6501501.java"));
+ test(new File(testClassesDir, "T6501501.class"));
+ test(new File("a b"));
+ }
}
void test(File f) throws Exception {
--- a/langtools/test/tools/javac/api/TestClientCodeWrapper.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/TestClientCodeWrapper.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -56,34 +56,36 @@
*/
void run() throws Exception {
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
- defaultFileManager = compiler.getStandardFileManager(null, null, null);
+ try (StandardJavaFileManager fm = compiler.getStandardFileManager(null, null, null)) {
+ defaultFileManager = fm;
- for (Method m: getMethodsExcept(JavaFileManager.class, "close", "getJavaFileForInput")) {
- test(m);
- }
+ for (Method m: getMethodsExcept(JavaFileManager.class, "close", "getJavaFileForInput")) {
+ test(m);
+ }
- for (Method m: getMethodsExcept(FileObject.class, "delete")) {
- test(m);
- }
+ for (Method m: getMethodsExcept(FileObject.class, "delete")) {
+ test(m);
+ }
- for (Method m: getMethods(JavaFileObject.class)) {
- test(m);
- }
+ for (Method m: getMethods(JavaFileObject.class)) {
+ test(m);
+ }
- for (Method m: getMethodsExcept(Processor.class, "getCompletions")) {
- test(m);
- }
+ for (Method m: getMethodsExcept(Processor.class, "getCompletions")) {
+ test(m);
+ }
- for (Method m: DiagnosticListener.class.getDeclaredMethods()) {
- test(m);
+ for (Method m: DiagnosticListener.class.getDeclaredMethods()) {
+ test(m);
+ }
+
+ for (Method m: TaskListener.class.getDeclaredMethods()) {
+ test(m);
+ }
+
+ if (errors > 0)
+ throw new Exception(errors + " errors occurred");
}
-
- for (Method m: TaskListener.class.getDeclaredMethods()) {
- test(m);
- }
-
- if (errors > 0)
- throw new Exception(errors + " errors occurred");
}
/** Get a sorted set of the methods declared on a class. */
--- a/langtools/test/tools/javac/api/TestDocComments.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/TestDocComments.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -52,23 +52,23 @@
File file = new File(testSrc, "TestDocComments.java");
JavacTool tool = JavacTool.create();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
-
- StringWriter sw = new StringWriter();
- PrintWriter pw = new PrintWriter(sw);
- Iterable<? extends JavaFileObject> fileObjects = fm.getJavaFileObjects(file);
- JavacTask task = tool.getTask(pw, fm, null, null, null, fileObjects);
- Iterable<? extends CompilationUnitTree> units = task.parse();
- Trees trees = Trees.instance(task);
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ StringWriter sw = new StringWriter();
+ PrintWriter pw = new PrintWriter(sw);
+ Iterable<? extends JavaFileObject> fileObjects = fm.getJavaFileObjects(file);
+ JavacTask task = tool.getTask(pw, fm, null, null, null, fileObjects);
+ Iterable<? extends CompilationUnitTree> units = task.parse();
+ Trees trees = Trees.instance(task);
- CommentScanner s = new CommentScanner();
- int n = s.scan(units, trees);
+ CommentScanner s = new CommentScanner();
+ int n = s.scan(units, trees);
- if (n != 12)
- error("Unexpected number of doc comments found: " + n);
+ if (n != 12)
+ error("Unexpected number of doc comments found: " + n);
- if (errors > 0)
- throw new Exception(errors + " errors occurred");
+ if (errors > 0)
+ throw new Exception(errors + " errors occurred");
+ }
}
/**
--- a/langtools/test/tools/javac/api/TestGetElementReference.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/TestGetElementReference.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -50,31 +50,32 @@
public static void main(String... args) throws IOException {
File source = new File(System.getProperty("test.src", "."), "TestGetElementReferenceData.java").getAbsoluteFile();
- StandardJavaFileManager fm = ToolProvider.getSystemJavaCompiler().getStandardFileManager(null, null, null);
- DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<>();
- JavacTask ct = (JavacTask) ToolProvider.getSystemJavaCompiler().getTask(null, null, diagnostics, Arrays.asList("-Xjcov"), null, fm.getJavaFileObjects(source));
- Trees trees = Trees.instance(ct);
- CompilationUnitTree cut = ct.parse().iterator().next();
+ try (StandardJavaFileManager fm = ToolProvider.getSystemJavaCompiler().getStandardFileManager(null, null, null)) {
+ DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<>();
+ JavacTask ct = (JavacTask) ToolProvider.getSystemJavaCompiler().getTask(null, null, diagnostics, Arrays.asList("-Xjcov"), null, fm.getJavaFileObjects(source));
+ Trees trees = Trees.instance(ct);
+ CompilationUnitTree cut = ct.parse().iterator().next();
- ct.analyze();
+ ct.analyze();
- for (Diagnostic<? extends JavaFileObject> d : diagnostics.getDiagnostics()) {
- if (d.getKind() == Diagnostic.Kind.ERROR) {
- throw new IllegalStateException("Should have been attributed without errors: " + diagnostics.getDiagnostics());
+ for (Diagnostic<? extends JavaFileObject> d : diagnostics.getDiagnostics()) {
+ if (d.getKind() == Diagnostic.Kind.ERROR) {
+ throw new IllegalStateException("Should have been attributed without errors: " + diagnostics.getDiagnostics());
+ }
}
- }
- Pattern p = Pattern.compile("/\\*getElement:(.*?)\\*/");
- Matcher m = p.matcher(cut.getSourceFile().getCharContent(false));
+ Pattern p = Pattern.compile("/\\*getElement:(.*?)\\*/");
+ Matcher m = p.matcher(cut.getSourceFile().getCharContent(false));
- while (m.find()) {
- TreePath tp = pathFor(trees, cut, m.start() - 1);
- Element found = trees.getElement(tp);
- String expected = m.group(1);
- String actual = found != null ? found.getKind() + ":" + symbolToString(found) : "<null>";
+ while (m.find()) {
+ TreePath tp = pathFor(trees, cut, m.start() - 1);
+ Element found = trees.getElement(tp);
+ String expected = m.group(1);
+ String actual = found != null ? found.getKind() + ":" + symbolToString(found) : "<null>";
- if (!expected.equals(actual)) {
- throw new IllegalStateException("expected=" + expected + "; actual=" + actual);
+ if (!expected.equals(actual)) {
+ throw new IllegalStateException("expected=" + expected + "; actual=" + actual);
+ }
}
}
}
--- a/langtools/test/tools/javac/api/TestGetScope.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/TestGetScope.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -29,6 +29,7 @@
import com.sun.source.tree.IdentifierTree;
import java.io.File;
+import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
@@ -51,24 +52,25 @@
@SupportedAnnotationTypes("*")
public class TestGetScope extends AbstractProcessor {
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
new TestGetScope().run();
}
- public void run() {
+ public void run() throws IOException {
File srcDir = new File(System.getProperty("test.src"));
File thisFile = new File(srcDir, getClass().getName() + ".java");
JavaCompiler c = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm = c.getStandardFileManager(null, null, null);
+ try (StandardJavaFileManager fm = c.getStandardFileManager(null, null, null)) {
- List<String> opts = Arrays.asList("-proc:only", "-doe");
- Iterable<? extends JavaFileObject> files = fm.getJavaFileObjects(thisFile);
- JavacTask t = (JavacTask) c.getTask(null, fm, null, opts, null, files);
- t.setProcessors(Collections.singleton(this));
- boolean ok = t.call();
- if (!ok)
- throw new Error("compilation failed");
+ List<String> opts = Arrays.asList("-proc:only", "-doe");
+ Iterable<? extends JavaFileObject> files = fm.getJavaFileObjects(thisFile);
+ JavacTask t = (JavacTask) c.getTask(null, fm, null, opts, null, files);
+ t.setProcessors(Collections.singleton(this));
+ boolean ok = t.call();
+ if (!ok)
+ throw new Error("compilation failed");
+ }
}
@Override
--- a/langtools/test/tools/javac/api/TestJavacTask.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/TestJavacTask.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -41,8 +41,8 @@
public class TestJavacTask {
static final JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
+ static final StandardJavaFileManager fm = compiler.getStandardFileManager(null, null, null);
static JavacTaskImpl getTask(File... file) {
- StandardJavaFileManager fm = compiler.getStandardFileManager(null, null, null);
Iterable<? extends JavaFileObject> files =
fm.getJavaFileObjectsFromFiles(Arrays.asList(file));
return (JavacTaskImpl)compiler.getTask(null, fm, null, null, null, files);
@@ -69,7 +69,11 @@
}
public static void main(String... args) throws IOException {
- basicTest(args);
- checkKindError();
+ try {
+ basicTest(args);
+ checkKindError();
+ } finally {
+ fm.close();
+ }
}
}
--- a/langtools/test/tools/javac/api/TestJavacTaskScanner.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/TestJavacTaskScanner.java Fri Oct 31 18:18:58 2014 +0000
@@ -115,7 +115,9 @@
public static void main(String... args) throws IOException {
String srcdir = System.getProperty("test.src");
- new TestJavacTaskScanner(new File(srcdir, args[0])).run();
+ try (TestJavacTaskScanner t = new TestJavacTaskScanner(new File(srcdir, args[0]))) {
+ t.run();
+ }
}
private void testGetAllMembers(TypeElement clazz) {
--- a/langtools/test/tools/javac/api/TestJavacTask_Lock.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/TestJavacTask_Lock.java Fri Oct 31 18:18:58 2014 +0000
@@ -67,15 +67,18 @@
void run() throws Exception {
comp = ToolProvider.getSystemJavaCompiler();
fm = comp.getStandardFileManager(null, null, null);
-
- for (MethodKind first: MethodKind.values()) {
- for (MethodKind second: MethodKind.values()) {
- test(first, second);
+ try {
+ for (MethodKind first: MethodKind.values()) {
+ for (MethodKind second: MethodKind.values()) {
+ test(first, second);
+ }
}
+
+ if (errors > 0)
+ throw new Exception(errors + " errors found");
+ } finally {
+ fm.close();
}
-
- if (errors > 0)
- throw new Exception(errors + " errors found");
}
void test(MethodKind first, MethodKind second) {
--- a/langtools/test/tools/javac/api/TestJavacTask_Multiple.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/TestJavacTask_Multiple.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -68,16 +68,19 @@
void run() throws Exception {
JavaCompiler comp = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null);
- for (TestKind tk: TestKind.values()) {
- test(comp, fm, tk);
- }
+ try {
+ for (TestKind tk: TestKind.values()) {
+ test(comp, fm, tk);
+ }
- int expect = TestKind.values().length * MAX_TASKS;
- if (count != expect) {
- throw new Exception("Unexpected number of tests completed: " + count
- + ", expected: " + expect);
+ int expect = TestKind.values().length * MAX_TASKS;
+ if (count != expect) {
+ throw new Exception("Unexpected number of tests completed: " + count
+ + ", expected: " + expect);
+ }
+ } finally {
+ fm.close();
}
-
}
void test(JavaCompiler comp, StandardJavaFileManager fm, TestKind tk) {
--- a/langtools/test/tools/javac/api/TestJavacTask_ParseAttrGen.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/TestJavacTask_ParseAttrGen.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -45,14 +45,17 @@
void run() throws Exception {
comp = ToolProvider.getSystemJavaCompiler();
fm = comp.getStandardFileManager(null, null, null);
-
- final boolean[] booleanValues = { false, true };
- for (boolean pk: booleanValues) {
- for (boolean ak: booleanValues) {
- for (boolean gk: booleanValues) {
- test(pk, ak, gk);
+ try {
+ final boolean[] booleanValues = { false, true };
+ for (boolean pk: booleanValues) {
+ for (boolean ak: booleanValues) {
+ for (boolean gk: booleanValues) {
+ test(pk, ak, gk);
+ }
}
}
+ } finally {
+ fm.close();
}
}
--- a/langtools/test/tools/javac/api/TestResolveError.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/TestResolveError.java Fri Oct 31 18:18:58 2014 +0000
@@ -51,7 +51,9 @@
*/
public class TestResolveError extends ToolTester {
public static void main(String... args) throws Exception {
- new TestResolveError().run();
+ try (TestResolveError t = new TestResolveError()) {
+ t.run();
+ }
}
void run() throws Exception {
--- a/langtools/test/tools/javac/api/TestSearchPaths.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/TestSearchPaths.java Fri Oct 31 18:18:58 2014 +0000
@@ -76,30 +76,33 @@
void run() throws Exception {
compiler = ToolProvider.getSystemJavaCompiler();
fileManager = compiler.getStandardFileManager(null, null, null);
-
- // basic output path
- testClassOutput();
+ try {
+ // basic output path
+ testClassOutput();
- // basic search paths
- testClassPath();
- testSourcePath();
- testPlatformClassPath();
+ // basic search paths
+ testClassPath();
+ testSourcePath();
+ testPlatformClassPath();
+
+ // annotation processing
+ testAnnotationProcessorPath();
+ testSourceOutput();
- // annotation processing
- testAnnotationProcessorPath();
- testSourceOutput();
-
- // javah equivalent
- testNativeHeaderOutput();
+ // javah equivalent
+ testNativeHeaderOutput();
- // future-proof: guard against new StandardLocations being added
- if (!tested.equals(EnumSet.allOf(StandardLocation.class))) {
- error("not all standard locations have been tested");
- out.println("not yet tested: " + EnumSet.complementOf(tested));
- }
+ // future-proof: guard against new StandardLocations being added
+ if (!tested.equals(EnumSet.allOf(StandardLocation.class))) {
+ error("not all standard locations have been tested");
+ out.println("not yet tested: " + EnumSet.complementOf(tested));
+ }
- if (errors > 0) {
- throw new Exception(errors + " errors occurred");
+ if (errors > 0) {
+ throw new Exception(errors + " errors occurred");
+ }
+ } finally {
+ fileManager.close();
}
}
--- a/langtools/test/tools/javac/api/TestTreePath.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/TestTreePath.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -105,17 +105,18 @@
public void run() throws IOException {
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fileManager
- = compiler.getStandardFileManager(null, null, null);
- Iterable<? extends JavaFileObject> tests
- = fileManager.getJavaFileObjects(writeTestFile());
+ try (StandardJavaFileManager fileManager
+ = compiler.getStandardFileManager(null, null, null)) {
+ Iterable<? extends JavaFileObject> tests
+ = fileManager.getJavaFileObjects(writeTestFile());
- JavaCompiler.CompilationTask task =
- ToolProvider.getSystemJavaCompiler().getTask(
- null, null, null,
- Arrays.asList("-processor", this.getClass().getName()), null,
- tests);
- task.call();
+ JavaCompiler.CompilationTask task =
+ ToolProvider.getSystemJavaCompiler().getTask(
+ null, null, null,
+ Arrays.asList("-processor", this.getClass().getName()), null,
+ tests);
+ task.call();
+ }
}
public static void main(String[] args) throws IOException {
--- a/langtools/test/tools/javac/api/TestTrees.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/TestTrees.java Fri Oct 31 18:18:58 2014 +0000
@@ -74,29 +74,30 @@
}
};
- StandardJavaFileManager fm = tool.getStandardFileManager(dl, null, null);
- Iterable<? extends JavaFileObject> files =
- fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrcDir, self + ".java")));
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(dl, null, null)) {
+ Iterable<? extends JavaFileObject> files =
+ fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrcDir, self + ".java")));
- Iterable<String> opts = Arrays.asList("-d", ".", "-XDcompilePolicy=simple");
+ Iterable<String> opts = Arrays.asList("-d", ".", "-XDcompilePolicy=simple");
- System.err.println("simple compilation, no processing");
- JavacTask task = tool.getTask(out, fm, dl, opts, null, files);
- task.setTaskListener(new MyTaskListener(task));
- if (!task.call())
- throw new AssertionError("compilation failed");
+ System.err.println("simple compilation, no processing");
+ JavacTask task = tool.getTask(out, fm, dl, opts, null, files);
+ task.setTaskListener(new MyTaskListener(task));
+ if (!task.call())
+ throw new AssertionError("compilation failed");
- opts = Arrays.asList("-d", ".", "-processorpath", testClassDir, "-processor", self,
- "-XDcompilePolicy=simple");
+ opts = Arrays.asList("-d", ".", "-processorpath", testClassDir, "-processor", self,
+ "-XDcompilePolicy=simple");
- System.err.println();
- System.err.println("compilation with processing");
- task = tool.getTask(out, fm, dl,opts, null, files);
- if (!task.call())
- throw new AssertionError("compilation failed");
+ System.err.println();
+ System.err.println("compilation with processing");
+ task = tool.getTask(out, fm, dl,opts, null, files);
+ if (!task.call())
+ throw new AssertionError("compilation failed");
- if (errors > 0)
- throw new AssertionError(errors + " errors occurred");
+ if (errors > 0)
+ throw new AssertionError(errors + " errors occurred");
+ }
}
void testElement(Trees trees, Element e) {
--- a/langtools/test/tools/javac/api/guide/Test.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/guide/Test.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -80,7 +80,9 @@
}
public static void main(String... args) throws Exception {
- new Test().test(args);
+ try (Test t = new Test()) {
+ t.test(args);
+ }
}
}
--- a/langtools/test/tools/javac/api/lib/ToolTester.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/lib/ToolTester.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -31,7 +31,7 @@
import static javax.tools.StandardLocation.SOURCE_PATH;
import static javax.tools.StandardLocation.CLASS_OUTPUT;
-public class ToolTester {
+public class ToolTester implements AutoCloseable {
public final File test_src = new File(System.getProperty("test.src", "."));
public final File test_classes = new File(System.getProperty("test.classes", "."));
public final List<File> test_class_path = pathToFiles(System.getProperty("test.class.path"),
@@ -77,4 +77,9 @@
result.addAll(b);
return result;
}
+
+ @Override
+ public void close() throws IOException {
+ fm.close();
+ }
}
--- a/langtools/test/tools/javac/api/taskListeners/CompileEvent.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/taskListeners/CompileEvent.java Fri Oct 31 18:18:58 2014 +0000
@@ -73,18 +73,19 @@
assertOutput(out.toString());
JavaCompiler comp = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null);
- Iterable<? extends JavaFileObject> testFileObjects = fm.getJavaFileObjects(test);
+ try (StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null)) {
+ Iterable<? extends JavaFileObject> testFileObjects = fm.getJavaFileObjects(test);
- //test events fired to listeners registered from plugins
- //when starting compiler using JavaCompiler.getTask(...).call
- List<String> options =
- Arrays.asList("-Xplugin:compile-event", "-processorpath", testClasses);
- out = new StringWriter();
- boolean compResult = comp.getTask(out, null, null, options, null, testFileObjects).call();
- if (!compResult)
- throw new AssertionError("Compilation failed unexpectedly.");
- assertOutput(out.toString());
+ //test events fired to listeners registered from plugins
+ //when starting compiler using JavaCompiler.getTask(...).call
+ List<String> options =
+ Arrays.asList("-Xplugin:compile-event", "-processorpath", testClasses);
+ out = new StringWriter();
+ boolean compResult = comp.getTask(out, null, null, options, null, testFileObjects).call();
+ if (!compResult)
+ throw new AssertionError("Compilation failed unexpectedly.");
+ assertOutput(out.toString());
+ }
}
void assertOutput(String found) {
--- a/langtools/test/tools/javac/api/taskListeners/EventsBalancedTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/taskListeners/EventsBalancedTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -44,7 +44,12 @@
StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
public static void main(String... args) throws IOException {
- new EventsBalancedTest().test();
+ EventsBalancedTest t = new EventsBalancedTest();
+ try {
+ t.test();
+ } finally {
+ t.fm.close();
+ }
}
void test() throws IOException {
--- a/langtools/test/tools/javac/api/taskListeners/TestSimpleAddRemove.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/api/taskListeners/TestSimpleAddRemove.java Fri Oct 31 18:18:58 2014 +0000
@@ -203,7 +203,12 @@
}
public static void main(String... args) throws Exception {
- new TestSimpleAddRemove().run();
+ TestSimpleAddRemove t = new TestSimpleAddRemove();
+ try {
+ t.run();
+ } finally {
+ t.fm.close();
+ }
}
JavacTool tool = (JavacTool) ToolProvider.getSystemJavaCompiler();
--- a/langtools/test/tools/javac/cast/intersection/IntersectionTypeParserTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/cast/intersection/IntersectionTypeParserTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -104,35 +104,36 @@
public static void main(String... args) throws Exception {
//create default shared JavaCompiler - reused across multiple compilations
JavaCompiler comp = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null);
+ try (StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null)) {
- for (CastKind ck : CastKind.values()) {
- for (TypeKind t1 : TypeKind.values()) {
- for (ArrayKind ak1 : ArrayKind.values()) {
- Type typ1 = new Type(t1, ak1);
- if (ck.nBounds == 1) {
- new IntersectionTypeParserTest(ck, typ1).run(comp, fm);
- continue;
- }
- for (TypeKind t2 : TypeKind.values()) {
- for (ArrayKind ak2 : ArrayKind.values()) {
- Type typ2 = new Type(t2, ak2);
- if (ck.nBounds == 2) {
- new IntersectionTypeParserTest(ck, typ1, typ2).run(comp, fm);
- continue;
- }
- for (TypeKind t3 : TypeKind.values()) {
- for (ArrayKind ak3 : ArrayKind.values()) {
- Type typ3 = new Type(t3, ak3);
- new IntersectionTypeParserTest(ck, typ1, typ2, typ3).run(comp, fm);
+ for (CastKind ck : CastKind.values()) {
+ for (TypeKind t1 : TypeKind.values()) {
+ for (ArrayKind ak1 : ArrayKind.values()) {
+ Type typ1 = new Type(t1, ak1);
+ if (ck.nBounds == 1) {
+ new IntersectionTypeParserTest(ck, typ1).run(comp, fm);
+ continue;
+ }
+ for (TypeKind t2 : TypeKind.values()) {
+ for (ArrayKind ak2 : ArrayKind.values()) {
+ Type typ2 = new Type(t2, ak2);
+ if (ck.nBounds == 2) {
+ new IntersectionTypeParserTest(ck, typ1, typ2).run(comp, fm);
+ continue;
+ }
+ for (TypeKind t3 : TypeKind.values()) {
+ for (ArrayKind ak3 : ArrayKind.values()) {
+ Type typ3 = new Type(t3, ak3);
+ new IntersectionTypeParserTest(ck, typ1, typ2, typ3).run(comp, fm);
+ }
}
}
}
}
}
}
+ System.out.println("Total check executed: " + checkCount);
}
- System.out.println("Total check executed: " + checkCount);
}
CastKind ck;
--- a/langtools/test/tools/javac/classreader/T7031108.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/classreader/T7031108.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -68,39 +68,40 @@
void run() throws Exception {
JavaCompiler comp = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null);
+ try (StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null)) {
- // step 1: compile test classes
- File cwd = new File(".");
- fm.setLocation(StandardLocation.CLASS_OUTPUT, Arrays.asList(cwd));
- compile(comp, fm, null, null, pC);
+ // step 1: compile test classes
+ File cwd = new File(".");
+ fm.setLocation(StandardLocation.CLASS_OUTPUT, Arrays.asList(cwd));
+ compile(comp, fm, null, null, pC);
- // step 2: verify functioning of processor
- fm.setLocation(StandardLocation.ANNOTATION_PROCESSOR_PATH,
- fm.getLocation(StandardLocation.CLASS_PATH));
- fm.setLocation(StandardLocation.CLASS_PATH, Arrays.asList(cwd));
- compile(comp, fm, null, getClass().getName(), dummy);
+ // step 2: verify functioning of processor
+ fm.setLocation(StandardLocation.ANNOTATION_PROCESSOR_PATH,
+ fm.getLocation(StandardLocation.CLASS_PATH));
+ fm.setLocation(StandardLocation.CLASS_PATH, Arrays.asList(cwd));
+ compile(comp, fm, null, getClass().getName(), dummy);
- File pC_class = new File(new File("p"), "C.class");
- pC_class.delete();
+ File pC_class = new File(new File("p"), "C.class");
+ pC_class.delete();
- DiagnosticCollector<JavaFileObject> dc = new DiagnosticCollector<JavaFileObject>();
- compile(comp, fm, dc, getClass().getName(), dummy);
- List<Diagnostic<? extends JavaFileObject>> diags =dc.getDiagnostics();
+ DiagnosticCollector<JavaFileObject> dc = new DiagnosticCollector<JavaFileObject>();
+ compile(comp, fm, dc, getClass().getName(), dummy);
+ List<Diagnostic<? extends JavaFileObject>> diags =dc.getDiagnostics();
- System.err.println(diags);
- switch (diags.size()) {
- case 0:
- throw new Exception("no diagnostics received");
- case 1:
- String code = diags.get(0).getCode();
- String expect = "compiler.err.proc.cant.access.1";
- if (!expect.equals(code))
- throw new Exception("unexpected diag code: " + code
- + ", expected: " + expect);
- break;
- default:
- throw new Exception("unexpected diags received");
+ System.err.println(diags);
+ switch (diags.size()) {
+ case 0:
+ throw new Exception("no diagnostics received");
+ case 1:
+ String code = diags.get(0).getCode();
+ String expect = "compiler.err.proc.cant.access.1";
+ if (!expect.equals(code))
+ throw new Exception("unexpected diag code: " + code
+ + ", expected: " + expect);
+ break;
+ default:
+ throw new Exception("unexpected diags received");
+ }
}
}
--- a/langtools/test/tools/javac/defaultMethods/DefaultMethodFlags.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/defaultMethods/DefaultMethodFlags.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -54,31 +54,32 @@
void checkDefaultMethodFlags() throws IOException {
JavaCompiler c = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm = c.getStandardFileManager(null, null, null);
- Iterable<? extends JavaFileObject> fos =
- fm.getJavaFileObjectsFromFiles(
- Arrays.asList(new File(
- System.getProperty("test.src"),
- this.getClass().getSimpleName() + ".java")));
- JavacTask task = (JavacTask) c.getTask(null, fm, null, null, null, fos);
+ try (StandardJavaFileManager fm = c.getStandardFileManager(null, null, null)) {
+ Iterable<? extends JavaFileObject> fos =
+ fm.getJavaFileObjectsFromFiles(
+ Arrays.asList(new File(
+ System.getProperty("test.src"),
+ this.getClass().getSimpleName() + ".java")));
+ JavacTask task = (JavacTask) c.getTask(null, fm, null, null, null, fos);
- task.addTaskListener(new TaskListener() {
+ task.addTaskListener(new TaskListener() {
- @Override
- public void started(TaskEvent e) {}
+ @Override
+ public void started(TaskEvent e) {}
- @Override
- public void finished(TaskEvent e) {
- if (e.getKind() == TaskEvent.Kind.ANALYZE) {
- TypeElement te = e.getTypeElement();
- if (te.getSimpleName().toString().equals("I")) {
- checkDefaultInterface(te);
+ @Override
+ public void finished(TaskEvent e) {
+ if (e.getKind() == TaskEvent.Kind.ANALYZE) {
+ TypeElement te = e.getTypeElement();
+ if (te.getSimpleName().toString().equals("I")) {
+ checkDefaultInterface(te);
+ }
}
}
- }
- });
+ });
- task.analyze();
+ task.analyze();
+ }
}
void checkDefaultInterface(TypeElement te) {
--- a/langtools/test/tools/javac/defaultMethods/static/hiding/InterfaceMethodHidingTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/defaultMethods/static/hiding/InterfaceMethodHidingTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -123,18 +123,19 @@
//create default shared JavaCompiler - reused across multiple compilations
JavaCompiler comp = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null);
+ try (StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null)) {
- for (MethodKind mk1 : MethodKind.values()) {
- for (SignatureKind sk1 : SignatureKind.values()) {
- for (BodyExpr be1 : BodyExpr.values()) {
- for (MethodKind mk2 : MethodKind.values()) {
- for (SignatureKind sk2 : SignatureKind.values()) {
- for (BodyExpr be2 : BodyExpr.values()) {
- for (MethodKind mk3 : MethodKind.values()) {
- for (SignatureKind sk3 : SignatureKind.values()) {
- for (BodyExpr be3 : BodyExpr.values()) {
- new InterfaceMethodHidingTest(mk1, mk2, mk3, sk1, sk2, sk3, be1, be2, be3).run(comp, fm);
+ for (MethodKind mk1 : MethodKind.values()) {
+ for (SignatureKind sk1 : SignatureKind.values()) {
+ for (BodyExpr be1 : BodyExpr.values()) {
+ for (MethodKind mk2 : MethodKind.values()) {
+ for (SignatureKind sk2 : SignatureKind.values()) {
+ for (BodyExpr be2 : BodyExpr.values()) {
+ for (MethodKind mk3 : MethodKind.values()) {
+ for (SignatureKind sk3 : SignatureKind.values()) {
+ for (BodyExpr be3 : BodyExpr.values()) {
+ new InterfaceMethodHidingTest(mk1, mk2, mk3, sk1, sk2, sk3, be1, be2, be3).run(comp, fm);
+ }
}
}
}
@@ -143,8 +144,8 @@
}
}
}
+ System.out.println("Total check executed: " + checkCount);
}
- System.out.println("Total check executed: " + checkCount);
}
MethodKind mk1, mk2, mk3;
--- a/langtools/test/tools/javac/defaultMethods/syntax/TestDefaultMethodsSyntax.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/defaultMethods/syntax/TestDefaultMethodsSyntax.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -188,20 +188,21 @@
//create default shared JavaCompiler - reused across multiple compilations
JavaCompiler comp = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null);
+ try (StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null)) {
- for (VersionKind vk : VersionKind.values()) {
- for (EnclosingKind ek : EnclosingKind.values()) {
- for (MethodKind mk : MethodKind.values()) {
- for (ModifierKind modk1 : ModifierKind.values()) {
- for (ModifierKind modk2 : ModifierKind.values()) {
- new TestDefaultMethodsSyntax(vk, ek, mk, modk1, modk2).run(comp, fm);
+ for (VersionKind vk : VersionKind.values()) {
+ for (EnclosingKind ek : EnclosingKind.values()) {
+ for (MethodKind mk : MethodKind.values()) {
+ for (ModifierKind modk1 : ModifierKind.values()) {
+ for (ModifierKind modk2 : ModifierKind.values()) {
+ new TestDefaultMethodsSyntax(vk, ek, mk, modk1, modk2).run(comp, fm);
+ }
}
}
}
}
+ System.out.println("Total check executed: " + checkCount);
}
- System.out.println("Total check executed: " + checkCount);
}
VersionKind vk;
--- a/langtools/test/tools/javac/diags/CheckResourceKeys.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/diags/CheckResourceKeys.java Fri Oct 31 18:18:58 2014 +0000
@@ -313,27 +313,28 @@
Set<String> getCodeStrings() throws IOException {
Set<String> results = new TreeSet<String>();
JavaCompiler c = ToolProvider.getSystemJavaCompiler();
- JavaFileManager fm = c.getStandardFileManager(null, null, null);
- JavaFileManager.Location javacLoc = findJavacLocation(fm);
- String[] pkgs = {
- "javax.annotation.processing",
- "javax.lang.model",
- "javax.tools",
- "com.sun.source",
- "com.sun.tools.javac"
- };
- for (String pkg: pkgs) {
- for (JavaFileObject fo: fm.list(javacLoc,
- pkg, EnumSet.of(JavaFileObject.Kind.CLASS), true)) {
- String name = fo.getName();
- // ignore resource files, and files which are not really part of javac
- if (name.matches(".*resources.[A-Za-z_0-9]+\\.class.*")
- || name.matches(".*CreateSymbols\\.class.*"))
- continue;
- scan(fo, results);
+ try (JavaFileManager fm = c.getStandardFileManager(null, null, null)) {
+ JavaFileManager.Location javacLoc = findJavacLocation(fm);
+ String[] pkgs = {
+ "javax.annotation.processing",
+ "javax.lang.model",
+ "javax.tools",
+ "com.sun.source",
+ "com.sun.tools.javac"
+ };
+ for (String pkg: pkgs) {
+ for (JavaFileObject fo: fm.list(javacLoc,
+ pkg, EnumSet.of(JavaFileObject.Kind.CLASS), true)) {
+ String name = fo.getName();
+ // ignore resource files, and files which are not really part of javac
+ if (name.matches(".*resources.[A-Za-z_0-9]+\\.class.*")
+ || name.matches(".*CreateSymbols\\.class.*"))
+ continue;
+ scan(fo, results);
+ }
}
+ return results;
}
- return results;
}
// depending on how the test is run, javac may be on bootclasspath or classpath
--- a/langtools/test/tools/javac/doclint/DocLintTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/doclint/DocLintTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -109,44 +109,48 @@
void run() throws Exception {
javac = ToolProvider.getSystemJavaCompiler();
fm = javac.getStandardFileManager(null, null, null);
- fm.setLocation(StandardLocation.CLASS_OUTPUT, Arrays.asList(new File(".")));
- file = new SimpleJavaFileObject(URI.create("Test.java"), JavaFileObject.Kind.SOURCE) {
- @Override
- public CharSequence getCharContent(boolean ignoreEncoding) {
- return code;
- }
- };
+ try {
+ fm.setLocation(StandardLocation.CLASS_OUTPUT, Arrays.asList(new File(".")));
+ file = new SimpleJavaFileObject(URI.create("Test.java"), JavaFileObject.Kind.SOURCE) {
+ @Override
+ public CharSequence getCharContent(boolean ignoreEncoding) {
+ return code;
+ }
+ };
- test(Collections.<String>emptyList(),
- Main.Result.OK,
- EnumSet.noneOf(Message.class));
+ test(Collections.<String>emptyList(),
+ Main.Result.OK,
+ EnumSet.noneOf(Message.class));
- test(Arrays.asList("-Xdoclint:none"),
- Main.Result.OK,
- EnumSet.noneOf(Message.class));
+ test(Arrays.asList("-Xdoclint:none"),
+ Main.Result.OK,
+ EnumSet.noneOf(Message.class));
+
+ test(Arrays.asList(rawDiags, "-Xdoclint"),
+ Main.Result.ERROR,
+ EnumSet.of(Message.DL_ERR6, Message.DL_ERR9, Message.DL_WRN12));
- test(Arrays.asList(rawDiags, "-Xdoclint"),
- Main.Result.ERROR,
- EnumSet.of(Message.DL_ERR6, Message.DL_ERR9, Message.DL_WRN12));
+ test(Arrays.asList(rawDiags, "-Xdoclint:all/public"),
+ Main.Result.OK,
+ EnumSet.of(Message.DL_WRN12));
- test(Arrays.asList(rawDiags, "-Xdoclint:all/public"),
- Main.Result.OK,
- EnumSet.of(Message.DL_WRN12));
+ test(Arrays.asList(rawDiags, "-Xdoclint:syntax"),
+ Main.Result.ERROR,
+ EnumSet.of(Message.DL_ERR6, Message.DL_WRN12));
- test(Arrays.asList(rawDiags, "-Xdoclint:syntax"),
- Main.Result.ERROR,
- EnumSet.of(Message.DL_ERR6, Message.DL_WRN12));
+ test(Arrays.asList(rawDiags, "-Xdoclint:reference"),
+ Main.Result.ERROR,
+ EnumSet.of(Message.DL_ERR9));
- test(Arrays.asList(rawDiags, "-Xdoclint:reference"),
- Main.Result.ERROR,
- EnumSet.of(Message.DL_ERR9));
+ test(Arrays.asList(rawDiags, "-Xdoclint:badarg"),
+ Main.Result.CMDERR,
+ EnumSet.of(Message.OPT_BADARG));
- test(Arrays.asList(rawDiags, "-Xdoclint:badarg"),
- Main.Result.CMDERR,
- EnumSet.of(Message.OPT_BADARG));
-
- if (errors > 0)
- throw new Exception(errors + " errors occurred");
+ if (errors > 0)
+ throw new Exception(errors + " errors occurred");
+ } finally {
+ fm.close();
+ }
}
void test(List<String> opts, Main.Result expectResult, Set<Message> expectMessages) {
--- a/langtools/test/tools/javac/doctree/DocTreePathScannerTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/doctree/DocTreePathScannerTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -66,22 +66,23 @@
}
JavacTool javac = JavacTool.create();
- StandardJavaFileManager fm = javac.getStandardFileManager(null, null, null);
+ try (StandardJavaFileManager fm = javac.getStandardFileManager(null, null, null)) {
+
+ Iterable<? extends JavaFileObject> fos = fm.getJavaFileObjectsFromFiles(files);
- Iterable<? extends JavaFileObject> fos = fm.getJavaFileObjectsFromFiles(files);
+ JavacTask t = javac.getTask(null, fm, null, null, null, fos);
+ DocTrees trees = DocTrees.instance(t);
- JavacTask t = javac.getTask(null, fm, null, null, null, fos);
- DocTrees trees = DocTrees.instance(t);
+ Iterable<? extends CompilationUnitTree> units = t.parse();
- Iterable<? extends CompilationUnitTree> units = t.parse();
+ DeclScanner ds = new DeclScanner(trees);
+ for (CompilationUnitTree unit: units) {
+ ds.scan(unit, null);
+ }
- DeclScanner ds = new DeclScanner(trees);
- for (CompilationUnitTree unit: units) {
- ds.scan(unit, null);
+ if (errors > 0)
+ throw new Exception(errors + " errors occurred");
}
-
- if (errors > 0)
- throw new Exception(errors + " errors occurred");
}
void error(String msg) {
--- a/langtools/test/tools/javac/doctree/SimpleDocTreeVisitorTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/doctree/SimpleDocTreeVisitorTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -66,28 +66,29 @@
}
JavacTool javac = JavacTool.create();
- StandardJavaFileManager fm = javac.getStandardFileManager(null, null, null);
+ try (StandardJavaFileManager fm = javac.getStandardFileManager(null, null, null)) {
- Iterable<? extends JavaFileObject> fos = fm.getJavaFileObjectsFromFiles(files);
+ Iterable<? extends JavaFileObject> fos = fm.getJavaFileObjectsFromFiles(files);
- JavacTask t = javac.getTask(null, fm, null, null, null, fos);
- DocTrees trees = DocTrees.instance(t);
+ JavacTask t = javac.getTask(null, fm, null, null, null, fos);
+ DocTrees trees = DocTrees.instance(t);
- Iterable<? extends CompilationUnitTree> units = t.parse();
+ Iterable<? extends CompilationUnitTree> units = t.parse();
- Set<DocTree.Kind> found = EnumSet.noneOf(DocTree.Kind.class);
- DeclScanner ds = new DeclScanner(trees, found);
- for (CompilationUnitTree unit: units) {
- ds.scan(unit, null);
- }
+ Set<DocTree.Kind> found = EnumSet.noneOf(DocTree.Kind.class);
+ DeclScanner ds = new DeclScanner(trees, found);
+ for (CompilationUnitTree unit: units) {
+ ds.scan(unit, null);
+ }
- for (DocTree.Kind k: DocTree.Kind.values()) {
- if (!found.contains(k) && k != DocTree.Kind.OTHER)
- error("not found: " + k);
+ for (DocTree.Kind k: DocTree.Kind.values()) {
+ if (!found.contains(k) && k != DocTree.Kind.OTHER)
+ error("not found: " + k);
+ }
+
+ if (errors > 0)
+ throw new Exception(errors + " errors occurred");
}
-
- if (errors > 0)
- throw new Exception(errors + " errors occurred");
}
void error(String msg) {
--- a/langtools/test/tools/javac/file/T7068451.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/file/T7068451.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -47,6 +47,7 @@
import javax.tools.Diagnostic.Kind;
import javax.tools.JavaCompiler;
import javax.tools.JavaCompiler.CompilationTask;
+import javax.tools.StandardJavaFileManager;
import javax.tools.StandardLocation;
import javax.tools.ToolProvider;
@@ -75,34 +76,36 @@
System.err.println("FIRST compilation");
System.err.println();
- CompilationTask task = compiler.getTask(null, null, null, opts, null,
- compiler.getStandardFileManager(null, null, null).getJavaFileObjects(input));
- task.setProcessors(Collections.singleton(new Proc("first")));
- check("compilation", task.call());
+ try (StandardJavaFileManager fm = compiler.getStandardFileManager(null, null, null)) {
+ CompilationTask task = compiler.getTask(null, fm, null, opts, null,
+ fm.getJavaFileObjects(input));
+ task.setProcessors(Collections.singleton(new Proc("first")));
+ check("compilation", task.call());
- writeFile(tmp, "X.java", "package p; class X { { p.C.second(); } }");
+ writeFile(tmp, "X.java", "package p; class X { { p.C.second(); } }");
- //Thread.sleep(2000);
+ //Thread.sleep(2000);
- System.err.println();
- System.err.println("SECOND compilation");
- System.err.println();
+ System.err.println();
+ System.err.println("SECOND compilation");
+ System.err.println();
- task = compiler.getTask(null, null, null, opts, null,
- compiler.getStandardFileManager(null, null, null).getJavaFileObjects(input));
- task.setProcessors(Collections.singleton(new Proc("second")));
- check("compilation", task.call());
+ task = compiler.getTask(null, fm, null, opts, null,
+ fm.getJavaFileObjects(input));
+ task.setProcessors(Collections.singleton(new Proc("second")));
+ check("compilation", task.call());
- //Thread.sleep(2000);
+ //Thread.sleep(2000);
- System.err.println();
- System.err.println("SECOND compilation, REPEATED");
- System.err.println();
+ System.err.println();
+ System.err.println("SECOND compilation, REPEATED");
+ System.err.println();
- task = compiler.getTask(null, null, null, opts, null,
- compiler.getStandardFileManager(null, null, null).getJavaFileObjects(input));
- task.setProcessors(Collections.singleton(new Proc("second")));
- check("compilation", task.call());
+ task = compiler.getTask(null, fm, null, opts, null,
+ fm.getJavaFileObjects(input));
+ task.setProcessors(Collections.singleton(new Proc("second")));
+ check("compilation", task.call());
+ }
}
void check(String msg, boolean ok) {
--- a/langtools/test/tools/javac/flow/LVTHarness.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/flow/LVTHarness.java Fri Oct 31 18:18:58 2014 +0000
@@ -76,18 +76,21 @@
static final StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null);
public static void main(String[] args) throws Exception {
+ try {
+ String testDir = System.getProperty("test.src");
+ fm.setLocation(SOURCE_PATH, Arrays.asList(new File(testDir, "tests")));
- String testDir = System.getProperty("test.src");
- fm.setLocation(SOURCE_PATH, Arrays.asList(new File(testDir, "tests")));
+ // Make sure classes are written to scratch dir.
+ fm.setLocation(CLASS_OUTPUT, Arrays.asList(new File(".")));
- // Make sure classes are written to scratch dir.
- fm.setLocation(CLASS_OUTPUT, Arrays.asList(new File(".")));
-
- for (JavaFileObject jfo : fm.list(SOURCE_PATH, "", Collections.singleton(SOURCE), true)) {
- new LVTHarness(jfo).check();
- }
- if (nerrors > 0) {
- throw new AssertionError("Errors were found");
+ for (JavaFileObject jfo : fm.list(SOURCE_PATH, "", Collections.singleton(SOURCE), true)) {
+ new LVTHarness(jfo).check();
+ }
+ if (nerrors > 0) {
+ throw new AssertionError("Errors were found");
+ }
+ } finally {
+ fm.close();
}
}
--- a/langtools/test/tools/javac/generics/bridges/BridgeHarness.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/generics/bridges/BridgeHarness.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -70,19 +70,23 @@
static final StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null);
public static void main(String[] args) throws Exception {
- //set sourcepath
- fm.setLocation(SOURCE_PATH,
- Arrays.asList(new File(System.getProperty("test.src"), "tests")));
- //set output (-d)
- fm.setLocation(javax.tools.StandardLocation.CLASS_OUTPUT,
- Arrays.asList(new File(System.getProperty("user.dir"))));
- for (JavaFileObject jfo : fm.list(SOURCE_PATH, "", Collections.singleton(JavaFileObject.Kind.SOURCE), true)) {
- //for each source, compile and check against annotations
- new BridgeHarness(jfo).compileAndCheck();
- }
- //if there were errors, fail
- if (nerrors > 0) {
- throw new AssertionError("Errors were found");
+ try {
+ //set sourcepath
+ fm.setLocation(SOURCE_PATH,
+ Arrays.asList(new File(System.getProperty("test.src"), "tests")));
+ //set output (-d)
+ fm.setLocation(javax.tools.StandardLocation.CLASS_OUTPUT,
+ Arrays.asList(new File(System.getProperty("user.dir"))));
+ for (JavaFileObject jfo : fm.list(SOURCE_PATH, "", Collections.singleton(JavaFileObject.Kind.SOURCE), true)) {
+ //for each source, compile and check against annotations
+ new BridgeHarness(jfo).compileAndCheck();
+ }
+ //if there were errors, fail
+ if (nerrors > 0) {
+ throw new AssertionError("Errors were found");
+ }
+ } finally {
+ fm.close();
}
}
--- a/langtools/test/tools/javac/generics/diamond/7030150/GenericConstructorAndDiamondTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/generics/diamond/7030150/GenericConstructorAndDiamondTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -150,17 +150,17 @@
//create default shared JavaCompiler - reused across multiple compilations
JavaCompiler comp = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null);
-
- for (BoundKind boundKind : BoundKind.values()) {
- for (ConstructorKind constructorKind : ConstructorKind.values()) {
- for (TypeArgumentKind declArgKind : TypeArgumentKind.values()) {
- for (TypeArgArity arity : TypeArgArity.values()) {
- for (TypeArgumentKind useArgKind : TypeArgumentKind.values()) {
- for (TypeArgumentKind diamondArgKind : TypeArgumentKind.values()) {
- for (ArgumentKind argKind : ArgumentKind.values()) {
- new GenericConstructorAndDiamondTest(boundKind, constructorKind,
- declArgKind, arity, useArgKind, diamondArgKind, argKind).run(comp, fm);
+ try (StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null)) {
+ for (BoundKind boundKind : BoundKind.values()) {
+ for (ConstructorKind constructorKind : ConstructorKind.values()) {
+ for (TypeArgumentKind declArgKind : TypeArgumentKind.values()) {
+ for (TypeArgArity arity : TypeArgArity.values()) {
+ for (TypeArgumentKind useArgKind : TypeArgumentKind.values()) {
+ for (TypeArgumentKind diamondArgKind : TypeArgumentKind.values()) {
+ for (ArgumentKind argKind : ArgumentKind.values()) {
+ new GenericConstructorAndDiamondTest(boundKind, constructorKind,
+ declArgKind, arity, useArgKind, diamondArgKind, argKind).run(comp, fm);
+ }
}
}
}
--- a/langtools/test/tools/javac/generics/diamond/7030687/ParserTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/generics/diamond/7030687/ParserTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -78,26 +78,27 @@
//create default shared JavaCompiler - reused across multiple compilations
JavaCompiler comp = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null);
+ try (StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null)) {
- for (TypeQualifierArity arity : TypeQualifierArity.values()) {
- for (TypeArgumentKind tak1 : TypeArgumentKind.values()) {
- if (arity == TypeQualifierArity.ONE) {
- new ParserTest(arity, tak1).run(comp, fm);
- continue;
- }
- for (TypeArgumentKind tak2 : TypeArgumentKind.values()) {
- if (arity == TypeQualifierArity.TWO) {
- new ParserTest(arity, tak1, tak2).run(comp, fm);
+ for (TypeQualifierArity arity : TypeQualifierArity.values()) {
+ for (TypeArgumentKind tak1 : TypeArgumentKind.values()) {
+ if (arity == TypeQualifierArity.ONE) {
+ new ParserTest(arity, tak1).run(comp, fm);
continue;
}
- for (TypeArgumentKind tak3 : TypeArgumentKind.values()) {
- if (arity == TypeQualifierArity.THREE) {
- new ParserTest(arity, tak1, tak2, tak3).run(comp, fm);
+ for (TypeArgumentKind tak2 : TypeArgumentKind.values()) {
+ if (arity == TypeQualifierArity.TWO) {
+ new ParserTest(arity, tak1, tak2).run(comp, fm);
continue;
}
- for (TypeArgumentKind tak4 : TypeArgumentKind.values()) {
- new ParserTest(arity, tak1, tak2, tak3, tak4).run(comp, fm);
+ for (TypeArgumentKind tak3 : TypeArgumentKind.values()) {
+ if (arity == TypeQualifierArity.THREE) {
+ new ParserTest(arity, tak1, tak2, tak3).run(comp, fm);
+ continue;
+ }
+ for (TypeArgumentKind tak4 : TypeArgumentKind.values()) {
+ new ParserTest(arity, tak1, tak2, tak3, tak4).run(comp, fm);
+ }
}
}
}
--- a/langtools/test/tools/javac/generics/inference/7086601/T7086601b.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/generics/inference/7086601/T7086601b.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -86,18 +86,19 @@
//create default shared JavaCompiler - reused across multiple compilations
JavaCompiler comp = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null);
+ try (StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null)) {
- for (TypeKind a1 : TypeKind.values()) {
- for (TypeKind a2 : TypeKind.values()) {
- for (TypeKind a3 : TypeKind.values()) {
- for (MethodCallKind mck : MethodCallKind.values()) {
- new T7086601b(a1, a2, a3, mck).run(comp, fm);
+ for (TypeKind a1 : TypeKind.values()) {
+ for (TypeKind a2 : TypeKind.values()) {
+ for (TypeKind a3 : TypeKind.values()) {
+ for (MethodCallKind mck : MethodCallKind.values()) {
+ new T7086601b(a1, a2, a3, mck).run(comp, fm);
+ }
}
}
}
+ System.out.println("Total check executed: " + checkCount);
}
- System.out.println("Total check executed: " + checkCount);
}
TypeKind a1;
--- a/langtools/test/tools/javac/lambda/BadLambdaExpr.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/lambda/BadLambdaExpr.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -105,18 +105,19 @@
//create default shared JavaCompiler - reused across multiple compilations
JavaCompiler comp = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null);
+ try (StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null)) {
- for (ParameterListKind plk : ParameterListKind.values()) {
- for (ParameterKind pk : ParameterKind.values()) {
- for (ArrowKind ak : ArrowKind.values()) {
- for (ExprKind ek : ExprKind.values()) {
- new BadLambdaExpr(plk, pk, ak, ek).run(comp, fm);
+ for (ParameterListKind plk : ParameterListKind.values()) {
+ for (ParameterKind pk : ParameterKind.values()) {
+ for (ArrowKind ak : ArrowKind.values()) {
+ for (ExprKind ek : ExprKind.values()) {
+ new BadLambdaExpr(plk, pk, ak, ek).run(comp, fm);
+ }
}
}
}
+ System.out.println("Total check executed: " + checkCount);
}
- System.out.println("Total check executed: " + checkCount);
}
ParameterListKind plk;
--- a/langtools/test/tools/javac/lambda/TestSelfRef.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/lambda/TestSelfRef.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -114,22 +114,23 @@
//create default shared JavaCompiler - reused across multiple compilations
JavaCompiler comp = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null);
+ try (StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null)) {
- for (EnclosingKind ek : EnclosingKind.values()) {
- for (SiteKind sk : SiteKind.values()) {
- if (sk == SiteKind.STATIC_INIT && ek == EnclosingKind.MEMBER_INNER)
- continue;
- for (InnerKind ik : InnerKind.values()) {
- if (ik != InnerKind.NONE && sk == SiteKind.NONE)
- break;
- for (RefKind rk : RefKind.values()) {
- new TestSelfRef(ek, sk, ik, rk).run(comp, fm);
+ for (EnclosingKind ek : EnclosingKind.values()) {
+ for (SiteKind sk : SiteKind.values()) {
+ if (sk == SiteKind.STATIC_INIT && ek == EnclosingKind.MEMBER_INNER)
+ continue;
+ for (InnerKind ik : InnerKind.values()) {
+ if (ik != InnerKind.NONE && sk == SiteKind.NONE)
+ break;
+ for (RefKind rk : RefKind.values()) {
+ new TestSelfRef(ek, sk, ik, rk).run(comp, fm);
+ }
}
}
}
+ System.out.println("Total check executed: " + checkCount);
}
- System.out.println("Total check executed: " + checkCount);
}
EnclosingKind ek;
--- a/langtools/test/tools/javac/lambda/intersection/IntersectionTargetTypeTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/lambda/intersection/IntersectionTargetTypeTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -185,14 +185,15 @@
public static void main(String... args) throws Exception {
//create default shared JavaCompiler - reused across multiple compilations
JavaCompiler comp = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null);
+ try (StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null)) {
- for (CastInfo cInfo : allCastInfo()) {
- for (ExpressionKind ek : ExpressionKind.values()) {
- new IntersectionTargetTypeTest(cInfo, ek).run(comp, fm);
+ for (CastInfo cInfo : allCastInfo()) {
+ for (ExpressionKind ek : ExpressionKind.values()) {
+ new IntersectionTargetTypeTest(cInfo, ek).run(comp, fm);
+ }
}
+ System.out.println("Total check executed: " + checkCount);
}
- System.out.println("Total check executed: " + checkCount);
}
static List<CastInfo> allCastInfo() {
--- a/langtools/test/tools/javac/lambda/methodReference/SamConversionComboTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/lambda/methodReference/SamConversionComboTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -250,13 +250,17 @@
}
public static void main(String[] args) throws Exception {
- for(Context ct : Context.values()) {
- for (FInterface fi : FInterface.values()) {
- for (MethodDef md: MethodDef.values()) {
- new SamConversionComboTest(fi, ct, md).test();
+ try {
+ for(Context ct : Context.values()) {
+ for (FInterface fi : FInterface.values()) {
+ for (MethodDef md: MethodDef.values()) {
+ new SamConversionComboTest(fi, ct, md).test();
+ }
}
}
+ System.out.println("total tests: " + count);
+ } finally {
+ fm.close();
}
- System.out.println("total tests: " + count);
}
}
--- a/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/javac/FDTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/lambdaShapes/org/openjdk/tests/javac/FDTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -28,6 +28,7 @@
import com.sun.source.util.JavacTask;
import com.sun.tools.javac.util.Pair;
+import java.io.IOException;
import java.net.URI;
import java.util.Arrays;
import java.util.ArrayList;
@@ -41,6 +42,7 @@
import javax.tools.StandardJavaFileManager;
import javax.tools.ToolProvider;
+import org.testng.annotations.AfterSuite;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.DataProvider;
@@ -70,12 +72,19 @@
fm = comp.getStandardFileManager(null, null, null);
}
+ @AfterSuite
+ static void teardown() throws IOException {
+ fm.close();
+ }
+
public static void main(String[] args) throws Exception {
init();
for (Pair<TestKind,Hierarchy> fdtest : generateCases()) {
runTest(fdtest.fst, fdtest.snd, comp, fm);
}
+
+ teardown();
}
@Test(dataProvider = "fdCases")
--- a/langtools/test/tools/javac/nativeHeaders/NativeHeaderTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/nativeHeaders/NativeHeaderTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -193,27 +193,30 @@
void run() throws Exception {
javac = JavacTool.create();
fm = javac.getStandardFileManager(null, null, null);
-
- for (RunKind rk: RunKind.values()) {
- for (GenKind gk: GenKind.values()) {
- for (Method m: getClass().getDeclaredMethods()) {
- Annotation a = m.getAnnotation(Test.class);
- if (a != null) {
- init(rk, gk, m.getName());
- try {
- m.invoke(this, new Object[] { rk, gk });
- } catch (InvocationTargetException e) {
- Throwable cause = e.getCause();
- throw (cause instanceof Exception) ? ((Exception) cause) : e;
+ try {
+ for (RunKind rk: RunKind.values()) {
+ for (GenKind gk: GenKind.values()) {
+ for (Method m: getClass().getDeclaredMethods()) {
+ Annotation a = m.getAnnotation(Test.class);
+ if (a != null) {
+ init(rk, gk, m.getName());
+ try {
+ m.invoke(this, new Object[] { rk, gk });
+ } catch (InvocationTargetException e) {
+ Throwable cause = e.getCause();
+ throw (cause instanceof Exception) ? ((Exception) cause) : e;
+ }
+ System.err.println();
}
- System.err.println();
}
}
}
+ System.err.println(testCount + " tests" + ((errorCount == 0) ? "" : ", " + errorCount + " errors"));
+ if (errorCount > 0)
+ throw new Exception(errorCount + " errors found");
+ } finally {
+ fm.close();
}
- System.err.println(testCount + " tests" + ((errorCount == 0) ? "" : ", " + errorCount + " errors"));
- if (errorCount > 0)
- throw new Exception(errorCount + " errors found");
}
/**
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/options/XjcovUnionTypeTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8059453
+ * @summary -Xjcov causes crash with union types
+ * @compile -Xjcov XjcovUnionTypeTest.java
+ */
+
+public class XjcovUnionTypeTest {
+ public static void main(String[] args) {
+ try {
+ return;
+ } catch (IllegalStateException | IllegalArgumentException e) {
+ }
+ }
+}
--- a/langtools/test/tools/javac/options/xprefer/XPreferTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/options/xprefer/XPreferTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -45,6 +45,7 @@
import javax.tools.JavaCompiler;
import javax.tools.JavaCompiler.CompilationTask;
+import javax.tools.StandardJavaFileManager;
import javax.tools.ToolProvider;
@@ -73,27 +74,31 @@
}
final static JavaCompiler comp = ToolProvider.getSystemJavaCompiler();
+ final static StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null);
final static File OUTPUT_DIR = new File("out");
public static void main(String... args) throws Exception {
+ try {
+ // Initialize test-directories
+ OUTPUT_DIR.mkdir();
+ for (Dir dir : Dir.values())
+ dir.file.mkdir();
- // Initialize test-directories
- OUTPUT_DIR.mkdir();
- for (Dir dir : Dir.values())
- dir.file.mkdir();
-
- int testCaseCounter = 0;
+ int testCaseCounter = 0;
- for (List<Dir> dirSubset : SubseqIter.subseqsOf(Dir.values())) {
+ for (List<Dir> dirSubset : SubseqIter.subseqsOf(Dir.values())) {
+
+ if (dirSubset.isEmpty())
+ continue;
- if (dirSubset.isEmpty())
- continue;
-
- for (ImplicitOption policy : ImplicitOption.values()) {
- for (List<Dir> dirOrder : PermutationIterator.permutationsOf(dirSubset)) {
- new TestCase(dirOrder, policy, testCaseCounter++).run();
+ for (ImplicitOption policy : ImplicitOption.values()) {
+ for (List<Dir> dirOrder : PermutationIterator.permutationsOf(dirSubset)) {
+ new TestCase(dirOrder, policy, testCaseCounter++).run();
+ }
}
}
+ } finally {
+ fm.close();
}
}
@@ -234,8 +239,8 @@
if(dir == Dir.SOURCE_PATH)
return src;
// ...otherwise compile into a ".class".
- CompilationTask task = comp.getTask(null, null, null, null, null,
- comp.getStandardFileManager(null, null, null).getJavaFileObjects(src));
+ CompilationTask task = comp.getTask(null, fm, null, null, null,
+ fm.getJavaFileObjects(src));
File dest = new File(dir.file, classId + ".class");
if(!task.call() || !dest.exists())
throw new RuntimeException("Compilation failure.");
--- a/langtools/test/tools/javac/plugin/showtype/Test.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/plugin/showtype/Test.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -71,21 +71,25 @@
}
void run() throws Exception {
- // compile the plugin explicitly, to a non-standard directory
- // so that we don't find it on the wrong path by accident
- pluginClasses.mkdirs();
- compile("-d", pluginClasses.getPath(), pluginSrc.getPath());
- writeFile(new File(pluginClasses, "META-INF/services/com.sun.source.util.Plugin"),
- "ShowTypePlugin\n");
- jar("cf", pluginJar.getPath(), "-C", pluginClasses.getPath(), ".");
+ try {
+ // compile the plugin explicitly, to a non-standard directory
+ // so that we don't find it on the wrong path by accident
+ pluginClasses.mkdirs();
+ compile("-d", pluginClasses.getPath(), pluginSrc.getPath());
+ writeFile(new File(pluginClasses, "META-INF/services/com.sun.source.util.Plugin"),
+ "ShowTypePlugin\n");
+ jar("cf", pluginJar.getPath(), "-C", pluginClasses.getPath(), ".");
- testCommandLine("-Xplugin:showtype", ref1);
- testCommandLine("-Xplugin:showtype PI", ref2);
- testAPI("-Xplugin:showtype", ref1);
- testAPI("-Xplugin:showtype PI", ref2);
+ testCommandLine("-Xplugin:showtype", ref1);
+ testCommandLine("-Xplugin:showtype PI", ref2);
+ testAPI("-Xplugin:showtype", ref1);
+ testAPI("-Xplugin:showtype PI", ref2);
- if (errors > 0)
- throw new Exception(errors + " errors occurred");
+ if (errors > 0)
+ throw new Exception(errors + " errors occurred");
+ } finally {
+ fm.close();
+ }
}
void testAPI(String opt, List<String> ref) throws Exception {
--- a/langtools/test/tools/javac/positions/TreeEndPosTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/positions/TreeEndPosTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -137,32 +137,33 @@
File tempDir = new File(".");
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
DiagnosticCollector dc = new DiagnosticCollector();
- JavaFileManager javaFileManager = getJavaFileManager(compiler, dc);
- List<String> options = new ArrayList<>();
- options.add("-cp");
- options.add(tempDir.getPath());
- options.add("-d");
- options.add(tempDir.getPath());
- options.add("-XDshouldStopPolicy=GENERATE");
+ try (JavaFileManager javaFileManager = getJavaFileManager(compiler, dc)) {
+ List<String> options = new ArrayList<>();
+ options.add("-cp");
+ options.add(tempDir.getPath());
+ options.add("-d");
+ options.add(tempDir.getPath());
+ options.add("-XDshouldStopPolicy=GENERATE");
- List<JavaFileObject> sources = new ArrayList<>();
- sources.add(src);
- JavaCompiler.CompilationTask task =
- compiler.getTask(writer, javaFileManager,
- dc, options, null,
- sources);
- task.call();
- for (Diagnostic diagnostic : (List<Diagnostic>) dc.getDiagnostics()) {
- long actualStart = diagnostic.getStartPosition();
- long actualEnd = diagnostic.getEndPosition();
- System.out.println("Source: " + src.source);
- System.out.println("Diagnostic: " + diagnostic);
- System.out.print("Start position: Expected: " + src.startPos);
- System.out.println(", Actual: " + actualStart);
- System.out.print("End position: Expected: " + src.endPos);
- System.out.println(", Actual: " + actualEnd);
- if (src.startPos != actualStart || src.endPos != actualEnd) {
- throw new RuntimeException("error: trees don't match");
+ List<JavaFileObject> sources = new ArrayList<>();
+ sources.add(src);
+ JavaCompiler.CompilationTask task =
+ compiler.getTask(writer, javaFileManager,
+ dc, options, null,
+ sources);
+ task.call();
+ for (Diagnostic diagnostic : (List<Diagnostic>) dc.getDiagnostics()) {
+ long actualStart = diagnostic.getStartPosition();
+ long actualEnd = diagnostic.getEndPosition();
+ System.out.println("Source: " + src.source);
+ System.out.println("Diagnostic: " + diagnostic);
+ System.out.print("Start position: Expected: " + src.startPos);
+ System.out.println(", Actual: " + actualStart);
+ System.out.print("End position: Expected: " + src.endPos);
+ System.out.println(", Actual: " + actualEnd);
+ if (src.startPos != actualStart || src.endPos != actualEnd) {
+ throw new RuntimeException("error: trees don't match");
+ }
}
}
}
--- a/langtools/test/tools/javac/processing/6348193/T6348193.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/processing/6348193/T6348193.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -85,35 +85,36 @@
MyDiagListener dl = new MyDiagListener();
PrintWriter out = new PrintWriter(System.err, true);
- StandardJavaFileManager fm = t.getStandardFileManager(dl, null, null);
- File file = new File(System.getProperty("test.src"), myName+".java");
- Iterable<? extends JavaFileObject> files =
- fm.getJavaFileObjectsFromFiles(Arrays.asList(file));
- boolean ok = t.getTask(out, null, dl, args, null, files).call();
+ try (StandardJavaFileManager fm = t.getStandardFileManager(dl, null, null)) {
+ File file = new File(System.getProperty("test.src"), myName+".java");
+ Iterable<? extends JavaFileObject> files =
+ fm.getJavaFileObjectsFromFiles(Arrays.asList(file));
+ boolean ok = t.getTask(out, null, dl, args, null, files).call();
- if (config == NoGoodBad.GOOD || proc == NoYes.YES) {
- if (secMgr == NoYes.YES) {
- if (dl.last == null)
- throw new AssertionError("Security manager installed, and processors present, "
- + " but no diagnostic received");
+ if (config == NoGoodBad.GOOD || proc == NoYes.YES) {
+ if (secMgr == NoYes.YES) {
+ if (dl.last == null)
+ throw new AssertionError("Security manager installed, and processors present, "
+ + " but no diagnostic received");
+ }
+ else {
+ if (!processed.exists())
+ throw new AssertionError("No security manager installed, and processors present, "
+ + " but no processing occurred");
+ }
+ }
+ else if (config == NoGoodBad.BAD) {
+ // TODO: should verify that no compiler crash occurred
+ // needs revised JSR199 spec
}
else {
- if (!processed.exists())
- throw new AssertionError("No security manager installed, and processors present, "
- + " but no processing occurred");
+ if (processed.exists())
+ throw new AssertionError("No processors present, but processing occurred!");
}
+
+ if (verbose)
+ System.err.println("OK");
}
- else if (config == NoGoodBad.BAD) {
- // TODO: should verify that no compiler crash occurred
- // needs revised JSR199 spec
- }
- else {
- if (processed.exists())
- throw new AssertionError("No processors present, but processing occurred!");
- }
-
- if (verbose)
- System.err.println("OK");
}
// set up or remove a service configuration file
--- a/langtools/test/tools/javac/processing/6348499/T6348499.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/processing/6348499/T6348499.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -44,32 +44,33 @@
public class T6348499 {
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
String testSrc = System.getProperty("test.src", ".");
String testClasses = System.getProperty("test.classes");
String testClassPath = System.getProperty("test.class.path", testClasses);
String A_java = new File(testSrc, "A.java").getPath();
JavacTool tool = JavacTool.create();
MyDiagListener dl = new MyDiagListener();
- StandardJavaFileManager fm = tool.getStandardFileManager(dl, null, null);
- Iterable<? extends JavaFileObject> files =
- fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, "A.java")));
- Iterable<String> opts = Arrays.asList("-proc:only",
- "-processor", "A",
- "-processorpath", testClassPath);
- StringWriter out = new StringWriter();
- JavacTask task = tool.getTask(out, fm, dl, opts, null, files);
- task.call();
- String s = out.toString();
- System.err.print(s);
- // Expect the following 1 multi-line diagnostic, and no output to log
- // error: cannot access A_0
- // bad class file: A_0.class
- // illegal start of class file
- // Please remove or make sure it appears in the correct subdirectory of the classpath.
- System.err.println(dl.count + " diagnostics; " + s.length() + " characters");
- if (dl.count != 1 || s.length() != 0)
- throw new AssertionError("unexpected output from compiler");
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(dl, null, null)) {
+ Iterable<? extends JavaFileObject> files =
+ fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, "A.java")));
+ Iterable<String> opts = Arrays.asList("-proc:only",
+ "-processor", "A",
+ "-processorpath", testClassPath);
+ StringWriter out = new StringWriter();
+ JavacTask task = tool.getTask(out, fm, dl, opts, null, files);
+ task.call();
+ String s = out.toString();
+ System.err.print(s);
+ // Expect the following 1 multi-line diagnostic, and no output to log
+ // error: cannot access A_0
+ // bad class file: A_0.class
+ // illegal start of class file
+ // Please remove or make sure it appears in the correct subdirectory of the classpath.
+ System.err.println(dl.count + " diagnostics; " + s.length() + " characters");
+ if (dl.count != 1 || s.length() != 0)
+ throw new AssertionError("unexpected output from compiler");
+ }
}
static class MyDiagListener implements DiagnosticListener<JavaFileObject> {
--- a/langtools/test/tools/javac/processing/6378728/T6378728.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/processing/6378728/T6378728.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -64,21 +64,22 @@
}
}
- public static void main(String[] args) {
+ public static void main(String[] args) throws IOException {
// Get a compiler tool
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
String srcdir = System.getProperty("test.src");
File source = new File(srcdir, "T6378728.java");
- StandardJavaFileManager fm = compiler.getStandardFileManager(null, null, null);
+ try (StandardJavaFileManager fm = compiler.getStandardFileManager(null, null, null)) {
- CompilationTask task =
- compiler.getTask(null,
- new ExceptionalFileManager(fm),
- null,
- Arrays.asList("-proc:only"),
- null,
- fm.getJavaFileObjectsFromFiles(Arrays.asList(source)));
- if (!task.call())
- throw new RuntimeException("Unexpected compilation failure");
+ CompilationTask task =
+ compiler.getTask(null,
+ new ExceptionalFileManager(fm),
+ null,
+ Arrays.asList("-proc:only"),
+ null,
+ fm.getJavaFileObjectsFromFiles(Arrays.asList(source)));
+ if (!task.call())
+ throw new RuntimeException("Unexpected compilation failure");
+ }
}
}
--- a/langtools/test/tools/javac/processing/6414633/T6414633.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/processing/6414633/T6414633.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -40,29 +40,30 @@
import com.sun.tools.javac.api.*;
public class T6414633 {
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
String testSrc = System.getProperty("test.src", ".");
String testClasses = System.getProperty("test.classes", ".");
String testClassPath = System.getProperty("test.class.path", testClasses);
JavacTool tool = JavacTool.create();
MyDiagListener dl = new MyDiagListener();
- StandardJavaFileManager fm = tool.getStandardFileManager(dl, null, null);
- try {
- fm.setLocation(StandardLocation.CLASS_PATH, pathToFiles(testClassPath));
- } catch (IOException e) {
- throw new AssertionError(e);
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(dl, null, null)) {
+ try {
+ fm.setLocation(StandardLocation.CLASS_PATH, pathToFiles(testClassPath));
+ } catch (IOException e) {
+ throw new AssertionError(e);
+ }
+ Iterable<? extends JavaFileObject> files =
+ fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, A.class.getName()+".java")));
+ String[] opts = { "-proc:only",
+ "-processor", A.class.getName() };
+ JavacTask task = tool.getTask(null, fm, dl, Arrays.asList(opts), null, files);
+ task.call();
+
+ // two annotations on the same element -- expect 2 diags from the processor
+ if (dl.diags != 2)
+ throw new AssertionError(dl.diags + " diagnostics reported");
}
- Iterable<? extends JavaFileObject> files =
- fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, A.class.getName()+".java")));
- String[] opts = { "-proc:only",
- "-processor", A.class.getName() };
- JavacTask task = tool.getTask(null, fm, dl, Arrays.asList(opts), null, files);
- task.call();
-
- // two annotations on the same element -- expect 2 diags from the processor
- if (dl.diags != 2)
- throw new AssertionError(dl.diags + " diagnostics reported");
}
private static List<File> pathToFiles(String path) {
--- a/langtools/test/tools/javac/processing/6430209/T6430209.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/processing/6430209/T6430209.java Fri Oct 31 18:18:58 2014 +0000
@@ -58,22 +58,23 @@
String testClassPath = System.getProperty("test.class.path");
JavacTool tool = JavacTool.create();
MyDiagListener dl = new MyDiagListener();
- StandardJavaFileManager fm = tool.getStandardFileManager(dl, null, null);
- fm.setLocation(StandardLocation.CLASS_PATH, Arrays.asList(new File(".")));
- Iterable<? extends JavaFileObject> files = fm.getJavaFileObjectsFromFiles(Arrays.asList(
- new File(testSrc, "test0.java"), new File(testSrc, "test1.java")));
- Iterable<String> opts = Arrays.asList("-proc:only",
- "-processor", "b6341534",
- "-processorpath", testClassPath);
- StringWriter out = new StringWriter();
- JavacTask task = tool.getTask(out, fm, dl, opts, null, files);
- task.call();
- String s = out.toString();
- System.err.print(s);
- // Expect the following 2 diagnostics, and no output to log
- System.err.println(dl.count + " diagnostics; " + s.length() + " characters");
- if (dl.count != 2 || s.length() != 0)
- throw new AssertionError("unexpected output from compiler");
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(dl, null, null)) {
+ fm.setLocation(StandardLocation.CLASS_PATH, Arrays.asList(new File(".")));
+ Iterable<? extends JavaFileObject> files = fm.getJavaFileObjectsFromFiles(Arrays.asList(
+ new File(testSrc, "test0.java"), new File(testSrc, "test1.java")));
+ Iterable<String> opts = Arrays.asList("-proc:only",
+ "-processor", "b6341534",
+ "-processorpath", testClassPath);
+ StringWriter out = new StringWriter();
+ JavacTask task = tool.getTask(out, fm, dl, opts, null, files);
+ task.call();
+ String s = out.toString();
+ System.err.print(s);
+ // Expect the following 2 diagnostics, and no output to log
+ System.err.println(dl.count + " diagnostics; " + s.length() + " characters");
+ if (dl.count != 2 || s.length() != 0)
+ throw new AssertionError("unexpected output from compiler");
+ }
}
static class MyDiagListener implements DiagnosticListener<JavaFileObject> {
--- a/langtools/test/tools/javac/processing/T6439826.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/processing/T6439826.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -40,28 +40,29 @@
@SupportedAnnotationTypes("*")
public class T6439826 extends AbstractProcessor {
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
String testSrc = System.getProperty("test.src", ".");
String testClasses = System.getProperty("test.classes");
JavacTool tool = JavacTool.create();
MyDiagListener dl = new MyDiagListener();
- StandardJavaFileManager fm = tool.getStandardFileManager(dl, null, null);
- Iterable<? extends JavaFileObject> files =
- fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, T6439826.class.getName()+".java")));
- Iterable<String> opts = Arrays.asList("-proc:only",
- "-processor", "T6439826",
- "-processorpath", testClasses);
- StringWriter out = new StringWriter();
- JavacTask task = tool.getTask(out, fm, dl, opts, null, files);
- task.call();
- String s = out.toString();
- System.err.print(s);
- // Expect the following 2 diagnostics, and no output to log
- // Foo.java:1: illegal character: \35
- // Foo.java:1: reached end of file while parsing
- System.err.println(dl.count + " diagnostics; " + s.length() + " characters");
- if (dl.count != 2 || s.length() != 0)
- throw new AssertionError("unexpected output from compiler");
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(dl, null, null)) {
+ Iterable<? extends JavaFileObject> files =
+ fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, T6439826.class.getName()+".java")));
+ Iterable<String> opts = Arrays.asList("-proc:only",
+ "-processor", "T6439826",
+ "-processorpath", testClasses);
+ StringWriter out = new StringWriter();
+ JavacTask task = tool.getTask(out, fm, dl, opts, null, files);
+ task.call();
+ String s = out.toString();
+ System.err.print(s);
+ // Expect the following 2 diagnostics, and no output to log
+ // Foo.java:1: illegal character: \35
+ // Foo.java:1: reached end of file while parsing
+ System.err.println(dl.count + " diagnostics; " + s.length() + " characters");
+ if (dl.count != 2 || s.length() != 0)
+ throw new AssertionError("unexpected output from compiler");
+ }
}
public boolean process(Set<? extends TypeElement> annotations,
--- a/langtools/test/tools/javac/processing/errors/TestSuppression.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/processing/errors/TestSuppression.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -100,41 +100,42 @@
DiagListener dl = new DiagListener();
JavacTool tool = JavacTool.create();
- StandardJavaFileManager fm = tool.getStandardFileManager(dl, null, null);
- fm.setLocation(StandardLocation.CLASS_PATH,
- Arrays.asList(classesDir, new File(System.getProperty("test.classes"))));
- fm.setLocation(StandardLocation.CLASS_OUTPUT, Collections.singleton(classesDir));
- fm.setLocation(StandardLocation.SOURCE_OUTPUT, Collections.singleton(gensrcDir));
- List<String> args = new ArrayList<String>();
-// args.add("-XprintProcessorInfo");
- args.add("-XprintRounds");
- args.add("-Agen=" + gen);
- if (wk == WarningKind.YES)
- args.add("-Xlint:serial");
- Iterable<? extends JavaFileObject> files = fm.getJavaFileObjects(x);
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(dl, null, null)) {
+ fm.setLocation(StandardLocation.CLASS_PATH,
+ Arrays.asList(classesDir, new File(System.getProperty("test.classes"))));
+ fm.setLocation(StandardLocation.CLASS_OUTPUT, Collections.singleton(classesDir));
+ fm.setLocation(StandardLocation.SOURCE_OUTPUT, Collections.singleton(gensrcDir));
+ List<String> args = new ArrayList<String>();
+ // args.add("-XprintProcessorInfo");
+ args.add("-XprintRounds");
+ args.add("-Agen=" + gen);
+ if (wk == WarningKind.YES)
+ args.add("-Xlint:serial");
+ Iterable<? extends JavaFileObject> files = fm.getJavaFileObjects(x);
- StringWriter sw = new StringWriter();
- PrintWriter pw = new PrintWriter(sw);
- JavacTask task = tool.getTask(pw, fm, dl, args, null, files);
- task.setProcessors(Arrays.asList(new AnnoProc()));
- boolean ok = task.call();
- pw.close();
+ StringWriter sw = new StringWriter();
+ PrintWriter pw = new PrintWriter(sw);
+ JavacTask task = tool.getTask(pw, fm, dl, args, null, files);
+ task.setProcessors(Arrays.asList(new AnnoProc()));
+ boolean ok = task.call();
+ pw.close();
- System.err.println("ok:" + ok + " diags:" + dl.counts);
- if (sw.toString().length() > 0) {
- System.err.println("output:\n" + sw.toString());
+ System.err.println("ok:" + ok + " diags:" + dl.counts);
+ if (sw.toString().length() > 0) {
+ System.err.println("output:\n" + sw.toString());
+ }
+
+ for (Diagnostic.Kind dk: Diagnostic.Kind.values()) {
+ Integer v = dl.counts.get(dk);
+ int found = (v == null) ? 0 : v;
+ int expect = (dk == Diagnostic.Kind.WARNING && wk == WarningKind.YES) ? gen : 0;
+ if (found != expect) {
+ error("Unexpected value for " + dk + ": expected: " + expect + " found: " + found);
+ }
+ }
+
+ System.err.println();
}
-
- for (Diagnostic.Kind dk: Diagnostic.Kind.values()) {
- Integer v = dl.counts.get(dk);
- int found = (v == null) ? 0 : v;
- int expect = (dk == Diagnostic.Kind.WARNING && wk == WarningKind.YES) ? gen : 0;
- if (found != expect) {
- error("Unexpected value for " + dk + ": expected: " + expect + " found: " + found);
- }
- }
-
- System.err.println();
}
File createDir(File parent, String name) {
--- a/langtools/test/tools/javac/processing/loader/testClose/TestClose.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/processing/loader/testClose/TestClose.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -117,50 +117,51 @@
void run() throws IOException {
JavacTool tool = (JavacTool) ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
- File classes = new File("classes");
- classes.mkdirs();
- File extraClasses = new File("extraClasses");
- extraClasses.mkdirs();
+ File classes = new File("classes");
+ classes.mkdirs();
+ File extraClasses = new File("extraClasses");
+ extraClasses.mkdirs();
- System.out.println("compiling classes to extraClasses");
- { // setup class in extraClasses
- fm.setLocation(StandardLocation.CLASS_OUTPUT,
- Collections.singleton(extraClasses));
- List<? extends JavaFileObject> files = Arrays.asList(
- new MemFile("AnnoProc.java", annoProc),
- new MemFile("Callback.java", callback));
- JavacTask task = tool.getTask(null, fm, null, null, null, files);
- check(task.call());
- }
+ System.out.println("compiling classes to extraClasses");
+ { // setup class in extraClasses
+ fm.setLocation(StandardLocation.CLASS_OUTPUT,
+ Collections.singleton(extraClasses));
+ List<? extends JavaFileObject> files = Arrays.asList(
+ new MemFile("AnnoProc.java", annoProc),
+ new MemFile("Callback.java", callback));
+ JavacTask task = tool.getTask(null, fm, null, null, null, files);
+ check(task.call());
+ }
- System.out.println("compiling dummy to classes with anno processor");
- { // use that class in a TaskListener after processing has completed
- PrintStream prev = System.out;
- String out;
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- try (PrintStream ps = new PrintStream(baos)) {
- System.setOut(ps);
- File testClasses = new File(System.getProperty("test.classes"));
- fm.setLocation(StandardLocation.CLASS_OUTPUT,
- Collections.singleton(classes));
- fm.setLocation(StandardLocation.ANNOTATION_PROCESSOR_PATH,
- Arrays.asList(extraClasses, testClasses));
- List<? extends JavaFileObject> files = Arrays.asList(
- new MemFile("my://dummy", "class Dummy { }"));
- List<String> options = Arrays.asList("-processor", "AnnoProc");
- JavacTask task = tool.getTask(null, fm, null, options, null, files);
- task.setTaskListener(this);
- check(task.call());
- } finally {
- System.setOut(prev);
- out = baos.toString();
- if (!out.isEmpty())
- System.out.println(out);
+ System.out.println("compiling dummy to classes with anno processor");
+ { // use that class in a TaskListener after processing has completed
+ PrintStream prev = System.out;
+ String out;
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ try (PrintStream ps = new PrintStream(baos)) {
+ System.setOut(ps);
+ File testClasses = new File(System.getProperty("test.classes"));
+ fm.setLocation(StandardLocation.CLASS_OUTPUT,
+ Collections.singleton(classes));
+ fm.setLocation(StandardLocation.ANNOTATION_PROCESSOR_PATH,
+ Arrays.asList(extraClasses, testClasses));
+ List<? extends JavaFileObject> files = Arrays.asList(
+ new MemFile("my://dummy", "class Dummy { }"));
+ List<String> options = Arrays.asList("-processor", "AnnoProc");
+ JavacTask task = tool.getTask(null, fm, null, options, null, files);
+ task.setTaskListener(this);
+ check(task.call());
+ } finally {
+ System.setOut(prev);
+ out = baos.toString();
+ if (!out.isEmpty())
+ System.out.println(out);
+ }
+ check(out.contains("AnnoProc$1: run()"));
+ check(out.contains("Callback: run()"));
}
- check(out.contains("AnnoProc$1: run()"));
- check(out.contains("Callback: run()"));
}
}
--- a/langtools/test/tools/javac/processing/model/testgetallmembers/Main.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/processing/model/testgetallmembers/Main.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -64,66 +64,67 @@
return;
}
JavaCompiler tool = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- fm.setLocation(CLASS_PATH, Collections.<File>emptyList());
- JavacTask javac = (JavacTask)tool.getTask(null, fm, null, null, null, null);
- Elements elements = javac.getElements();
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ fm.setLocation(CLASS_PATH, Collections.<File>emptyList());
+ JavacTask javac = (JavacTask)tool.getTask(null, fm, null, null, null, null);
+ Elements elements = javac.getElements();
- final Set<String> packages = new LinkedHashSet<String>();
+ final Set<String> packages = new LinkedHashSet<String>();
- int nestedClasses = 0;
- int classes = 0;
+ int nestedClasses = 0;
+ int classes = 0;
- for (JavaFileObject file : fm.list(PLATFORM_CLASS_PATH, "", EnumSet.of(CLASS), true)) {
- String type = fm.inferBinaryName(PLATFORM_CLASS_PATH, file);
- if (type.endsWith("package-info"))
- continue;
- try {
- TypeElement elem = elements.getTypeElement(type);
- if (elem == null && type.indexOf('$') > 0) {
- nestedClasses++;
- type = null;
+ for (JavaFileObject file : fm.list(PLATFORM_CLASS_PATH, "", EnumSet.of(CLASS), true)) {
+ String type = fm.inferBinaryName(PLATFORM_CLASS_PATH, file);
+ if (type.endsWith("package-info"))
continue;
+ try {
+ TypeElement elem = elements.getTypeElement(type);
+ if (elem == null && type.indexOf('$') > 0) {
+ nestedClasses++;
+ type = null;
+ continue;
+ }
+ classes++;
+ packages.add(getPackage(elem).getQualifiedName().toString());
+ elements.getTypeElement(type).getKind(); // force completion
+ type = null;
+ } finally {
+ if (type != null)
+ System.err.println("Looking at " + type);
}
- classes++;
- packages.add(getPackage(elem).getQualifiedName().toString());
- elements.getTypeElement(type).getKind(); // force completion
- type = null;
- } finally {
- if (type != null)
- System.err.println("Looking at " + type);
+ }
+ javac = null;
+ elements = null;
+
+ javac = (JavacTask)tool.getTask(null, fm, null, null, null, null);
+ elements = javac.getElements();
+
+ for (String name : packages) {
+ PackageElement pe = elements.getPackageElement(name);
+ for (Element e : pe.getEnclosedElements()) {
+ e.getSimpleName().getClass();
+ }
}
+ /*
+ * A few sanity checks based on current values:
+ *
+ * packages: 775, classes: 12429 + 5917
+ *
+ * As the platform evolves the numbers are likely to grow
+ * monotonically but in case somebody gets a clever idea for
+ * limiting the number of packages exposed, this number might
+ * drop. So we test low values.
+ */
+ System.out.format("packages: %s, classes: %s + %s%n",
+ packages.size(), classes, nestedClasses);
+ if (classes < 9000)
+ throw new AssertionError("Too few classes in PLATFORM_CLASS_PATH ;-)");
+ if (packages.size() < 530)
+ throw new AssertionError("Too few packages in PLATFORM_CLASS_PATH ;-)");
+ if (nestedClasses < 3000)
+ throw new AssertionError("Too few nested classes in PLATFORM_CLASS_PATH ;-)");
}
- javac = null;
- elements = null;
-
- javac = (JavacTask)tool.getTask(null, fm, null, null, null, null);
- elements = javac.getElements();
-
- for (String name : packages) {
- PackageElement pe = elements.getPackageElement(name);
- for (Element e : pe.getEnclosedElements()) {
- e.getSimpleName().getClass();
- }
- }
- /*
- * A few sanity checks based on current values:
- *
- * packages: 775, classes: 12429 + 5917
- *
- * As the platform evolves the numbers are likely to grow
- * monotonically but in case somebody gets a clever idea for
- * limiting the number of packages exposed, this number might
- * drop. So we test low values.
- */
- System.out.format("packages: %s, classes: %s + %s%n",
- packages.size(), classes, nestedClasses);
- if (classes < 9000)
- throw new AssertionError("Too few classes in PLATFORM_CLASS_PATH ;-)");
- if (packages.size() < 530)
- throw new AssertionError("Too few packages in PLATFORM_CLASS_PATH ;-)");
- if (nestedClasses < 3000)
- throw new AssertionError("Too few nested classes in PLATFORM_CLASS_PATH ;-)");
}
/*
* If -XX:+AggressiveOpts has been used to test, the option currently
--- a/langtools/test/tools/javac/processing/model/type/BoundsTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/processing/model/type/BoundsTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,6 +25,7 @@
* @test
* @bug 6499673
* @library /tools/javac/lib
+ * @ignore 8062245 Test executes incorrect class
* @build JavacTestingAbstractProcessor BoundsTest
* @run main BoundsTest
* @summary Assertion check for TypeVariable.getUpperBound() fails
@@ -113,15 +114,19 @@
}
public void run() throws IOException {
- runOne(Intersection_name, Intersection_contents,
- Intersection_bounds, Intersection_supers);
- runOne(Single_name, Single_contents,
- Single_bounds, Single_supers);
- runOne(NoBounds_name, NoBounds_contents,
- NoBounds_bounds, NoBounds_supers);
+ try {
+ runOne(Intersection_name, Intersection_contents,
+ Intersection_bounds, Intersection_supers);
+ runOne(Single_name, Single_contents,
+ Single_bounds, Single_supers);
+ runOne(NoBounds_name, NoBounds_contents,
+ NoBounds_bounds, NoBounds_supers);
- if (0 != errors)
- throw new RuntimeException(errors + " errors occurred");
+ if (0 != errors)
+ throw new RuntimeException(errors + " errors occurred");
+ } finally {
+ fm.close();
+ }
}
public static void main(String... args) throws IOException {
--- a/langtools/test/tools/javac/processing/model/type/IntersectionPropertiesTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/processing/model/type/IntersectionPropertiesTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -76,10 +76,14 @@
}
public void run() throws IOException {
- runOne(Intersection_name, Intersection_contents);
+ try {
+ runOne(Intersection_name, Intersection_contents);
- if (0 != errors)
- throw new RuntimeException(errors + " errors occurred");
+ if (0 != errors)
+ throw new RuntimeException(errors + " errors occurred");
+ } finally {
+ fm.close();
+ }
}
public static void main(String... args) throws IOException {
--- a/langtools/test/tools/javac/processing/model/util/elements/doccomments/TestDocComments.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/processing/model/util/elements/doccomments/TestDocComments.java Fri Oct 31 18:18:58 2014 +0000
@@ -104,11 +104,12 @@
}
};
JavaCompiler c = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm = c.getStandardFileManager(null, null, null);
- Iterable<? extends JavaFileObject> units = fm.getJavaFileObjects(files);
- JavacTask t = (JavacTask) c.getTask(null, fm, dl, Arrays.asList(opts), null, units);
- t.parse();
- t.analyze();
+ try (StandardJavaFileManager fm = c.getStandardFileManager(null, null, null)) {
+ Iterable<? extends JavaFileObject> units = fm.getJavaFileObjects(files);
+ JavacTask t = (JavacTask) c.getTask(null, fm, dl, Arrays.asList(opts), null, units);
+ t.parse();
+ t.analyze();
+ }
}
static void test_javac_cmd(String[] opts, File[] files) {
--- a/langtools/test/tools/javac/processing/model/util/elements/doccomments/TestPackageInfoComments.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/processing/model/util/elements/doccomments/TestPackageInfoComments.java Fri Oct 31 18:18:58 2014 +0000
@@ -60,11 +60,12 @@
}
};
JavaCompiler c = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm = c.getStandardFileManager(null, null, null);
- Iterable<? extends JavaFileObject> units = fm.getJavaFileObjects(files);
- JavacTask t = (JavacTask) c.getTask(null, fm, dl, Arrays.asList(opts), null, units);
- t.parse();
- t.analyze();
+ try (StandardJavaFileManager fm = c.getStandardFileManager(null, null, null)) {
+ Iterable<? extends JavaFileObject> units = fm.getJavaFileObjects(files);
+ JavacTask t = (JavacTask) c.getTask(null, fm, dl, Arrays.asList(opts), null, units);
+ t.parse();
+ t.analyze();
+ }
}
// -- Annotation processor: Check all PackageDecl's have a doc comment
--- a/langtools/test/tools/javac/processing/options/testCommandLineClasses/Test.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/processing/options/testCommandLineClasses/Test.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -67,16 +67,17 @@
void test(List<String> names) throws Exception {
System.err.println("test: " + names);
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm = compiler.getStandardFileManager(null, null, null);
- File testClasses = new File(System.getProperty("test.classes"));
- fm.setLocation(StandardLocation.CLASS_PATH, Arrays.asList(testClasses));
- JavaCompiler.CompilationTask task = compiler.getTask(
- null, null, null, Arrays.asList("-proc:only"), names, null);
- task.setProcessors(Arrays.asList(new Test()));
- boolean ok = task.call();
- if (!ok)
- error("compilation failed");
- System.err.println();
+ try (StandardJavaFileManager fm = compiler.getStandardFileManager(null, null, null)) {
+ File testClasses = new File(System.getProperty("test.classes"));
+ fm.setLocation(StandardLocation.CLASS_PATH, Arrays.asList(testClasses));
+ JavaCompiler.CompilationTask task = compiler.getTask(
+ null, null, null, Arrays.asList("-proc:only"), names, null);
+ task.setProcessors(Arrays.asList(new Test()));
+ boolean ok = task.call();
+ if (!ok)
+ error("compilation failed");
+ System.err.println();
+ }
}
<T> List<T> reverse(List<T> list) {
--- a/langtools/test/tools/javac/processing/rounds/BaseClassesNotReRead.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/processing/rounds/BaseClassesNotReRead.java Fri Oct 31 18:18:58 2014 +0000
@@ -49,19 +49,20 @@
void run() throws IOException {
File sources = new File(System.getProperty("test.src"));
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm = compiler.getStandardFileManager(null, null, null);
- Iterable<? extends JavaFileObject> files =
- fm.getJavaFileObjects(new File(sources, "BaseClassesNotReReadSource.java"));
- DiagnosticListener<JavaFileObject> noErrors = new DiagnosticListener<JavaFileObject>() {
- @Override
- public void report(Diagnostic<? extends JavaFileObject> diagnostic) {
- throw new IllegalStateException(diagnostic.toString());
- }
- };
- JavaFileManager manager = new OnlyOneReadFileManager(fm);
- Iterable<String> options = Arrays.asList("-processor", "BaseClassesNotReRead");
- JavacTask task = (JavacTask) compiler.getTask(null, manager, noErrors, options, null, files);
- task.analyze();
+ try (StandardJavaFileManager fm = compiler.getStandardFileManager(null, null, null)) {
+ Iterable<? extends JavaFileObject> files =
+ fm.getJavaFileObjects(new File(sources, "BaseClassesNotReReadSource.java"));
+ DiagnosticListener<JavaFileObject> noErrors = new DiagnosticListener<JavaFileObject>() {
+ @Override
+ public void report(Diagnostic<? extends JavaFileObject> diagnostic) {
+ throw new IllegalStateException(diagnostic.toString());
+ }
+ };
+ JavaFileManager manager = new OnlyOneReadFileManager(fm);
+ Iterable<String> options = Arrays.asList("-processor", "BaseClassesNotReRead");
+ JavacTask task = (JavacTask) compiler.getTask(null, manager, noErrors, options, null, files);
+ task.analyze();
+ }
}
int round = 1;
--- a/langtools/test/tools/javac/profiles/ProfileOptionTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/profiles/ProfileOptionTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -236,24 +236,28 @@
/** Run all test cases. */
void run() throws Exception {
- initTestClasses();
+ try {
+ initTestClasses();
- for (Method m: getClass().getDeclaredMethods()) {
- Annotation a = m.getAnnotation(Test.class);
- if (a != null) {
- System.err.println(m.getName());
- try {
- m.invoke(this, new Object[] { });
- } catch (InvocationTargetException e) {
- Throwable cause = e.getCause();
- throw (cause instanceof Exception) ? ((Exception) cause) : e;
+ for (Method m: getClass().getDeclaredMethods()) {
+ Annotation a = m.getAnnotation(Test.class);
+ if (a != null) {
+ System.err.println(m.getName());
+ try {
+ m.invoke(this, new Object[] { });
+ } catch (InvocationTargetException e) {
+ Throwable cause = e.getCause();
+ throw (cause instanceof Exception) ? ((Exception) cause) : e;
+ }
+ System.err.println();
}
- System.err.println();
}
+
+ if (errors > 0)
+ throw new Exception(errors + " errors occurred");
+ } finally {
+ fm.close();
}
-
- if (errors > 0)
- throw new Exception(errors + " errors occurred");
}
void error(String msg) {
--- a/langtools/test/tools/javac/resolve/ResolveHarness.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/resolve/ResolveHarness.java Fri Oct 31 18:18:58 2014 +0000
@@ -71,13 +71,17 @@
static final StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null);
public static void main(String[] args) throws Exception {
- fm.setLocation(SOURCE_PATH,
- Arrays.asList(new File(System.getProperty("test.src"), "tests")));
- for (JavaFileObject jfo : fm.list(SOURCE_PATH, "", Collections.singleton(JavaFileObject.Kind.SOURCE), true)) {
- new ResolveHarness(jfo).check();
- }
- if (nerrors > 0) {
- throw new AssertionError("Errors were found");
+ try {
+ fm.setLocation(SOURCE_PATH,
+ Arrays.asList(new File(System.getProperty("test.src"), "tests")));
+ for (JavaFileObject jfo : fm.list(SOURCE_PATH, "", Collections.singleton(JavaFileObject.Kind.SOURCE), true)) {
+ new ResolveHarness(jfo).check();
+ }
+ if (nerrors > 0) {
+ throw new AssertionError("Errors were found");
+ }
+ } finally {
+ fm.close();
}
}
--- a/langtools/test/tools/javac/tree/ClassTreeTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/tree/ClassTreeTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -41,25 +41,26 @@
void run() throws Exception {
JavacTool tool = JavacTool.create();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- List<String> opts = Collections.<String>emptyList();
- File testSrc = new File(System.getProperty("test.src"));
- File thisFile = new File(testSrc, ClassTreeTest.class.getSimpleName() + ".java");
- Iterable<? extends JavaFileObject> fos = fm.getJavaFileObjects(thisFile);
- JavacTask task = tool.getTask(null, fm, null, opts, null, fos);
- for (CompilationUnitTree cu: task.parse()) {
- check(cu, "CLASS", Tree.Kind.CLASS);
- check(cu, "INTERFACE", Tree.Kind.INTERFACE);
- check(cu, "ENUM", Tree.Kind.ENUM);
- check(cu, "ANNOTATION_TYPE", Tree.Kind.ANNOTATION_TYPE);
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ List<String> opts = Collections.<String>emptyList();
+ File testSrc = new File(System.getProperty("test.src"));
+ File thisFile = new File(testSrc, ClassTreeTest.class.getSimpleName() + ".java");
+ Iterable<? extends JavaFileObject> fos = fm.getJavaFileObjects(thisFile);
+ JavacTask task = tool.getTask(null, fm, null, opts, null, fos);
+ for (CompilationUnitTree cu: task.parse()) {
+ check(cu, "CLASS", Tree.Kind.CLASS);
+ check(cu, "INTERFACE", Tree.Kind.INTERFACE);
+ check(cu, "ENUM", Tree.Kind.ENUM);
+ check(cu, "ANNOTATION_TYPE", Tree.Kind.ANNOTATION_TYPE);
+ }
+
+ int expected = 4;
+ if (checks != expected)
+ error("Unexpected number of checks performed; expected: " + expected + ", found: " + checks);
+
+ if (errors > 0)
+ throw new Exception(errors + " errors found");
}
-
- int expected = 4;
- if (checks != expected)
- error("Unexpected number of checks performed; expected: " + expected + ", found: " + checks);
-
- if (errors > 0)
- throw new Exception(errors + " errors found");
}
void check(CompilationUnitTree cu, String name, Tree.Kind k) {
--- a/langtools/test/tools/javac/tree/DocCommentToplevelTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/tree/DocCommentToplevelTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -90,24 +90,25 @@
public static void main(String... args) throws Exception {
//create default shared JavaCompiler - reused across multiple compilations
JavaCompiler comp = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null);
+ try (StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null)) {
- for (PackageKind pk : PackageKind.values()) {
- for (ImportKind ik : ImportKind.values()) {
- for (ModifierKind mk1 : ModifierKind.values()) {
- for (ModifierKind mk2 : ModifierKind.values()) {
- for (ToplevelDocKind tdk : ToplevelDocKind.values()) {
- new DocCommentToplevelTest(pk, ik, mk1, mk2, tdk).run(comp, fm);
+ for (PackageKind pk : PackageKind.values()) {
+ for (ImportKind ik : ImportKind.values()) {
+ for (ModifierKind mk1 : ModifierKind.values()) {
+ for (ModifierKind mk2 : ModifierKind.values()) {
+ for (ToplevelDocKind tdk : ToplevelDocKind.values()) {
+ new DocCommentToplevelTest(pk, ik, mk1, mk2, tdk).run(comp, fm);
+ }
}
}
}
}
- }
- if (errors > 0)
- throw new AssertionError(errors + " errors found");
+ if (errors > 0)
+ throw new AssertionError(errors + " errors found");
- System.out.println(checks + " checks were made");
+ System.out.println(checks + " checks were made");
+ }
}
PackageKind pk;
--- a/langtools/test/tools/javac/tree/MissingSemicolonTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/tree/MissingSemicolonTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -47,7 +47,7 @@
import com.sun.tools.javac.util.Context;
public class MissingSemicolonTest {
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
String testSrc = System.getProperty("test.src");
File baseDir = new File(testSrc);
boolean ok = new MissingSemicolonTest().run(baseDir, args);
@@ -56,24 +56,28 @@
}
}
- boolean run(File baseDir, String... args) {
- if (args.length == 0) {
- throw new IllegalStateException("Needs input files.");
- }
+ boolean run(File baseDir, String... args) throws IOException {
+ try {
+ if (args.length == 0) {
+ throw new IllegalStateException("Needs input files.");
+ }
- for (String arg : args) {
- File file = new File(baseDir, arg);
- if (file.exists())
- test(file);
- else
- error("File not found: " + file);
+ for (String arg : args) {
+ File file = new File(baseDir, arg);
+ if (file.exists())
+ test(file);
+ else
+ error("File not found: " + file);
+ }
+
+ System.err.println(fileCount + " files read");
+ if (errors > 0)
+ System.err.println(errors + " errors");
+
+ return errors == 0;
+ } finally {
+ fm.close();
}
-
- System.err.println(fileCount + " files read");
- if (errors > 0)
- System.err.println(errors + " errors");
-
- return errors == 0;
}
void test(File file) {
--- a/langtools/test/tools/javac/tree/PrettySimpleStringTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/tree/PrettySimpleStringTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -46,27 +46,28 @@
File testSrc = new File(System.getProperty("test.src"));
File thisFile = new File(testSrc, getClass().getName() + ".java");
JavacTool tool = JavacTool.create();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- JavacTask task = tool.getTask(null, fm, null, null, null,
- fm.getJavaFileObjects(thisFile));
- Iterable<? extends CompilationUnitTree> trees = task.parse();
- CompilationUnitTree thisTree = trees.iterator().next();
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ JavacTask task = tool.getTask(null, fm, null, null, null,
+ fm.getJavaFileObjects(thisFile));
+ Iterable<? extends CompilationUnitTree> trees = task.parse();
+ CompilationUnitTree thisTree = trees.iterator().next();
- { // test default
- String thisSrc = Pretty.toSimpleString((JCTree) thisTree);
- System.err.println(thisSrc);
- String expect = "import jav[...]} } }";
- if (!thisSrc.equals(expect)) {
- throw new Exception("unexpected result");
+ { // test default
+ String thisSrc = Pretty.toSimpleString((JCTree) thisTree);
+ System.err.println(thisSrc);
+ String expect = "import jav[...]} } }";
+ if (!thisSrc.equals(expect)) {
+ throw new Exception("unexpected result");
+ }
}
- }
- { // test explicit length
- String thisSrc = Pretty.toSimpleString((JCTree) thisTree, 32);
- System.err.println(thisSrc);
- String expect = "import java.io.Fil[...]; } } } }";
- if (!thisSrc.equals(expect)) {
- throw new Exception("unexpected result");
+ { // test explicit length
+ String thisSrc = Pretty.toSimpleString((JCTree) thisTree, 32);
+ System.err.println(thisSrc);
+ String expect = "import java.io.Fil[...]} } } } }";
+ if (!thisSrc.equals(expect)) {
+ throw new Exception("unexpected result");
+ }
}
}
}
--- a/langtools/test/tools/javac/tree/T6963934.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/tree/T6963934.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -42,17 +42,18 @@
File testSrc = new File(System.getProperty("test.src"));
File thisSrc = new File(testSrc, T6963934.class.getSimpleName() + ".java");
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
- JavacTask task = (JavacTask) compiler.getTask(null, fileManager, null, null, null,
- fileManager.getJavaFileObjects(thisSrc));
- CompilationUnitTree tree = task.parse().iterator().next();
- int count = 0;
- for (ImportTree importTree : tree.getImports()) {
- System.out.println(importTree);
- count++;
+ try (StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null)) {
+ JavacTask task = (JavacTask) compiler.getTask(null, fileManager, null, null, null,
+ fileManager.getJavaFileObjects(thisSrc));
+ CompilationUnitTree tree = task.parse().iterator().next();
+ int count = 0;
+ for (ImportTree importTree : tree.getImports()) {
+ System.out.println(importTree);
+ count++;
+ }
+ int expected = 7;
+ if (count != expected)
+ throw new Exception("unexpected number of imports found: " + count + ", expected: " + expected);
}
- int expected = 7;
- if (count != expected)
- throw new Exception("unexpected number of imports found: " + count + ", expected: " + expected);
}
}
--- a/langtools/test/tools/javac/tree/T6993305.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/tree/T6993305.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -59,18 +59,19 @@
File testSrc = new File(System.getProperty("test.src"));
JavacTool tool = JavacTool.create();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+
+ File f = new File(testSrc, T6993305.class.getSimpleName() + ".java");
+ Iterable<? extends JavaFileObject> fos = fm.getJavaFileObjects(f);
+ JavacTask task = tool.getTask(null, fm, null, null, null, fos);
+ Iterable<? extends CompilationUnitTree> cus = task.parse();
- File f = new File(testSrc, T6993305.class.getSimpleName() + ".java");
- Iterable<? extends JavaFileObject> fos = fm.getJavaFileObjects(f);
- JavacTask task = tool.getTask(null, fm, null, null, null, fos);
- Iterable<? extends CompilationUnitTree> cus = task.parse();
+ TestScanner s = new TestScanner();
+ s.scan(cus, task);
- TestScanner s = new TestScanner();
- s.scan(cus, task);
-
- if (errors > 0)
- throw new Exception(errors + " errors occurred");
+ if (errors > 0)
+ throw new Exception(errors + " errors occurred");
+ }
}
void error(String msg) {
--- a/langtools/test/tools/javac/tree/TestToString.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/tree/TestToString.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -63,12 +63,16 @@
}
void run() throws Exception {
- for (String s: statements) {
- test(s);
+ try {
+ for (String s: statements) {
+ test(s);
+ }
+
+ if (errors > 0)
+ throw new Exception(errors + " errors found");
+ } finally {
+ fm.close();
}
-
- if (errors > 0)
- throw new Exception(errors + " errors found");
}
void test(String stmt) throws IOException {
--- a/langtools/test/tools/javac/tree/TreePosRoundsTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/tree/TreePosRoundsTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -54,18 +54,19 @@
String testSrc = System.getProperty("test.src");
String testClasses = System.getProperty("test.classes");
JavaCompiler c = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm = c.getStandardFileManager(null, null, null);
- String thisName = TreePosRoundsTest.class.getName();
- File thisFile = new File(testSrc, thisName + ".java");
- Iterable<? extends JavaFileObject> files = fm.getJavaFileObjects(thisFile);
- List<String> options = Arrays.asList(
- "-proc:only",
- "-processor", thisName,
- "-processorpath", testClasses);
- CompilationTask t = c.getTask(null, fm, null, options, null, files);
- boolean ok = t.call();
- if (!ok)
- throw new Exception("processing failed");
+ try (StandardJavaFileManager fm = c.getStandardFileManager(null, null, null)) {
+ String thisName = TreePosRoundsTest.class.getName();
+ File thisFile = new File(testSrc, thisName + ".java");
+ Iterable<? extends JavaFileObject> files = fm.getJavaFileObjects(thisFile);
+ List<String> options = Arrays.asList(
+ "-proc:only",
+ "-processor", thisName,
+ "-processorpath", testClasses);
+ CompilationTask t = c.getTask(null, fm, null, options, null, files);
+ boolean ok = t.call();
+ if (!ok)
+ throw new Exception("processing failed");
+ }
}
Filer filer;
@@ -155,6 +156,9 @@
//System.err.println(" encl: " +enclKind);
if (enclKind == Tree.Kind.CLASS || enclKind == Tree.Kind.BLOCK)
expect += ";";
+ // t-w-r- adds implicit final: remove it
+ if (enclKind == Tree.Kind.TRY && expect.startsWith("final "))
+ expect = expect.substring(6);
}
//System.err.println("expect: " + expect);
--- a/langtools/test/tools/javac/tree/TreePosTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/tree/TreePosTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -113,7 +113,7 @@
* args is the value of ${test.src}. In jtreg mode, the -r option can be
* given to change the default base directory to the root test directory.
*/
- public static void main(String... args) {
+ public static void main(String... args) throws IOException {
String testSrc = System.getProperty("test.src");
File baseDir = (testSrc == null) ? null : new File(testSrc);
boolean ok = new TreePosTest().run(baseDir, args);
@@ -133,61 +133,65 @@
* @param args command line args
* @return true if successful or in gui mode
*/
- boolean run(File baseDir, String... args) {
- if (args.length == 0) {
- usage(System.out);
- return true;
- }
+ boolean run(File baseDir, String... args) throws IOException {
+ try {
+ if (args.length == 0) {
+ usage(System.out);
+ return true;
+ }
- List<File> files = new ArrayList<File>();
- for (int i = 0; i < args.length; i++) {
- String arg = args[i];
- if (arg.equals("-encoding") && i + 1 < args.length)
- encoding = args[++i];
- else if (arg.equals("-gui"))
- gui = true;
- else if (arg.equals("-q"))
- quiet = true;
- else if (arg.equals("-v"))
- verbose = true;
- else if (arg.equals("-t") && i + 1 < args.length)
- tags.add(args[++i]);
- else if (arg.equals("-ef") && i + 1 < args.length)
- excludeFiles.add(new File(baseDir, args[++i]));
- else if (arg.equals("-et") && i + 1 < args.length)
- excludeTags.add(args[++i]);
- else if (arg.equals("-r")) {
- if (excludeFiles.size() > 0)
- throw new Error("-r must be used before -ef");
- File d = baseDir;
- while (!new File(d, "TEST.ROOT").exists()) {
- d = d.getParentFile();
- if (d == null)
- throw new Error("cannot find TEST.ROOT");
+ List<File> files = new ArrayList<File>();
+ for (int i = 0; i < args.length; i++) {
+ String arg = args[i];
+ if (arg.equals("-encoding") && i + 1 < args.length)
+ encoding = args[++i];
+ else if (arg.equals("-gui"))
+ gui = true;
+ else if (arg.equals("-q"))
+ quiet = true;
+ else if (arg.equals("-v"))
+ verbose = true;
+ else if (arg.equals("-t") && i + 1 < args.length)
+ tags.add(args[++i]);
+ else if (arg.equals("-ef") && i + 1 < args.length)
+ excludeFiles.add(new File(baseDir, args[++i]));
+ else if (arg.equals("-et") && i + 1 < args.length)
+ excludeTags.add(args[++i]);
+ else if (arg.equals("-r")) {
+ if (excludeFiles.size() > 0)
+ throw new Error("-r must be used before -ef");
+ File d = baseDir;
+ while (!new File(d, "TEST.ROOT").exists()) {
+ d = d.getParentFile();
+ if (d == null)
+ throw new Error("cannot find TEST.ROOT");
+ }
+ baseDir = d;
}
- baseDir = d;
+ else if (arg.startsWith("-"))
+ throw new Error("unknown option: " + arg);
+ else {
+ while (i < args.length)
+ files.add(new File(baseDir, args[i++]));
+ }
}
- else if (arg.startsWith("-"))
- throw new Error("unknown option: " + arg);
- else {
- while (i < args.length)
- files.add(new File(baseDir, args[i++]));
- }
- }
- for (File file: files) {
- if (file.exists())
- test(file);
- else
- error("File not found: " + file);
- }
+ for (File file: files) {
+ if (file.exists())
+ test(file);
+ else
+ error("File not found: " + file);
+ }
- if (fileCount != 1)
- System.err.println(fileCount + " files read");
- if (errors > 0)
- System.err.println(errors + " errors");
+ if (fileCount != 1)
+ System.err.println(fileCount + " files read");
+ if (errors > 0)
+ System.err.println(errors + " errors");
- return (gui || errors == 0);
+ return (gui || errors == 0);
+ } finally {
+ fm.close();
+ }
}
/**
--- a/langtools/test/tools/javac/unit/T6198196.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/unit/T6198196.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -28,6 +28,7 @@
* @author Peter von der Ah\u00e9
*/
+import java.io.IOException;
import java.util.Arrays;
import javax.tools.*;
@@ -42,21 +43,25 @@
+ filename + ") != " + result);
System.out.format("OK: endsWith(%s, %s) = %s%n", pathname, filename, result);
}
- public static void main(String[] args) {
+ public static void main(String[] args) throws IOException {
fm = ToolProvider.getSystemJavaCompiler().getStandardFileManager(null, null, null);
- boolean windows = System.getProperty("os.name").startsWith("Windows");
- test("/x/y/z/package-info.java", pkginf, true);
- if (windows) {
- test("\\x\\y\\z\\package-info.java", pkginf, true);
- test("..\\x\\y\\z\\package-info.java", pkginf, true);
- } else {
- test("\\x\\y\\z\\package-info.java", pkginf, false);
- test("..\\x\\y\\z\\package-info.java", pkginf, false);
+ try {
+ boolean windows = System.getProperty("os.name").startsWith("Windows");
+ test("/x/y/z/package-info.java", pkginf, true);
+ if (windows) {
+ test("\\x\\y\\z\\package-info.java", pkginf, true);
+ test("..\\x\\y\\z\\package-info.java", pkginf, true);
+ } else {
+ test("\\x\\y\\z\\package-info.java", pkginf, false);
+ test("..\\x\\y\\z\\package-info.java", pkginf, false);
+ }
+ test("Package-info.java", pkginf, false);
+ test("../x/y/z/package-info.java", pkginf, true);
+ test("/x/y/z/package-info.java", pkginf, true);
+ test("x/y/z/package-info.java", pkginf, true);
+ test("package-info.java", pkginf, true);
+ } finally {
+ fm.close();
}
- test("Package-info.java", pkginf, false);
- test("../x/y/z/package-info.java", pkginf, true);
- test("/x/y/z/package-info.java", pkginf, true);
- test("x/y/z/package-info.java", pkginf, true);
- test("package-info.java", pkginf, true);
}
}
--- a/langtools/test/tools/javac/varargs/6199075/T6199075.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/varargs/6199075/T6199075.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -143,20 +143,24 @@
}
void test() throws Exception {
- for (TypeKind formal1 : TypeKind.values()) {
- VarargsMethod m1 = new VarargsMethod(formal1);
- for (TypeKind formal2 : TypeKind.values()) {
- VarargsMethod m2 = new VarargsMethod(formal2);
- for (TypeKind actual : TypeKind.values()) {
- for (ArgumentsArity argsArity : ArgumentsArity.values()) {
- compileAndCheck(m1, m2, actual, argsArity);
+ try {
+ for (TypeKind formal1 : TypeKind.values()) {
+ VarargsMethod m1 = new VarargsMethod(formal1);
+ for (TypeKind formal2 : TypeKind.values()) {
+ VarargsMethod m2 = new VarargsMethod(formal2);
+ for (TypeKind actual : TypeKind.values()) {
+ for (ArgumentsArity argsArity : ArgumentsArity.values()) {
+ compileAndCheck(m1, m2, actual, argsArity);
+ }
}
}
}
+
+ System.out.println("Total checks made: " + checkCount);
+ System.out.println("Bytecode checks made: " + bytecodeCheckCount);
+ } finally {
+ fm.close();
}
-
- System.out.println("Total checks made: " + checkCount);
- System.out.println("Bytecode checks made: " + bytecodeCheckCount);
}
// Create a single file manager and reuse it for each compile to save time.
--- a/langtools/test/tools/javac/varargs/7043922/T7043922.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/varargs/7043922/T7043922.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -146,22 +146,26 @@
static final JavaCompiler tool = ToolProvider.getSystemJavaCompiler();
public static void main(String... args) throws Exception {
- for (ClassKind classKind1 : ClassKind.values()) {
- for (ConstructorKind constrKind1 : ConstructorKind.values()) {
- if (!classKind1.isConstructorOk(constrKind1)) continue;
- for (ClassKind classKind2 : ClassKind.values()) {
- for (ConstructorKind constrKind2 : ConstructorKind.values()) {
- if (!classKind2.isConstructorOk(constrKind2)) continue;
- for (ClassKind classKind3 : ClassKind.values()) {
- for (ConstructorKind constrKind3 : ConstructorKind.values()) {
- if (!classKind3.isConstructorOk(constrKind3)) continue;
- new T7043922(new ClassKind[] { classKind1, classKind2, classKind3 },
- new ConstructorKind[] { constrKind1, constrKind2, constrKind3 }).compileAndCheck();
+ try {
+ for (ClassKind classKind1 : ClassKind.values()) {
+ for (ConstructorKind constrKind1 : ConstructorKind.values()) {
+ if (!classKind1.isConstructorOk(constrKind1)) continue;
+ for (ClassKind classKind2 : ClassKind.values()) {
+ for (ConstructorKind constrKind2 : ConstructorKind.values()) {
+ if (!classKind2.isConstructorOk(constrKind2)) continue;
+ for (ClassKind classKind3 : ClassKind.values()) {
+ for (ConstructorKind constrKind3 : ConstructorKind.values()) {
+ if (!classKind3.isConstructorOk(constrKind3)) continue;
+ new T7043922(new ClassKind[] { classKind1, classKind2, classKind3 },
+ new ConstructorKind[] { constrKind1, constrKind2, constrKind3 }).compileAndCheck();
+ }
}
}
}
}
}
+ } finally {
+ fm.close();
}
}
--- a/langtools/test/tools/javac/versions/Versions.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javac/versions/Versions.java Fri Oct 31 18:18:58 2014 +0000
@@ -278,22 +278,25 @@
protected boolean compile(String sourceFile, List<String>options) {
JavaCompiler.CompilationTask jctask;
- StandardJavaFileManager fm = javacompiler.getStandardFileManager(null, null, null);
- Iterable<? extends JavaFileObject> files = fm.getJavaFileObjects(sourceFile);
+ try (StandardJavaFileManager fm = javacompiler.getStandardFileManager(null, null, null)) {
+ Iterable<? extends JavaFileObject> files = fm.getJavaFileObjects(sourceFile);
- jctask = javacompiler.getTask(
- null, // Writer
- fm, // JavaFileManager
- null, // DiagnosticListener
- options, // Iterable<String>
- null, // Iterable<String> classes
- files); // Iterable<? extends JavaFileObject>
+ jctask = javacompiler.getTask(
+ null, // Writer
+ fm, // JavaFileManager
+ null, // DiagnosticListener
+ options, // Iterable<String>
+ null, // Iterable<String> classes
+ files); // Iterable<? extends JavaFileObject>
- try {
- return jctask.call();
- } catch (IllegalStateException e) {
- System.err.println(e);
- return false;
+ try {
+ return jctask.call();
+ } catch (IllegalStateException e) {
+ System.err.println(e);
+ return false;
+ }
+ } catch (IOException e) {
+ throw new Error(e);
}
}
--- a/langtools/test/tools/javadoc/CheckResourceKeys.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javadoc/CheckResourceKeys.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -140,41 +140,42 @@
Set<String> getCodeKeys() throws IOException {
Set<String> results = new TreeSet<String>();
JavaCompiler c = ToolProvider.getSystemJavaCompiler();
- JavaFileManager fm = c.getStandardFileManager(null, null, null);
- JavaFileManager.Location javadocLoc = findJavadocLocation(fm);
- String[] pkgs = {
- "com.sun.tools.doclets",
- "com.sun.tools.javadoc"
- };
- for (String pkg: pkgs) {
- for (JavaFileObject fo: fm.list(javadocLoc,
- pkg, EnumSet.of(JavaFileObject.Kind.CLASS), true)) {
- String name = fo.getName();
- // ignore resource files
- if (name.matches(".*resources.[A-Za-z_0-9]+\\.class.*"))
- continue;
- scan(fo, results);
+ try (JavaFileManager fm = c.getStandardFileManager(null, null, null)) {
+ JavaFileManager.Location javadocLoc = findJavadocLocation(fm);
+ String[] pkgs = {
+ "com.sun.tools.doclets",
+ "com.sun.tools.javadoc"
+ };
+ for (String pkg: pkgs) {
+ for (JavaFileObject fo: fm.list(javadocLoc,
+ pkg, EnumSet.of(JavaFileObject.Kind.CLASS), true)) {
+ String name = fo.getName();
+ // ignore resource files
+ if (name.matches(".*resources.[A-Za-z_0-9]+\\.class.*"))
+ continue;
+ scan(fo, results);
+ }
}
- }
- // special handling for code strings synthesized in
- // com.sun.tools.doclets.internal.toolkit.util.Util.getTypeName
- String[] extras = {
- "AnnotationType", "Class", "Enum", "Error", "Exception", "Interface"
- };
- for (String s: extras) {
- if (results.contains("doclet." + s))
- results.add("doclet." + s.toLowerCase());
+ // special handling for code strings synthesized in
+ // com.sun.tools.doclets.internal.toolkit.util.Util.getTypeName
+ String[] extras = {
+ "AnnotationType", "Class", "Enum", "Error", "Exception", "Interface"
+ };
+ for (String s: extras) {
+ if (results.contains("doclet." + s))
+ results.add("doclet." + s.toLowerCase());
+ }
+
+ // special handling for code strings synthesized in
+ // com.sun.tools.javadoc.Messager
+ results.add("javadoc.error.msg");
+ results.add("javadoc.note.msg");
+ results.add("javadoc.note.pos.msg");
+ results.add("javadoc.warning.msg");
+
+ return results;
}
-
- // special handling for code strings synthesized in
- // com.sun.tools.javadoc.Messager
- results.add("javadoc.error.msg");
- results.add("javadoc.note.msg");
- results.add("javadoc.note.pos.msg");
- results.add("javadoc.warning.msg");
-
- return results;
}
// depending on how the test is run, javadoc may be on bootclasspath or classpath
--- a/langtools/test/tools/javadoc/api/basic/DocletPathTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javadoc/api/basic/DocletPathTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -59,34 +59,36 @@
createSimpleJavaFileObject("DocletOnDocletPath", docletSrcText);
File docletDir = getOutDir("classes");
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager cfm = compiler.getStandardFileManager(null, null, null);
- cfm.setLocation(StandardLocation.CLASS_OUTPUT, Arrays.asList(docletDir));
- Iterable<? extends JavaFileObject> cfiles = Arrays.asList(docletSrc);
- if (!compiler.getTask(null, cfm, null, null, null, cfiles).call())
- throw new Exception("cannot compile doclet");
+ try (StandardJavaFileManager cfm = compiler.getStandardFileManager(null, null, null)) {
+ cfm.setLocation(StandardLocation.CLASS_OUTPUT, Arrays.asList(docletDir));
+ Iterable<? extends JavaFileObject> cfiles = Arrays.asList(docletSrc);
+ if (!compiler.getTask(null, cfm, null, null, null, cfiles).call())
+ throw new Exception("cannot compile doclet");
+ }
JavaFileObject srcFile = createSimpleJavaFileObject();
DocumentationTool tool = ToolProvider.getSystemDocumentationTool();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- File outDir = getOutDir("api");
- fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
- fm.setLocation(DocumentationTool.Location.DOCLET_PATH, Arrays.asList(docletDir));
- Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
- Iterable<String> options = Arrays.asList("-doclet", "DocletOnDocletPath");
- StringWriter sw = new StringWriter();
- PrintWriter pw = new PrintWriter(sw);
- DocumentationTask t = tool.getTask(pw, fm, null, null, options, files);
- boolean ok = t.call();
- String out = sw.toString();
- System.err.println(">>" + out + "<<");
- if (ok) {
- if (out.contains(TEST_STRING)) {
- System.err.println("doclet executed as expected");
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ File outDir = getOutDir("api");
+ fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
+ fm.setLocation(DocumentationTool.Location.DOCLET_PATH, Arrays.asList(docletDir));
+ Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
+ Iterable<String> options = Arrays.asList("-doclet", "DocletOnDocletPath");
+ StringWriter sw = new StringWriter();
+ PrintWriter pw = new PrintWriter(sw);
+ DocumentationTask t = tool.getTask(pw, fm, null, null, options, files);
+ boolean ok = t.call();
+ String out = sw.toString();
+ System.err.println(">>" + out + "<<");
+ if (ok) {
+ if (out.contains(TEST_STRING)) {
+ System.err.println("doclet executed as expected");
+ } else {
+ error("test string not found in doclet output");
+ }
} else {
- error("test string not found in doclet output");
+ error("task failed");
}
- } else {
- error("task failed");
}
}
--- a/langtools/test/tools/javadoc/api/basic/GetTask_DiagListenerTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javadoc/api/basic/GetTask_DiagListenerTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -60,27 +60,28 @@
public void testDiagListener() throws Exception {
JavaFileObject srcFile = createSimpleJavaFileObject("pkg/C", "package pkg; public error { }");
DocumentationTool tool = ToolProvider.getSystemDocumentationTool();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- File outDir = getOutDir();
- fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
- Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
- DiagnosticCollector<JavaFileObject> dc = new DiagnosticCollector<JavaFileObject>();
- DocumentationTask t = tool.getTask(null, fm, dc, null, null, files);
- if (t.call()) {
- throw new Exception("task succeeded unexpectedly");
- } else {
- List<String> diagCodes = new ArrayList<String>();
- for (Diagnostic d: dc.getDiagnostics()) {
- System.err.println(d);
- diagCodes.add(d.getCode());
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ File outDir = getOutDir();
+ fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
+ Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
+ DiagnosticCollector<JavaFileObject> dc = new DiagnosticCollector<JavaFileObject>();
+ DocumentationTask t = tool.getTask(null, fm, dc, null, null, files);
+ if (t.call()) {
+ throw new Exception("task succeeded unexpectedly");
+ } else {
+ List<String> diagCodes = new ArrayList<String>();
+ for (Diagnostic d: dc.getDiagnostics()) {
+ System.err.println(d);
+ diagCodes.add(d.getCode());
+ }
+ List<String> expect = Arrays.asList(
+ "javadoc.note.msg", // Loading source file
+ "compiler.err.expected3", // class, interface, or enum expected
+ "javadoc.note.msg"); // 1 error
+ if (!diagCodes.equals(expect))
+ throw new Exception("unexpected diagnostics occurred");
+ System.err.println("diagnostics received as expected");
}
- List<String> expect = Arrays.asList(
- "javadoc.note.msg", // Loading source file
- "compiler.err.expected3", // class, interface, or enum expected
- "javadoc.note.msg"); // 1 error
- if (!diagCodes.equals(expect))
- throw new Exception("unexpected diagnostics occurred");
- System.err.println("diagnostics received as expected");
}
}
--- a/langtools/test/tools/javadoc/api/basic/GetTask_DocletClassTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javadoc/api/basic/GetTask_DocletClassTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -70,20 +70,21 @@
"pkg/C",
"package pkg; /** " + key + "*/ public class C { }");
DocumentationTool tool = ToolProvider.getSystemDocumentationTool();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- File outDir = getOutDir();
- fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
- Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
- DocumentationTask t = tool.getTask(null, fm, null, TestDoclet.class, null, files);
- if (t.call()) {
- System.err.println("task succeeded");
- if (TestDoclet.lastCaller.equals(String.valueOf(key)))
- System.err.println("found expected key: " + key);
- else
- error("Expected key not found");
- checkFiles(outDir, Collections.<String>emptySet());
- } else {
- throw new Exception("task failed");
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ File outDir = getOutDir();
+ fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
+ Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
+ DocumentationTask t = tool.getTask(null, fm, null, TestDoclet.class, null, files);
+ if (t.call()) {
+ System.err.println("task succeeded");
+ if (TestDoclet.lastCaller.equals(String.valueOf(key)))
+ System.err.println("found expected key: " + key);
+ else
+ error("Expected key not found");
+ checkFiles(outDir, Collections.<String>emptySet());
+ } else {
+ throw new Exception("task failed");
+ }
}
}
@@ -115,20 +116,21 @@
public void testBadDoclet() throws Exception {
JavaFileObject srcFile = createSimpleJavaFileObject();
DocumentationTool tool = ToolProvider.getSystemDocumentationTool();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- File outDir = getOutDir();
- fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
- Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
- DocumentationTask t = tool.getTask(null, fm, null, BadDoclet.class, null, files);
- try {
- t.call();
- error("call completed without exception");
- } catch (RuntimeException e) {
- Throwable c = e.getCause();
- if (c.getClass() == UnexpectedError.class)
- System.err.println("exception caught as expected: " + c);
- else
- throw e;
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ File outDir = getOutDir();
+ fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
+ Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
+ DocumentationTask t = tool.getTask(null, fm, null, BadDoclet.class, null, files);
+ try {
+ t.call();
+ error("call completed without exception");
+ } catch (RuntimeException e) {
+ Throwable c = e.getCause();
+ if (c.getClass() == UnexpectedError.class)
+ System.err.println("exception caught as expected: " + c);
+ else
+ throw e;
+ }
}
}
--- a/langtools/test/tools/javadoc/api/basic/GetTask_FileObjectsTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javadoc/api/basic/GetTask_FileObjectsTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -54,16 +54,17 @@
File testSrc = new File(System.getProperty("test.src"));
File srcFile = new File(testSrc, "pkg/C.java");
DocumentationTool tool = ToolProvider.getSystemDocumentationTool();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- File outDir = getOutDir();
- fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
- Iterable<? extends JavaFileObject> files = fm.getJavaFileObjects(srcFile);
- DocumentationTask t = tool.getTask(null, fm, null, null, null, files);
- if (t.call()) {
- System.err.println("task succeeded");
- checkFiles(outDir, standardExpectFiles);
- } else {
- throw new Exception("task failed");
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ File outDir = getOutDir();
+ fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
+ Iterable<? extends JavaFileObject> files = fm.getJavaFileObjects(srcFile);
+ DocumentationTask t = tool.getTask(null, fm, null, null, null, files);
+ if (t.call()) {
+ System.err.println("task succeeded");
+ checkFiles(outDir, standardExpectFiles);
+ } else {
+ throw new Exception("task failed");
+ }
}
}
@@ -75,16 +76,17 @@
public void testMemoryFileObject() throws Exception {
JavaFileObject srcFile = createSimpleJavaFileObject();
DocumentationTool tool = ToolProvider.getSystemDocumentationTool();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- File outDir = getOutDir();
- fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
- Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
- DocumentationTask t = tool.getTask(null, fm, null, null, null, files);
- if (t.call()) {
- System.err.println("task succeeded");
- checkFiles(outDir, standardExpectFiles);
- } else {
- throw new Exception("task failed");
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ File outDir = getOutDir();
+ fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
+ Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
+ DocumentationTask t = tool.getTask(null, fm, null, null, null, files);
+ if (t.call()) {
+ System.err.println("task succeeded");
+ checkFiles(outDir, standardExpectFiles);
+ } else {
+ throw new Exception("task failed");
+ }
}
}
@@ -96,15 +98,16 @@
File testSrc = new File(System.getProperty("test.src"));
File srcFile = new File(testSrc, "pkg/C.class"); // unacceptable file kind
DocumentationTool tool = ToolProvider.getSystemDocumentationTool();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- File outDir = getOutDir();
- fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
- Iterable<? extends JavaFileObject> files = fm.getJavaFileObjects(srcFile);
- try {
- DocumentationTask t = tool.getTask(null, fm, null, null, null, files);
- error("getTask succeeded, no exception thrown");
- } catch (IllegalArgumentException e) {
- System.err.println("exception caught as expected: " + e);
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ File outDir = getOutDir();
+ fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
+ Iterable<? extends JavaFileObject> files = fm.getJavaFileObjects(srcFile);
+ try {
+ DocumentationTask t = tool.getTask(null, fm, null, null, null, files);
+ error("getTask succeeded, no exception thrown");
+ } catch (IllegalArgumentException e) {
+ System.err.println("exception caught as expected: " + e);
+ }
}
}
@@ -114,15 +117,16 @@
@Test
public void testNull() throws Exception {
DocumentationTool tool = ToolProvider.getSystemDocumentationTool();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- File outDir = getOutDir();
- fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
- Iterable<? extends JavaFileObject> files = Arrays.asList((JavaFileObject) null);
- try {
- DocumentationTask t = tool.getTask(null, fm, null, null, null, files);
- error("getTask succeeded, no exception thrown");
- } catch (NullPointerException e) {
- System.err.println("exception caught as expected: " + e);
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ File outDir = getOutDir();
+ fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
+ Iterable<? extends JavaFileObject> files = Arrays.asList((JavaFileObject) null);
+ try {
+ DocumentationTask t = tool.getTask(null, fm, null, null, null, files);
+ error("getTask succeeded, no exception thrown");
+ } catch (NullPointerException e) {
+ System.err.println("exception caught as expected: " + e);
+ }
}
}
--- a/langtools/test/tools/javadoc/api/basic/GetTask_OptionsTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javadoc/api/basic/GetTask_OptionsTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -54,19 +54,20 @@
public void testNoIndex() throws Exception {
JavaFileObject srcFile = createSimpleJavaFileObject();
DocumentationTool tool = ToolProvider.getSystemDocumentationTool();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- File outDir = getOutDir();
- fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
- Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
- Iterable<String> options = Arrays.asList("-noindex");
- DocumentationTask t = tool.getTask(null, fm, null, null, options, files);
- if (t.call()) {
- System.err.println("task succeeded");
- Set<String> expectFiles = new TreeSet<String>(standardExpectFiles);
- expectFiles.remove("index-all.html");
- checkFiles(outDir, expectFiles);
- } else {
- error("task failed");
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ File outDir = getOutDir();
+ fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
+ Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
+ Iterable<String> options = Arrays.asList("-noindex");
+ DocumentationTask t = tool.getTask(null, fm, null, null, options, files);
+ if (t.call()) {
+ System.err.println("task succeeded");
+ Set<String> expectFiles = new TreeSet<String>(standardExpectFiles);
+ expectFiles.remove("index-all.html");
+ checkFiles(outDir, expectFiles);
+ } else {
+ error("task failed");
+ }
}
}
@@ -77,16 +78,17 @@
public void testNull() throws Exception {
JavaFileObject srcFile = createSimpleJavaFileObject();
DocumentationTool tool = ToolProvider.getSystemDocumentationTool();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- File outDir = getOutDir();
- fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
- Iterable<String> options = Arrays.asList((String) null);
- Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
- try {
- DocumentationTask t = tool.getTask(null, fm, null, null, options, files);
- error("getTask succeeded, no exception thrown");
- } catch (NullPointerException e) {
- System.err.println("exception caught as expected: " + e);
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ File outDir = getOutDir();
+ fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
+ Iterable<String> options = Arrays.asList((String) null);
+ Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
+ try {
+ DocumentationTask t = tool.getTask(null, fm, null, null, options, files);
+ error("getTask succeeded, no exception thrown");
+ } catch (NullPointerException e) {
+ System.err.println("exception caught as expected: " + e);
+ }
}
}
--- a/langtools/test/tools/javadoc/api/basic/GetTask_WriterTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javadoc/api/basic/GetTask_WriterTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -54,25 +54,26 @@
public void testWriter() throws Exception {
JavaFileObject srcFile = createSimpleJavaFileObject();
DocumentationTool tool = ToolProvider.getSystemDocumentationTool();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- File outDir = getOutDir();
- fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
- Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
- StringWriter sw = new StringWriter();
- PrintWriter pw = new PrintWriter(sw);
- DocumentationTask t = tool.getTask(pw, fm, null, null, null, files);
- if (t.call()) {
- System.err.println("task succeeded");
- checkFiles(outDir, standardExpectFiles);
- String out = sw.toString();
- System.err.println(">>" + out + "<<");
- for (String f: standardExpectFiles) {
- String f1 = f.replace('/', File.separatorChar);
- if (f1.endsWith(".html") && !out.contains(f1))
- throw new Exception("expected string not found: " + f1);
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ File outDir = getOutDir();
+ fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
+ Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
+ StringWriter sw = new StringWriter();
+ PrintWriter pw = new PrintWriter(sw);
+ DocumentationTask t = tool.getTask(pw, fm, null, null, null, files);
+ if (t.call()) {
+ System.err.println("task succeeded");
+ checkFiles(outDir, standardExpectFiles);
+ String out = sw.toString();
+ System.err.println(">>" + out + "<<");
+ for (String f: standardExpectFiles) {
+ String f1 = f.replace('/', File.separatorChar);
+ if (f1.endsWith(".html") && !out.contains(f1))
+ throw new Exception("expected string not found: " + f1);
+ }
+ } else {
+ throw new Exception("task failed");
}
- } else {
- throw new Exception("task failed");
}
}
}
--- a/langtools/test/tools/javadoc/api/basic/JavadocTaskImplTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javadoc/api/basic/JavadocTaskImplTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -56,18 +56,19 @@
public void testRawCall() throws Exception {
JavaFileObject srcFile = createSimpleJavaFileObject();
DocumentationTool tool = ToolProvider.getSystemDocumentationTool();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- File outDir = getOutDir();
- fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
- Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ File outDir = getOutDir();
+ fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
+ Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
- @SuppressWarnings("rawtypes")
- Callable t = tool.getTask(null, fm, null, null, null, files);
+ @SuppressWarnings("rawtypes")
+ Callable t = tool.getTask(null, fm, null, null, null, files);
- if (t.call() == Boolean.TRUE) {
- System.err.println("task succeeded");
- } else {
- throw new Exception("task failed");
+ if (t.call() == Boolean.TRUE) {
+ System.err.println("task succeeded");
+ } else {
+ throw new Exception("task failed");
+ }
}
}
@@ -77,14 +78,15 @@
Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
Context c = new Context();
Messager.preRegister(c, "javadoc");
- StandardJavaFileManager fm = new JavacFileManager(c, true, null);
- File outDir = getOutDir();
- fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
- DocumentationTask t = new JavadocTaskImpl(c, null, null, files);
- if (t.call()) {
- System.err.println("task succeeded");
- } else {
- throw new Exception("task failed");
+ try (StandardJavaFileManager fm = new JavacFileManager(c, true, null)) {
+ File outDir = getOutDir();
+ fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
+ DocumentationTask t = new JavadocTaskImpl(c, null, null, files);
+ if (t.call()) {
+ System.err.println("task succeeded");
+ } else {
+ throw new Exception("task failed");
+ }
}
}
@@ -94,14 +96,15 @@
Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
Context c = new Context();
Messager.preRegister(c, "javadoc");
- StandardJavaFileManager fm = new JavacFileManager(c, true, null);
- File outDir = getOutDir();
- fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
- try {
- DocumentationTask t = new JavadocTaskImpl(c, null, null, files);;
- error("getTask succeeded, no exception thrown");
- } catch (NullPointerException e) {
- System.err.println("exception caught as expected: " + e);
+ try (StandardJavaFileManager fm = new JavacFileManager(c, true, null)) {
+ File outDir = getOutDir();
+ fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
+ try {
+ DocumentationTask t = new JavadocTaskImpl(c, null, null, files);;
+ error("getTask succeeded, no exception thrown");
+ } catch (NullPointerException e) {
+ System.err.println("exception caught as expected: " + e);
+ }
}
}
}
--- a/langtools/test/tools/javadoc/api/basic/TagletPathTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javadoc/api/basic/TagletPathTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -62,38 +62,40 @@
File tagletSrcFile = new File(testSrc, "taglets/UnderlineTaglet.java");
File tagletDir = getOutDir("classes");
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager cfm = compiler.getStandardFileManager(null, null, null);
- cfm.setLocation(StandardLocation.CLASS_OUTPUT, Arrays.asList(tagletDir));
- Iterable<? extends JavaFileObject> cfiles = cfm.getJavaFileObjects(tagletSrcFile);
- if (!compiler.getTask(null, cfm, null, null, null, cfiles).call())
- throw new Exception("cannot compile taglet");
+ try (StandardJavaFileManager cfm = compiler.getStandardFileManager(null, null, null)) {
+ cfm.setLocation(StandardLocation.CLASS_OUTPUT, Arrays.asList(tagletDir));
+ Iterable<? extends JavaFileObject> cfiles = cfm.getJavaFileObjects(tagletSrcFile);
+ if (!compiler.getTask(null, cfm, null, null, null, cfiles).call())
+ throw new Exception("cannot compile taglet");
+ }
JavaFileObject srcFile = createSimpleJavaFileObject("pkg/C", testSrcText);
DocumentationTool tool = ToolProvider.getSystemDocumentationTool();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- File outDir = getOutDir("api");
- fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
- fm.setLocation(DocumentationTool.Location.TAGLET_PATH, Arrays.asList(tagletDir));
- Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
- Iterable<String> options = Arrays.asList("-taglet", "UnderlineTaglet");
- StringWriter sw = new StringWriter();
- PrintWriter pw = new PrintWriter(sw);
- DocumentationTask t = tool.getTask(pw, fm, null, null, options, files);
- boolean ok = t.call();
- String out = sw.toString();
- System.err.println(">>" + out + "<<");
- if (ok) {
- File f = new File(outDir, "pkg/C.html");
- List<String> doc = Files.readAllLines(f.toPath(), Charset.defaultCharset());
- for (String line: doc) {
- if (line.contains("<u>" + TEST_STRING + "</u>")) {
- System.err.println("taglet executed as expected");
- return;
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ File outDir = getOutDir("api");
+ fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
+ fm.setLocation(DocumentationTool.Location.TAGLET_PATH, Arrays.asList(tagletDir));
+ Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
+ Iterable<String> options = Arrays.asList("-taglet", "UnderlineTaglet");
+ StringWriter sw = new StringWriter();
+ PrintWriter pw = new PrintWriter(sw);
+ DocumentationTask t = tool.getTask(pw, fm, null, null, options, files);
+ boolean ok = t.call();
+ String out = sw.toString();
+ System.err.println(">>" + out + "<<");
+ if (ok) {
+ File f = new File(outDir, "pkg/C.html");
+ List<String> doc = Files.readAllLines(f.toPath(), Charset.defaultCharset());
+ for (String line: doc) {
+ if (line.contains("<u>" + TEST_STRING + "</u>")) {
+ System.err.println("taglet executed as expected");
+ return;
+ }
}
+ error("expected text not found in output " + f);
+ } else {
+ error("task failed");
}
- error("expected text not found in output " + f);
- } else {
- error("task failed");
}
}
--- a/langtools/test/tools/javadoc/api/basic/Task_reuseTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javadoc/api/basic/Task_reuseTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -77,16 +77,17 @@
private DocumentationTask getAndRunTask() throws Exception {
JavaFileObject srcFile = createSimpleJavaFileObject();
DocumentationTool tool = ToolProvider.getSystemDocumentationTool();
- StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
- File outDir = getOutDir();
- fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
- Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
- DocumentationTask t = tool.getTask(null, fm, null, null, null, files);
- if (t.call()) {
- System.err.println("task succeeded");
- return t;
- } else {
- throw new Exception("task failed");
+ try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
+ File outDir = getOutDir();
+ fm.setLocation(DocumentationTool.Location.DOCUMENTATION_OUTPUT, Arrays.asList(outDir));
+ Iterable<? extends JavaFileObject> files = Arrays.asList(srcFile);
+ DocumentationTask t = tool.getTask(null, fm, null, null, null, files);
+ if (t.call()) {
+ System.err.println("task succeeded");
+ return t;
+ } else {
+ throw new Exception("task failed");
+ }
}
}
}
--- a/langtools/test/tools/javadoc/doclint/DocLintTest.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javadoc/doclint/DocLintTest.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -121,60 +121,64 @@
void run() throws Exception {
javadoc = ToolProvider.getSystemDocumentationTool();
fm = javadoc.getStandardFileManager(null, null, null);
- fm.setLocation(StandardLocation.CLASS_OUTPUT, Arrays.asList(new File(".")));
- file = new SimpleJavaFileObject(URI.create("Test.java"), JavaFileObject.Kind.SOURCE) {
- @Override
- public CharSequence getCharContent(boolean ignoreEncoding) {
- return code;
- }
- };
+ try {
+ fm.setLocation(StandardLocation.CLASS_OUTPUT, Arrays.asList(new File(".")));
+ file = new SimpleJavaFileObject(URI.create("Test.java"), JavaFileObject.Kind.SOURCE) {
+ @Override
+ public CharSequence getCharContent(boolean ignoreEncoding) {
+ return code;
+ }
+ };
- test(Collections.<String>emptyList(),
- Main.Result.ERROR,
- EnumSet.of(Message.DL_ERR9A, Message.DL_WRN12A));
+ test(Collections.<String>emptyList(),
+ Main.Result.ERROR,
+ EnumSet.of(Message.DL_ERR9A, Message.DL_WRN12A));
- test(Arrays.asList(rawDiags),
- Main.Result.ERROR,
- EnumSet.of(Message.DL_ERR9, Message.DL_WRN12));
+ test(Arrays.asList(rawDiags),
+ Main.Result.ERROR,
+ EnumSet.of(Message.DL_ERR9, Message.DL_WRN12));
+
+ test(Arrays.asList("-Xdoclint:none"),
+ Main.Result.OK,
+ EnumSet.of(Message.JD_WRN10, Message.JD_WRN13));
- test(Arrays.asList("-Xdoclint:none"),
- Main.Result.OK,
- EnumSet.of(Message.JD_WRN10, Message.JD_WRN13));
+ test(Arrays.asList(rawDiags, "-Xdoclint"),
+ Main.Result.ERROR,
+ EnumSet.of(Message.DL_ERR9, Message.DL_WRN12));
- test(Arrays.asList(rawDiags, "-Xdoclint"),
- Main.Result.ERROR,
- EnumSet.of(Message.DL_ERR9, Message.DL_WRN12));
+ test(Arrays.asList(rawDiags, "-Xdoclint:all/public"),
+ Main.Result.ERROR,
+ EnumSet.of(Message.OPT_BADQUAL));
- test(Arrays.asList(rawDiags, "-Xdoclint:all/public"),
- Main.Result.ERROR,
- EnumSet.of(Message.OPT_BADQUAL));
+ test(Arrays.asList(rawDiags, "-Xdoclint:all", "-public"),
+ Main.Result.OK,
+ EnumSet.of(Message.DL_WRN12));
- test(Arrays.asList(rawDiags, "-Xdoclint:all", "-public"),
- Main.Result.OK,
- EnumSet.of(Message.DL_WRN12));
+ test(Arrays.asList(rawDiags, "-Xdoclint:syntax"),
+ Main.Result.OK,
+ EnumSet.of(Message.DL_WRN12));
- test(Arrays.asList(rawDiags, "-Xdoclint:syntax"),
- Main.Result.OK,
- EnumSet.of(Message.DL_WRN12));
+ test(Arrays.asList(rawDiags, "-private"),
+ Main.Result.ERROR,
+ EnumSet.of(Message.DL_ERR6, Message.DL_ERR9, Message.DL_WRN12));
- test(Arrays.asList(rawDiags, "-private"),
- Main.Result.ERROR,
- EnumSet.of(Message.DL_ERR6, Message.DL_ERR9, Message.DL_WRN12));
+ test(Arrays.asList(rawDiags, "-Xdoclint:syntax", "-private"),
+ Main.Result.ERROR,
+ EnumSet.of(Message.DL_ERR6, Message.DL_WRN12));
- test(Arrays.asList(rawDiags, "-Xdoclint:syntax", "-private"),
- Main.Result.ERROR,
- EnumSet.of(Message.DL_ERR6, Message.DL_WRN12));
+ test(Arrays.asList(rawDiags, "-Xdoclint:reference"),
+ Main.Result.ERROR,
+ EnumSet.of(Message.DL_ERR9));
- test(Arrays.asList(rawDiags, "-Xdoclint:reference"),
- Main.Result.ERROR,
- EnumSet.of(Message.DL_ERR9));
+ test(Arrays.asList(rawDiags, "-Xdoclint:badarg"),
+ Main.Result.ERROR,
+ EnumSet.of(Message.OPT_BADARG));
- test(Arrays.asList(rawDiags, "-Xdoclint:badarg"),
- Main.Result.ERROR,
- EnumSet.of(Message.OPT_BADARG));
-
- if (errors > 0)
- throw new Exception(errors + " errors occurred");
+ if (errors > 0)
+ throw new Exception(errors + " errors occurred");
+ } finally {
+ fm.close();
+ }
}
void test(List<String> opts, Main.Result expectResult, Set<Message> expectMessages) {
--- a/langtools/test/tools/javap/T6729471.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javap/T6729471.java Fri Oct 31 18:18:58 2014 +0000
@@ -25,10 +25,7 @@
/*
* @test
* @bug 6729471
- * @summary javap should accept class files on the command line
- * @library /tools/lib
- * @build ToolBox
- * @run main T6729471
+ * @summary javap does not output inner interfaces of an interface
*/
import java.io.*;
@@ -60,26 +57,30 @@
verify(new File(testClasses, "T6729471.class").toURI().toString(),
"public static void main(java.lang.String...)");
- // jar url
- // Create a temp jar
- ToolBox tb = new ToolBox();
- tb.new JavacTask()
- .sources("class Foo { public void sayHello() {} }")
- .run();
- String foo_jar = "foo.jar";
- tb.new JarTask(foo_jar)
- .files("Foo.class")
- .run();
- File foo_jarFile = new File(foo_jar);
-
- // Verify
+ // jar url: rt.jar
+ File java_home = new File(System.getProperty("java.home"));
+ if (java_home.getName().equals("jre"))
+ java_home = java_home.getParentFile();
+ File rt_jar = new File(new File(new File(java_home, "jre"), "lib"), "rt.jar");
try {
- verify("jar:" + foo_jarFile.toURL() + "!/Foo.class",
- "public void sayHello()");
+ verify("jar:" + rt_jar.toURL() + "!/java/util/Map.class",
+ "public abstract boolean containsKey(java.lang.Object)");
} catch (MalformedURLException e) {
error(e.toString());
}
+ // jar url: ct.sym, if it exists
+ File ct_sym = new File(new File(java_home, "lib"), "ct.sym");
+ if (ct_sym.exists()) {
+ try {
+ verify("jar:" + ct_sym.toURL() + "!/META-INF/sym/rt.jar/java/util/Map.class",
+ "public abstract boolean containsKey(java.lang.Object)");
+ } catch (MalformedURLException e) {
+ error(e.toString());
+ }
+ } else
+ System.err.println("warning: ct.sym not found");
+
if (errors > 0)
throw new Error(errors + " found.");
}
--- a/langtools/test/tools/javap/TestSuperclass.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/javap/TestSuperclass.java Fri Oct 31 18:18:58 2014 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -77,19 +77,20 @@
public static void main(String... args) throws Exception {
JavaCompiler comp = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null);
- int errors = 0;
+ try (StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null)) {
+ int errors = 0;
- for (ClassKind ck: ClassKind.values()) {
- for (GenericKind gk: GenericKind.values()) {
- for (SuperKind sk: SuperKind.values()) {
- errors += new TestSuperclass(ck, gk, sk).run(comp, fm);
+ for (ClassKind ck: ClassKind.values()) {
+ for (GenericKind gk: GenericKind.values()) {
+ for (SuperKind sk: SuperKind.values()) {
+ errors += new TestSuperclass(ck, gk, sk).run(comp, fm);
+ }
}
}
+
+ if (errors > 0)
+ throw new Exception(errors + " errors found");
}
-
- if (errors > 0)
- throw new Exception(errors + " errors found");
}
final ClassKind ck;
--- a/langtools/test/tools/sjavac/DependencyCollection.java Fri Oct 31 09:37:17 2014 -0700
+++ b/langtools/test/tools/sjavac/DependencyCollection.java Fri Oct 31 18:18:58 2014 +0000
@@ -59,59 +59,60 @@
Path src = Paths.get(ToolBox.testSrc, "test-input", "src");
JavaCompiler javac = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fileManager = javac.getStandardFileManager(null, null, null);
- SmartFileManager smartFileManager = new SmartFileManager(fileManager);
- smartFileManager.setSymbolFileEnabled(false);
- Iterable<? extends JavaFileObject> fileObjects =
- fileManager.getJavaFileObjectsFromFiles(Arrays.asList(src.resolve("pkg/Test.java").toFile()));
- JavacTaskImpl task = (JavacTaskImpl) javac.getTask(new PrintWriter(System.out),
- smartFileManager,
- null,
- Arrays.asList("-d", "classes",
- "-sourcepath", src.toAbsolutePath().toString()),
- null,
- fileObjects);
- DependencyCollector depsCollector = new DependencyCollector();
- task.addTaskListener(depsCollector);
- task.doCall();
+ try (StandardJavaFileManager fileManager = javac.getStandardFileManager(null, null, null)) {
+ SmartFileManager smartFileManager = new SmartFileManager(fileManager);
+ smartFileManager.setSymbolFileEnabled(false);
+ Iterable<? extends JavaFileObject> fileObjects =
+ fileManager.getJavaFileObjectsFromFiles(Arrays.asList(src.resolve("pkg/Test.java").toFile()));
+ JavacTaskImpl task = (JavacTaskImpl) javac.getTask(new PrintWriter(System.out),
+ smartFileManager,
+ null,
+ Arrays.asList("-d", "classes",
+ "-sourcepath", src.toAbsolutePath().toString()),
+ null,
+ fileObjects);
+ DependencyCollector depsCollector = new DependencyCollector();
+ task.addTaskListener(depsCollector);
+ task.doCall();
- // Find pkg symbol
- PackageSymbol pkg = findPkgSymbolWithName(depsCollector.getSourcePackages(), "pkg");
- Set<PackageSymbol> foundDependencies = depsCollector.getDependenciesForPkg(pkg);
+ // Find pkg symbol
+ PackageSymbol pkg = findPkgSymbolWithName(depsCollector.getSourcePackages(), "pkg");
+ Set<PackageSymbol> foundDependencies = depsCollector.getDependenciesForPkg(pkg);
- // Print dependencies
- System.out.println("Found dependencies:");
- foundDependencies.stream()
- .sorted(Comparator.comparing(DependencyCollection::extractNumber))
- .forEach(p -> System.out.println(" " + p));
+ // Print dependencies
+ System.out.println("Found dependencies:");
+ foundDependencies.stream()
+ .sorted(Comparator.comparing(DependencyCollection::extractNumber))
+ .forEach(p -> System.out.println(" " + p));
- // Check result
- Set<Integer> found = foundDependencies.stream()
- .map(DependencyCollection::extractNumber)
- .collect(Collectors.toSet());
- found.remove(-1); // Dependencies with no number (java.lang etc)
- Set<Integer> expected = new HashSet<>();
- for (int i = 2; i <= 30; i++) {
- if (i == 15) continue; // Case 15 correspond to the type of a throw-away return value.
- expected.add(i);
- }
+ // Check result
+ Set<Integer> found = foundDependencies.stream()
+ .map(DependencyCollection::extractNumber)
+ .collect(Collectors.toSet());
+ found.remove(-1); // Dependencies with no number (java.lang etc)
+ Set<Integer> expected = new HashSet<>();
+ for (int i = 2; i <= 30; i++) {
+ if (i == 15) continue; // Case 15 correspond to the type of a throw-away return value.
+ expected.add(i);
+ }
- Set<Integer> missing = new HashSet<>(expected);
- missing.removeAll(found);
- if (missing.size() > 0) {
- System.out.println("Missing dependencies:");
- missing.forEach(i -> System.out.println(" Dependency " + i));
- }
+ Set<Integer> missing = new HashSet<>(expected);
+ missing.removeAll(found);
+ if (missing.size() > 0) {
+ System.out.println("Missing dependencies:");
+ missing.forEach(i -> System.out.println(" Dependency " + i));
+ }
- Set<Integer> unexpected = new HashSet<>(found);
- unexpected.removeAll(expected);
- if (unexpected.size() > 0) {
- System.out.println("Unexpected dependencies found:");
- unexpected.forEach(i -> System.out.println(" Dependency " + i));
+ Set<Integer> unexpected = new HashSet<>(found);
+ unexpected.removeAll(expected);
+ if (unexpected.size() > 0) {
+ System.out.println("Unexpected dependencies found:");
+ unexpected.forEach(i -> System.out.println(" Dependency " + i));
+ }
+
+ if (missing.size() > 0 || unexpected.size() > 0)
+ throw new AssertionError("Missing and/or unexpected dependencies found.");
}
-
- if (missing.size() > 0 || unexpected.size() > 0)
- throw new AssertionError("Missing and/or unexpected dependencies found.");
}
private static PackageSymbol findPkgSymbolWithName(Set<PackageSymbol> syms, String name) {
--- a/make/CompileJavaModules.gmk Fri Oct 31 09:37:17 2014 -0700
+++ b/make/CompileJavaModules.gmk Fri Oct 31 18:18:58 2014 +0000
@@ -42,7 +42,7 @@
################################################################################
-java.base_COPY := .icu .dat .spp content-types.properties
+java.base_COPY := .icu .dat .spp content-types.properties hijrah-config-islamic-umalqura.properties
java.base_CLEAN := intrinsic.properties
java.base_EXCLUDES += java/lang/doc-files
--- a/nashorn/.hgtags Fri Oct 31 09:37:17 2014 -0700
+++ b/nashorn/.hgtags Fri Oct 31 18:18:58 2014 +0000
@@ -270,3 +270,4 @@
4ece2dad8c37f520f1ccc1cf84870f362c8eb9d6 jdk9-b34
63b8da4c958c3bbadfff082c547983f5daa50c0f jdk9-b35
10fe62bc188476abb025e55f55128cbfecf24584 jdk9-b36
+dd7bbdf81a537106cfa9227d1a9a57849cb26b4d jdk9-b37
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/SpillObjectCreator.java Fri Oct 31 09:37:17 2014 -0700
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/SpillObjectCreator.java Fri Oct 31 18:18:58 2014 +0000
@@ -88,7 +88,7 @@
final Property property = propertyMap.findProperty(key);
if (property != null) {
// normal property key
- property.setCurrentType(JSType.unboxedFieldType(constantValue));
+ property.setType(JSType.unboxedFieldType(constantValue));
final int slot = property.getSlot();
if (!OBJECT_FIELDS_ONLY && constantValue instanceof Number) {
jpresetValues[slot] = ObjectClassGenerator.pack((Number)constantValue);
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/TypeEvaluator.java Fri Oct 31 09:37:17 2014 -0700
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/TypeEvaluator.java Fri Oct 31 18:18:58 2014 +0000
@@ -117,7 +117,7 @@
}
final Property property = find.getProperty();
- final Class<?> propertyClass = property.getCurrentType();
+ final Class<?> propertyClass = property.getType();
if (propertyClass == null) {
// propertyClass == null means its value is Undefined. It is probably not initialized yet, so we won't make
// a type assumption yet.
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/objects/NativeObject.java Fri Oct 31 09:37:17 2014 -0700
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/objects/NativeObject.java Fri Oct 31 18:18:58 2014 +0000
@@ -672,7 +672,7 @@
for (final Property prop : properties) {
if (prop.isEnumerable()) {
final Object value = sourceObj.get(prop.getKey());
- prop.setCurrentType(Object.class);
+ prop.setType(Object.class);
prop.setValue(sourceObj, sourceObj, value, false);
propList.add(prop);
}
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/AccessorProperty.java Fri Oct 31 09:37:17 2014 -0700
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/AccessorProperty.java Fri Oct 31 18:18:58 2014 +0000
@@ -145,13 +145,6 @@
transient MethodHandle objectSetter;
/**
- * Current type of this object, in object only mode, this is an Object.class. In dual-fields mode
- * null means undefined, and primitive types are allowed. The reason a special type is used for
- * undefined, is that are no bits left to represent it in primitive types
- */
- private Class<?> currentType;
-
- /**
* Delegate constructor for bound properties. This is used for properties created by
* {@link ScriptRuntime#mergeScope} and the Nashorn {@code Object.bindProperties} method.
* The former is used to add a script's defined globals to the current global scope while
@@ -171,7 +164,7 @@
this.objectSetter = bindTo(property.objectSetter, delegate);
property.GETTER_CACHE = new MethodHandle[NOOF_TYPES];
// Properties created this way are bound to a delegate
- setCurrentType(property.getCurrentType());
+ setType(property.getType());
}
/**
@@ -248,7 +241,7 @@
objectGetter = getter.type() != Lookup.GET_OBJECT_TYPE ? MH.asType(getter, Lookup.GET_OBJECT_TYPE) : getter;
objectSetter = setter != null && setter.type() != Lookup.SET_OBJECT_TYPE ? MH.asType(setter, Lookup.SET_OBJECT_TYPE) : setter;
- setCurrentType(OBJECT_FIELDS_ONLY ? Object.class : getterType);
+ setType(OBJECT_FIELDS_ONLY ? Object.class : getterType);
}
/**
@@ -317,7 +310,7 @@
*/
public AccessorProperty(final String key, final int flags, final Class<?> structure, final int slot, final Class<?> initialType) {
this(key, flags, structure, slot);
- setCurrentType(OBJECT_FIELDS_ONLY ? Object.class : initialType);
+ setType(OBJECT_FIELDS_ONLY ? Object.class : initialType);
}
/**
@@ -330,13 +323,13 @@
protected AccessorProperty(final AccessorProperty property, final Class<?> newType) {
super(property, property.getFlags());
- this.GETTER_CACHE = newType != property.getCurrentType() ? new MethodHandle[NOOF_TYPES] : property.GETTER_CACHE;
+ this.GETTER_CACHE = newType != property.getLocalType() ? new MethodHandle[NOOF_TYPES] : property.GETTER_CACHE;
this.primitiveGetter = property.primitiveGetter;
this.primitiveSetter = property.primitiveSetter;
this.objectGetter = property.objectGetter;
this.objectSetter = property.objectSetter;
- setCurrentType(newType);
+ setType(newType);
}
/**
@@ -345,7 +338,7 @@
* @param property source property
*/
protected AccessorProperty(final AccessorProperty property) {
- this(property, property.getCurrentType());
+ this(property, property.getLocalType());
}
/**
@@ -354,7 +347,7 @@
* @param initialValue initial value
*/
protected final void setInitialValue(final ScriptObject owner, final Object initialValue) {
- setCurrentType(JSType.unboxedFieldType(initialValue));
+ setType(JSType.unboxedFieldType(initialValue));
if (initialValue instanceof Integer) {
invokeSetter(owner, ((Integer)initialValue).intValue());
} else if (initialValue instanceof Long) {
@@ -370,7 +363,7 @@
* Initialize the type of a property
*/
protected final void initializeType() {
- setCurrentType(OBJECT_FIELDS_ONLY ? Object.class : null);
+ setType(OBJECT_FIELDS_ONLY ? Object.class : null);
}
private void readObject(final ObjectInputStream s) throws IOException, ClassNotFoundException {
@@ -557,12 +550,12 @@
} else {
getter = debug(
createGetter(
- getCurrentType(),
+ getLocalType(),
type,
primitiveGetter,
objectGetter,
INVALID_PROGRAM_POINT),
- getCurrentType(),
+ getLocalType(),
type,
"get");
getterCache[i] = getter;
@@ -582,18 +575,18 @@
return debug(
createGetter(
- getCurrentType(),
+ getLocalType(),
type,
primitiveGetter,
objectGetter,
programPoint),
- getCurrentType(),
+ getLocalType(),
type,
"get");
}
private MethodHandle getOptimisticPrimitiveGetter(final Class<?> type, final int programPoint) {
- final MethodHandle g = getGetter(getCurrentType());
+ final MethodHandle g = getGetter(getLocalType());
return MH.asType(OptimisticReturnFilters.filterOptimisticReturnValue(g, type, programPoint), g.type().changeReturnType(type));
}
@@ -631,7 +624,7 @@
}
private MethodHandle generateSetter(final Class<?> forType, final Class<?> type) {
- return debug(createSetter(forType, type, primitiveSetter, objectSetter), getCurrentType(), type, "set");
+ return debug(createSetter(forType, type, primitiveSetter, objectSetter), getLocalType(), type, "set");
}
/**
@@ -639,7 +632,7 @@
* @return true if undefined
*/
protected final boolean isUndefined() {
- return getCurrentType() == null;
+ return getLocalType() == null;
}
@Override
@@ -647,7 +640,7 @@
checkUndeclared();
final int typeIndex = getAccessorTypeIndex(type);
- final int currentTypeIndex = getAccessorTypeIndex(getCurrentType());
+ final int currentTypeIndex = getAccessorTypeIndex(getLocalType());
//if we are asking for an object setter, but are still a primitive type, we might try to box it
MethodHandle mh;
@@ -656,13 +649,13 @@
final PropertyMap newMap = getWiderMap(currentMap, newProperty);
final MethodHandle widerSetter = newProperty.getSetter(type, newMap);
- final Class<?> ct = getCurrentType();
+ final Class<?> ct = getLocalType();
mh = MH.filterArguments(widerSetter, 0, MH.insertArguments(debugReplace(ct, type, currentMap, newMap) , 1, newMap));
if (ct != null && ct.isPrimitive() && !type.isPrimitive()) {
mh = ObjectClassGenerator.createGuardBoxedPrimitiveSetter(ct, generateSetter(ct, ct), mh);
}
} else {
- final Class<?> forType = isUndefined() ? type : getCurrentType();
+ final Class<?> forType = isUndefined() ? type : getLocalType();
mh = generateSetter(!forType.isPrimitive() ? Object.class : forType, type);
}
@@ -681,24 +674,13 @@
return false;
}
// Return true for currently undefined even if non-writable/configurable to allow initialization of ES6 CONST.
- return getCurrentType() == null || (getCurrentType() != Object.class && (isConfigurable() || isWritable()));
+ return getLocalType() == null || (getLocalType() != Object.class && (isConfigurable() || isWritable()));
}
private boolean needsInvalidator(final int typeIndex, final int currentTypeIndex) {
return canChangeType() && typeIndex > currentTypeIndex;
}
- @Override
- public final void setCurrentType(final Class<?> currentType) {
- assert currentType != boolean.class : "no boolean storage support yet - fix this";
- this.currentType = currentType == null ? null : currentType.isPrimitive() ? currentType : Object.class;
- }
-
- @Override
- public Class<?> getCurrentType() {
- return currentType;
- }
-
private MethodHandle debug(final MethodHandle mh, final Class<?> forType, final Class<?> type, final String tag) {
if (!Context.DEBUG || !Global.hasInstance()) {
return mh;
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/FindProperty.java Fri Oct 31 09:37:17 2014 -0700
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/FindProperty.java Fri Oct 31 18:18:58 2014 +0000
@@ -84,13 +84,18 @@
* @return method handle for the getter
*/
public MethodHandle getGetter(final Class<?> type, final int programPoint, final LinkRequest request) {
- final MethodHandle getter;
+ MethodHandle getter;
if (isValid(programPoint)) {
getter = property.getOptimisticGetter(type, programPoint);
} else {
getter = property.getGetter(type);
}
if (property instanceof UserAccessorProperty) {
+ getter = MH.insertArguments(getter, 1, UserAccessorProperty.getINVOKE_UA_GETTER(type, programPoint));
+ if (isValid(programPoint) && type.isPrimitive()) {
+ getter = MH.insertArguments(getter, 1, programPoint);
+ }
+ property.setType(type);
return insertAccessorsGetter((UserAccessorProperty) property, request, getter);
}
return getter;
@@ -111,7 +116,8 @@
public MethodHandle getSetter(final Class<?> type, final boolean strict, final LinkRequest request) {
MethodHandle setter = property.getSetter(type, getOwner().getMap());
if (property instanceof UserAccessorProperty) {
- setter = MH.insertArguments(setter, 1, strict ? property.getKey() : null);
+ setter = MH.insertArguments(setter, 1, UserAccessorProperty.getINVOKE_UA_SETTER(type), strict ? property.getKey() : null);
+ property.setType(type);
return insertAccessorsGetter((UserAccessorProperty) property, request, setter);
}
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/Property.java Fri Oct 31 09:37:17 2014 -0700
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/Property.java Fri Oct 31 18:18:58 2014 +0000
@@ -102,6 +102,13 @@
/** Property field number or spill slot. */
private final int slot;
+ /**
+ * Current type of this object, in object only mode, this is an Object.class. In dual-fields mode
+ * null means undefined, and primitive types are allowed. The reason a special type is used for
+ * undefined, is that are no bits left to represent it in primitive types
+ */
+ private Class<?> type;
+
/** SwitchPoint that is invalidated when property is changed, optional */
protected transient SwitchPoint builtinSwitchPoint;
@@ -536,7 +543,7 @@
* <p>
* see {@link ObjectClassGenerator#createSetter(Class, Class, MethodHandle, MethodHandle)}
* if you are interested in the internal details of this. Note that if you
- * are running in default mode, with {@code -Dnashorn.fields.dual=true}, disabled, the setters
+ * are running with {@code -Dnashorn.fields.objects=true}, the setters
* will currently never change, as all properties are represented as Object field,
* the Object fields are Initialized to {@code ScriptRuntime.UNDEFINED} and primitives are
* boxed/unboxed upon every access, which is not necessarily optimal
@@ -569,7 +576,7 @@
@Override
public int hashCode() {
- final Class<?> type = getCurrentType();
+ final Class<?> type = getLocalType();
return Objects.hashCode(this.key) ^ flags ^ getSlot() ^ (type == null ? 0 : type.hashCode());
}
@@ -586,7 +593,7 @@
final Property otherProperty = (Property)other;
return equalsWithoutType(otherProperty) &&
- getCurrentType() == otherProperty.getCurrentType();
+ getLocalType() == otherProperty.getLocalType();
}
boolean equalsWithoutType(final Property otherProperty) {
@@ -615,7 +622,7 @@
*/
public final String toStringShort() {
final StringBuilder sb = new StringBuilder();
- final Class<?> type = getCurrentType();
+ final Class<?> type = getLocalType();
sb.append(getKey()).append(" (").append(type(type)).append(')');
return sb.toString();
}
@@ -632,7 +639,7 @@
@Override
public String toString() {
final StringBuilder sb = new StringBuilder();
- final Class<?> type = getCurrentType();
+ final Class<?> type = getLocalType();
sb.append(indent(getKey(), 20)).
append(" id=").
@@ -656,20 +663,40 @@
}
/**
- * Get the current type of this field. If you are not running with dual fields enabled,
+ * Get the current type of this property. If you are running with object fields enabled,
* this will always be Object.class. See the value representation explanation in
* {@link Property#getSetter(Class, PropertyMap)} and {@link ObjectClassGenerator}
* for more information.
*
+ * <p>Note that for user accessor properties, this returns the type of the last observed
+ * value passed to or returned by a user accessor. Use {@link #getLocalType()} to always get
+ * the type of the actual value stored in the property slot.</p>
+ *
* @return current type of property, null means undefined
*/
- public abstract Class<?> getCurrentType();
+ public final Class<?> getType() {
+ return type;
+ }
/**
- * Reset the current type of this property
- * @param currentType new current type
+ * Set the type of this property.
+ * @param type new type
*/
- public abstract void setCurrentType(final Class<?> currentType);
+ public final void setType(final Class<?> type) {
+ assert type != boolean.class : "no boolean storage support yet - fix this";
+ this.type = type == null ? null : type.isPrimitive() ? type : Object.class;
+ }
+
+ /**
+ * Get the type of the value in the local property slot. This returns the same as
+ * {@link #getType()} for normal properties, but always returns {@code Object.class}
+ * for {@link UserAccessorProperty}s as their local type is a pair of accessor references.
+ *
+ * @return the local property type
+ */
+ protected Class<?> getLocalType() {
+ return getType();
+ }
/**
* Check whether this Property can ever change its type. The default is false, and if
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/PropertyMap.java Fri Oct 31 09:37:17 2014 -0700
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/PropertyMap.java Fri Oct 31 18:18:58 2014 +0000
@@ -512,7 +512,7 @@
assert sameType ||
oldProperty instanceof AccessorProperty &&
newProperty instanceof UserAccessorProperty :
- "arbitrary replaceProperty attempted " + sameType + " oldProperty=" + oldProperty.getClass() + " newProperty=" + newProperty.getClass() + " [" + oldProperty.getCurrentType() + " => " + newProperty.getCurrentType() + "]";
+ "arbitrary replaceProperty attempted " + sameType + " oldProperty=" + oldProperty.getClass() + " newProperty=" + newProperty.getClass() + " [" + oldProperty.getLocalType() + " => " + newProperty.getLocalType() + "]";
newMap.flags = flags;
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/ScriptObject.java Fri Oct 31 09:37:17 2014 -0700
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/ScriptObject.java Fri Oct 31 18:18:58 2014 +0000
@@ -969,7 +969,7 @@
final UserAccessorProperty uc = (UserAccessorProperty)oldProperty;
final int slot = uc.getSlot();
- assert uc.getCurrentType() == Object.class;
+ assert uc.getLocalType() == Object.class;
if (slot >= spillLength) {
uc.setAccessors(this, getMap(), new UserAccessorProperty.Accessors(getter, setter));
} else {
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/SpillProperty.java Fri Oct 31 09:37:17 2014 -0700
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/SpillProperty.java Fri Oct 31 18:18:58 2014 +0000
@@ -161,12 +161,12 @@
*/
public SpillProperty(final String key, final int flags, final int slot) {
super(key, flags, slot, primitiveGetter(slot), primitiveSetter(slot), objectGetter(slot), objectSetter(slot));
- assert !OBJECT_FIELDS_ONLY || getCurrentType() == Object.class;
+ assert !OBJECT_FIELDS_ONLY || getLocalType() == Object.class;
}
SpillProperty(final String key, final int flags, final int slot, final Class<?> initialType) {
this(key, flags, slot);
- setCurrentType(OBJECT_FIELDS_ONLY ? Object.class : initialType);
+ setType(OBJECT_FIELDS_ONLY ? Object.class : initialType);
}
SpillProperty(final String key, final int flags, final int slot, final ScriptObject owner, final Object initialValue) {
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/UserAccessorProperty.java Fri Oct 31 09:37:17 2014 -0700
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/UserAccessorProperty.java Fri Oct 31 18:18:58 2014 +0000
@@ -27,16 +27,16 @@
import static jdk.nashorn.internal.lookup.Lookup.MH;
import static jdk.nashorn.internal.runtime.ECMAErrors.typeError;
-import static jdk.nashorn.internal.runtime.JSType.CONVERT_OBJECT_OPTIMISTIC;
-import static jdk.nashorn.internal.runtime.JSType.getAccessorTypeIndex;
import static jdk.nashorn.internal.runtime.ScriptRuntime.UNDEFINED;
+import static jdk.nashorn.internal.runtime.UnwarrantedOptimismException.INVALID_PROGRAM_POINT;
+import static jdk.nashorn.internal.runtime.linker.NashornCallSiteDescriptor.CALLSITE_PROGRAM_POINT_SHIFT;
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
-import java.util.concurrent.Callable;
import jdk.nashorn.internal.lookup.Lookup;
import jdk.nashorn.internal.runtime.linker.Bootstrap;
+import jdk.nashorn.internal.runtime.linker.NashornCallSiteDescriptor;
/**
* Property with user defined getters/setters. Actual getter and setter
@@ -69,38 +69,29 @@
private static final MethodHandles.Lookup LOOKUP = MethodHandles.lookup();
/** Getter method handle */
- private final static MethodHandle INVOKE_GETTER_ACCESSOR = findOwnMH_S("invokeGetterAccessor", Object.class, Accessors.class, Object.class);
+ private final static MethodHandle INVOKE_OBJECT_GETTER = findOwnMH_S("invokeObjectGetter", Object.class, Accessors.class, MethodHandle.class, Object.class);
+ private final static MethodHandle INVOKE_INT_GETTER = findOwnMH_S("invokeIntGetter", int.class, Accessors.class, MethodHandle.class, int.class, Object.class);
+ private final static MethodHandle INVOKE_LONG_GETTER = findOwnMH_S("invokeLongGetter", long.class, Accessors.class, MethodHandle.class, int.class, Object.class);
+ private final static MethodHandle INVOKE_NUMBER_GETTER = findOwnMH_S("invokeNumberGetter", double.class, Accessors.class, MethodHandle.class, int.class, Object.class);
/** Setter method handle */
- private final static MethodHandle INVOKE_SETTER_ACCESSOR = findOwnMH_S("invokeSetterAccessor", void.class, Accessors.class, String.class, Object.class, Object.class);
+ private final static MethodHandle INVOKE_OBJECT_SETTER = findOwnMH_S("invokeObjectSetter", void.class, Accessors.class, MethodHandle.class, String.class, Object.class, Object.class);
+ private final static MethodHandle INVOKE_INT_SETTER = findOwnMH_S("invokeIntSetter", void.class, Accessors.class, MethodHandle.class, String.class, Object.class, int.class);
+ private final static MethodHandle INVOKE_LONG_SETTER = findOwnMH_S("invokeLongSetter", void.class, Accessors.class, MethodHandle.class, String.class, Object.class, long.class);
+ private final static MethodHandle INVOKE_NUMBER_SETTER = findOwnMH_S("invokeNumberSetter", void.class, Accessors.class, MethodHandle.class, String.class, Object.class, double.class);
- /** Dynamic invoker for getter */
- private static final Object GETTER_INVOKER_KEY = new Object();
-
- private static MethodHandle getINVOKE_UA_GETTER() {
- return Context.getGlobal().getDynamicInvoker(GETTER_INVOKER_KEY,
- new Callable<MethodHandle>() {
- @Override
- public MethodHandle call() {
- return Bootstrap.createDynamicInvoker("dyn:call", Object.class,
- Object.class, Object.class);
- }
- });
+ static MethodHandle getINVOKE_UA_GETTER(final Class<?> returnType, final int programPoint) {
+ if (UnwarrantedOptimismException.isValid(programPoint)) {
+ final int flags = NashornCallSiteDescriptor.CALLSITE_OPTIMISTIC | programPoint << CALLSITE_PROGRAM_POINT_SHIFT;
+ return Bootstrap.createDynamicInvoker("dyn:call", flags, returnType, Object.class, Object.class);
+ } else {
+ return Bootstrap.createDynamicInvoker("dyn:call", Object.class, Object.class, Object.class);
+ }
}
- /** Dynamic invoker for setter */
- private static Object SETTER_INVOKER_KEY = new Object();
-
- private static MethodHandle getINVOKE_UA_SETTER() {
- return Context.getGlobal().getDynamicInvoker(SETTER_INVOKER_KEY,
- new Callable<MethodHandle>() {
- @Override
- public MethodHandle call() {
- return Bootstrap.createDynamicInvoker("dyn:call", void.class,
- Object.class, Object.class, Object.class);
- }
- });
+ static MethodHandle getINVOKE_UA_SETTER(final Class<?> valueType) {
+ return Bootstrap.createDynamicInvoker("dyn:call", void.class, Object.class, Object.class, valueType);
}
/**
@@ -158,7 +149,7 @@
}
@Override
- public Class<?> getCurrentType() {
+ protected Class<?> getLocalType() {
return Object.class;
}
@@ -189,7 +180,13 @@
@Override
public Object getObjectValue(final ScriptObject self, final ScriptObject owner) {
- return invokeGetterAccessor(getAccessors((owner != null) ? owner : self), self);
+ try {
+ return invokeObjectGetter(getAccessors((owner != null) ? owner : self), getINVOKE_UA_GETTER(Object.class, INVALID_PROGRAM_POINT), self);
+ } catch (final Error | RuntimeException t) {
+ throw t;
+ } catch (final Throwable t) {
+ throw new RuntimeException(t);
+ }
}
@Override
@@ -209,41 +206,33 @@
@Override
public void setValue(final ScriptObject self, final ScriptObject owner, final Object value, final boolean strict) {
- invokeSetterAccessor(getAccessors((owner != null) ? owner : self), strict ? getKey() : null, self, value);
+ try {
+ invokeObjectSetter(getAccessors((owner != null) ? owner : self), getINVOKE_UA_SETTER(Object.class), strict ? getKey() : null, self, value);
+ } catch (final Error | RuntimeException t) {
+ throw t;
+ } catch (final Throwable t) {
+ throw new RuntimeException(t);
+ }
}
@Override
public MethodHandle getGetter(final Class<?> type) {
//this returns a getter on the format (Accessors, Object receiver)
- return Lookup.filterReturnType(INVOKE_GETTER_ACCESSOR, type);
+ return Lookup.filterReturnType(INVOKE_OBJECT_GETTER, type);
}
@Override
public MethodHandle getOptimisticGetter(final Class<?> type, final int programPoint) {
- //fortype is always object, but in the optimistic world we have to throw
- //unwarranted optimism exception for narrower types. We can improve this
- //by checking for boxed types and unboxing them, but it is doubtful that
- //this gives us any performance, as UserAccessorProperties are typically not
- //primitives. Are there? TODO: investigate later. For now we just throw an
- //exception for narrower types than object
-
- if (type.isPrimitive()) {
- final MethodHandle getter = getGetter(Object.class);
- final MethodHandle mh =
- MH.asType(
- MH.filterReturnValue(
- getter,
- MH.insertArguments(
- CONVERT_OBJECT_OPTIMISTIC.get(getAccessorTypeIndex(type)),
- 1,
- programPoint)),
- getter.type().changeReturnType(type));
-
- return mh;
+ if (type == int.class) {
+ return INVOKE_INT_GETTER;
+ } else if (type == long.class) {
+ return INVOKE_LONG_GETTER;
+ } else if (type == double.class) {
+ return INVOKE_NUMBER_GETTER;
+ } else {
+ assert type == Object.class;
+ return INVOKE_OBJECT_GETTER;
}
-
- assert type == Object.class;
- return getGetter(type);
}
@Override
@@ -259,7 +248,16 @@
@Override
public MethodHandle getSetter(final Class<?> type, final PropertyMap currentMap) {
- return INVOKE_SETTER_ACCESSOR;
+ if (type == int.class) {
+ return INVOKE_INT_SETTER;
+ } else if (type == long.class) {
+ return INVOKE_LONG_SETTER;
+ } else if (type == double.class) {
+ return INVOKE_NUMBER_SETTER;
+ } else {
+ assert type == Object.class;
+ return INVOKE_OBJECT_SETTER;
+ }
}
@Override
@@ -282,31 +280,81 @@
// getter/setter may be inherited. If so, proto is bound during lookup. In either
// inherited or self case, slot is also bound during lookup. Actual ScriptFunction
// to be called is retrieved everytime and applied.
- private static Object invokeGetterAccessor(final Accessors gs, final Object self) {
+ @SuppressWarnings("unused")
+ private static Object invokeObjectGetter(final Accessors gs, final MethodHandle invoker, final Object self) throws Throwable {
final Object func = gs.getter;
if (func instanceof ScriptFunction) {
- try {
- return getINVOKE_UA_GETTER().invokeExact(func, self);
- } catch (final Error | RuntimeException t) {
- throw t;
- } catch (final Throwable t) {
- throw new RuntimeException(t);
- }
+ return invoker.invokeExact(func, self);
}
return UNDEFINED;
}
- private static void invokeSetterAccessor(final Accessors gs, final String name, final Object self, final Object value) {
+ @SuppressWarnings("unused")
+ private static int invokeIntGetter(final Accessors gs, final MethodHandle invoker, final int programPoint, final Object self) throws Throwable {
+ final Object func = gs.getter;
+ if (func instanceof ScriptFunction) {
+ return (int) invoker.invokeExact(func, self);
+ }
+
+ throw new UnwarrantedOptimismException(UNDEFINED, programPoint);
+ }
+
+ @SuppressWarnings("unused")
+ private static long invokeLongGetter(final Accessors gs, final MethodHandle invoker, final int programPoint, final Object self) throws Throwable {
+ final Object func = gs.getter;
+ if (func instanceof ScriptFunction) {
+ return (long) invoker.invokeExact(func, self);
+ }
+
+ throw new UnwarrantedOptimismException(UNDEFINED, programPoint);
+ }
+
+ @SuppressWarnings("unused")
+ private static double invokeNumberGetter(final Accessors gs, final MethodHandle invoker, final int programPoint, final Object self) throws Throwable {
+ final Object func = gs.getter;
+ if (func instanceof ScriptFunction) {
+ return (double) invoker.invokeExact(func, self);
+ }
+
+ throw new UnwarrantedOptimismException(UNDEFINED, programPoint);
+ }
+
+ @SuppressWarnings("unused")
+ private static void invokeObjectSetter(final Accessors gs, final MethodHandle invoker, final String name, final Object self, final Object value) throws Throwable {
final Object func = gs.setter;
if (func instanceof ScriptFunction) {
- try {
- getINVOKE_UA_SETTER().invokeExact(func, self, value);
- } catch (final Error | RuntimeException t) {
- throw t;
- } catch (final Throwable t) {
- throw new RuntimeException(t);
- }
+ invoker.invokeExact(func, self, value);
+ } else if (name != null) {
+ throw typeError("property.has.no.setter", name, ScriptRuntime.safeToString(self));
+ }
+ }
+
+ @SuppressWarnings("unused")
+ private static void invokeIntSetter(final Accessors gs, final MethodHandle invoker, final String name, final Object self, final int value) throws Throwable {
+ final Object func = gs.setter;
+ if (func instanceof ScriptFunction) {
+ invoker.invokeExact(func, self, value);
+ } else if (name != null) {
+ throw typeError("property.has.no.setter", name, ScriptRuntime.safeToString(self));
+ }
+ }
+
+ @SuppressWarnings("unused")
+ private static void invokeLongSetter(final Accessors gs, final MethodHandle invoker, final String name, final Object self, final long value) throws Throwable {
+ final Object func = gs.setter;
+ if (func instanceof ScriptFunction) {
+ invoker.invokeExact(func, self, value);
+ } else if (name != null) {
+ throw typeError("property.has.no.setter", name, ScriptRuntime.safeToString(self));
+ }
+ }
+
+ @SuppressWarnings("unused")
+ private static void invokeNumberSetter(final Accessors gs, final MethodHandle invoker, final String name, final Object self, final double value) throws Throwable {
+ final Object func = gs.setter;
+ if (func instanceof ScriptFunction) {
+ invoker.invokeExact(func, self, value);
} else if (name != null) {
throw typeError("property.has.no.setter", name, ScriptRuntime.safeToString(self));
}
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/Bootstrap.java Fri Oct 31 09:37:17 2014 -0700
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/Bootstrap.java Fri Oct 31 18:18:58 2014 +0000
@@ -337,6 +337,20 @@
/**
* Returns a dynamic invoker for a specified dynamic operation using the public lookup. Similar to
+ * {@link #createDynamicInvoker(String, Class, Class...)} but with an additional parameter to
+ * set the call site flags of the dynamic invoker.
+ * @param opDesc Dynalink dynamic operation descriptor.
+ * @param flags the call site flags for the operation
+ * @param rtype the return type for the operation
+ * @param ptypes the parameter types for the operation
+ * @return MethodHandle for invoking the operation.
+ */
+ public static MethodHandle createDynamicInvoker(final String opDesc, final int flags, final Class<?> rtype, final Class<?>... ptypes) {
+ return bootstrap(MethodHandles.publicLookup(), opDesc, MethodType.methodType(rtype, ptypes), flags).dynamicInvoker();
+ }
+
+ /**
+ * Returns a dynamic invoker for a specified dynamic operation using the public lookup. Similar to
* {@link #createDynamicInvoker(String, Class, Class...)} but with return and parameter types composed into a
* method type in the signature. See the discussion of that method for details.
* @param opDesc Dynalink dynamic operation descriptor.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/examples/getter-setter-micro.js Fri Oct 31 18:18:58 2014 +0000
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * - Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * - Neither the name of Oracle nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * A micro-benchmark for getters and setters with primitive values,
+ * alternating between ints and doubles. Introduction of primitive
+ * and optimistic user accessors in JDK-8062401 make this faster by
+ * 10x or more by allowing inlining and other optimizations to take place.
+ */
+
+var x = {
+ get m() {
+ return this._m;
+ },
+ set m(v) {
+ this._m = v;
+ },
+ get n() {
+ return this._n;
+ },
+ set n(v) {
+ this._n = v;
+ }
+};
+
+
+function bench(v1, v2, result) {
+ var start = Date.now();
+ x.n = v1;
+ for (var i = 0; i < 1e8; i++) {
+ x.m = v2;
+ if (x.m + x.n !== result) {
+ throw "wrong result";
+ }
+ }
+ print("done in", Date.now() - start, "millis");
+}
+
+for (var i = 0; i < 10; i++) {
+ bench(i, 4, 4 + i);
+}
+
+for (var i = 0; i < 10; i++) {
+ bench(i, 4.5, 4.5 + i);
+}
+
+for (var i = 0; i < 10; i++) {
+ bench(i, 5, 5 + i);
+}
+
+for (var i = 0; i < 10; i++) {
+ bench(i, 5.5, 5.5 + i);
+}
--- a/nashorn/test/script/basic/JDK-8062024.js Fri Oct 31 09:37:17 2014 -0700
+++ b/nashorn/test/script/basic/JDK-8062024.js Fri Oct 31 18:18:58 2014 +0000
@@ -25,6 +25,7 @@
* JDK-8062024: Issue with date.setFullYear when time other than midnight
*
* @test
+ * @option -timezone=Asia/Calcutta
* @run
*/